Commit 878b1b1e by Nilu Committed by Harsh Shah

call analysis engine when submitting the application

parent 5bd1ea68
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
<column name="object_id" type="Long" nullable="false" length="11"/> <column name="object_id" type="Long" nullable="false" length="11"/>
<column name="object_last_updated_date" type="Date" nullable="false" length="22"/> <column name="object_last_updated_date" type="Date" nullable="false" length="22"/>
<column name="object_created_date" type="Date" nullable="false" length="22"/> <column name="object_created_date" type="Date" nullable="false" length="22"/>
<column name="job_id" type="Long" length="11" nullable="true"/>
<column name="level_id" type="Long" length="11" nullable="true"/> <column name="level_id" type="Long" length="11" nullable="true"/>
<column name="candidate_id" type="Long" length="11" nullable="true"/> <column name="candidate_id" type="Long" length="11" nullable="true"/>
</NODE> </NODE>
......
...@@ -8,6 +8,7 @@ CREATE TABLE tl_test_analysis ( ...@@ -8,6 +8,7 @@ CREATE TABLE tl_test_analysis (
object_last_updated_date datetime DEFAULT getdate() NOT NULL , object_last_updated_date datetime DEFAULT getdate() NOT NULL ,
object_created_date datetime DEFAULT getdate() NOT NULL object_created_date datetime DEFAULT getdate() NOT NULL
, ,
job_id numeric(12) NULL,
level_id numeric(12) NULL, level_id numeric(12) NULL,
candidate_id numeric(12) NULL candidate_id numeric(12) NULL
); );
......
...@@ -9,6 +9,7 @@ CREATE TABLE tl_test_analysis ( ...@@ -9,6 +9,7 @@ CREATE TABLE tl_test_analysis (
object_last_updated_date date DEFAULT SYSDATE NOT NULL , object_last_updated_date date DEFAULT SYSDATE NOT NULL ,
object_created_date date DEFAULT SYSDATE NOT NULL object_created_date date DEFAULT SYSDATE NOT NULL
, ,
job_id number(12) NULL,
level_id number(12) NULL, level_id number(12) NULL,
candidate_id number(12) NULL candidate_id number(12) NULL
); );
......
...@@ -9,6 +9,7 @@ CREATE TABLE tl_test_analysis ( ...@@ -9,6 +9,7 @@ CREATE TABLE tl_test_analysis (
object_last_updated_date timestamp DEFAULT NOW() NOT NULL , object_last_updated_date timestamp DEFAULT NOW() NOT NULL ,
object_created_date timestamp DEFAULT NOW() NOT NULL object_created_date timestamp DEFAULT NOW() NOT NULL
, ,
job_id numeric(12) NULL,
level_id numeric(12) NULL, level_id numeric(12) NULL,
candidate_id numeric(12) NULL candidate_id numeric(12) NULL
); );
......
...@@ -10,6 +10,7 @@ import oneit.servlets.process.*; ...@@ -10,6 +10,7 @@ import oneit.servlets.process.*;
import oneit.utils.*; import oneit.utils.*;
import performa.orm.*; import performa.orm.*;
import performa.orm.types.ApplicationStatus; import performa.orm.types.ApplicationStatus;
import performa.utils.AnalysisEngine;
public class CompleteApplicationFP extends SaveFP public class CompleteApplicationFP extends SaveFP
...@@ -21,6 +22,8 @@ public class CompleteApplicationFP extends SaveFP ...@@ -21,6 +22,8 @@ public class CompleteApplicationFP extends SaveFP
jobApplication.setApplicationStatus(ApplicationStatus.SUBMITTED); jobApplication.setApplicationStatus(ApplicationStatus.SUBMITTED);
AnalysisEngine.analyseAnswers(jobApplication);
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING2, "Job Application Completed", jobApplication); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING2, "Job Application Completed", jobApplication);
return super.processForm(process, submission, params); return super.processForm(process, submission, params);
......
...@@ -38,7 +38,7 @@ public class TestAnalysisFP extends ORMProcessFormProcessor ...@@ -38,7 +38,7 @@ public class TestAnalysisFP extends ORMProcessFormProcessor
loadData(testInput, process.getTransaction()); loadData(testInput, process.getTransaction());
AnalysisEngine.analyseAnswers(testInput); // AnalysisEngine.analyseAnswers(testInput);
try try
{ {
......
...@@ -10,6 +10,7 @@ import oneit.utils.filter.CollectionFilter; ...@@ -10,6 +10,7 @@ import oneit.utils.filter.CollectionFilter;
import oneit.utils.filter.Filter; import oneit.utils.filter.Filter;
import oneit.utils.parsers.FieldException; import oneit.utils.parsers.FieldException;
import performa.orm.types.CriteriaType; import performa.orm.types.CriteriaType;
import performa.utils.AnalysisEngine;
public class JobApplication extends BaseJobApplication public class JobApplication extends BaseJobApplication
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
<TABLE name="tl_test_analysis" tablePrefix="object" polymorphic="FALSE"> <TABLE name="tl_test_analysis" tablePrefix="object" polymorphic="FALSE">
<SINGLEREFERENCE name="Job" type="Job" dbcol="job_id"/>
<SINGLEREFERENCE name="Level" type="Level" dbcol="level_id" backreferenceName="TestAnalysises"/> <SINGLEREFERENCE name="Level" type="Level" dbcol="level_id" backreferenceName="TestAnalysises"/>
<SINGLEREFERENCE name="Candidate" type="Candidate" dbcol="candidate_id" backreferenceName="TestAnalysises"/> <SINGLEREFERENCE name="Candidate" type="Candidate" dbcol="candidate_id" backreferenceName="TestAnalysises"/>
......
...@@ -38,7 +38,7 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr ...@@ -38,7 +38,7 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr
} }
private String SELECT_COLUMNS = "{PREFIX}tl_test_analysis.object_id as id, {PREFIX}tl_test_analysis.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}tl_test_analysis.object_CREATED_DATE as CREATED_DATE, {PREFIX}tl_test_analysis.level_id, {PREFIX}tl_test_analysis.candidate_id, 1 AS commasafe "; private String SELECT_COLUMNS = "{PREFIX}tl_test_analysis.object_id as id, {PREFIX}tl_test_analysis.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}tl_test_analysis.object_CREATED_DATE as CREATED_DATE, {PREFIX}tl_test_analysis.job_id, {PREFIX}tl_test_analysis.level_id, {PREFIX}tl_test_analysis.candidate_id, 1 AS commasafe ";
private String SELECT_JOINS = ""; private String SELECT_JOINS = "";
public BaseBusinessClass fetchByID(ObjectID id, PersistentSetCollection allPSets, RDBMSPersistenceContext context, SQLManager sqlMgr) throws SQLException, StorageException public BaseBusinessClass fetchByID(ObjectID id, PersistentSetCollection allPSets, RDBMSPersistenceContext context, SQLManager sqlMgr) throws SQLException, StorageException
...@@ -89,6 +89,7 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr ...@@ -89,6 +89,7 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr
// Check for persistent sets already prefetched // Check for persistent sets already prefetched
if (false || !tl_test_analysisPSet.containsAttrib(BaseBusinessClass.FIELD_ObjectLastModified) || if (false || !tl_test_analysisPSet.containsAttrib(BaseBusinessClass.FIELD_ObjectLastModified) ||
!tl_test_analysisPSet.containsAttrib(TestAnalysis.SINGLEREFERENCE_Job)||
!tl_test_analysisPSet.containsAttrib(TestAnalysis.SINGLEREFERENCE_Level)|| !tl_test_analysisPSet.containsAttrib(TestAnalysis.SINGLEREFERENCE_Level)||
!tl_test_analysisPSet.containsAttrib(TestAnalysis.SINGLEREFERENCE_Candidate)) !tl_test_analysisPSet.containsAttrib(TestAnalysis.SINGLEREFERENCE_Candidate))
{ {
...@@ -180,10 +181,10 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr ...@@ -180,10 +181,10 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr
{ {
int rowsUpdated = executeStatement (sqlMgr, int rowsUpdated = executeStatement (sqlMgr,
"UPDATE {PREFIX}tl_test_analysis " + "UPDATE {PREFIX}tl_test_analysis " +
"SET level_id = ? , candidate_id = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " + "SET job_id = ? , level_id = ? , candidate_id = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " +
"WHERE tl_test_analysis.object_id = ? AND " + getConcurrencyCheck (sqlMgr, "object_LAST_UPDATED_DATE", obj.getObjectLastModified ()) + " ", "WHERE tl_test_analysis.object_id = ? AND " + getConcurrencyCheck (sqlMgr, "object_LAST_UPDATED_DATE", obj.getObjectLastModified ()) + " ",
CollectionUtils.listEntry (SQLManager.CheckNull((Long)(tl_test_analysisPSet.getAttrib (TestAnalysis.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_test_analysisPSet.getAttrib (TestAnalysis.SINGLEREFERENCE_Candidate)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray()); CollectionUtils.listEntry (SQLManager.CheckNull((Long)(tl_test_analysisPSet.getAttrib (TestAnalysis.SINGLEREFERENCE_Job)))).listEntry (SQLManager.CheckNull((Long)(tl_test_analysisPSet.getAttrib (TestAnalysis.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_test_analysisPSet.getAttrib (TestAnalysis.SINGLEREFERENCE_Candidate)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray());
if (rowsUpdated != 1) if (rowsUpdated != 1)
{ {
...@@ -440,6 +441,7 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr ...@@ -440,6 +441,7 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr
tl_test_analysisPSet.setAttrib(BaseBusinessClass.FIELD_ObjectCreated, r.getTimestamp ("CREATED_DATE")); tl_test_analysisPSet.setAttrib(BaseBusinessClass.FIELD_ObjectCreated, r.getTimestamp ("CREATED_DATE"));
tl_test_analysisPSet.setAttrib(TestAnalysis.SINGLEREFERENCE_Job, r.getObject ("job_id"));
tl_test_analysisPSet.setAttrib(TestAnalysis.SINGLEREFERENCE_Level, r.getObject ("level_id")); tl_test_analysisPSet.setAttrib(TestAnalysis.SINGLEREFERENCE_Level, r.getObject ("level_id"));
tl_test_analysisPSet.setAttrib(TestAnalysis.SINGLEREFERENCE_Candidate, r.getObject ("candidate_id")); tl_test_analysisPSet.setAttrib(TestAnalysis.SINGLEREFERENCE_Candidate, r.getObject ("candidate_id"));
...@@ -458,10 +460,10 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr ...@@ -458,10 +460,10 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr
{ {
executeStatement (sqlMgr, executeStatement (sqlMgr,
"INSERT INTO {PREFIX}tl_test_analysis " + "INSERT INTO {PREFIX}tl_test_analysis " +
" ( level_id, candidate_id, object_id, object_LAST_UPDATED_DATE, object_CREATED_DATE) " + " ( job_id, level_id, candidate_id, object_id, object_LAST_UPDATED_DATE, object_CREATED_DATE) " +
"VALUES " + "VALUES " +
" ( ?, ?, ?, " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ", " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ")", " ( ?, ?, ?, ?, " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ", " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ")",
CollectionUtils .listEntry (SQLManager.CheckNull((Long)(tl_test_analysisPSet.getAttrib (TestAnalysis.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_test_analysisPSet.getAttrib (TestAnalysis.SINGLEREFERENCE_Candidate)))) .listEntry (objectID.longID ()).toList().toArray()); CollectionUtils .listEntry (SQLManager.CheckNull((Long)(tl_test_analysisPSet.getAttrib (TestAnalysis.SINGLEREFERENCE_Job)))).listEntry (SQLManager.CheckNull((Long)(tl_test_analysisPSet.getAttrib (TestAnalysis.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_test_analysisPSet.getAttrib (TestAnalysis.SINGLEREFERENCE_Candidate)))) .listEntry (objectID.longID ()).toList().toArray());
tl_test_analysisPSet.setStatus (PersistentSetStatus.PROCESSED); tl_test_analysisPSet.setStatus (PersistentSetStatus.PROCESSED);
} }
......
...@@ -15,93 +15,92 @@ import performa.orm.types.*; ...@@ -15,93 +15,92 @@ import performa.orm.types.*;
*/ */
public class AnalysisEngine public class AnalysisEngine
{ {
public static void analyseAnswers(TestInput testInput) throws StorageException, FieldException public static void analyseAnswers(JobApplication jobApplication) throws StorageException, FieldException
{ {
LogMgr.log(TestInput.LOG, LogLevel.PROCESSING1, "Inside AnalysisEngine --> analyseAnswers"); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "Inside AnalysisEngine --> analyseAnswers");
ObjectTransaction objTran = testInput.getTransaction(); ObjectTransaction objTran = jobApplication.getTransaction();
Set<Factor> levelFactors = testInput.pipelineTestInput().toLevel().toFactors().toFactor().uniqueVals(); Set<Factor> levelFactors = jobApplication.pipelineJobApplication().toJob().toLevel().toFactors().toFactor().uniqueVals();
Filter<FactorQuestionLink> factorFilter = FactorQuestionLink.SearchByAll().andFactor(new InFilter(levelFactors)); Filter<FactorQuestionLink> factorFilter = FactorQuestionLink.SearchByAll().andFactor(new InFilter(levelFactors));
//Preloading Data //Preloading Data
testInput.pipelineTestInput().toCandidates().toJobApplications().toProfileAssessmentAnswers().toQuestion().toSection().uniqueVals(); jobApplication.pipelineJobApplication().toProfileAssessmentAnswers().toQuestion().toSection().uniqueVals();
testInput.pipelineTestInput().toCandidates().toJobApplications().toProfileAssessmentAnswers().toQuestion().toFactors().toFactor().uniqueVals(); jobApplication.pipelineJobApplication().toProfileAssessmentAnswers().toQuestion().toFactors().toFactor().uniqueVals();
Factor.pipesFactor(levelFactors).toResults().uniqueVals(); Factor.pipesFactor(levelFactors).toResults().uniqueVals();
for (Candidate candidate : testInput.getCandidatesSet()) LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "Processing Job Application ", jobApplication);
{
LogMgr.log(TestInput.LOG, LogLevel.PROCESSING1, "Processing candidate ", candidate); Map<Factor, Integer> factorScoreMap = new HashMap();
Map<Factor, Integer> factorScoreMap = new HashMap();
for(JobApplication application: candidate.getJobApplicationsSet()) for (Answer answer : jobApplication.getProfileAssessmentAnswersSet())
{
Set<FactorQuestionLink> links = answer.pipelineAnswer().toQuestion().toFactors(factorFilter).uniqueVals();
for (FactorQuestionLink link : links)
{ {
for (Answer answer : application.getProfileAssessmentAnswersSet()) int factorScore = 0;
Factor factor = link.getFactor();
if(factorScoreMap.containsKey(factor))
{ {
Set<FactorQuestionLink> links = answer.pipelineAnswer().toQuestion().toFactors(factorFilter).uniqueVals(); factorScore = factorScoreMap.get(factor);
}
for (FactorQuestionLink link : links) if(link.isTrue(link.getReverseScore()))
{
if(answer.getQuestion().getQuestionType() == QuestionType.IPSATIVE)
{ {
int factorScore = 0; factorScore += (10 - answer.getAnswerNo());
Factor factor = link.getFactor();
if(factorScoreMap.containsKey(factor))
{
factorScore = factorScoreMap.get(factor);
}
if(link.isTrue(link.getReverseScore()))
{
if(answer.getQuestion().getQuestionType() == QuestionType.IPSATIVE)
{
factorScore += (10 - answer.getAnswerNo());
}
else
{
factorScore += (8 - answer.getAnswerNo());
}
}
else
{
factorScore += answer.getAnswerNo();
}
factorScoreMap.put(factor, factorScore);
} }
else
{
factorScore += (8 - answer.getAnswerNo());
}
}
else
{
factorScore += answer.getAnswerNo() != null ? answer.getAnswerNo() : 0;
} }
factorScoreMap.put(factor, factorScore);
} }
TestAnalysis testAnalysis = TestAnalysis.createTestAnalysis(objTran); }
testInput.getLevel().addToTestAnalysises(testAnalysis); TestAnalysis testAnalysis = TestAnalysis.createTestAnalysis(objTran);
candidate.addToTestAnalysises(testAnalysis);
for(Factor factor : factorScoreMap.keySet()) jobApplication.getJob().getLevel().addToTestAnalysises(testAnalysis);
jobApplication.getCandidate().addToTestAnalysises(testAnalysis);
testAnalysis.setJob(jobApplication.getJob());
for(Factor factor : factorScoreMap.keySet())
{
int score = factorScoreMap.get(factor);
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "Candidate:", jobApplication.getCandidate(), " Factor:", factor, " Score:", score);
Filter<FactorScoreResult> factorScoreFilter = FactorScoreResult.SearchByAll().andLevel(new EqualsFilter<>(jobApplication.getJob().getLevel()))
.andFromScore(new LessThanEqualFilter<>(score))
.andToScore(new GreaterThanEqualFilter<>(score));
List<FactorScoreResult> factorScoreResults = (List<FactorScoreResult>) factor.pipelineFactor().toResults(factorScoreFilter).vals();
if(factorScoreResults != null && !factorScoreResults.isEmpty())
{ {
int score = factorScoreMap.get(factor); FactorScoreResult factorScoreResult = factorScoreResults.get(0);
LogMgr.log(TestInput.LOG, LogLevel.PROCESSING1, "Candidate:", candidate, " Factor:", factor, " Score:", score);
Filter<FactorScoreResult> factorScoreFilter = FactorScoreResult.SearchByAll().andLevel(new EqualsFilter<>(testInput.getLevel()))
.andFromScore(new LessThanEqualFilter<>(score))
.andToScore(new GreaterThanEqualFilter<>(score));
List<FactorScoreResult> factorScoreResults = (List<FactorScoreResult>) factor.pipelineFactor().toResults(factorScoreFilter).vals();
if(factorScoreResults != null && !factorScoreResults.isEmpty()) FactorScore factorScore = FactorScore.createFactorScore(objTran);
{
FactorScoreResult factorScoreResult = factorScoreResults.get(0);
FactorScore factorScore = FactorScore.createFactorScore(objTran);
factorScore.setFactor(factor); factorScore.setFactor(factor);
factorScore.setScore(score); factorScore.setLevel(jobApplication.getJob().getLevel());
factorScore.setColorCode(factorScoreResult.getColorCode()); factorScore.setScore(score);
factorScore.setColorRank(factorScoreResult.getColorCode() != null ? factorScoreResult.getColorCode().getWeightage() : 0); factorScore.setColorCode(factorScoreResult.getColorCode());
factorScore.setNarrative(factorScoreResult.getNarrative()); factorScore.setColorRank(factorScoreResult.getColorCode() != null ? factorScoreResult.getColorCode().getWeightage() : 0);
factorScore.setNarrative(factorScoreResult.getNarrative());
testAnalysis.addToFactorScores(factorScore); testAnalysis.addToFactorScores(factorScore);
}
} }
} }
LogMgr.log(TestInput.LOG, LogLevel.PROCESSING1, "AnalysisEngine --> analyseAnswers completed");
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "AnalysisEngine --> analyseAnswers completed");
} }
} }
\ No newline at end of file
...@@ -23,11 +23,11 @@ ...@@ -23,11 +23,11 @@
$('.' + id).click(); $('.' + id).click();
}); });
$(".job-status").change(function(){ $(".job-status").change(function()
{
var id = $(this).closest('.job-list').attr('id'); var id = $(this).closest('.job-list').attr('id');
$('.save-job' + id).click(); $('.save-job' + id).click();
}); });
}); });
</script> </script>
......
<?xml version="1.0" encoding="UTF-8"?>
<!-- @AutoRun -->
<OBJECTS name="" xmlns:oneit="http://www.1iT.com.au">
<NODE name="Script" factory="Vector">
<NODE name="DDL" factory="Participant" class="oneit.sql.transfer.RedefineTableOperation">
<tableName factory="String">tl_test_analysis</tableName>
<column name="job_id" type="Long" length="11" nullable="true"/>
</NODE>
</NODE>
</OBJECTS>
\ 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