here this is a faster search using Java 8 Lambda and switch string
Code:
package custom;
import client.SkillFactory;
import java.io.File;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import provider.MapleData;
import provider.MapleDataProvider;
import provider.MapleDataProviderFactory;
import provider.MapleDataTool;
import server.MapleItemInformationProvider;
import server.quest.MapleQuest;
import tools.Pair;
/**
* @author Itzik
* @author ExtremeDevilz
* @Version 1.1
*
*/
public class SearchGenerator {
public static String searchData(int type, String search) {
String result = "";
MapleData data;
MapleDataProvider dataProvider = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/" + "String.wz"));
List<String> ret = new ArrayList<>();
List<Pair<Integer, String>> pairList = new LinkedList<>();
switch(type) {
case 1:
MapleItemInformationProvider.getInstance().getAllItems().stream().filter((pair) -> (pair != null && pair.name != null && pair.name.toLowerCase().contains(search.toLowerCase()))).forEach((pair) -> {
ret.add("\r\n#L" + pair.itemId + "##b" + pair.itemId + " " + " #k- " + " #r#z" + pair.itemId + "##k");
});
break;
case 2:
data = dataProvider.getData("Npc.img");
for (MapleData IdData : data.getChildren()) {
pairList.add(new Pair<>(Integer.parseInt(IdData.getName()), MapleDataTool.getString(IdData.getChildByPath("name"), "NO-NAME")));
}
pairList.stream().filter((pair) -> (pair.getRight().toLowerCase().contains(search.toLowerCase()))).forEach((pair) -> {
ret.add("\r\n#L" + pair.getLeft() + "#" + pair.getLeft() + " - " + pair.getRight());
});
break;
case 3:
data = dataProvider.getData("Map.img");
for (MapleData mapAreaData : data.getChildren()) {
for (MapleData IdData : mapAreaData.getChildren()) {
pairList.add(new Pair<>(Integer.parseInt(IdData.getName()), MapleDataTool.getString(IdData.getChildByPath("streetName"), "NO-NAME") + " - " + MapleDataTool.getString(IdData.getChildByPath("mapName"), "NO-NAME")));
}
}
pairList.stream().filter((pair) -> (pair.getRight().toLowerCase().contains(search.toLowerCase()))).forEach((pair) -> {
ret.add("\r\n#L" + pair.getLeft() + "#" + pair.getLeft() + " - " + pair.getRight());
});
break;
case 4:
data = dataProvider.getData("Mob.img");
for (MapleData IdData : data.getChildren()) {
pairList.add(new Pair<>(Integer.parseInt(IdData.getName()), MapleDataTool.getString(IdData.getChildByPath("name"), "NO-NAME")));
}
pairList.stream().filter((pair) -> (pair.getRight().toLowerCase().contains(search.toLowerCase()))).forEach((pair) -> {
ret.add("\r\n#L" + pair.getLeft() + "#" + pair.getLeft() + " - " + pair.getRight());
});
break;
case 5:
MapleQuest.getAllInstances().stream().filter((pair) -> (pair.getName().length() > 0 && pair.getName().toLowerCase().contains(search.toLowerCase()))).forEach((pair) -> {
ret.add("\r\n#L" + pair.getId() + "#" + pair.getId() + " - " + pair.getName());
});
break;
case 6:
SkillFactory.getAllSkills().stream().filter((pair) -> (pair.getName() != null && pair.getName().toLowerCase().contains(search.toLowerCase()))).forEach((pair) -> {
ret.add("\r\n#L" + pair.getId() + "#" + pair.getId() + " - " + pair.getName());
});
break;
}
if (ret != null && ret.size() > 0) {
for (String singleRet : ret) {
if (result.length() < 10000) {
result += singleRet;
} else {
result += "\r\n#bCouldn't load all data, there are too many results.#k";
return result;
}
}
} else {
result = "";
}
return result;
}
public static boolean foundData(int type, String search) {
return !searchData(type, search).isEmpty();
}
}