package fr.neamar.kiss.dataprovider;
import java.util.ArrayList;
import java.util.regex.Pattern;
import fr.neamar.kiss.R;
import fr.neamar.kiss.loader.LoadTogglesPojos;
import fr.neamar.kiss.pojo.Pojo;
import fr.neamar.kiss.pojo.TogglesPojo;
public class TogglesProvider extends Provider<TogglesPojo> {
private String toggleName;
@Override
public void reload() {
this.initialize(new LoadTogglesPojos(this));
toggleName = this.getString(R.string.toggles_prefix).toLowerCase();
}
public ArrayList<Pojo> getResults(String query) {
ArrayList<Pojo> results = new ArrayList<>();
int relevance;
String toggleNameLowerCased;
for (TogglesPojo toggle : pojos) {
relevance = 0;
toggleNameLowerCased = toggle.nameNormalized;
if (toggleNameLowerCased.startsWith(query))
relevance = 75;
else if (toggleNameLowerCased.contains(" " + query))
relevance = 30;
else if (toggleNameLowerCased.contains(query))
relevance = 1;
else if (toggleName.startsWith(query)) {
// Also display for a search on "settings" for instance
relevance = 4;
}
if (relevance > 0) {
toggle.displayName = toggle.name.replaceFirst(
"(?i)(" + Pattern.quote(query) + ")", "{$1}");
toggle.relevance = relevance;
results.add(toggle);
}
}
return results;
}
public Pojo findById(String id) {
for (Pojo pojo : pojos) {
if (pojo.id.equals(id)) {
pojo.displayName = pojo.name;
return pojo;
}
}
return null;
}
}