Commit 878b1b1e by Nilu Committed by Harsh Shah

call analysis engine when submitting the application

parent 5bd1ea68
......@@ -8,6 +8,7 @@
<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_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="candidate_id" type="Long" length="11" nullable="true"/>
</NODE>
......
......@@ -8,6 +8,7 @@ CREATE TABLE tl_test_analysis (
object_last_updated_date datetime DEFAULT getdate() NOT NULL ,
object_created_date datetime DEFAULT getdate() NOT NULL
,
job_id numeric(12) NULL,
level_id numeric(12) NULL,
candidate_id numeric(12) NULL
);
......
......@@ -9,6 +9,7 @@ CREATE TABLE tl_test_analysis (
object_last_updated_date date DEFAULT SYSDATE NOT NULL ,
object_created_date date DEFAULT SYSDATE NOT NULL
,
job_id number(12) NULL,
level_id number(12) NULL,
candidate_id number(12) NULL
);
......
......@@ -9,6 +9,7 @@ CREATE TABLE tl_test_analysis (
object_last_updated_date timestamp DEFAULT NOW() NOT NULL ,
object_created_date timestamp DEFAULT NOW() NOT NULL
,
job_id numeric(12) NULL,
level_id numeric(12) NULL,
candidate_id numeric(12) NULL
);
......
......@@ -10,6 +10,7 @@ import oneit.servlets.process.*;
import oneit.utils.*;
import performa.orm.*;
import performa.orm.types.ApplicationStatus;
import performa.utils.AnalysisEngine;
public class CompleteApplicationFP extends SaveFP
......@@ -21,6 +22,8 @@ public class CompleteApplicationFP extends SaveFP
jobApplication.setApplicationStatus(ApplicationStatus.SUBMITTED);
AnalysisEngine.analyseAnswers(jobApplication);
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING2, "Job Application Completed", jobApplication);
return super.processForm(process, submission, params);
......
......@@ -38,7 +38,7 @@ public class TestAnalysisFP extends ORMProcessFormProcessor
loadData(testInput, process.getTransaction());
AnalysisEngine.analyseAnswers(testInput);
// AnalysisEngine.analyseAnswers(testInput);
try
{
......
......@@ -38,6 +38,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
// Static constants corresponding to field names
public static final String SINGLEREFERENCE_Job = "Job";
public static final String SINGLEREFERENCE_Level = "Level";
public static final String BACKREF_Level = "";
public static final String SINGLEREFERENCE_Candidate = "Candidate";
......@@ -56,6 +57,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
// Private attributes corresponding to single references
private SingleAssociation<TestAnalysis, Job> _Job;
private SingleAssociation<TestAnalysis, Level> _Level;
private SingleAssociation<TestAnalysis, Candidate> _Candidate;
......@@ -85,6 +87,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
Map validatorMapping = ((Map)ConfigMgr.getConfigObject ("CONFIG.ORMVALIDATOR", "ValidatorMapping"));
setupAssocMetaData_FactorScores();
setupAssocMetaData_Job();
setupAssocMetaData_Level();
setupAssocMetaData_Candidate();
......@@ -116,6 +119,20 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
// Meta Info setup
private static void setupAssocMetaData_Job()
{
Map metaInfo = new HashMap ();
metaInfo.put ("dbcol", "job_id");
metaInfo.put ("name", "Job");
metaInfo.put ("type", "Job");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for TestAnalysis.Job:", metaInfo);
ATTRIBUTES_METADATA_TestAnalysis.put (SINGLEREFERENCE_Job, Collections.unmodifiableMap (metaInfo));
}
// Meta Info setup
private static void setupAssocMetaData_Level()
{
Map metaInfo = new HashMap ();
......@@ -180,6 +197,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{
super._initialiseAssociations ();
_Job = new SingleAssociation<TestAnalysis, Job> (this, SINGLEREFERENCE_Job, null, Job.REFERENCE_Job, "tl_test_analysis");
_Level = new SingleAssociation<TestAnalysis, Level> (this, SINGLEREFERENCE_Level, Level.MULTIPLEREFERENCE_TestAnalysises, Level.REFERENCE_Level, "tl_test_analysis");
_Candidate = new SingleAssociation<TestAnalysis, Candidate> (this, SINGLEREFERENCE_Candidate, Candidate.MULTIPLEREFERENCE_TestAnalysises, Candidate.REFERENCE_Candidate, "tl_test_analysis");
_FactorScores = new MultipleAssociation<TestAnalysis, FactorScore> (this, MULTIPLEREFERENCE_FactorScores, FactorScore.SINGLEREFERENCE_TestAnalysis, FactorScore.REFERENCE_FactorScore);
......@@ -192,6 +210,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{
super.initialiseReference ();
_Job = new SingleAssociation<TestAnalysis, Job> (this, SINGLEREFERENCE_Job, null, Job.REFERENCE_Job, "tl_test_analysis");
_Level = new SingleAssociation<TestAnalysis, Level> (this, SINGLEREFERENCE_Level, Level.MULTIPLEREFERENCE_TestAnalysises, Level.REFERENCE_Level, "tl_test_analysis");
_Candidate = new SingleAssociation<TestAnalysis, Candidate> (this, SINGLEREFERENCE_Candidate, Candidate.MULTIPLEREFERENCE_TestAnalysises, Candidate.REFERENCE_Candidate, "tl_test_analysis");
_FactorScores = new MultipleAssociation<TestAnalysis, FactorScore> (this, MULTIPLEREFERENCE_FactorScores, FactorScore.SINGLEREFERENCE_TestAnalysis, FactorScore.REFERENCE_FactorScore);
......@@ -212,6 +231,8 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
List result = super.getSingleAssocs ();
result.add("Job");
result.add("Level");
result.add("Candidate");
......@@ -227,7 +248,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{
throw new RuntimeException ("Game over == null!");
}
else if (assocName.equals (SINGLEREFERENCE_Level))
else if (assocName.equals (SINGLEREFERENCE_Job))
{
return _Job.getReferencedType ();
}else if (assocName.equals (SINGLEREFERENCE_Level))
{
return _Level.getReferencedType ();
}else if (assocName.equals (SINGLEREFERENCE_Candidate))
......@@ -247,7 +271,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{
throw new RuntimeException ("Game over == null!");
}
else if (assocName.equals (SINGLEREFERENCE_Level))
else if (assocName.equals (SINGLEREFERENCE_Job))
{
return null ;
}else if (assocName.equals (SINGLEREFERENCE_Level))
{
return Level.MULTIPLEREFERENCE_TestAnalysises ;
}else if (assocName.equals (SINGLEREFERENCE_Candidate))
......@@ -267,7 +294,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{
throw new RuntimeException ("Game over == null!");
}
else if (assocName.equals (SINGLEREFERENCE_Level))
else if (assocName.equals (SINGLEREFERENCE_Job))
{
return getJob ();
}else if (assocName.equals (SINGLEREFERENCE_Level))
{
return getLevel ();
}else if (assocName.equals (SINGLEREFERENCE_Candidate))
......@@ -287,7 +317,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{
throw new RuntimeException ("Game over == null!");
}
else if (assocName.equals (SINGLEREFERENCE_Level))
else if (assocName.equals (SINGLEREFERENCE_Job))
{
return getJob (getType);
}else if (assocName.equals (SINGLEREFERENCE_Level))
{
return getLevel (getType);
}else if (assocName.equals (SINGLEREFERENCE_Candidate))
......@@ -307,7 +340,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{
throw new RuntimeException ("Game over == null!");
}
else if (assocName.equals (SINGLEREFERENCE_Level))
else if (assocName.equals (SINGLEREFERENCE_Job))
{
return getJobID ();
}else if (assocName.equals (SINGLEREFERENCE_Level))
{
return getLevelID ();
}else if (assocName.equals (SINGLEREFERENCE_Candidate))
......@@ -327,7 +363,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{
throw new RuntimeException ("Game over == null!");
}
else if (assocName.equals (SINGLEREFERENCE_Level))
else if (assocName.equals (SINGLEREFERENCE_Job))
{
setJob ((Job)(newValue));
}else if (assocName.equals (SINGLEREFERENCE_Level))
{
setLevel ((Level)(newValue));
}else if (assocName.equals (SINGLEREFERENCE_Candidate))
......@@ -343,6 +382,100 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
/**
* Get the reference Job
*/
public Job getJob () throws StorageException
{
assertValid();
try
{
return (Job)(_Job.get ());
}
catch (ClassCastException e)
{
LogMgr.log (BUSINESS_OBJECTS, LogLevel.SYSTEMERROR2, "Cache collision in TestAnalysis:", this.getObjectID (), ", was trying to get Job:", getJobID ());
LogMgr.log (BUSINESS_OBJECTS, LogLevel.SYSTEMERROR2, "Instead I got:", _Job.get ().getClass ());
throw e;
}
}
/**
* Get the object id for the referenced object. Does not force a DB access.
*/
public Job getJob (Get getType) throws StorageException
{
assertValid();
return _Job.get(getType);
}
/**
* Get the object id for the referenced object. Does not force a DB access.
*/
public Long getJobID ()
{
assertValid();
if (_Job == null)
{
return null;
}
else
{
return _Job.getID ();
}
}
/**
* Called prior to the assoc changing. Subclasses need not call super. If a field exception
* is thrown, the attribute change will fail. The new value is different to the old value.
*/
protected void preJobChange (Job newJob) throws FieldException
{
}
/**
* Called after the assoc changes.
* If a field exception is thrown, the value is still changed, however it
* may lead to the TX being rolled back
*/
protected void postJobChange () throws FieldException
{
}
public FieldWriteability getWriteability_Job ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the reference Job. Checks to ensure a new value
* has been supplied. If so, marks the reference as altered and sets it.
*/
public void setJob (Job newJob) throws StorageException, FieldException
{
if (_Job.wouldReferencedChange (newJob))
{
assertValid();
Debug.assertion (getWriteability_Job () != FieldWriteability.FALSE, "Assoc Job is not writeable");
preJobChange (newJob);
_Job.set (newJob);
postJobChange ();
}
}
/**
* Get the reference Level
*/
public Level getLevel () throws StorageException
......@@ -864,6 +997,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
PersistentSet tl_test_analysisPSet = allSets.getPersistentSet (myID, "tl_test_analysis", myPSetStatus);
tl_test_analysisPSet.setAttrib (FIELD_ObjectID, myID);
_Job.getPersistentSets (allSets);
_Level.getPersistentSets (allSets);
_Candidate.getPersistentSets (allSets);
......@@ -880,6 +1014,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
PersistentSet tl_test_analysisPSet = allSets.getPersistentSet (objectID, "tl_test_analysis");
_Job.setFromPersistentSets (objectID, allSets);
_Level.setFromPersistentSets (objectID, allSets);
_Candidate.setFromPersistentSets (objectID, allSets);
......@@ -928,6 +1063,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{
BaseTestAnalysis sourceTestAnalysis = (BaseTestAnalysis)(source);
_Job.copyFrom (sourceTestAnalysis._Job, linkToGhosts);
_Level.copyFrom (sourceTestAnalysis._Level, linkToGhosts);
_Candidate.copyFrom (sourceTestAnalysis._Candidate, linkToGhosts);
......@@ -967,6 +1103,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{
super.readExternalData(vals);
_Job.readExternalData(vals.get(SINGLEREFERENCE_Job));
_Level.readExternalData(vals.get(SINGLEREFERENCE_Level));
_Candidate.readExternalData(vals.get(SINGLEREFERENCE_Candidate));
_FactorScores.readExternalData(vals.get(MULTIPLEREFERENCE_FactorScores));
......@@ -981,6 +1118,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{
super.writeExternalData(vals);
vals.put (SINGLEREFERENCE_Job, _Job.writeExternalData());
vals.put (SINGLEREFERENCE_Level, _Level.writeExternalData());
vals.put (SINGLEREFERENCE_Candidate, _Candidate.writeExternalData());
vals.put (MULTIPLEREFERENCE_FactorScores, _FactorScores.writeExternalData());
......@@ -999,6 +1137,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
// Compare single assocs
_Job.compare (otherTestAnalysis._Job, listener);
_Level.compare (otherTestAnalysis._Level, listener);
_Candidate.compare (otherTestAnalysis._Candidate, listener);
......@@ -1022,6 +1161,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{
super.visitAttributes (visitor);
visitor.visitAssociation (_Job);
visitor.visitAssociation (_Level);
visitor.visitAssociation (_Candidate);
visitor.visitAssociation (_FactorScores);
......@@ -1033,6 +1173,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{
super.visitAssociations (visitor, scope);
if (scope.includes (_Job))
{
visitor.visit (_Job);
}
if (scope.includes (_Level))
{
visitor.visit (_Level);
......@@ -1070,6 +1214,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{
throw new RuntimeException ("Game over man!!");
}
else if (attribName.equals (SINGLEREFERENCE_Job))
{
return filter.matches (getJob ());
}
else if (attribName.equals (SINGLEREFERENCE_Level))
{
return filter.matches (getLevel ());
......@@ -1109,6 +1257,12 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
}
public SearchAll andJob (QueryFilter<Job> filter)
{
filter.addFilter (context, "tl_test_analysis.job_id", "Job");
return this;
}
public SearchAll andLevel (QueryFilter<Level> filter)
{
filter.addFilter (context, "tl_test_analysis.level_id", "Level");
......@@ -1206,6 +1360,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{
return getWriteability_FactorScores ();
}
else if (fieldName.equals (SINGLEREFERENCE_Job))
{
return getWriteability_Job ();
}
else if (fieldName.equals (SINGLEREFERENCE_Level))
{
return getWriteability_Level ();
......@@ -1339,6 +1497,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{
return toFactorScores ();
}
if (name.equals ("Job"))
{
return toJob ();
}
if (name.equals ("Level"))
{
return toLevel ();
......@@ -1352,6 +1514,12 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
return super.to(name);
}
public Job.JobPipeLineFactory<From, Job> toJob () { return toJob (Filter.ALL); }
public Job.JobPipeLineFactory<From, Job> toJob (Filter<Job> filter)
{
return Job.REFERENCE_Job.new JobPipeLineFactory<From, Job> (this, new ORMSingleAssocPipe<Me, Job>(SINGLEREFERENCE_Job, filter));
}
public Level.LevelPipeLineFactory<From, Level> toLevel () { return toLevel (Filter.ALL); }
public Level.LevelPipeLineFactory<From, Level> toLevel (Filter<Level> filter)
......@@ -1401,6 +1569,20 @@ class DummyTestAnalysis extends TestAnalysis
}
public Job getJob () throws StorageException
{
return (Job)(Job.DUMMY_Job);
}
/**
* Get the object id for the referenced object. Does not force a DB access.
*/
public Long getJobID ()
{
return Job.DUMMY_Job.getObjectID();
}
public Level getLevel () throws StorageException
{
return (Level)(Level.DUMMY_Level);
......
......@@ -10,6 +10,7 @@ import oneit.utils.filter.CollectionFilter;
import oneit.utils.filter.Filter;
import oneit.utils.parsers.FieldException;
import performa.orm.types.CriteriaType;
import performa.utils.AnalysisEngine;
public class JobApplication extends BaseJobApplication
......
......@@ -8,6 +8,7 @@
<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="Candidate" type="Candidate" dbcol="candidate_id" backreferenceName="TestAnalysises"/>
......
......@@ -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 = "";
public BaseBusinessClass fetchByID(ObjectID id, PersistentSetCollection allPSets, RDBMSPersistenceContext context, SQLManager sqlMgr) throws SQLException, StorageException
......@@ -89,6 +89,7 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr
// Check for persistent sets already prefetched
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_Candidate))
{
......@@ -180,10 +181,10 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr
{
int rowsUpdated = executeStatement (sqlMgr,
"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 ()) + " ",
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)
{
......@@ -440,6 +441,7 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr
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_Candidate, r.getObject ("candidate_id"));
......@@ -458,10 +460,10 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr
{
executeStatement (sqlMgr,
"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 " +
" ( ?, ?, ?, " + 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());
" ( ?, ?, ?, ?, " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ", " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ")",
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);
}
......
......@@ -15,93 +15,92 @@ import performa.orm.types.*;
*/
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();
Set<Factor> levelFactors = testInput.pipelineTestInput().toLevel().toFactors().toFactor().uniqueVals();
ObjectTransaction objTran = jobApplication.getTransaction();
Set<Factor> levelFactors = jobApplication.pipelineJobApplication().toJob().toLevel().toFactors().toFactor().uniqueVals();
Filter<FactorQuestionLink> factorFilter = FactorQuestionLink.SearchByAll().andFactor(new InFilter(levelFactors));
//Preloading Data
testInput.pipelineTestInput().toCandidates().toJobApplications().toProfileAssessmentAnswers().toQuestion().toSection().uniqueVals();
testInput.pipelineTestInput().toCandidates().toJobApplications().toProfileAssessmentAnswers().toQuestion().toFactors().toFactor().uniqueVals();
jobApplication.pipelineJobApplication().toProfileAssessmentAnswers().toQuestion().toSection().uniqueVals();
jobApplication.pipelineJobApplication().toProfileAssessmentAnswers().toQuestion().toFactors().toFactor().uniqueVals();
Factor.pipesFactor(levelFactors).toResults().uniqueVals();
for (Candidate candidate : testInput.getCandidatesSet())
{
LogMgr.log(TestInput.LOG, LogLevel.PROCESSING1, "Processing candidate ", candidate);
Map<Factor, Integer> factorScoreMap = new HashMap();
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "Processing Job Application ", jobApplication);
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;
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);
factorScore += (10 - answer.getAnswerNo());
}
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);
candidate.addToTestAnalysises(testAnalysis);
}
TestAnalysis testAnalysis = TestAnalysis.createTestAnalysis(objTran);
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);
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();
FactorScoreResult factorScoreResult = factorScoreResults.get(0);
if(factorScoreResults != null && !factorScoreResults.isEmpty())
{
FactorScoreResult factorScoreResult = factorScoreResults.get(0);
FactorScore factorScore = FactorScore.createFactorScore(objTran);
FactorScore factorScore = FactorScore.createFactorScore(objTran);
factorScore.setFactor(factor);
factorScore.setScore(score);
factorScore.setColorCode(factorScoreResult.getColorCode());
factorScore.setColorRank(factorScoreResult.getColorCode() != null ? factorScoreResult.getColorCode().getWeightage() : 0);
factorScore.setNarrative(factorScoreResult.getNarrative());
factorScore.setFactor(factor);
factorScore.setLevel(jobApplication.getJob().getLevel());
factorScore.setScore(score);
factorScore.setColorCode(factorScoreResult.getColorCode());
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 @@
$('.' + id).click();
});
$(".job-status").change(function(){
$(".job-status").change(function()
{
var id = $(this).closest('.job-list').attr('id');
$('.save-job' + id).click();
});
});
</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