package generell; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class ResultBase{ private ArrayList resultAL; private int strikeLimit = 20; private int sourceLimit = 15; public ResultBase(int sourceLimit, int strikeLimit){ //System.out.println("ResultBase initialized"); this.strikeLimit = strikeLimit; this.sourceLimit = sourceLimit; resultAL = new ArrayList(); } public void setResult(String SHA1, String size, String name ,String score, String fileindex, String ipp){ SHA1Base sha1 = getSHA1(SHA1); if(sha1 == null){ //System.out.println("sha1 is null"); //System.out.println(size); long l; int sl = sourceLimit; try { l = Long.parseLong(size.trim()); l = l /(1024L*1024L); if(l >= 15L){ if(l >= 50L){ sl= 49; //System.out.println("< 50: "+ sl ); }else{ sl = (int)l -1; //System.out.println("< 15: "+ sl ); } } //System.out.println("> 15: "+ sl ); } catch (NumberFormatException nfe) { //resultAL.add(new SHA1Base(name, size ,SHA1, Integer.parseInt(score), ipp+";"+fileindex, sourceLimit)); } if(SHA1.length()> 20){ resultAL.add(new SHA1Base(name, size ,SHA1, Integer.parseInt(score), ipp+";"+fileindex, sl)); }else{ System.out.println("SHA1 corrupt: "+ SHA1); } }else{ //System.out.println("sha1 is not null"); sha1.addSource(Integer.parseInt(score), ipp+";"+fileindex); } } public StringBuffer getAllResults(){ StringBuffer sb = new StringBuffer(); String tmp = ""; Collections.sort(resultAL, new Comparator(){ @Override public int compare(SHA1Base s1,SHA1Base s2){ if(s1.getScore() < s2.getScore()){ return 1; }else if(s1.getScore() > s2.getScore()){ return -1; } return 0; } }); //Collections.sort(resultAL); for(int i = 0; i < resultAL.size(); i++){ if(resultAL.get(i).getSources() != null){ tmp=tmp+((resultAL.get(i).getScore())*2+"#"+resultAL.get(i).getSize()+"#"+resultAL.get(i).getSHA1()+"#"+resultAL.get(i).getSources()); } //System.out.println("tmp: "+ tmp); if(i > strikeLimit -1){ System.out.println("enough stike counts:" + i); break; } sb.append(tmp); tmp =""; } //System.out.println("sb: "+ sb); return sb; } public SHA1Base getSHA1(String SHA1){ for(int i = 0; i < resultAL.size(); i++){ if(resultAL.get(i).exists(SHA1)){ return resultAL.get(i); } } return null; } }