package fr.neamar.kiss.dataprovider; import java.util.ArrayList; import fr.neamar.kiss.loader.LoadShortcutsPojos; import fr.neamar.kiss.pojo.Pojo; import fr.neamar.kiss.pojo.ShortcutsPojo; public class ShortcutsProvider extends Provider<ShortcutsPojo> { @Override public void reload() { this.initialize(new LoadShortcutsPojos(this)); } @Override public ArrayList<Pojo> getResults(String query) { ArrayList<Pojo> results = new ArrayList<>(); int relevance; int matchPositionStart; int matchPositionEnd; String shortcutNameLowerCased; final String queryWithSpace = " " + query; for (ShortcutsPojo shortcut : pojos) { relevance = 0; shortcutNameLowerCased = shortcut.nameNormalized; matchPositionEnd = 0; if (shortcutNameLowerCased.startsWith(query)) { relevance = 75; matchPositionStart = 0; matchPositionEnd = query.length(); } else if ((matchPositionStart = shortcutNameLowerCased.indexOf(queryWithSpace)) > -1) { relevance = 50; matchPositionEnd = matchPositionStart + queryWithSpace.length(); } else if ((matchPositionStart = shortcutNameLowerCased.indexOf(query)) > -1) { relevance = 1; matchPositionEnd = matchPositionStart + query.length(); } if (relevance > 0) { shortcut.setDisplayNameHighlightRegion(matchPositionStart, matchPositionEnd); shortcut.relevance = relevance; results.add(shortcut); } } return results; } public Pojo findById(String id) { for (Pojo pojo : pojos) { if (pojo.id.equals(id)) { pojo.displayName = pojo.name; return pojo; } } return null; } public Pojo findByName(String name) { for (Pojo pojo : pojos) { if (pojo.name.equals(name)) return pojo; } return null; } }