if(resultsArray != null) {
Set<Recommendation> tmp = new TreeSet<Recommendation>(resultsArray);
while(tmp.size()> limit) {
Recommendation toRemove = ((TreeSet<Recommendation>)tmp).first();
tmp.remove(toRemove);
}
limitedResult = tmp;
if(isOverall) {
Set<Recommendation> tmp2 = new TreeSet<Recommendation>(resultsArray);
for(Recommendation r : tmp2) {
boolean wasFound = false;
for(Recommendation r2 : overallRecommendation) {
if(r2.getRecommendedItem().equals(r.getRecommendedItem())) {
overallRecommendation.remove(r2);
r2.setAccuracy(r2.getAccuracy() + weight*r.getAccuracy());
overallRecommendation.add(r2);
wasFound = true;
break;
}
}
if(!wasFound) {
overallRecommendation.add(new Recommendation(r.getRecommendedItem(), r.getAccuracy()*weight));
}
}
}
if(limitedResult.size() > 0)
prepareResult(limitedResult);
}
//-----------TEST--------------------
for(Recommendation r : limitedResult)
System.out.println(r);
//!-----------TEST-------------------
wholeResult[i] = type;
wholeResult[i].setResultsArray((TreeSet<Recommendation>)limitedResult);
} else {
overallLimit = urpTable[i].getLimit();
}
}
if(isOverall && urpTable.length>1) {
while(overallRecommendation.size() > overallLimit) {
Recommendation toRemove = ((TreeSet<Recommendation>)overallRecommendation).first();
overallRecommendation.remove(toRemove);
}
if(overallRecommendation.size() > 0){
Recommendation highest = ((TreeSet<Recommendation>)overallRecommendation).last();
float divider = highest.getAccuracy();
for(Recommendation r : overallRecommendation)
r.setAccuracy(r.getAccuracy() / divider);
}