Commit 566bac43 by Nilu

test analysis output

parent 028f1b0d
......@@ -36,9 +36,9 @@ public class TestAnalysisFP extends ORMProcessFormProcessor
try
{
loadData(testInput, process.getTransaction());
SingleValueTableModel model = loadData(testInput, process.getTransaction());
ExcelExporter.ExportAppender excelRenderer = getExportAppender(testInput.getCSV());
ExcelExporter.ExportAppender excelRenderer = getExportAppender(model);
excelRenderer.export(bos);
bytes = bos.toByteArray();
}
......@@ -55,7 +55,7 @@ public class TestAnalysisFP extends ORMProcessFormProcessor
};
}
private static ExcelExporter.ExportAppender getExportAppender(BinaryContent file) throws IOException
private static ExcelExporter.ExportAppender getExportAppender(SingleValueTableModel model) throws IOException
{
Properties props = new Properties();
props.load(TestAnalysisFP.class.getClassLoader().getResourceAsStream("excel-styles.properties"));
......@@ -67,7 +67,7 @@ public class TestAnalysisFP extends ORMProcessFormProcessor
ExcelExporter.ExportAppender exportAppender = new ExcelExporter(props).getAppender();
exportAppender.appendTable("New Sheet", 1, getExcelContent(file));
exportAppender.appendTable("New Sheet", 0, model);
return exportAppender;
}
......@@ -81,14 +81,15 @@ public class TestAnalysisFP extends ORMProcessFormProcessor
}
public void loadData(TestInput testInput, ObjectTransaction objTran)
public SingleValueTableModel loadData(TestInput testInput, ObjectTransaction objTran)
{
BufferedReader bReader = null;
String line = "";
String csvSeparator = ",";
boolean first = true;
List<Candidate> candidates = new ArrayList<>();
List<Answer> answers = new ArrayList<>();
SingleValueTableModel model = null;
BufferedReader bReader = null;
String line = "";
String csvSeparator = ",";
boolean first = true;
List<Candidate> candidates = new ArrayList<>();
List<Answer> answers = new ArrayList<>();
try
{
......@@ -128,7 +129,7 @@ public class TestAnalysisFP extends ORMProcessFormProcessor
}
}
AnalysisEngine.analyseAnswers(answers.toArray(new Answer[0]), testInput.getLevel());
model = AnalysisEngine.analyseAnswers(answers.toArray(new Answer[0]), testInput.getLevel());
}
catch (FileNotFoundException ex)
......@@ -161,6 +162,8 @@ public class TestAnalysisFP extends ORMProcessFormProcessor
throw new NestedException(ex);
}
}
return model;
}
......
......@@ -11,11 +11,15 @@ import oneit.objstore.ObjectTransaction;
import oneit.objstore.rdbms.filters.EqualsFilter;
import oneit.objstore.rdbms.filters.GreaterThanEqualFilter;
import oneit.objstore.rdbms.filters.LessThanEqualFilter;
import oneit.utils.MultiHashtable;
import oneit.utils.table.SingleValueTableModel;
import performa.orm.Answer;
import performa.orm.Candidate;
import performa.orm.Factor;
import performa.orm.FactorQuestionLink;
import performa.orm.FactorScoreResult;
import performa.orm.Level;
import performa.orm.types.QuestionType;
/**
*
......@@ -24,61 +28,93 @@ import performa.orm.Level;
public class AnalysisEngine
{
public static void analyseAnswers(Answer[] answers, Level level)
public static SingleValueTableModel analyseAnswers(Answer[] answers, Level level)
{
ObjectTransaction objTran = level.getTransaction();
Map<Factor, Integer> factorScoreMap = new HashMap<>();
SingleValueTableModel model = new SingleValueTableModel();
ObjectTransaction objTran = level.getTransaction();
MultiHashtable<Candidate, Answer> answersByCandidate = new MultiHashtable<>();
for (Answer answer : answers)
{
FactorQuestionLink[] links = FactorQuestionLink.SearchByAll()
.andQuestion(new EqualsFilter<>(answer.getQuestion()))
.search(objTran);
answersByCandidate.groupValues(answers, Answer.pipesAnswer().toCandidate());
int factorScore = 0;
int index = 0;
for (Candidate candidate : answersByCandidate.keySet())
{
int rowNumber = 0;
int colNumber = ( index * 3 ) + 1;
Map<Factor, Integer> factorScoreMap = new HashMap<>();
model.addCell(rowNumber++, colNumber, new SingleValueTableModel.CellModel(candidate.getFirstName(), ""));
for (FactorQuestionLink link: links)
for (Answer answer : answersByCandidate.getValuesForKey(candidate))
{
Factor factor = link.getFactor();
if(factorScoreMap.containsKey(factor))
{
factorScore += factorScoreMap.get(factor);
}
if(link.getReverseScore().equals("Yes"))
FactorQuestionLink[] links = FactorQuestionLink.SearchByAll()
.andQuestion(new EqualsFilter<>(answer.getQuestion()))
.search(objTran);
int factorScore = 0;
for (FactorQuestionLink link: links)
{
// ipsative is stored in quest_hdr. bo not created yet
factorScore += (10 - answer.getAnswerNo());
Factor factor = link.getFactor();
if(factorScoreMap.containsKey(factor))
{
factorScore += factorScoreMap.get(factor);
}
if(link.getReverseScore())
{
if(answer.getQuestion().getSection().getQuestionType() == QuestionType.IPSATIVE)
{
factorScore += (10 - answer.getAnswerNo());
}
else
{
factorScore += (8 - answer.getAnswerNo());
}
}
else
{
factorScore += answer.getAnswerNo();
}
factorScoreMap.put(factor, factorScore);
}
else
}
for (Map.Entry<Factor, Integer> entrySet : factorScoreMap.entrySet())
{
Factor factor = entrySet.getKey();
Integer factorScore = entrySet.getValue();
if(index == 0)
{
factorScore += answer.getAnswerNo();
model.addCell(rowNumber, 0, new SingleValueTableModel.CellModel(factor.getDescription(), ""));
}
factorScoreMap.put(factor, factorScore);
FactorScoreResult result = FactorScoreResult.SearchByFactorScore()
.andFactor(new EqualsFilter<>(factor))
.andLevel(new EqualsFilter<>(level))
.andFromScore(new LessThanEqualFilter<>(factorScore))
.andToScore(new GreaterThanEqualFilter<>(factorScore))
.search(objTran);
int score = result != null ? result.getColorCode().getWeightage() : 0;
// TODO: calculate normalised score based on importance
model.addCell(rowNumber, colNumber, new SingleValueTableModel.CellModel(String.valueOf(score), ""));
model.addCell(rowNumber, colNumber + 1, new SingleValueTableModel.CellModel(result != null ? result.getColorCode().getDescription() : "", ""));
model.addCell(rowNumber++, colNumber + 2, new SingleValueTableModel.CellModel(result != null ? result.getNarrative().getGraphicNotes(): "", ""));
}
}
for (Map.Entry<Factor, Integer> entrySet : factorScoreMap.entrySet())
{
Factor factor = entrySet.getKey();
Integer factorScore = entrySet.getValue();
FactorScoreResult result = FactorScoreResult.SearchByFactorScore()
.andFactor(new EqualsFilter<>(factor))
.andLevel(new EqualsFilter<>(level))
.andFromScore(new LessThanEqualFilter<>(factorScore))
.andToScore(new GreaterThanEqualFilter<>(factorScore))
.search(objTran);
int score = result != null ? result.getColorCode().getWeightage() : 0;
System.out.println("score :: " + score);
// TODO: calculate normalised score based on importance
index++;
}
return model;
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment