package anotacja; import java.io.File; import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.lang.reflect.Type; import anotacja.WebCBIR.Ordered; import anotacja.json.SimilarDocument; import anotacja.json.Entry; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; public class WebCBIRCaller { public static void main(String[] args) { if (args.length != 6) { System.out.println("[Caller] No correct query given."); return; } try { String clust = args[1]; int clusters = Integer.parseInt(clust); int spatial = (args[5].equals("true")) ? 500 : 0; WebCBIR CBIR = new WebCBIR(args[2], "", spatial); int K = Integer.parseInt(args[3]); int N = Integer.parseInt(args[4]); HashMap Dict = new HashMap(); LinkedList Lis = new LinkedList(); LinkedList Done; File[] files = new File(args[0]).listFiles(); for (File file : files) { String query = file.getAbsolutePath(); Entry Base = new Entry(query); //System.out.println("Now processing: " + Base + "\t | " + (int)((100.0 * i) / files.length) + "%"); List> Partial = CBIR.compareAllToQuery(query, clusters); Done = new LinkedList(); int CurrentK = 1; for (Ordered O : Partial) { Entry New = new Entry(O.get(), O.value()); if (Done.contains(New.FileID)) continue; else Done.add(New.FileID); if (New.FileID.equals(Base.FileID)) continue; SimilarDocument Target = Dict.get(New.FileID); if (Target == null) { Target = new SimilarDocument(New.FileID); Dict.put(New.FileID, Target); Lis.add(Target); } Target.AddEntry(Base, New, New.Sim); CurrentK++; if (CurrentK > K) break; } } //System.out.println(); Collections.sort(Lis); //for (SimilarDocument SD : Lis) //{ // System.out.println(SD); //} LinkedList Out = new LinkedList(); N = Math.min(N, Lis.size()); for (int i = 0; i < N; i++) { Out.add(Lis.get(i)); } Gson OutputBuilder = new GsonBuilder().create(); String Temp = OutputBuilder.toJson(Out); System.out.println(Temp); //Type ListType = new TypeToken>() {}.getType(); //Lis = OutputBuilder.fromJson(Temp, ListType); //for (SimilarDocument SD : Lis) //{ // System.out.println(SD); //} } catch(Exception ex) { ex.printStackTrace(); } } }