Search for kanji in result if not in search string

Julien LepillerSat Jul 24 00:44:06+0200 2021

8c75ec7

Search for kanji in result if not in search string

app/src/main/java/eu/lepiller/nani/MainActivity.java

2828
import com.moji4j.MojiDetector;
2929
3030
import java.util.ArrayList;
31+
import java.util.Collections;
3132
import java.util.List;
3233
3334
import eu.lepiller.nani.dictionary.DictionaryException;

205206
            ArrayList<String> tried = new ArrayList<>();
206207
            tried.add(text);
207208
208-
            List<KanjiResult> kanjiResults = new ArrayList<>();
209-
            for(String c: text.split("")) {
210-
                if(Character.UnicodeBlock.of(c.codePointAt(0)) == CJK_UNIFIED_IDEOGRAPHS) {
211-
                    KanjiResult r;
212-
                    try {
213-
                        r = DictionaryFactory.searchKanji(c);
214-
                    } catch(DictionaryException e) {
215-
                        return new SearchResult(e);
216-
                    }
217-
                    Log.d(TAG, "kanji " + c + ", result: " + r);
218-
                    if(r != null)
219-
                        kanjiResults.add(r);
220-
                }
221-
            }
222-
223209
            ArrayList<Result> searchResult;
224210
            try {
225211
                searchResult = DictionaryFactory.search(text);

240226
                if(searchResult.size() == 0) {
241227
                    return new SearchResult(new NoResultDictionaryException(tried));
242228
                }
229+
            }
230+
243231
244-
                return new SearchResult(searchResult, kanjiResults, text, true);
245-
            } else {
246-
                return new SearchResult(searchResult, kanjiResults, text, false);
232+
233+
            List<String> kanji = new ArrayList<>();
234+
            for(String c: text.split("")) {
235+
                if(Character.UnicodeBlock.of(c.codePointAt(0)) == CJK_UNIFIED_IDEOGRAPHS) {
236+
                    kanji.add(c);
237+
                }
238+
            }
239+
            if(kanji.size() == 0) {
240+
                int count = 0;
241+
                for(Result r: searchResult) {
242+
                    for(String alt: r.getAlternatives()) {
243+
                        for(String c: alt.split("")) {
244+
                            if(count>5)
245+
                                break;
246+
                            if(c.length() > 0 && Character.UnicodeBlock.of(c.codePointAt(0)) == CJK_UNIFIED_IDEOGRAPHS
247+
                                && !kanji.contains(c)) {
248+
                                count++;
249+
                                kanji.add(c);
250+
                            }
251+
                        }
252+
                    }
253+
                }
247254
            }
255+
256+
            List<KanjiResult> kanjiResults = new ArrayList<>();
257+
            for(String c: kanji) {
258+
                KanjiResult r;
259+
                try {
260+
                    r = DictionaryFactory.searchKanji(c);
261+
                } catch(DictionaryException e) {
262+
                    return new SearchResult(e);
263+
                }
264+
                Log.d(TAG, "kanji " + c + ", result: " + r);
265+
                if(r != null)
266+
                    kanjiResults.add(r);
267+
            }
268+
269+
            return new SearchResult(searchResult, kanjiResults, text, true);
248270
        }
249271
250272
        @Override