package org.openmrs.module.patientmatching.web.dwr;
import java.util.List;
import org.openmrs.module.patientmatching.Estimator;
public class DWREstimationUtilities {
private Estimator estimator = new Estimator();
private boolean estimationRan = false;
private final static double MAX_FACTOR = 10.0;
private final static double MIN_FACTOR = 0.01;
public String getEstimationInfomation(List<String> blockingFields) {
runEstimationProcess(blockingFields);
long estimatedComparisions = getEstimatedPairs();
long totalRecords = getTotalRecords();
String information = "";
if (estimatedComparisions > MAX_FACTOR * totalRecords) {
information = "The Strategy results in more record pairs than acceptable level";
} else if(estimatedComparisions < MIN_FACTOR * totalRecords){
information = "The Strategy results in less record pairs than acceptable level";
} else{
information = "The strategy is at acceptable level";
}
information += ";"+estimatedComparisions+";"+ getEstimatedTimeToRun()+";"+totalRecords;
return information;
}
public long getEstimatedPairs(){
return estimator.getEstimatedComparisons();
}
public long getEstimatedTimeToRun() {
return estimator.getEstimatedTimeToRun();
}
public long getTotalRecords() {
return estimator.getTotalRecords();
}
private void runEstimationProcess(List<String> entryNames) {
if (!estimationRan) {
estimator.doEstimationsWithBlockingFields(entryNames);
estimationRan = true;
}
}
}