Commit bc5e77e8 by chenith Committed by Harsh Shah

Introduced a Email-based new sign in method for applicant portal. New candidate…

Introduced a Email-based new sign in method for applicant portal. New candidate registration, updated existing candidate login.
parent 7fd2f4b7
...@@ -10,6 +10,9 @@ ...@@ -10,6 +10,9 @@
<column name="object_created_date" type="Date" nullable="false" length="22"/> <column name="object_created_date" type="Date" nullable="false" length="22"/>
<column name="object_type" type="String" nullable="false" length="30"/> <column name="object_type" type="String" nullable="false" length="30"/>
<column name="phone" type="String" nullable="true" length="30"/> <column name="phone" type="String" nullable="true" length="30"/>
<column name="verification_mail_send_date" type="Date" nullable="true"/>
<column name="verification_key" type="String" nullable="true" length="10"/>
<column name="is_account_verified" type="Boolean" nullable="true"/>
<column name="test_input_id" type="Long" length="11" nullable="true"/> <column name="test_input_id" type="Long" length="11" nullable="true"/>
<column name="user_id" type="Long" length="11" nullable="true"/> <column name="user_id" type="Long" length="11" nullable="true"/>
</NODE> </NODE>
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<NODE name="DDL" factory="Participant" class="oneit.sql.transfer.DefineTableOperation"> <NODE name="DDL" factory="Participant" class="oneit.sql.transfer.DefineTableOperation">
<tableName factory="String">tl_level_type</tableName> <tableName factory="String">tl_level_type</tableName>
<column name="object_id" type="Long" nullable="true" 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="type_flag" type="String" nullable="true" length="200"/> <column name="type_flag" type="String" nullable="true" length="200"/>
......
...@@ -9,6 +9,9 @@ CREATE TABLE oneit_sec_user_extension ( ...@@ -9,6 +9,9 @@ CREATE TABLE oneit_sec_user_extension (
object_created_date datetime DEFAULT getdate() NOT NULL object_created_date datetime DEFAULT getdate() NOT NULL
, object_type varchar(30) NOT NULL , , object_type varchar(30) NOT NULL ,
phone varchar(30) NULL, phone varchar(30) NULL,
verification_mail_send_date datetime NULL,
verification_key varchar(10) NULL,
is_account_verified char(1) NULL,
test_input_id numeric(12) NULL, test_input_id numeric(12) NULL,
user_id numeric(12) NULL user_id numeric(12) NULL
); );
......
...@@ -10,6 +10,9 @@ CREATE TABLE oneit_sec_user_extension ( ...@@ -10,6 +10,9 @@ CREATE TABLE oneit_sec_user_extension (
object_created_date date DEFAULT SYSDATE NOT NULL object_created_date date DEFAULT SYSDATE NOT NULL
, object_type varchar2(30) NOT NULL , , object_type varchar2(30) NOT NULL ,
phone varchar2(30) NULL, phone varchar2(30) NULL,
verification_mail_send_date date NULL,
verification_key varchar2(10) NULL,
is_account_verified char(1) NULL,
test_input_id number(12) NULL, test_input_id number(12) NULL,
user_id number(12) NULL user_id number(12) NULL
); );
......
...@@ -10,6 +10,9 @@ CREATE TABLE oneit_sec_user_extension ( ...@@ -10,6 +10,9 @@ CREATE TABLE oneit_sec_user_extension (
object_created_date timestamp DEFAULT NOW() NOT NULL object_created_date timestamp DEFAULT NOW() NOT NULL
, object_type varchar(30) NOT NULL , , object_type varchar(30) NOT NULL ,
phone varchar(30) NULL, phone varchar(30) NULL,
verification_mail_send_date timestamp NULL,
verification_key varchar(10) NULL,
is_account_verified char(1) NULL,
test_input_id numeric(12) NULL, test_input_id numeric(12) NULL,
user_id numeric(12) NULL user_id numeric(12) NULL
); );
......
package performa.form;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import oneit.logging.LogLevel;
import oneit.logging.LogMgr;
import oneit.objstore.StorageException;
import oneit.objstore.parser.BusinessObjectParser;
import oneit.security.*;
import oneit.servlets.forms.*;
import oneit.servlets.process.*;
import oneit.servlets.security.SessionSecUserDecorator;
import oneit.utils.*;
import performa.orm.Candidate;
import performa.orm.Job;
import performa.orm.JobApplication;
public class ResetPasswordFP extends ORMProcessFormProcessor
{
@Override
public SuccessfulResult processForm(ORMProcessState process, SubmissionDetails submission, Map params) throws BusinessException, StorageException
{
HttpServletRequest request = submission.getRequest();
Job job = (Job) request.getAttribute("Job");
Candidate candidate = (Candidate) request.getAttribute("NewCandidate");
String nextPage = (String) request.getAttribute("nextPage");
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "Inside ResetPasswordFP for ", job, candidate);
SecUser secUser = candidate.getUser();
if(CollectionUtils.equals(job.getPassword(), job.getConfirmPassword()))
{
secUser.setAttribute("md5:" + SecUser.FIELD_Password, job.getPassword());
candidate.setIsAccountVerified(Boolean.TRUE);
}
request.getSession().setAttribute (SecUser.SEC_USER_ID, secUser);
request.getSession().setAttribute (SessionSecUserDecorator.REFRESH_SECURITY, Boolean.TRUE);
process.completeAndRestart();
process.setAttributeIgnoreTX("Job", job);
return new ProcessRedirectResult(nextPage, new String[0]);
}
@Override
public void validate(ORMProcessState process, SubmissionDetails submission, MultiException exceptions, Map params) throws StorageException
{
HttpServletRequest request = submission.getRequest();
Job job = (Job) request.getAttribute("Job");
Candidate candidate = (Candidate) request.getAttribute("NewCandidate");
if(candidate!=null)
{
BusinessObjectParser.assertFieldCondition(job.getPassword()!= null, job, Job.FIELD_Password, "mandatory", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(job.getConfirmPassword()!= null, job, Job.FIELD_ConfirmPassword, "mandatory", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(CollectionUtils.equals(job.getPassword(), job.getConfirmPassword()), job, Job.FIELD_ConfirmPassword, "passwordNotMatch", exceptions, true, request);
}
super.validate(process, submission, exceptions, params);
}
}
package performa.form;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import oneit.business.content.Article;
import oneit.components.ParticipantInitialisationContext;
import oneit.email.ConfigurableArticleTemplateEmailer;
import oneit.email.ConfigurableEmailerException;
import oneit.logging.*;
import oneit.net.LoopbackHTTP;
import oneit.objstore.ObjectTransaction;
import oneit.objstore.StorageException;
import oneit.objstore.parser.BusinessObjectParser;
import oneit.security.SecUser;
import oneit.servlets.forms.*;
import oneit.servlets.process.*;
import oneit.utils.*;
import performa.orm.*;
import performa.utils.Utils;
import performa.utils.WebUtils;
public class SendVerificationMailFP extends SaveFP
{
private static LoggingArea LOG = LoggingArea.createLoggingArea("SendVerificationLink");
private static final String DEFAULT_PASSWORD = "Talentology123";
protected ConfigurableArticleTemplateEmailer emailer;
@Override
public void validate(ORMProcessState process, SubmissionDetails submission, MultiException exceptions, Map params) throws StorageException
{
HttpServletRequest request = submission.getRequest();
Job job = (Job) request.getAttribute("Job");
BusinessObjectParser.assertFieldCondition(!job.isEmailFound(), job, Job.FIELD_Email, "emailExists", exceptions, true, request);
super.validate(process, submission, exceptions, params);
}
@Override
public SuccessfulResult processForm(ORMProcessState process, SubmissionDetails submission, Map params) throws BusinessException, StorageException
{
HttpServletRequest request = submission.getRequest();
ObjectTransaction objTran = process.getTransaction();
Job job = (Job) request.getAttribute("Job");
String email = job.getEmail();
Debug.assertion(email != null, "Email not avaialble");
LogMgr.log(LOG, LogLevel.PROCESSING1, "Started to send varification email.", job , email);
SecUser secUser = SecUser.searchNAME(objTran, email);
Debug.assertion(secUser == null, "user available", email);
LogMgr.log(LOG, LogLevel.PROCESSING1, "Inside SendVerificationMailFP for send account verification mail for ", email);
SecUser newSecUser = SecUser.createSecUser(objTran);
newSecUser.setUserName(email);
newSecUser.setAttribute("md5:" + SecUser.FIELD_Password, DEFAULT_PASSWORD);
LogMgr.log(LOG, LogLevel.PROCESSING1, "New user created :: ", newSecUser);
newSecUser.addRole(Utils.getRole(Utils.ROLE_APPLICANT, objTran));
Candidate candidate = newSecUser.getExtensionOrCreate(Candidate.REFERENCE_Candidate);
sendVerificationMail(candidate, job, request);
request.setAttribute("nextPage", request.getAttribute("nextPage") + "&VerificationLinkSent=true&JobID=" + job.getID());
return super.processForm(process, submission, params);
}
@Override
public void init(ParticipantInitialisationContext context) throws InitialisationException
{
super.init(context);
emailer = (ConfigurableArticleTemplateEmailer) (context.getSingleChild("AccountVerificationEmailer"));
}
protected void sendVerificationMail(Candidate candidate, Job job, HttpServletRequest request) throws BusinessException
{
if(candidate.getIsAccountVerified()!=Boolean.TRUE)
{
try
{
LogMgr.log(LOG, LogLevel.PROCESSING1, "Sending verification mail from SendVerificationMailFP to :: ", candidate);
Article verificationArticle = WebUtils.getArticleByShortCut(candidate.getTransaction(), WebUtils.APPLY_JOB);
RandomStringGen random = new RandomStringGen();
//set verification key and send mail time
candidate.setVerificationKey(random.generateAlphaNum(6));
candidate.setVerificationMailSendDate(new Date());
String link = LoopbackHTTP.getRemoteAccessURL(request)
+ verificationArticle.getLink(request, CollectionUtils.EMPTY_MAP, "/")
+ "?cms%2Erm=SignIn"
+ "&id=" + job.getID()
+ "&key=" + job.getRandomKey()
+ "&aid=" + candidate.getID()
+ "&pin=" + candidate.getVerificationKey();
Map defaultParams = CollectionUtils.mapEntry("link", link).toMap();
ObjectTransform transform = Utils.createCompoundTransform(defaultParams, candidate);
Utils.sendMail(emailer, transform, new String[]{candidate.getUser().getUserName()}, null, candidate);
LogMgr.log(LOG, LogLevel.PROCESSING1, "Sent verification mail successfully from " + SendVerificationMailFP.class + " to :: ", candidate);
}
catch (ConfigurableEmailerException ex)
{
LogMgr.log(LOG, LogLevel.SYSTEMERROR1, ex, "Error occured while sending mail for Candidate :: " + candidate);
throw new BusinessException("We are unable to send mail. Please try again or contact Talantology for more details.");
}
}
else
{
LogMgr.log(LOG, LogLevel.PROCESSING1, "Call from " + SendVerificationMailFP.class + ". Account is already verified for candidate :: ", candidate);
}
}
}
\ No newline at end of file
...@@ -5,10 +5,8 @@ import javax.servlet.http.HttpServletRequest; ...@@ -5,10 +5,8 @@ import javax.servlet.http.HttpServletRequest;
import oneit.logging.*; import oneit.logging.*;
import oneit.objstore.*; import oneit.objstore.*;
import oneit.objstore.parser.BusinessObjectParser; import oneit.objstore.parser.BusinessObjectParser;
import oneit.objstore.services.TransactionTask;
import oneit.security.*; import oneit.security.*;
import oneit.servlets.forms.*; import oneit.servlets.forms.*;
import oneit.servlets.process.*;
import oneit.utils.*; import oneit.utils.*;
import oneit.utils.parsers.FieldException; import oneit.utils.parsers.FieldException;
import performa.orm.*; import performa.orm.*;
...@@ -17,72 +15,53 @@ import performa.utils.Utils; ...@@ -17,72 +15,53 @@ import performa.utils.Utils;
public class SignInCandidateFP extends LoginProcessor public class SignInCandidateFP extends LoginProcessor
{ {
private static final String DEFAULT_PASSWORD = "Talentology123";
@Override @Override
public SuccessfulResult processForm(SubmissionDetails submission, Map params) throws BusinessException, StorageException public SuccessfulResult processForm(SubmissionDetails submission, Map params) throws BusinessException, StorageException
{ {
HttpServletRequest request = submission.getRequest(); HttpServletRequest request = submission.getRequest();
ORMProcessState process = (ORMProcessState)ProcessDecorator.getDefaultProcess(request);
ObjectTransaction objTran = process.getTransaction();
Job job = (Job) request.getAttribute("Job"); Job job = (Job) request.getAttribute("Job");
String nextPage = (String) request.getAttribute("nextPage"); String nextPage = (String) request.getAttribute("nextPage");
String email = job.getEmail(); String email = job.getEmail();
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "Inside SignInCandidateFP for ", job, " Email:", email);
SecUser secUser = SecUser.searchNAME(objTran, email);
final Map userMap = new HashMap(); final Map userMap = new HashMap();
if(secUser == null)
{
objTran.runInNewTX(new TransactionTask()
{
@Override
public void run(ObjectTransaction newObjTran) throws FieldException, StorageException
{
SecUser newSecUser = SecUser.createSecUser(newObjTran);
newSecUser.setUserName(email); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "Inside SignInCandidateFP for ", job, " Email:", email);
newSecUser.setAttribute("md5:" + SecUser.FIELD_Password, DEFAULT_PASSWORD);
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "New user created :: ", newSecUser);
newSecUser.addRole(Utils.getRole(Utils.ROLE_APPLICANT, newObjTran)); userMap.put("username", job.getEmail());
newSecUser.getExtensionOrCreate(Candidate.REFERENCE_Candidate); userMap.put("password", job.getPassword());
userMap.put("username", newSecUser.getUserName());
userMap.put("password", DEFAULT_PASSWORD);
}
});
}
else if(!secUser.hasPrivilege(Utils.PRIV_ACCESS_APPLICANT_PORTAL) || secUser.getExtension(Candidate.REFERENCE_Candidate) == null)
{
throw new BusinessException("You are not allowed to access this portal");
}
else
{
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "Existing user skipping password check :: ", secUser);
userMap.put("username", secUser.getUserName());
userMap.put("password", DEFAULT_PASSWORD);
}
request.setAttribute("nextPage", nextPage + "&JobID=" + job.getObjectID()); request.setAttribute("nextPage", nextPage + "&JobID=" + job.getObjectID());
return super.processForm(submission, userMap); return super.processForm(submission, userMap);
} }
@Override
protected void checkUserCanLogin(ObjectTransaction trans, SecUser userToCheck, SubmissionDetails submission, Map requestParams) throws FieldException, MultiException
{
super.checkUserCanLogin(trans, userToCheck, submission, requestParams);
Candidate candidate = userToCheck.getExtension(Candidate.REFERENCE_Candidate);
if(!Utils.checkApplicantPortalAccess(userToCheck) || candidate == null || candidate.getIsAccountVerified()!=Boolean.TRUE)
{
throw new FieldException("You're not an authorised user to access this portal.", SecUser.FIELD_UserName);
}
}
@Override @Override
protected Map validate(SubmissionDetails submission, MultiException exceptions) protected Map validate(SubmissionDetails submission, MultiException exceptions)
{ {
HttpServletRequest request = submission.getRequest(); HttpServletRequest request = submission.getRequest();
Job job = (Job) request.getAttribute("Job"); Job job = (Job) request.getAttribute("Job");
BusinessObjectParser.assertFieldCondition(job.getEmail()!= null, job, Job.FIELD_Email, "mandatory", exceptions, true, request); BusinessObjectParser.assertFieldCondition(job.getEmail()!= null, job, Job.FIELD_Email, "mandatory", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(job.getPassword()!= null, job, Job.FIELD_Password, "mandatory", exceptions, true, request);
return super.validate(submission, exceptions); return super.validate(submission, exceptions);
} }
@Override @Override
public SuccessfulResult processSuccessfulLogin(SubmissionDetails submission, Map requestParameters, SecUser secUser) throws BusinessException public SuccessfulResult processSuccessfulLogin(SubmissionDetails submission, Map requestParameters, SecUser secUser) throws BusinessException
{ {
......
...@@ -41,6 +41,9 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -41,6 +41,9 @@ public abstract class BaseCandidate extends SecUserExtension
// Static constants corresponding to field names // Static constants corresponding to field names
public static final String FIELD_Phone = "Phone"; public static final String FIELD_Phone = "Phone";
public static final String FIELD_VerificationMailSendDate = "VerificationMailSendDate";
public static final String FIELD_VerificationKey = "VerificationKey";
public static final String FIELD_IsAccountVerified = "IsAccountVerified";
public static final String SINGLEREFERENCE_TestInput = "TestInput"; public static final String SINGLEREFERENCE_TestInput = "TestInput";
public static final String BACKREF_TestInput = ""; public static final String BACKREF_TestInput = "";
public static final String MULTIPLEREFERENCE_TestAnalysises = "TestAnalysises"; public static final String MULTIPLEREFERENCE_TestAnalysises = "TestAnalysises";
...@@ -51,14 +54,22 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -51,14 +54,22 @@ public abstract class BaseCandidate extends SecUserExtension
public static final String BACKREF_FactorScores = ""; public static final String BACKREF_FactorScores = "";
// Static constants corresponding to searches // Static constants corresponding to searches
public static final String SEARCH_All = "All";
public static final String SEARCH_IdPin = "IdPin";
// Static constants corresponding to attribute helpers // Static constants corresponding to attribute helpers
private static final DefaultAttributeHelper<Candidate> HELPER_Phone = DefaultAttributeHelper.INSTANCE; private static final DefaultAttributeHelper<Candidate> HELPER_Phone = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper<Candidate> HELPER_VerificationMailSendDate = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper<Candidate> HELPER_VerificationKey = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper<Candidate> HELPER_IsAccountVerified = DefaultAttributeHelper.INSTANCE;
// Private attributes corresponding to business object data // Private attributes corresponding to business object data
private String _Phone; private String _Phone;
private Date _VerificationMailSendDate;
private String _VerificationKey;
private Boolean _IsAccountVerified;
// Private attributes corresponding to single references // Private attributes corresponding to single references
...@@ -76,6 +87,9 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -76,6 +87,9 @@ public abstract class BaseCandidate extends SecUserExtension
// Arrays of validators for each attribute // Arrays of validators for each attribute
private static final AttributeValidator[] FIELD_Phone_Validators; private static final AttributeValidator[] FIELD_Phone_Validators;
private static final AttributeValidator[] FIELD_VerificationMailSendDate_Validators;
private static final AttributeValidator[] FIELD_VerificationKey_Validators;
private static final AttributeValidator[] FIELD_IsAccountVerified_Validators;
// Arrays of behaviour decorators // Arrays of behaviour decorators
...@@ -98,6 +112,9 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -98,6 +112,9 @@ public abstract class BaseCandidate extends SecUserExtension
setupAssocMetaData_FactorScores(); setupAssocMetaData_FactorScores();
setupAssocMetaData_TestInput(); setupAssocMetaData_TestInput();
FIELD_Phone_Validators = (AttributeValidator[])setupAttribMetaData_Phone(validatorMapping).toArray (new AttributeValidator[0]); FIELD_Phone_Validators = (AttributeValidator[])setupAttribMetaData_Phone(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_VerificationMailSendDate_Validators = (AttributeValidator[])setupAttribMetaData_VerificationMailSendDate(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_VerificationKey_Validators = (AttributeValidator[])setupAttribMetaData_VerificationKey(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_IsAccountVerified_Validators = (AttributeValidator[])setupAttribMetaData_IsAccountVerified(validatorMapping).toArray (new AttributeValidator[0]);
REFERENCE_Candidate.initialiseReference (); REFERENCE_Candidate.initialiseReference ();
...@@ -188,6 +205,62 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -188,6 +205,62 @@ public abstract class BaseCandidate extends SecUserExtension
return validators; return validators;
} }
// Meta Info setup
private static List setupAttribMetaData_VerificationMailSendDate(Map validatorMapping)
{
Map metaInfo = new HashMap ();
metaInfo.put ("dbcol", "verification_mail_send_date");
metaInfo.put ("name", "VerificationMailSendDate");
metaInfo.put ("type", "Date");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for Candidate.VerificationMailSendDate:", metaInfo);
ATTRIBUTES_METADATA_Candidate.put (FIELD_VerificationMailSendDate, Collections.unmodifiableMap (metaInfo));
List validators = BaseBusinessClass.getAttribValidators(Candidate.class, "VerificationMailSendDate", metaInfo, validatorMapping);
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Validators for Candidate.VerificationMailSendDate:", validators);
return validators;
}
// Meta Info setup
private static List setupAttribMetaData_VerificationKey(Map validatorMapping)
{
Map metaInfo = new HashMap ();
metaInfo.put ("dbcol", "verification_key");
metaInfo.put ("length", "10");
metaInfo.put ("name", "VerificationKey");
metaInfo.put ("type", "String");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for Candidate.VerificationKey:", metaInfo);
ATTRIBUTES_METADATA_Candidate.put (FIELD_VerificationKey, Collections.unmodifiableMap (metaInfo));
List validators = BaseBusinessClass.getAttribValidators(Candidate.class, "VerificationKey", metaInfo, validatorMapping);
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Validators for Candidate.VerificationKey:", validators);
return validators;
}
// Meta Info setup
private static List setupAttribMetaData_IsAccountVerified(Map validatorMapping)
{
Map metaInfo = new HashMap ();
metaInfo.put ("dbcol", "is_account_verified");
metaInfo.put ("defaultValue", "Boolean.FALSE");
metaInfo.put ("name", "IsAccountVerified");
metaInfo.put ("type", "Boolean");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for Candidate.IsAccountVerified:", metaInfo);
ATTRIBUTES_METADATA_Candidate.put (FIELD_IsAccountVerified, Collections.unmodifiableMap (metaInfo));
List validators = BaseBusinessClass.getAttribValidators(Candidate.class, "IsAccountVerified", metaInfo, validatorMapping);
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Validators for Candidate.IsAccountVerified:", validators);
return validators;
}
// END OF STATIC METADATA DEFINITION // END OF STATIC METADATA DEFINITION
...@@ -216,6 +289,9 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -216,6 +289,9 @@ public abstract class BaseCandidate extends SecUserExtension
_Phone = (String)(HELPER_Phone.initialise (_Phone)); _Phone = (String)(HELPER_Phone.initialise (_Phone));
_VerificationMailSendDate = (Date)(HELPER_VerificationMailSendDate.initialise (_VerificationMailSendDate));
_VerificationKey = (String)(HELPER_VerificationKey.initialise (_VerificationKey));
_IsAccountVerified = (Boolean)(Boolean.FALSE);
} }
...@@ -346,6 +422,300 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -346,6 +422,300 @@ public abstract class BaseCandidate extends SecUserExtension
} }
} }
/**
* Get the attribute VerificationMailSendDate
*/
public Date getVerificationMailSendDate ()
{
assertValid();
Date valToReturn = _VerificationMailSendDate;
for (CandidateBehaviourDecorator bhd : Candidate_BehaviourDecorators)
{
valToReturn = bhd.getVerificationMailSendDate ((Candidate)this, valToReturn);
}
return valToReturn;
}
/**
* Called prior to the attribute 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 preVerificationMailSendDateChange (Date newVerificationMailSendDate) throws FieldException
{
}
/**
* Called after the attribute changes.
* If a field exception is thrown, the value is still changed, however it
* may lead to the TX being rolled back
*/
protected void postVerificationMailSendDateChange () throws FieldException
{
}
public FieldWriteability getWriteability_VerificationMailSendDate ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the attribute VerificationMailSendDate. Checks to ensure a new value
* has been supplied. If so, marks the field as altered and sets the attribute.
*/
public void setVerificationMailSendDate (Date newVerificationMailSendDate) throws FieldException
{
boolean oldAndNewIdentical = HELPER_VerificationMailSendDate.compare (_VerificationMailSendDate, newVerificationMailSendDate);
try
{
for (CandidateBehaviourDecorator bhd : Candidate_BehaviourDecorators)
{
newVerificationMailSendDate = bhd.setVerificationMailSendDate ((Candidate)this, newVerificationMailSendDate);
oldAndNewIdentical = HELPER_VerificationMailSendDate.compare (_VerificationMailSendDate, newVerificationMailSendDate);
}
if (FIELD_VerificationMailSendDate_Validators.length > 0)
{
Object newVerificationMailSendDateObj = HELPER_VerificationMailSendDate.toObject (newVerificationMailSendDate);
if (newVerificationMailSendDateObj != null)
{
int loopMax = FIELD_VerificationMailSendDate_Validators.length;
Map metadata = (Map)ATTRIBUTES_METADATA_Candidate.get (FIELD_VerificationMailSendDate);
for (int v = 0 ; v < loopMax ; ++v)
{
FIELD_VerificationMailSendDate_Validators[v].checkAttribute (this, FIELD_VerificationMailSendDate, metadata, newVerificationMailSendDateObj);
}
}
}
}
catch (FieldException e)
{
if (!oldAndNewIdentical)
{
e.setWouldModify ();
}
throw e;
}
if (!oldAndNewIdentical)
{
assertValid();
Debug.assertion (getWriteability_VerificationMailSendDate () != FieldWriteability.FALSE, "Field VerificationMailSendDate is not writeable");
preVerificationMailSendDateChange (newVerificationMailSendDate);
markFieldChange (FIELD_VerificationMailSendDate);
_VerificationMailSendDate = newVerificationMailSendDate;
postFieldChange (FIELD_VerificationMailSendDate);
postVerificationMailSendDateChange ();
}
}
/**
* Get the attribute VerificationKey
*/
public String getVerificationKey ()
{
assertValid();
String valToReturn = _VerificationKey;
for (CandidateBehaviourDecorator bhd : Candidate_BehaviourDecorators)
{
valToReturn = bhd.getVerificationKey ((Candidate)this, valToReturn);
}
return valToReturn;
}
/**
* Called prior to the attribute 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 preVerificationKeyChange (String newVerificationKey) throws FieldException
{
}
/**
* Called after the attribute changes.
* If a field exception is thrown, the value is still changed, however it
* may lead to the TX being rolled back
*/
protected void postVerificationKeyChange () throws FieldException
{
}
public FieldWriteability getWriteability_VerificationKey ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the attribute VerificationKey. Checks to ensure a new value
* has been supplied. If so, marks the field as altered and sets the attribute.
*/
public void setVerificationKey (String newVerificationKey) throws FieldException
{
boolean oldAndNewIdentical = HELPER_VerificationKey.compare (_VerificationKey, newVerificationKey);
try
{
for (CandidateBehaviourDecorator bhd : Candidate_BehaviourDecorators)
{
newVerificationKey = bhd.setVerificationKey ((Candidate)this, newVerificationKey);
oldAndNewIdentical = HELPER_VerificationKey.compare (_VerificationKey, newVerificationKey);
}
if (FIELD_VerificationKey_Validators.length > 0)
{
Object newVerificationKeyObj = HELPER_VerificationKey.toObject (newVerificationKey);
if (newVerificationKeyObj != null)
{
int loopMax = FIELD_VerificationKey_Validators.length;
Map metadata = (Map)ATTRIBUTES_METADATA_Candidate.get (FIELD_VerificationKey);
for (int v = 0 ; v < loopMax ; ++v)
{
FIELD_VerificationKey_Validators[v].checkAttribute (this, FIELD_VerificationKey, metadata, newVerificationKeyObj);
}
}
}
}
catch (FieldException e)
{
if (!oldAndNewIdentical)
{
e.setWouldModify ();
}
throw e;
}
if (!oldAndNewIdentical)
{
assertValid();
Debug.assertion (getWriteability_VerificationKey () != FieldWriteability.FALSE, "Field VerificationKey is not writeable");
preVerificationKeyChange (newVerificationKey);
markFieldChange (FIELD_VerificationKey);
_VerificationKey = newVerificationKey;
postFieldChange (FIELD_VerificationKey);
postVerificationKeyChange ();
}
}
/**
* Get the attribute IsAccountVerified
*/
public Boolean getIsAccountVerified ()
{
assertValid();
Boolean valToReturn = _IsAccountVerified;
for (CandidateBehaviourDecorator bhd : Candidate_BehaviourDecorators)
{
valToReturn = bhd.getIsAccountVerified ((Candidate)this, valToReturn);
}
return valToReturn;
}
/**
* Called prior to the attribute 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 preIsAccountVerifiedChange (Boolean newIsAccountVerified) throws FieldException
{
}
/**
* Called after the attribute changes.
* If a field exception is thrown, the value is still changed, however it
* may lead to the TX being rolled back
*/
protected void postIsAccountVerifiedChange () throws FieldException
{
}
public FieldWriteability getWriteability_IsAccountVerified ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the attribute IsAccountVerified. Checks to ensure a new value
* has been supplied. If so, marks the field as altered and sets the attribute.
*/
public void setIsAccountVerified (Boolean newIsAccountVerified) throws FieldException
{
boolean oldAndNewIdentical = HELPER_IsAccountVerified.compare (_IsAccountVerified, newIsAccountVerified);
try
{
for (CandidateBehaviourDecorator bhd : Candidate_BehaviourDecorators)
{
newIsAccountVerified = bhd.setIsAccountVerified ((Candidate)this, newIsAccountVerified);
oldAndNewIdentical = HELPER_IsAccountVerified.compare (_IsAccountVerified, newIsAccountVerified);
}
if (FIELD_IsAccountVerified_Validators.length > 0)
{
Object newIsAccountVerifiedObj = HELPER_IsAccountVerified.toObject (newIsAccountVerified);
if (newIsAccountVerifiedObj != null)
{
int loopMax = FIELD_IsAccountVerified_Validators.length;
Map metadata = (Map)ATTRIBUTES_METADATA_Candidate.get (FIELD_IsAccountVerified);
for (int v = 0 ; v < loopMax ; ++v)
{
FIELD_IsAccountVerified_Validators[v].checkAttribute (this, FIELD_IsAccountVerified, metadata, newIsAccountVerifiedObj);
}
}
}
}
catch (FieldException e)
{
if (!oldAndNewIdentical)
{
e.setWouldModify ();
}
throw e;
}
if (!oldAndNewIdentical)
{
assertValid();
Debug.assertion (getWriteability_IsAccountVerified () != FieldWriteability.FALSE, "Field IsAccountVerified is not writeable");
preIsAccountVerifiedChange (newIsAccountVerified);
markFieldChange (FIELD_IsAccountVerified);
_IsAccountVerified = newIsAccountVerified;
postFieldChange (FIELD_IsAccountVerified);
postIsAccountVerifiedChange ();
}
}
/** /**
...@@ -1112,6 +1482,9 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1112,6 +1482,9 @@ public abstract class BaseCandidate extends SecUserExtension
oneit_sec_user_extensionPSet.setAttrib (FIELD_ObjectID, myID); oneit_sec_user_extensionPSet.setAttrib (FIELD_ObjectID, myID);
oneit_sec_user_extensionPSet.setAttrib (FIELD_Phone, HELPER_Phone.toObject (_Phone)); // oneit_sec_user_extensionPSet.setAttrib (FIELD_Phone, HELPER_Phone.toObject (_Phone)); //
oneit_sec_user_extensionPSet.setAttrib (FIELD_VerificationMailSendDate, HELPER_VerificationMailSendDate.toObject (_VerificationMailSendDate)); //
oneit_sec_user_extensionPSet.setAttrib (FIELD_VerificationKey, HELPER_VerificationKey.toObject (_VerificationKey)); //
oneit_sec_user_extensionPSet.setAttrib (FIELD_IsAccountVerified, HELPER_IsAccountVerified.toObject (_IsAccountVerified)); //
_TestInput.getPersistentSets (allSets); _TestInput.getPersistentSets (allSets);
} }
...@@ -1128,6 +1501,9 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1128,6 +1501,9 @@ public abstract class BaseCandidate extends SecUserExtension
PersistentSet oneit_sec_user_extensionPSet = allSets.getPersistentSet (objectID, "oneit_sec_user_extension"); PersistentSet oneit_sec_user_extensionPSet = allSets.getPersistentSet (objectID, "oneit_sec_user_extension");
_Phone = (String)(HELPER_Phone.fromObject (_Phone, oneit_sec_user_extensionPSet.getAttrib (FIELD_Phone))); // _Phone = (String)(HELPER_Phone.fromObject (_Phone, oneit_sec_user_extensionPSet.getAttrib (FIELD_Phone))); //
_VerificationMailSendDate = (Date)(HELPER_VerificationMailSendDate.fromObject (_VerificationMailSendDate, oneit_sec_user_extensionPSet.getAttrib (FIELD_VerificationMailSendDate))); //
_VerificationKey = (String)(HELPER_VerificationKey.fromObject (_VerificationKey, oneit_sec_user_extensionPSet.getAttrib (FIELD_VerificationKey))); //
_IsAccountVerified = (Boolean)(HELPER_IsAccountVerified.fromObject (_IsAccountVerified, oneit_sec_user_extensionPSet.getAttrib (FIELD_IsAccountVerified))); //
_TestInput.setFromPersistentSets (objectID, allSets); _TestInput.setFromPersistentSets (objectID, allSets);
} }
...@@ -1153,6 +1529,33 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1153,6 +1529,33 @@ public abstract class BaseCandidate extends SecUserExtension
e.addException (ex); e.addException (ex);
} }
try
{
setVerificationMailSendDate (otherCandidate.getVerificationMailSendDate ());
}
catch (FieldException ex)
{
e.addException (ex);
}
try
{
setVerificationKey (otherCandidate.getVerificationKey ());
}
catch (FieldException ex)
{
e.addException (ex);
}
try
{
setIsAccountVerified (otherCandidate.getIsAccountVerified ());
}
catch (FieldException ex)
{
e.addException (ex);
}
} }
} }
...@@ -1169,6 +1572,9 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1169,6 +1572,9 @@ public abstract class BaseCandidate extends SecUserExtension
BaseCandidate sourceCandidate = (BaseCandidate)(source); BaseCandidate sourceCandidate = (BaseCandidate)(source);
_Phone = sourceCandidate._Phone; _Phone = sourceCandidate._Phone;
_VerificationMailSendDate = sourceCandidate._VerificationMailSendDate;
_VerificationKey = sourceCandidate._VerificationKey;
_IsAccountVerified = sourceCandidate._IsAccountVerified;
} }
} }
...@@ -1226,6 +1632,9 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1226,6 +1632,9 @@ public abstract class BaseCandidate extends SecUserExtension
super.readExternalData(vals); super.readExternalData(vals);
_Phone = (String)(HELPER_Phone.readExternal (_Phone, vals.get(FIELD_Phone))); // _Phone = (String)(HELPER_Phone.readExternal (_Phone, vals.get(FIELD_Phone))); //
_VerificationMailSendDate = (Date)(HELPER_VerificationMailSendDate.readExternal (_VerificationMailSendDate, vals.get(FIELD_VerificationMailSendDate))); //
_VerificationKey = (String)(HELPER_VerificationKey.readExternal (_VerificationKey, vals.get(FIELD_VerificationKey))); //
_IsAccountVerified = (Boolean)(HELPER_IsAccountVerified.readExternal (_IsAccountVerified, vals.get(FIELD_IsAccountVerified))); //
_TestInput.readExternalData(vals.get(SINGLEREFERENCE_TestInput)); _TestInput.readExternalData(vals.get(SINGLEREFERENCE_TestInput));
_TestAnalysises.readExternalData(vals.get(MULTIPLEREFERENCE_TestAnalysises)); _TestAnalysises.readExternalData(vals.get(MULTIPLEREFERENCE_TestAnalysises));
_JobApplications.readExternalData(vals.get(MULTIPLEREFERENCE_JobApplications)); _JobApplications.readExternalData(vals.get(MULTIPLEREFERENCE_JobApplications));
...@@ -1242,6 +1651,9 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1242,6 +1651,9 @@ public abstract class BaseCandidate extends SecUserExtension
super.writeExternalData(vals); super.writeExternalData(vals);
vals.put (FIELD_Phone, HELPER_Phone.writeExternal (_Phone)); vals.put (FIELD_Phone, HELPER_Phone.writeExternal (_Phone));
vals.put (FIELD_VerificationMailSendDate, HELPER_VerificationMailSendDate.writeExternal (_VerificationMailSendDate));
vals.put (FIELD_VerificationKey, HELPER_VerificationKey.writeExternal (_VerificationKey));
vals.put (FIELD_IsAccountVerified, HELPER_IsAccountVerified.writeExternal (_IsAccountVerified));
vals.put (SINGLEREFERENCE_TestInput, _TestInput.writeExternalData()); vals.put (SINGLEREFERENCE_TestInput, _TestInput.writeExternalData());
vals.put (MULTIPLEREFERENCE_TestAnalysises, _TestAnalysises.writeExternalData()); vals.put (MULTIPLEREFERENCE_TestAnalysises, _TestAnalysises.writeExternalData());
vals.put (MULTIPLEREFERENCE_JobApplications, _JobApplications.writeExternalData()); vals.put (MULTIPLEREFERENCE_JobApplications, _JobApplications.writeExternalData());
...@@ -1263,6 +1675,18 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1263,6 +1675,18 @@ public abstract class BaseCandidate extends SecUserExtension
{ {
listener.notifyFieldChange(this, other, FIELD_Phone, HELPER_Phone.toObject(this._Phone), HELPER_Phone.toObject(otherCandidate._Phone)); listener.notifyFieldChange(this, other, FIELD_Phone, HELPER_Phone.toObject(this._Phone), HELPER_Phone.toObject(otherCandidate._Phone));
} }
if (!HELPER_VerificationMailSendDate.compare(this._VerificationMailSendDate, otherCandidate._VerificationMailSendDate))
{
listener.notifyFieldChange(this, other, FIELD_VerificationMailSendDate, HELPER_VerificationMailSendDate.toObject(this._VerificationMailSendDate), HELPER_VerificationMailSendDate.toObject(otherCandidate._VerificationMailSendDate));
}
if (!HELPER_VerificationKey.compare(this._VerificationKey, otherCandidate._VerificationKey))
{
listener.notifyFieldChange(this, other, FIELD_VerificationKey, HELPER_VerificationKey.toObject(this._VerificationKey), HELPER_VerificationKey.toObject(otherCandidate._VerificationKey));
}
if (!HELPER_IsAccountVerified.compare(this._IsAccountVerified, otherCandidate._IsAccountVerified))
{
listener.notifyFieldChange(this, other, FIELD_IsAccountVerified, HELPER_IsAccountVerified.toObject(this._IsAccountVerified), HELPER_IsAccountVerified.toObject(otherCandidate._IsAccountVerified));
}
// Compare single assocs // Compare single assocs
_TestInput.compare (otherCandidate._TestInput, listener); _TestInput.compare (otherCandidate._TestInput, listener);
...@@ -1290,6 +1714,9 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1290,6 +1714,9 @@ public abstract class BaseCandidate extends SecUserExtension
super.visitAttributes (visitor); super.visitAttributes (visitor);
visitor.visitField(this, FIELD_Phone, HELPER_Phone.toObject(getPhone())); visitor.visitField(this, FIELD_Phone, HELPER_Phone.toObject(getPhone()));
visitor.visitField(this, FIELD_VerificationMailSendDate, HELPER_VerificationMailSendDate.toObject(getVerificationMailSendDate()));
visitor.visitField(this, FIELD_VerificationKey, HELPER_VerificationKey.toObject(getVerificationKey()));
visitor.visitField(this, FIELD_IsAccountVerified, HELPER_IsAccountVerified.toObject(getIsAccountVerified()));
visitor.visitAssociation (_TestInput); visitor.visitAssociation (_TestInput);
visitor.visitAssociation (_TestAnalysises); visitor.visitAssociation (_TestAnalysises);
visitor.visitAssociation (_JobApplications); visitor.visitAssociation (_JobApplications);
...@@ -1347,6 +1774,18 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1347,6 +1774,18 @@ public abstract class BaseCandidate extends SecUserExtension
{ {
return filter.matches (getPhone ()); return filter.matches (getPhone ());
} }
else if (attribName.equals (FIELD_VerificationMailSendDate))
{
return filter.matches (getVerificationMailSendDate ());
}
else if (attribName.equals (FIELD_VerificationKey))
{
return filter.matches (getVerificationKey ());
}
else if (attribName.equals (FIELD_IsAccountVerified))
{
return filter.matches (getIsAccountVerified ());
}
else if (attribName.equals (SINGLEREFERENCE_TestInput)) else if (attribName.equals (SINGLEREFERENCE_TestInput))
{ {
return filter.matches (getTestInput ()); return filter.matches (getTestInput ());
...@@ -1358,6 +1797,192 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1358,6 +1797,192 @@ public abstract class BaseCandidate extends SecUserExtension
} }
public static SearchAll SearchByAll () { return new SearchAll (); }
public static class SearchAll extends SearchObject<Candidate>
{
public SearchAll andObjectID (QueryFilter<Long> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.object_id", FIELD_ObjectID);
return this;
}
public SearchAll andObjectCreated (QueryFilter<Date> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.object_created_date", FIELD_ObjectCreated);
return this;
}
public SearchAll andObjectLastModified (QueryFilter<Date> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.object_last_updated_date", FIELD_ObjectLastModified);
return this;
}
public SearchAll andPhone (QueryFilter<String> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.phone", "Phone");
return this;
}
public SearchAll andVerificationMailSendDate (QueryFilter<Date> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.verification_mail_send_date", "VerificationMailSendDate");
return this;
}
public SearchAll andVerificationKey (QueryFilter<String> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.verification_key", "VerificationKey");
return this;
}
public SearchAll andIsAccountVerified (QueryFilter<Boolean> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.is_account_verified", "IsAccountVerified");
return this;
}
public SearchAll andTestInput (QueryFilter<TestInput> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.test_input_id", "TestInput");
return this;
}
public SearchAll andUser (QueryFilter<SecUser> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.user_id", "User");
return this;
}
public Candidate[]
search (ObjectTransaction transaction) throws StorageException
{
BaseBusinessClass[] results = super.search (transaction, REFERENCE_Candidate, SEARCH_All, criteria);
Set<Candidate> typedResults = new LinkedHashSet <Candidate> ();
for (BaseBusinessClass bbcResult : results)
{
Candidate aResult = (Candidate)bbcResult;
typedResults.add (aResult);
}
return ObjstoreUtils.removeDeleted(transaction, typedResults).toArray (new Candidate[0]);
}
}
public static Candidate[]
searchAll (ObjectTransaction transaction) throws StorageException
{
return SearchByAll ()
.search (transaction);
}
public static SearchIdPin SearchByIdPin () { return new SearchIdPin (); }
public static class SearchIdPin extends SearchObject<Candidate>
{
public SearchIdPin byID (Long ID)
{
by ("ID", ID);
return this;
}
public SearchIdPin byPin (String Pin)
{
by ("Pin", Pin);
return this;
}
public SearchIdPin andObjectID (QueryFilter<Long> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.object_id", FIELD_ObjectID);
return this;
}
public SearchIdPin andObjectCreated (QueryFilter<Date> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.object_created_date", FIELD_ObjectCreated);
return this;
}
public SearchIdPin andObjectLastModified (QueryFilter<Date> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.object_last_updated_date", FIELD_ObjectLastModified);
return this;
}
public SearchIdPin andPhone (QueryFilter<String> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.phone", "Phone");
return this;
}
public SearchIdPin andVerificationMailSendDate (QueryFilter<Date> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.verification_mail_send_date", "VerificationMailSendDate");
return this;
}
public SearchIdPin andVerificationKey (QueryFilter<String> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.verification_key", "VerificationKey");
return this;
}
public SearchIdPin andIsAccountVerified (QueryFilter<Boolean> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.is_account_verified", "IsAccountVerified");
return this;
}
public SearchIdPin andTestInput (QueryFilter<TestInput> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.test_input_id", "TestInput");
return this;
}
public SearchIdPin andUser (QueryFilter<SecUser> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.user_id", "User");
return this;
}
public Candidate search (ObjectTransaction transaction) throws StorageException
{
BaseBusinessClass[] results = super.search (transaction, REFERENCE_Candidate, SEARCH_IdPin, criteria);
Set<Candidate> typedResults = new LinkedHashSet <Candidate> ();
for (BaseBusinessClass bbcResult : results)
{
Candidate aResult = (Candidate)bbcResult;
typedResults.add (aResult);
}
return (Candidate)singletonResult(ObjstoreUtils.removeDeleted(transaction, typedResults).toArray(new BaseBusinessClass[0]), "Candidate", "");
}
}
public static Candidate searchIdPin (ObjectTransaction transaction, Long ID, String Pin) throws StorageException
{
return SearchByIdPin ()
.byID (ID)
.byPin (Pin)
.search (transaction);
}
public Object getAttribute (String attribName) public Object getAttribute (String attribName)
...@@ -1370,6 +1995,18 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1370,6 +1995,18 @@ public abstract class BaseCandidate extends SecUserExtension
{ {
return HELPER_Phone.toObject (getPhone ()); return HELPER_Phone.toObject (getPhone ());
} }
else if (attribName.equals (FIELD_VerificationMailSendDate))
{
return HELPER_VerificationMailSendDate.toObject (getVerificationMailSendDate ());
}
else if (attribName.equals (FIELD_VerificationKey))
{
return HELPER_VerificationKey.toObject (getVerificationKey ());
}
else if (attribName.equals (FIELD_IsAccountVerified))
{
return HELPER_IsAccountVerified.toObject (getIsAccountVerified ());
}
else else
{ {
return super.getAttribute (attribName); return super.getAttribute (attribName);
...@@ -1387,6 +2024,18 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1387,6 +2024,18 @@ public abstract class BaseCandidate extends SecUserExtension
{ {
return HELPER_Phone; return HELPER_Phone;
} }
else if (attribName.equals (FIELD_VerificationMailSendDate))
{
return HELPER_VerificationMailSendDate;
}
else if (attribName.equals (FIELD_VerificationKey))
{
return HELPER_VerificationKey;
}
else if (attribName.equals (FIELD_IsAccountVerified))
{
return HELPER_IsAccountVerified;
}
else else
{ {
return super.getAttributeHelper (attribName); return super.getAttributeHelper (attribName);
...@@ -1404,6 +2053,18 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1404,6 +2053,18 @@ public abstract class BaseCandidate extends SecUserExtension
{ {
setPhone ((String)(HELPER_Phone.fromObject (_Phone, attribValue))); setPhone ((String)(HELPER_Phone.fromObject (_Phone, attribValue)));
} }
else if (attribName.equals (FIELD_VerificationMailSendDate))
{
setVerificationMailSendDate ((Date)(HELPER_VerificationMailSendDate.fromObject (_VerificationMailSendDate, attribValue)));
}
else if (attribName.equals (FIELD_VerificationKey))
{
setVerificationKey ((String)(HELPER_VerificationKey.fromObject (_VerificationKey, attribValue)));
}
else if (attribName.equals (FIELD_IsAccountVerified))
{
setIsAccountVerified ((Boolean)(HELPER_IsAccountVerified.fromObject (_IsAccountVerified, attribValue)));
}
else else
{ {
super.setAttribute (attribName, attribValue); super.setAttribute (attribName, attribValue);
...@@ -1428,6 +2089,18 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1428,6 +2089,18 @@ public abstract class BaseCandidate extends SecUserExtension
{ {
return getWriteability_Phone (); return getWriteability_Phone ();
} }
else if (fieldName.equals (FIELD_VerificationMailSendDate))
{
return getWriteability_VerificationMailSendDate ();
}
else if (fieldName.equals (FIELD_VerificationKey))
{
return getWriteability_VerificationKey ();
}
else if (fieldName.equals (FIELD_IsAccountVerified))
{
return getWriteability_IsAccountVerified ();
}
else if (fieldName.equals (MULTIPLEREFERENCE_TestAnalysises)) else if (fieldName.equals (MULTIPLEREFERENCE_TestAnalysises))
{ {
return getWriteability_TestAnalysises (); return getWriteability_TestAnalysises ();
...@@ -1459,6 +2132,21 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1459,6 +2132,21 @@ public abstract class BaseCandidate extends SecUserExtension
fields.add (FIELD_Phone); fields.add (FIELD_Phone);
} }
if (getWriteability_VerificationMailSendDate () != FieldWriteability.TRUE)
{
fields.add (FIELD_VerificationMailSendDate);
}
if (getWriteability_VerificationKey () != FieldWriteability.TRUE)
{
fields.add (FIELD_VerificationKey);
}
if (getWriteability_IsAccountVerified () != FieldWriteability.TRUE)
{
fields.add (FIELD_IsAccountVerified);
}
super.putUnwriteable (fields); super.putUnwriteable (fields);
} }
...@@ -1469,6 +2157,9 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1469,6 +2157,9 @@ public abstract class BaseCandidate extends SecUserExtension
result.add(HELPER_Phone.getAttribObject (getClass (), _Phone, false, FIELD_Phone)); result.add(HELPER_Phone.getAttribObject (getClass (), _Phone, false, FIELD_Phone));
result.add(HELPER_VerificationMailSendDate.getAttribObject (getClass (), _VerificationMailSendDate, false, FIELD_VerificationMailSendDate));
result.add(HELPER_VerificationKey.getAttribObject (getClass (), _VerificationKey, false, FIELD_VerificationKey));
result.add(HELPER_IsAccountVerified.getAttribObject (getClass (), _IsAccountVerified, false, FIELD_IsAccountVerified));
return result; return result;
} }
...@@ -1537,6 +2228,60 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1537,6 +2228,60 @@ public abstract class BaseCandidate extends SecUserExtension
return newPhone; return newPhone;
} }
/**
* Get the attribute VerificationMailSendDate
*/
public Date getVerificationMailSendDate (Candidate obj, Date original)
{
return original;
}
/**
* Change the value set for attribute VerificationMailSendDate.
* May modify the field beforehand
* Occurs before validation.
*/
public Date setVerificationMailSendDate (Candidate obj, Date newVerificationMailSendDate) throws FieldException
{
return newVerificationMailSendDate;
}
/**
* Get the attribute VerificationKey
*/
public String getVerificationKey (Candidate obj, String original)
{
return original;
}
/**
* Change the value set for attribute VerificationKey.
* May modify the field beforehand
* Occurs before validation.
*/
public String setVerificationKey (Candidate obj, String newVerificationKey) throws FieldException
{
return newVerificationKey;
}
/**
* Get the attribute IsAccountVerified
*/
public Boolean getIsAccountVerified (Candidate obj, Boolean original)
{
return original;
}
/**
* Change the value set for attribute IsAccountVerified.
* May modify the field beforehand
* Occurs before validation.
*/
public Boolean setIsAccountVerified (Candidate obj, Boolean newIsAccountVerified) throws FieldException
{
return newIsAccountVerified;
}
} }
...@@ -1605,6 +2350,18 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1605,6 +2350,18 @@ public abstract class BaseCandidate extends SecUserExtension
{ {
return toPhone (); return toPhone ();
} }
if (name.equals ("VerificationMailSendDate"))
{
return toVerificationMailSendDate ();
}
if (name.equals ("VerificationKey"))
{
return toVerificationKey ();
}
if (name.equals ("IsAccountVerified"))
{
return toIsAccountVerified ();
}
if (name.equals ("TestInput")) if (name.equals ("TestInput"))
{ {
return toTestInput (); return toTestInput ();
...@@ -1616,6 +2373,12 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1616,6 +2373,12 @@ public abstract class BaseCandidate extends SecUserExtension
public PipeLine<From, String> toPhone () { return pipe(new ORMAttributePipe<Me, String>(FIELD_Phone)); } public PipeLine<From, String> toPhone () { return pipe(new ORMAttributePipe<Me, String>(FIELD_Phone)); }
public PipeLine<From, Date> toVerificationMailSendDate () { return pipe(new ORMAttributePipe<Me, Date>(FIELD_VerificationMailSendDate)); }
public PipeLine<From, String> toVerificationKey () { return pipe(new ORMAttributePipe<Me, String>(FIELD_VerificationKey)); }
public PipeLine<From, Boolean> toIsAccountVerified () { return pipe(new ORMAttributePipe<Me, Boolean>(FIELD_IsAccountVerified)); }
public TestInput.TestInputPipeLineFactory<From, TestInput> toTestInput () { return toTestInput (Filter.ALL); } public TestInput.TestInputPipeLineFactory<From, TestInput> toTestInput () { return toTestInput (Filter.ALL); }
public TestInput.TestInputPipeLineFactory<From, TestInput> toTestInput (Filter<TestInput> filter) public TestInput.TestInputPipeLineFactory<From, TestInput> toTestInput (Filter<TestInput> filter)
......
...@@ -60,6 +60,8 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -60,6 +60,8 @@ public abstract class BaseJob extends BaseBusinessClass
public static final String FIELD_State = "State"; public static final String FIELD_State = "State";
public static final String FIELD_Country = "Country"; public static final String FIELD_Country = "Country";
public static final String FIELD_Email = "Email"; public static final String FIELD_Email = "Email";
public static final String FIELD_Password = "Password";
public static final String FIELD_ConfirmPassword = "ConfirmPassword";
public static final String FIELD_CompletedDetails = "CompletedDetails"; public static final String FIELD_CompletedDetails = "CompletedDetails";
public static final String FIELD_CompletedRequirements = "CompletedRequirements"; public static final String FIELD_CompletedRequirements = "CompletedRequirements";
public static final String FIELD_CompletedCulture = "CompletedCulture"; public static final String FIELD_CompletedCulture = "CompletedCulture";
...@@ -103,6 +105,8 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -103,6 +105,8 @@ public abstract class BaseJob extends BaseBusinessClass
private static final EnumeratedAttributeHelper<Job, State> HELPER_State = new EnumeratedAttributeHelper<Job, State> (State.FACTORY_State); private static final EnumeratedAttributeHelper<Job, State> HELPER_State = new EnumeratedAttributeHelper<Job, State> (State.FACTORY_State);
private static final EnumeratedAttributeHelper<Job, Countries> HELPER_Country = new EnumeratedAttributeHelper<Job, Countries> (Countries.FACTORY_Countries); private static final EnumeratedAttributeHelper<Job, Countries> HELPER_Country = new EnumeratedAttributeHelper<Job, Countries> (Countries.FACTORY_Countries);
private static final DefaultAttributeHelper<Job> HELPER_Email = DefaultAttributeHelper.INSTANCE; private static final DefaultAttributeHelper<Job> HELPER_Email = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper<Job> HELPER_Password = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper<Job> HELPER_ConfirmPassword = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper<Job> HELPER_CompletedDetails = DefaultAttributeHelper.INSTANCE; private static final DefaultAttributeHelper<Job> HELPER_CompletedDetails = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper<Job> HELPER_CompletedRequirements = DefaultAttributeHelper.INSTANCE; private static final DefaultAttributeHelper<Job> HELPER_CompletedRequirements = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper<Job> HELPER_CompletedCulture = DefaultAttributeHelper.INSTANCE; private static final DefaultAttributeHelper<Job> HELPER_CompletedCulture = DefaultAttributeHelper.INSTANCE;
...@@ -131,6 +135,8 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -131,6 +135,8 @@ public abstract class BaseJob extends BaseBusinessClass
private State _State; private State _State;
private Countries _Country; private Countries _Country;
private String _Email; private String _Email;
private String _Password;
private String _ConfirmPassword;
private Boolean _CompletedDetails; private Boolean _CompletedDetails;
private Boolean _CompletedRequirements; private Boolean _CompletedRequirements;
private Boolean _CompletedCulture; private Boolean _CompletedCulture;
...@@ -161,6 +167,8 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -161,6 +167,8 @@ public abstract class BaseJob extends BaseBusinessClass
// Arrays of validators for each attribute // Arrays of validators for each attribute
private static final AttributeValidator[] FIELD_Email_Validators; private static final AttributeValidator[] FIELD_Email_Validators;
private static final AttributeValidator[] FIELD_Password_Validators;
private static final AttributeValidator[] FIELD_ConfirmPassword_Validators;
private static final AttributeValidator[] FIELD_CompletedDetails_Validators; private static final AttributeValidator[] FIELD_CompletedDetails_Validators;
private static final AttributeValidator[] FIELD_CompletedRequirements_Validators; private static final AttributeValidator[] FIELD_CompletedRequirements_Validators;
private static final AttributeValidator[] FIELD_CompletedCulture_Validators; private static final AttributeValidator[] FIELD_CompletedCulture_Validators;
...@@ -210,6 +218,8 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -210,6 +218,8 @@ public abstract class BaseJob extends BaseBusinessClass
setupAssocMetaData_Level(); setupAssocMetaData_Level();
setupAssocMetaData_SecUser(); setupAssocMetaData_SecUser();
FIELD_Email_Validators = (AttributeValidator[])setupAttribMetaData_Email(validatorMapping).toArray (new AttributeValidator[0]); FIELD_Email_Validators = (AttributeValidator[])setupAttribMetaData_Email(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_Password_Validators = (AttributeValidator[])setupAttribMetaData_Password(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_ConfirmPassword_Validators = (AttributeValidator[])setupAttribMetaData_ConfirmPassword(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_CompletedDetails_Validators = (AttributeValidator[])setupAttribMetaData_CompletedDetails(validatorMapping).toArray (new AttributeValidator[0]); FIELD_CompletedDetails_Validators = (AttributeValidator[])setupAttribMetaData_CompletedDetails(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_CompletedRequirements_Validators = (AttributeValidator[])setupAttribMetaData_CompletedRequirements(validatorMapping).toArray (new AttributeValidator[0]); FIELD_CompletedRequirements_Validators = (AttributeValidator[])setupAttribMetaData_CompletedRequirements(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_CompletedCulture_Validators = (AttributeValidator[])setupAttribMetaData_CompletedCulture(validatorMapping).toArray (new AttributeValidator[0]); FIELD_CompletedCulture_Validators = (AttributeValidator[])setupAttribMetaData_CompletedCulture(validatorMapping).toArray (new AttributeValidator[0]);
...@@ -377,6 +387,40 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -377,6 +387,40 @@ public abstract class BaseJob extends BaseBusinessClass
} }
// Meta Info setup // Meta Info setup
private static List setupAttribMetaData_Password(Map validatorMapping)
{
Map metaInfo = new HashMap ();
metaInfo.put ("name", "Password");
metaInfo.put ("type", "String");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for Job.Password:", metaInfo);
ATTRIBUTES_METADATA_Job.put (FIELD_Password, Collections.unmodifiableMap (metaInfo));
List validators = BaseBusinessClass.getAttribValidators(Job.class, "Password", metaInfo, validatorMapping);
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Validators for Job.Password:", validators);
return validators;
}
// Meta Info setup
private static List setupAttribMetaData_ConfirmPassword(Map validatorMapping)
{
Map metaInfo = new HashMap ();
metaInfo.put ("name", "ConfirmPassword");
metaInfo.put ("type", "String");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for Job.ConfirmPassword:", metaInfo);
ATTRIBUTES_METADATA_Job.put (FIELD_ConfirmPassword, Collections.unmodifiableMap (metaInfo));
List validators = BaseBusinessClass.getAttribValidators(Job.class, "ConfirmPassword", metaInfo, validatorMapping);
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Validators for Job.ConfirmPassword:", validators);
return validators;
}
// Meta Info setup
private static List setupAttribMetaData_CompletedDetails(Map validatorMapping) private static List setupAttribMetaData_CompletedDetails(Map validatorMapping)
{ {
Map metaInfo = new HashMap (); Map metaInfo = new HashMap ();
...@@ -871,6 +915,8 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -871,6 +915,8 @@ public abstract class BaseJob extends BaseBusinessClass
_State = (State)(State.WA); _State = (State)(State.WA);
_Country = (Countries)(Countries.AU); _Country = (Countries)(Countries.AU);
_Email = (String)(HELPER_Email.initialise (_Email)); _Email = (String)(HELPER_Email.initialise (_Email));
_Password = (String)(HELPER_Password.initialise (_Password));
_ConfirmPassword = (String)(HELPER_ConfirmPassword.initialise (_ConfirmPassword));
_CompletedDetails = (Boolean)(Boolean.FALSE); _CompletedDetails = (Boolean)(Boolean.FALSE);
_CompletedRequirements = (Boolean)(Boolean.FALSE); _CompletedRequirements = (Boolean)(Boolean.FALSE);
_CompletedCulture = (Boolean)(Boolean.FALSE); _CompletedCulture = (Boolean)(Boolean.FALSE);
...@@ -2495,6 +2541,202 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -2495,6 +2541,202 @@ public abstract class BaseJob extends BaseBusinessClass
} }
/** /**
* Get the attribute Password
*/
public String getPassword ()
{
assertValid();
String valToReturn = _Password;
for (JobBehaviourDecorator bhd : Job_BehaviourDecorators)
{
valToReturn = bhd.getPassword ((Job)this, valToReturn);
}
return valToReturn;
}
/**
* Called prior to the attribute 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 prePasswordChange (String newPassword) throws FieldException
{
}
/**
* Called after the attribute changes.
* If a field exception is thrown, the value is still changed, however it
* may lead to the TX being rolled back
*/
protected void postPasswordChange () throws FieldException
{
}
public FieldWriteability getWriteability_Password ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the attribute Password. Checks to ensure a new value
* has been supplied. If so, marks the field as altered and sets the attribute.
*/
public void setPassword (String newPassword) throws FieldException
{
boolean oldAndNewIdentical = HELPER_Password.compare (_Password, newPassword);
try
{
for (JobBehaviourDecorator bhd : Job_BehaviourDecorators)
{
newPassword = bhd.setPassword ((Job)this, newPassword);
oldAndNewIdentical = HELPER_Password.compare (_Password, newPassword);
}
if (FIELD_Password_Validators.length > 0)
{
Object newPasswordObj = HELPER_Password.toObject (newPassword);
if (newPasswordObj != null)
{
int loopMax = FIELD_Password_Validators.length;
Map metadata = (Map)ATTRIBUTES_METADATA_Job.get (FIELD_Password);
for (int v = 0 ; v < loopMax ; ++v)
{
FIELD_Password_Validators[v].checkAttribute (this, FIELD_Password, metadata, newPasswordObj);
}
}
}
}
catch (FieldException e)
{
if (!oldAndNewIdentical)
{
e.setWouldModify ();
}
throw e;
}
if (!oldAndNewIdentical)
{
assertValid();
Debug.assertion (getWriteability_Password () != FieldWriteability.FALSE, "Field Password is not writeable");
prePasswordChange (newPassword);
markFieldChange (FIELD_Password);
_Password = newPassword;
postFieldChange (FIELD_Password);
postPasswordChange ();
}
}
/**
* Get the attribute ConfirmPassword
*/
public String getConfirmPassword ()
{
assertValid();
String valToReturn = _ConfirmPassword;
for (JobBehaviourDecorator bhd : Job_BehaviourDecorators)
{
valToReturn = bhd.getConfirmPassword ((Job)this, valToReturn);
}
return valToReturn;
}
/**
* Called prior to the attribute 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 preConfirmPasswordChange (String newConfirmPassword) throws FieldException
{
}
/**
* Called after the attribute changes.
* If a field exception is thrown, the value is still changed, however it
* may lead to the TX being rolled back
*/
protected void postConfirmPasswordChange () throws FieldException
{
}
public FieldWriteability getWriteability_ConfirmPassword ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the attribute ConfirmPassword. Checks to ensure a new value
* has been supplied. If so, marks the field as altered and sets the attribute.
*/
public void setConfirmPassword (String newConfirmPassword) throws FieldException
{
boolean oldAndNewIdentical = HELPER_ConfirmPassword.compare (_ConfirmPassword, newConfirmPassword);
try
{
for (JobBehaviourDecorator bhd : Job_BehaviourDecorators)
{
newConfirmPassword = bhd.setConfirmPassword ((Job)this, newConfirmPassword);
oldAndNewIdentical = HELPER_ConfirmPassword.compare (_ConfirmPassword, newConfirmPassword);
}
if (FIELD_ConfirmPassword_Validators.length > 0)
{
Object newConfirmPasswordObj = HELPER_ConfirmPassword.toObject (newConfirmPassword);
if (newConfirmPasswordObj != null)
{
int loopMax = FIELD_ConfirmPassword_Validators.length;
Map metadata = (Map)ATTRIBUTES_METADATA_Job.get (FIELD_ConfirmPassword);
for (int v = 0 ; v < loopMax ; ++v)
{
FIELD_ConfirmPassword_Validators[v].checkAttribute (this, FIELD_ConfirmPassword, metadata, newConfirmPasswordObj);
}
}
}
}
catch (FieldException e)
{
if (!oldAndNewIdentical)
{
e.setWouldModify ();
}
throw e;
}
if (!oldAndNewIdentical)
{
assertValid();
Debug.assertion (getWriteability_ConfirmPassword () != FieldWriteability.FALSE, "Field ConfirmPassword is not writeable");
preConfirmPasswordChange (newConfirmPassword);
markFieldChange (FIELD_ConfirmPassword);
_ConfirmPassword = newConfirmPassword;
postFieldChange (FIELD_ConfirmPassword);
postConfirmPasswordChange ();
}
}
/**
* Get the attribute CompletedDetails * Get the attribute CompletedDetails
*/ */
public Boolean getCompletedDetails () public Boolean getCompletedDetails ()
...@@ -4791,6 +5033,8 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -4791,6 +5033,8 @@ public abstract class BaseJob extends BaseBusinessClass
_State = sourceJob._State; _State = sourceJob._State;
_Country = sourceJob._Country; _Country = sourceJob._Country;
_Email = sourceJob._Email; _Email = sourceJob._Email;
_Password = sourceJob._Password;
_ConfirmPassword = sourceJob._ConfirmPassword;
_CompletedDetails = sourceJob._CompletedDetails; _CompletedDetails = sourceJob._CompletedDetails;
_CompletedRequirements = sourceJob._CompletedRequirements; _CompletedRequirements = sourceJob._CompletedRequirements;
_CompletedCulture = sourceJob._CompletedCulture; _CompletedCulture = sourceJob._CompletedCulture;
...@@ -4878,6 +5122,8 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -4878,6 +5122,8 @@ public abstract class BaseJob extends BaseBusinessClass
_State = (State)(HELPER_State.readExternal (_State, vals.get(FIELD_State))); // _State = (State)(HELPER_State.readExternal (_State, vals.get(FIELD_State))); //
_Country = (Countries)(HELPER_Country.readExternal (_Country, vals.get(FIELD_Country))); // _Country = (Countries)(HELPER_Country.readExternal (_Country, vals.get(FIELD_Country))); //
_Email = (String)(HELPER_Email.readExternal (_Email, vals.get(FIELD_Email))); // _Email = (String)(HELPER_Email.readExternal (_Email, vals.get(FIELD_Email))); //
_Password = (String)(HELPER_Password.readExternal (_Password, vals.get(FIELD_Password))); //
_ConfirmPassword = (String)(HELPER_ConfirmPassword.readExternal (_ConfirmPassword, vals.get(FIELD_ConfirmPassword))); //
_CompletedDetails = (Boolean)(HELPER_CompletedDetails.readExternal (_CompletedDetails, vals.get(FIELD_CompletedDetails))); // _CompletedDetails = (Boolean)(HELPER_CompletedDetails.readExternal (_CompletedDetails, vals.get(FIELD_CompletedDetails))); //
_CompletedRequirements = (Boolean)(HELPER_CompletedRequirements.readExternal (_CompletedRequirements, vals.get(FIELD_CompletedRequirements))); // _CompletedRequirements = (Boolean)(HELPER_CompletedRequirements.readExternal (_CompletedRequirements, vals.get(FIELD_CompletedRequirements))); //
_CompletedCulture = (Boolean)(HELPER_CompletedCulture.readExternal (_CompletedCulture, vals.get(FIELD_CompletedCulture))); // _CompletedCulture = (Boolean)(HELPER_CompletedCulture.readExternal (_CompletedCulture, vals.get(FIELD_CompletedCulture))); //
...@@ -4922,6 +5168,8 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -4922,6 +5168,8 @@ public abstract class BaseJob extends BaseBusinessClass
vals.put (FIELD_State, HELPER_State.writeExternal (_State)); vals.put (FIELD_State, HELPER_State.writeExternal (_State));
vals.put (FIELD_Country, HELPER_Country.writeExternal (_Country)); vals.put (FIELD_Country, HELPER_Country.writeExternal (_Country));
vals.put (FIELD_Email, HELPER_Email.writeExternal (_Email)); vals.put (FIELD_Email, HELPER_Email.writeExternal (_Email));
vals.put (FIELD_Password, HELPER_Password.writeExternal (_Password));
vals.put (FIELD_ConfirmPassword, HELPER_ConfirmPassword.writeExternal (_ConfirmPassword));
vals.put (FIELD_CompletedDetails, HELPER_CompletedDetails.writeExternal (_CompletedDetails)); vals.put (FIELD_CompletedDetails, HELPER_CompletedDetails.writeExternal (_CompletedDetails));
vals.put (FIELD_CompletedRequirements, HELPER_CompletedRequirements.writeExternal (_CompletedRequirements)); vals.put (FIELD_CompletedRequirements, HELPER_CompletedRequirements.writeExternal (_CompletedRequirements));
vals.put (FIELD_CompletedCulture, HELPER_CompletedCulture.writeExternal (_CompletedCulture)); vals.put (FIELD_CompletedCulture, HELPER_CompletedCulture.writeExternal (_CompletedCulture));
...@@ -5035,6 +5283,8 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5035,6 +5283,8 @@ public abstract class BaseJob extends BaseBusinessClass
super.visitAttributes (visitor); super.visitAttributes (visitor);
visitor.visitField(this, FIELD_Email, HELPER_Email.toObject(getEmail())); visitor.visitField(this, FIELD_Email, HELPER_Email.toObject(getEmail()));
visitor.visitField(this, FIELD_Password, HELPER_Password.toObject(getPassword()));
visitor.visitField(this, FIELD_ConfirmPassword, HELPER_ConfirmPassword.toObject(getConfirmPassword()));
visitor.visitField(this, FIELD_CompletedDetails, HELPER_CompletedDetails.toObject(getCompletedDetails())); visitor.visitField(this, FIELD_CompletedDetails, HELPER_CompletedDetails.toObject(getCompletedDetails()));
visitor.visitField(this, FIELD_CompletedRequirements, HELPER_CompletedRequirements.toObject(getCompletedRequirements())); visitor.visitField(this, FIELD_CompletedRequirements, HELPER_CompletedRequirements.toObject(getCompletedRequirements()));
visitor.visitField(this, FIELD_CompletedCulture, HELPER_CompletedCulture.toObject(getCompletedCulture())); visitor.visitField(this, FIELD_CompletedCulture, HELPER_CompletedCulture.toObject(getCompletedCulture()));
...@@ -5605,6 +5855,14 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5605,6 +5855,14 @@ public abstract class BaseJob extends BaseBusinessClass
{ {
return HELPER_Email.toObject (getEmail ()); return HELPER_Email.toObject (getEmail ());
} }
else if (attribName.equals (FIELD_Password))
{
return HELPER_Password.toObject (getPassword ());
}
else if (attribName.equals (FIELD_ConfirmPassword))
{
return HELPER_ConfirmPassword.toObject (getConfirmPassword ());
}
else if (attribName.equals (FIELD_CompletedDetails)) else if (attribName.equals (FIELD_CompletedDetails))
{ {
return HELPER_CompletedDetails.toObject (getCompletedDetails ()); return HELPER_CompletedDetails.toObject (getCompletedDetails ());
...@@ -5718,6 +5976,14 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5718,6 +5976,14 @@ public abstract class BaseJob extends BaseBusinessClass
{ {
return HELPER_Email; return HELPER_Email;
} }
else if (attribName.equals (FIELD_Password))
{
return HELPER_Password;
}
else if (attribName.equals (FIELD_ConfirmPassword))
{
return HELPER_ConfirmPassword;
}
else if (attribName.equals (FIELD_CompletedDetails)) else if (attribName.equals (FIELD_CompletedDetails))
{ {
return HELPER_CompletedDetails; return HELPER_CompletedDetails;
...@@ -5831,6 +6097,14 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5831,6 +6097,14 @@ public abstract class BaseJob extends BaseBusinessClass
{ {
setEmail ((String)(HELPER_Email.fromObject (_Email, attribValue))); setEmail ((String)(HELPER_Email.fromObject (_Email, attribValue)));
} }
else if (attribName.equals (FIELD_Password))
{
setPassword ((String)(HELPER_Password.fromObject (_Password, attribValue)));
}
else if (attribName.equals (FIELD_ConfirmPassword))
{
setConfirmPassword ((String)(HELPER_ConfirmPassword.fromObject (_ConfirmPassword, attribValue)));
}
else if (attribName.equals (FIELD_CompletedDetails)) else if (attribName.equals (FIELD_CompletedDetails))
{ {
setCompletedDetails ((Boolean)(HELPER_CompletedDetails.fromObject (_CompletedDetails, attribValue))); setCompletedDetails ((Boolean)(HELPER_CompletedDetails.fromObject (_CompletedDetails, attribValue)));
...@@ -5971,6 +6245,14 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5971,6 +6245,14 @@ public abstract class BaseJob extends BaseBusinessClass
{ {
return getWriteability_Email (); return getWriteability_Email ();
} }
else if (fieldName.equals (FIELD_Password))
{
return getWriteability_Password ();
}
else if (fieldName.equals (FIELD_ConfirmPassword))
{
return getWriteability_ConfirmPassword ();
}
else if (fieldName.equals (FIELD_CompletedDetails)) else if (fieldName.equals (FIELD_CompletedDetails))
{ {
return getWriteability_CompletedDetails (); return getWriteability_CompletedDetails ();
...@@ -6109,6 +6391,16 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -6109,6 +6391,16 @@ public abstract class BaseJob extends BaseBusinessClass
fields.add (FIELD_Email); fields.add (FIELD_Email);
} }
if (getWriteability_Password () != FieldWriteability.TRUE)
{
fields.add (FIELD_Password);
}
if (getWriteability_ConfirmPassword () != FieldWriteability.TRUE)
{
fields.add (FIELD_ConfirmPassword);
}
if (getWriteability_CompletedDetails () != FieldWriteability.TRUE) if (getWriteability_CompletedDetails () != FieldWriteability.TRUE)
{ {
fields.add (FIELD_CompletedDetails); fields.add (FIELD_CompletedDetails);
...@@ -6179,6 +6471,8 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -6179,6 +6471,8 @@ public abstract class BaseJob extends BaseBusinessClass
result.add(HELPER_State.getAttribObject (getClass (), _State, false, FIELD_State)); result.add(HELPER_State.getAttribObject (getClass (), _State, false, FIELD_State));
result.add(HELPER_Country.getAttribObject (getClass (), _Country, false, FIELD_Country)); result.add(HELPER_Country.getAttribObject (getClass (), _Country, false, FIELD_Country));
result.add(HELPER_Email.getAttribObject (getClass (), _Email, false, FIELD_Email)); result.add(HELPER_Email.getAttribObject (getClass (), _Email, false, FIELD_Email));
result.add(HELPER_Password.getAttribObject (getClass (), _Password, false, FIELD_Password));
result.add(HELPER_ConfirmPassword.getAttribObject (getClass (), _ConfirmPassword, false, FIELD_ConfirmPassword));
result.add(HELPER_CompletedDetails.getAttribObject (getClass (), _CompletedDetails, false, FIELD_CompletedDetails)); result.add(HELPER_CompletedDetails.getAttribObject (getClass (), _CompletedDetails, false, FIELD_CompletedDetails));
result.add(HELPER_CompletedRequirements.getAttribObject (getClass (), _CompletedRequirements, false, FIELD_CompletedRequirements)); result.add(HELPER_CompletedRequirements.getAttribObject (getClass (), _CompletedRequirements, false, FIELD_CompletedRequirements));
result.add(HELPER_CompletedCulture.getAttribObject (getClass (), _CompletedCulture, false, FIELD_CompletedCulture)); result.add(HELPER_CompletedCulture.getAttribObject (getClass (), _CompletedCulture, false, FIELD_CompletedCulture));
...@@ -6527,6 +6821,42 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -6527,6 +6821,42 @@ public abstract class BaseJob extends BaseBusinessClass
} }
/** /**
* Get the attribute Password
*/
public String getPassword (Job obj, String original)
{
return original;
}
/**
* Change the value set for attribute Password.
* May modify the field beforehand
* Occurs before validation.
*/
public String setPassword (Job obj, String newPassword) throws FieldException
{
return newPassword;
}
/**
* Get the attribute ConfirmPassword
*/
public String getConfirmPassword (Job obj, String original)
{
return original;
}
/**
* Change the value set for attribute ConfirmPassword.
* May modify the field beforehand
* Occurs before validation.
*/
public String setConfirmPassword (Job obj, String newConfirmPassword) throws FieldException
{
return newConfirmPassword;
}
/**
* Get the attribute CompletedDetails * Get the attribute CompletedDetails
*/ */
public Boolean getCompletedDetails (Job obj, Boolean original) public Boolean getCompletedDetails (Job obj, Boolean original)
...@@ -6756,6 +7086,14 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -6756,6 +7086,14 @@ public abstract class BaseJob extends BaseBusinessClass
{ {
return toEmail (); return toEmail ();
} }
if (name.equals ("Password"))
{
return toPassword ();
}
if (name.equals ("ConfirmPassword"))
{
return toConfirmPassword ();
}
if (name.equals ("CompletedDetails")) if (name.equals ("CompletedDetails"))
{ {
return toCompletedDetails (); return toCompletedDetails ();
...@@ -6880,6 +7218,10 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -6880,6 +7218,10 @@ public abstract class BaseJob extends BaseBusinessClass
public PipeLine<From, String> toEmail () { return pipe(new ORMAttributePipe<Me, String>(FIELD_Email)); } public PipeLine<From, String> toEmail () { return pipe(new ORMAttributePipe<Me, String>(FIELD_Email)); }
public PipeLine<From, String> toPassword () { return pipe(new ORMAttributePipe<Me, String>(FIELD_Password)); }
public PipeLine<From, String> toConfirmPassword () { return pipe(new ORMAttributePipe<Me, String>(FIELD_ConfirmPassword)); }
public PipeLine<From, Boolean> toCompletedDetails () { return pipe(new ORMAttributePipe<Me, Boolean>(FIELD_CompletedDetails)); } public PipeLine<From, Boolean> toCompletedDetails () { return pipe(new ORMAttributePipe<Me, Boolean>(FIELD_CompletedDetails)); }
public PipeLine<From, Boolean> toCompletedRequirements () { return pipe(new ORMAttributePipe<Me, Boolean>(FIELD_CompletedRequirements)); } public PipeLine<From, Boolean> toCompletedRequirements () { return pipe(new ORMAttributePipe<Me, Boolean>(FIELD_CompletedRequirements)); }
...@@ -6986,6 +7328,16 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -6986,6 +7328,16 @@ public abstract class BaseJob extends BaseBusinessClass
return true; return true;
} }
if(CollectionUtils.equals(attribName, "Password"))
{
return true;
}
if(CollectionUtils.equals(attribName, "ConfirmPassword"))
{
return true;
}
if(CollectionUtils.equals(attribName, "CompletedDetails")) if(CollectionUtils.equals(attribName, "CompletedDetails"))
{ {
return true; return true;
......
package performa.orm; package performa.orm;
import java.util.Calendar;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import oneit.objstore.MessageSource;
import oneit.objstore.ObjectTransaction;
import oneit.servlets.objstore.MessageSourceDecorator;
import oneit.servlets.process.ORMProcessState;
import oneit.utils.CollectionUtils;
import oneit.utils.DateDiff;
import oneit.utils.StringUtils;
public class Candidate extends BaseCandidate public class Candidate extends BaseCandidate
{ {
...@@ -23,4 +34,45 @@ public class Candidate extends BaseCandidate ...@@ -23,4 +34,45 @@ public class Candidate extends BaseCandidate
{ {
return getUser() != null ? getUser().getName() : null; return getUser() != null ? getUser().getName() : null;
} }
public static String checkCandidate(HttpServletRequest request, ORMProcessState process)
{
ObjectTransaction transaction = process.getTransaction();
String candidateID = (String) request.getParameter("id");
String verificationCode = (String) request.getParameter("pin");
MessageSource messageSource = MessageSourceDecorator.getMessageSource(request);
Candidate candidate = null;
String errorMsg = "";
if(StringUtils.subBlanks(candidateID) != null && StringUtils.subBlanks(verificationCode) != null)
{
candidate = Candidate.getCandidateByID(transaction, Long.parseLong(candidateID));
process.setAttribute("Candidate", candidate);
}
else if(process.getAttribute("Candidate") != null)
{
candidate = (Candidate) process.getAttribute("Candidate");
}
else
{
errorMsg = messageSource.getFieldErrorMsg(Candidate.REFERENCE_Candidate, "", "UnauthorizedUser", null);
}
if(candidate == null)
{
errorMsg = messageSource.getFieldErrorMsg(Candidate.REFERENCE_Candidate, "", "UnauthorizedUser", null);
}
else if(!CollectionUtils.equals(verificationCode, candidate.getVerificationKey()))
{
errorMsg = messageSource.getFieldErrorMsg(Candidate.REFERENCE_Candidate, "", "WrongVerificationCode", null);
}
else if(DateDiff.getDateDiff(Calendar.HOUR, candidate.getVerificationMailSendDate(), new Date()) > 24)
{
errorMsg = messageSource.getFieldErrorMsg(Candidate.REFERENCE_Candidate, "", "LinkExpired", null);
}
return errorMsg;
}
} }
\ No newline at end of file
...@@ -14,10 +14,22 @@ ...@@ -14,10 +14,22 @@
<ATTRIB name="Phone" type="String" dbcol="phone" length="30"/> <ATTRIB name="Phone" type="String" dbcol="phone" length="30"/>
<ATTRIB name="VerificationMailSendDate" type="Date" dbcol="verification_mail_send_date" />
<ATTRIB name="VerificationKey" type="String" dbcol="verification_key" length="10"/>
<ATTRIB name="IsAccountVerified" type="Boolean" dbcol="is_account_verified" defaultValue="Boolean.FALSE"/>
<SINGLEREFERENCE name="TestInput" type="TestInput" dbcol="test_input_id" backreferenceName="Candidates" /> <SINGLEREFERENCE name="TestInput" type="TestInput" dbcol="test_input_id" backreferenceName="Candidates" />
<SINGLEREFERENCE name="User" type="SecUser" dbcol="user_id" backreferenceName="Extensions" inSuper='TRUE'/> <SINGLEREFERENCE name="User" type="SecUser" dbcol="user_id" backreferenceName="Extensions" inSuper='TRUE'/>
</TABLE> </TABLE>
<SEARCH type="All" paramFilter="oneit_sec_user_extension.object_id is not null" >
</SEARCH>
<SEARCH type="IdPin" paramFilter="oneit_sec_user_extension.object_id is not null" singleton="TRUE">
<PARAM name="ID" type="Long" paramFilter="object_id = ${ID} " />
<PARAM name="Pin" type="String" paramFilter="verification_key = ${Pin}" />
</SEARCH>
</BUSINESSCLASS> </BUSINESSCLASS>
</ROOT> </ROOT>
\ No newline at end of file
...@@ -28,10 +28,16 @@ public class CandidatePersistenceMgr extends SecUserExtensionPersistenceMgr ...@@ -28,10 +28,16 @@ public class CandidatePersistenceMgr extends SecUserExtensionPersistenceMgr
// Private attributes corresponding to business object data // Private attributes corresponding to business object data
private String dummyPhone; private String dummyPhone;
private Date dummyVerificationMailSendDate;
private String dummyVerificationKey;
private Boolean dummyIsAccountVerified;
// Static constants corresponding to attribute helpers // Static constants corresponding to attribute helpers
private static final DefaultAttributeHelper HELPER_Phone = DefaultAttributeHelper.INSTANCE; private static final DefaultAttributeHelper HELPER_Phone = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper HELPER_VerificationMailSendDate = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper HELPER_VerificationKey = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper HELPER_IsAccountVerified = DefaultAttributeHelper.INSTANCE;
...@@ -39,10 +45,13 @@ public class CandidatePersistenceMgr extends SecUserExtensionPersistenceMgr ...@@ -39,10 +45,13 @@ public class CandidatePersistenceMgr extends SecUserExtensionPersistenceMgr
public CandidatePersistenceMgr () public CandidatePersistenceMgr ()
{ {
dummyPhone = (String)(HELPER_Phone.initialise (dummyPhone)); dummyPhone = (String)(HELPER_Phone.initialise (dummyPhone));
dummyVerificationMailSendDate = (Date)(HELPER_VerificationMailSendDate.initialise (dummyVerificationMailSendDate));
dummyVerificationKey = (String)(HELPER_VerificationKey.initialise (dummyVerificationKey));
dummyIsAccountVerified = (Boolean)(HELPER_IsAccountVerified.initialise (dummyIsAccountVerified));
} }
private String SELECT_COLUMNS = "{PREFIX}oneit_sec_user_extension.object_id as id, {PREFIX}oneit_sec_user_extension.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}oneit_sec_user_extension.object_CREATED_DATE as CREATED_DATE, {PREFIX}oneit_sec_user_extension.object_TYPE as OBJECT_TYPE, {PREFIX}oneit_sec_user_extension.phone, {PREFIX}oneit_sec_user_extension.test_input_id, {PREFIX}oneit_sec_user_extension.user_id, 1 AS commasafe "; private String SELECT_COLUMNS = "{PREFIX}oneit_sec_user_extension.object_id as id, {PREFIX}oneit_sec_user_extension.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}oneit_sec_user_extension.object_CREATED_DATE as CREATED_DATE, {PREFIX}oneit_sec_user_extension.object_TYPE as OBJECT_TYPE, {PREFIX}oneit_sec_user_extension.phone, {PREFIX}oneit_sec_user_extension.verification_mail_send_date, {PREFIX}oneit_sec_user_extension.verification_key, {PREFIX}oneit_sec_user_extension.is_account_verified, {PREFIX}oneit_sec_user_extension.test_input_id, {PREFIX}oneit_sec_user_extension.user_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
...@@ -95,6 +104,9 @@ public class CandidatePersistenceMgr extends SecUserExtensionPersistenceMgr ...@@ -95,6 +104,9 @@ public class CandidatePersistenceMgr extends SecUserExtensionPersistenceMgr
if (false || if (false ||
!oneit_sec_user_extensionPSet.containsAttrib("OBJECT_TYPE") || !oneit_sec_user_extensionPSet.containsAttrib(BaseBusinessClass.FIELD_ObjectLastModified) || !oneit_sec_user_extensionPSet.containsAttrib("OBJECT_TYPE") || !oneit_sec_user_extensionPSet.containsAttrib(BaseBusinessClass.FIELD_ObjectLastModified) ||
!oneit_sec_user_extensionPSet.containsAttrib(Candidate.FIELD_Phone)|| !oneit_sec_user_extensionPSet.containsAttrib(Candidate.FIELD_Phone)||
!oneit_sec_user_extensionPSet.containsAttrib(Candidate.FIELD_VerificationMailSendDate)||
!oneit_sec_user_extensionPSet.containsAttrib(Candidate.FIELD_VerificationKey)||
!oneit_sec_user_extensionPSet.containsAttrib(Candidate.FIELD_IsAccountVerified)||
!oneit_sec_user_extensionPSet.containsAttrib(Candidate.SINGLEREFERENCE_TestInput)|| !oneit_sec_user_extensionPSet.containsAttrib(Candidate.SINGLEREFERENCE_TestInput)||
!oneit_sec_user_extensionPSet.containsAttrib(Candidate.SINGLEREFERENCE_User)) !oneit_sec_user_extensionPSet.containsAttrib(Candidate.SINGLEREFERENCE_User))
{ {
...@@ -195,10 +207,10 @@ public class CandidatePersistenceMgr extends SecUserExtensionPersistenceMgr ...@@ -195,10 +207,10 @@ public class CandidatePersistenceMgr extends SecUserExtensionPersistenceMgr
{ {
int rowsUpdated = executeStatement (sqlMgr, int rowsUpdated = executeStatement (sqlMgr,
"UPDATE {PREFIX}oneit_sec_user_extension " + "UPDATE {PREFIX}oneit_sec_user_extension " +
"SET phone = ?, test_input_id = ? , user_id = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " + "SET phone = ?, verification_mail_send_date = ?, verification_key = ?, is_account_verified = ?, test_input_id = ? , user_id = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " +
"WHERE oneit_sec_user_extension.object_id = ? AND " + getConcurrencyCheck (sqlMgr, "object_LAST_UPDATED_DATE", obj.getObjectLastModified ()) + " ", "WHERE oneit_sec_user_extension.object_id = ? AND " + getConcurrencyCheck (sqlMgr, "object_LAST_UPDATED_DATE", obj.getObjectLastModified ()) + " ",
CollectionUtils.listEntry (HELPER_Phone.getForSQL(dummyPhone, oneit_sec_user_extensionPSet.getAttrib (Candidate.FIELD_Phone))).listEntry (SQLManager.CheckNull((Long)(oneit_sec_user_extensionPSet.getAttrib (Candidate.SINGLEREFERENCE_TestInput)))).listEntry (SQLManager.CheckNull((Long)(oneit_sec_user_extensionPSet.getAttrib (Candidate.SINGLEREFERENCE_User)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray()); CollectionUtils.listEntry (HELPER_Phone.getForSQL(dummyPhone, oneit_sec_user_extensionPSet.getAttrib (Candidate.FIELD_Phone))).listEntry (HELPER_VerificationMailSendDate.getForSQL(dummyVerificationMailSendDate, oneit_sec_user_extensionPSet.getAttrib (Candidate.FIELD_VerificationMailSendDate))).listEntry (HELPER_VerificationKey.getForSQL(dummyVerificationKey, oneit_sec_user_extensionPSet.getAttrib (Candidate.FIELD_VerificationKey))).listEntry (HELPER_IsAccountVerified.getForSQL(dummyIsAccountVerified, oneit_sec_user_extensionPSet.getAttrib (Candidate.FIELD_IsAccountVerified))).listEntry (SQLManager.CheckNull((Long)(oneit_sec_user_extensionPSet.getAttrib (Candidate.SINGLEREFERENCE_TestInput)))).listEntry (SQLManager.CheckNull((Long)(oneit_sec_user_extensionPSet.getAttrib (Candidate.SINGLEREFERENCE_User)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray());
if (rowsUpdated != 1) if (rowsUpdated != 1)
{ {
...@@ -282,6 +294,14 @@ public class CandidatePersistenceMgr extends SecUserExtensionPersistenceMgr ...@@ -282,6 +294,14 @@ public class CandidatePersistenceMgr extends SecUserExtensionPersistenceMgr
} }
public ResultSet executeSearchQueryAll (SQLManager sqlMgr) throws SQLException
{
throw new RuntimeException ("NOT implemented: executeSearchQueryAll");
}
public ResultSet executeSearchQueryIdPin (SQLManager sqlMgr, Long ID, String Pin) throws SQLException
{
throw new RuntimeException ("NOT implemented: executeSearchQueryIdPin");
}
...@@ -424,6 +444,96 @@ public class CandidatePersistenceMgr extends SecUserExtensionPersistenceMgr ...@@ -424,6 +444,96 @@ public class CandidatePersistenceMgr extends SecUserExtensionPersistenceMgr
return results; return results;
} }
else if (searchType.equals (Candidate.SEARCH_All))
{
// Local scope for transformed variables
{
}
String orderBy = " ";
String tables = " ";
Set<String> joinTableSet = new HashSet<String>();
String filter;
Object[] searchParams; // paramFilter: oneit_sec_user_extension.object_id is not null
String preFilter = "(oneit_sec_user_extension.object_id is not null)"
+ " ";
preFilter += context.getLoadingAttributes ().getCustomSQL() ;
SearchParamTransform tx = new SearchParamTransform (criteria);
filter = StringUtils.replaceParams (preFilter, tx);
searchParams = tx.getParamsArray();
Integer maxRows = context.getLoadingAttributes ().getMaxRows ();
boolean truncateExtra = !context.getLoadingAttributes ().isFailIfMaxExceeded();
String query = "SELECT " + SELECT_COLUMNS +
"FROM {PREFIX}oneit_sec_user_extension " + tables + tableSetToSQL(joinTableSet) +
"WHERE " + SELECT_JOINS + " " + filter + orderBy;
BaseBusinessClass[] results = loadQuery (allPSets, sqlMgr, context, query, searchParams, maxRows, truncateExtra);
return results;
}
else if (searchType.equals (Candidate.SEARCH_IdPin))
{
// Local scope for transformed variables
{
}
String orderBy = " ";
String tables = " ";
Set<String> joinTableSet = new HashSet<String>();
String filter;
Object[] searchParams; // paramFilter: oneit_sec_user_extension.object_id is not null
String preFilter = "(oneit_sec_user_extension.object_id is not null)"
+ " ";
if (criteria.containsKey("ID"))
{
preFilter += " AND (object_id = ${ID} ) ";
preFilter += "";
}
if (criteria.containsKey("Pin"))
{
preFilter += " AND (verification_key = ${Pin}) ";
preFilter += "";
}
preFilter += context.getLoadingAttributes ().getCustomSQL() ;
SearchParamTransform tx = new SearchParamTransform (criteria);
filter = StringUtils.replaceParams (preFilter, tx);
searchParams = tx.getParamsArray();
Integer maxRows = context.getLoadingAttributes ().getMaxRows ();
boolean truncateExtra = !context.getLoadingAttributes ().isFailIfMaxExceeded();
String query = "SELECT " + SELECT_COLUMNS +
"FROM {PREFIX}oneit_sec_user_extension " + tables + tableSetToSQL(joinTableSet) +
"WHERE " + SELECT_JOINS + " " + filter + orderBy;
BaseBusinessClass[] results = loadQuery (allPSets, sqlMgr, context, query, searchParams, maxRows, truncateExtra);
return results;
}
else else
{ {
...@@ -464,6 +574,9 @@ public class CandidatePersistenceMgr extends SecUserExtensionPersistenceMgr ...@@ -464,6 +574,9 @@ public class CandidatePersistenceMgr extends SecUserExtensionPersistenceMgr
oneit_sec_user_extensionPSet.setAttrib(BaseBusinessClass.FIELD_ObjectCreated, r.getTimestamp ("CREATED_DATE"));oneit_sec_user_extensionPSet.setAttrib("OBJECT_TYPE", r.getString ("OBJECT_TYPE")); oneit_sec_user_extensionPSet.setAttrib(BaseBusinessClass.FIELD_ObjectCreated, r.getTimestamp ("CREATED_DATE"));oneit_sec_user_extensionPSet.setAttrib("OBJECT_TYPE", r.getString ("OBJECT_TYPE"));
oneit_sec_user_extensionPSet.setAttrib(Candidate.FIELD_Phone, HELPER_Phone.getFromRS(dummyPhone, r, "phone")); oneit_sec_user_extensionPSet.setAttrib(Candidate.FIELD_Phone, HELPER_Phone.getFromRS(dummyPhone, r, "phone"));
oneit_sec_user_extensionPSet.setAttrib(Candidate.FIELD_VerificationMailSendDate, HELPER_VerificationMailSendDate.getFromRS(dummyVerificationMailSendDate, r, "verification_mail_send_date"));
oneit_sec_user_extensionPSet.setAttrib(Candidate.FIELD_VerificationKey, HELPER_VerificationKey.getFromRS(dummyVerificationKey, r, "verification_key"));
oneit_sec_user_extensionPSet.setAttrib(Candidate.FIELD_IsAccountVerified, HELPER_IsAccountVerified.getFromRS(dummyIsAccountVerified, r, "is_account_verified"));
oneit_sec_user_extensionPSet.setAttrib(Candidate.SINGLEREFERENCE_TestInput, r.getObject ("test_input_id")); oneit_sec_user_extensionPSet.setAttrib(Candidate.SINGLEREFERENCE_TestInput, r.getObject ("test_input_id"));
oneit_sec_user_extensionPSet.setAttrib(Candidate.SINGLEREFERENCE_User, r.getObject ("user_id")); oneit_sec_user_extensionPSet.setAttrib(Candidate.SINGLEREFERENCE_User, r.getObject ("user_id"));
...@@ -483,10 +596,10 @@ public class CandidatePersistenceMgr extends SecUserExtensionPersistenceMgr ...@@ -483,10 +596,10 @@ public class CandidatePersistenceMgr extends SecUserExtensionPersistenceMgr
{ {
executeStatement (sqlMgr, executeStatement (sqlMgr,
"INSERT INTO {PREFIX}oneit_sec_user_extension " + "INSERT INTO {PREFIX}oneit_sec_user_extension " +
" (phone, test_input_id, user_id, object_id, object_LAST_UPDATED_DATE, object_CREATED_DATE, object_TYPE) " + " (phone, verification_mail_send_date, verification_key, is_account_verified, test_input_id, user_id, object_id, object_LAST_UPDATED_DATE, object_CREATED_DATE, object_TYPE) " +
"VALUES " + "VALUES " +
" (?, ?, ?, ?, " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ", " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ", ?)", " (?, ?, ?, ?, ?, ?, ?, " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ", " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ", ?)",
CollectionUtils.listEntry (HELPER_Phone.getForSQL(dummyPhone, oneit_sec_user_extensionPSet.getAttrib (Candidate.FIELD_Phone))) .listEntry (SQLManager.CheckNull((Long)(oneit_sec_user_extensionPSet.getAttrib (Candidate.SINGLEREFERENCE_TestInput)))).listEntry (SQLManager.CheckNull((Long)(oneit_sec_user_extensionPSet.getAttrib (Candidate.SINGLEREFERENCE_User)))) .listEntry (objectID.longID ()).listEntry (context.getTag (obj)).toList().toArray()); CollectionUtils.listEntry (HELPER_Phone.getForSQL(dummyPhone, oneit_sec_user_extensionPSet.getAttrib (Candidate.FIELD_Phone))).listEntry (HELPER_VerificationMailSendDate.getForSQL(dummyVerificationMailSendDate, oneit_sec_user_extensionPSet.getAttrib (Candidate.FIELD_VerificationMailSendDate))).listEntry (HELPER_VerificationKey.getForSQL(dummyVerificationKey, oneit_sec_user_extensionPSet.getAttrib (Candidate.FIELD_VerificationKey))).listEntry (HELPER_IsAccountVerified.getForSQL(dummyIsAccountVerified, oneit_sec_user_extensionPSet.getAttrib (Candidate.FIELD_IsAccountVerified))) .listEntry (SQLManager.CheckNull((Long)(oneit_sec_user_extensionPSet.getAttrib (Candidate.SINGLEREFERENCE_TestInput)))).listEntry (SQLManager.CheckNull((Long)(oneit_sec_user_extensionPSet.getAttrib (Candidate.SINGLEREFERENCE_User)))) .listEntry (objectID.longID ()).listEntry (context.getTag (obj)).toList().toArray());
oneit_sec_user_extensionPSet.setStatus (PersistentSetStatus.PROCESSED); oneit_sec_user_extensionPSet.setStatus (PersistentSetStatus.PROCESSED);
} }
......
...@@ -398,4 +398,20 @@ public class Job extends BaseJob ...@@ -398,4 +398,20 @@ public class Job extends BaseJob
return location.toString(); return location.toString();
} }
public Boolean isEmailFound()
{
if(getEmail()!=null)
{
SecUser user = SecUser.searchNAME(getTransaction(), getEmail());
if(user!=null && user.getExtension(Candidate.REFERENCE_Candidate)!=null)
{
return Boolean.TRUE;
}
}
return Boolean.FALSE;
}
} }
\ No newline at end of file
...@@ -12,6 +12,8 @@ ...@@ -12,6 +12,8 @@
<MULTIPLEREFERENCE name="CultureCriterias" type="CultureCriteria" backreferenceName="Job" /> <MULTIPLEREFERENCE name="CultureCriterias" type="CultureCriteria" backreferenceName="Job" />
<TRANSIENT name="Email" type="String" validators="Email" /> <TRANSIENT name="Email" type="String" validators="Email" />
<TRANSIENT name="Password" type="String"/>
<TRANSIENT name="ConfirmPassword" type="String"/>
<TRANSIENT name="CompletedDetails" type="Boolean" defaultValue="Boolean.FALSE"/> <TRANSIENT name="CompletedDetails" type="Boolean" defaultValue="Boolean.FALSE"/>
<TRANSIENT name="CompletedRequirements" type="Boolean" defaultValue="Boolean.FALSE"/> <TRANSIENT name="CompletedRequirements" type="Boolean" defaultValue="Boolean.FALSE"/>
<TRANSIENT name="CompletedCulture" type="Boolean" defaultValue="Boolean.FALSE"/> <TRANSIENT name="CompletedCulture" type="Boolean" defaultValue="Boolean.FALSE"/>
......
package performa.utils; package performa.utils;
import java.util.*; import java.util.*;
import javax.activation.DataSource;
import oneit.email.ConfigurableArticleTemplateEmailer;
import oneit.email.ConfigurableEmailerException;
import oneit.logging.LogLevel;
import oneit.logging.LogMgr;
import oneit.logging.LoggingArea;
import oneit.objstore.BaseBusinessClass;
import oneit.objstore.ObjectTransaction; import oneit.objstore.ObjectTransaction;
import oneit.objstore.rdbms.filters.GreaterThanEqualFilter; import oneit.objstore.rdbms.filters.GreaterThanEqualFilter;
import oneit.objstore.rdbms.filters.LessThanFilter; import oneit.objstore.rdbms.filters.LessThanFilter;
...@@ -13,6 +20,10 @@ import oneit.objstore.utils.*; ...@@ -13,6 +20,10 @@ import oneit.objstore.utils.*;
import oneit.utils.*; import oneit.utils.*;
import oneit.utils.filter.CollectionFilter; import oneit.utils.filter.CollectionFilter;
import oneit.utils.filter.Filter; import oneit.utils.filter.Filter;
import oneit.utils.transform.MapTransform;
import oneit.utils.transform.param.ErrorTransform;
import oneit.utils.transform.param.ORMTransform;
import oneit.utils.transform.param.PrefixCompoundTransform;
import performa.orm.types.AppSortOption; import performa.orm.types.AppSortOption;
/** /**
...@@ -168,4 +179,47 @@ public class Utils ...@@ -168,4 +179,47 @@ public class Utils
new ObjectTransform[]{transform}, new ObjectTransform[]{transform},
new Comparator[]{comparator}); new Comparator[]{comparator});
} }
public static ObjectTransform createCompoundTransform(Map defaultTransMap, BaseBusinessClass... bbcs)
{
PrefixCompoundTransform prefixTransform = new PrefixCompoundTransform();
if(defaultTransMap != null)
{
prefixTransform.setDefault(new MapTransform(defaultTransMap));
}
for(BaseBusinessClass bbc : bbcs)
{
if(bbc != null)
{
prefixTransform.add(bbc.getClass().getSimpleName(), new ORMTransform(bbc));
}
}
return new StringUtils.NullToBlankPostTransform(new ErrorTransform(prefixTransform, ""));
}
public static void sendMail(ConfigurableArticleTemplateEmailer emailer, ObjectTransform finalTransform, String[] emails, DataSource[] attachments, BaseBusinessClass bo) throws ConfigurableEmailerException
{
LogMgr.log(LoggingArea.ALL, LogLevel.PROCESSING1, "Sending Mail from Utils class to" + Arrays.toString(emails));
emailer.sendTransactionalEmail(bo.getTransaction(),
new Date(),
finalTransform,
emails,
null,
null,
null,
null,
null,
null,
attachments,
bo.getClass().getName(),
bo.getObjectID());
LogMgr.log(LoggingArea.ALL, LogLevel.PROCESSING1, "Mail sent from Utils class to " + Arrays.toString(emails));
}
} }
#atleastOneRequirement = Please add at least one Requirement. #atleastOneRequirement = Please add at least one Requirement.
#exceedMaxShortlisted = Selected number of applications exceed maximum shortlist application count #exceedMaxShortlisted = Selected number of applications exceed maximum shortlist application count
#saveTemplateFirst = Please save template first, before proceeding to the next step #saveTemplateFirst = Please save template first, before proceeding to the next step
\ No newline at end of file #passwordNotMatch = The password does not match. Please try again.
\ No newline at end of file
...@@ -8,6 +8,10 @@ ...@@ -8,6 +8,10 @@
<FORM name="*.saveAndExitExperienece" factory="Participant" class="performa.form.SaveAndExitExperienceFP"/> <FORM name="*.saveAndExitExperienece" factory="Participant" class="performa.form.SaveAndExitExperienceFP"/>
<FORM name="*.saveAndExitCulture" factory="Participant" class="performa.form.SaveAndExitCultureFP"/> <FORM name="*.saveAndExitCulture" factory="Participant" class="performa.form.SaveAndExitCultureFP"/>
<FORM name="*.saveAndExitWorkStyle" factory="Participant" class="performa.form.SaveAndExitWorkStypeFP"/> <FORM name="*.saveAndExitWorkStyle" factory="Participant" class="performa.form.SaveAndExitWorkStypeFP"/>
<FORM name="*.sendVerificationMail" factory="Participant" class="performa.form.SendVerificationMailFP">
<AccountVerificationEmailer factory="Participant" class="oneit.email.ConfigurableArticleTemplateEmailer" templateShortcut="AccountVerificationMail"/>
</FORM>
<FORM name="*.resetPassword" factory="Participant" class="performa.form.ResetPasswordFP"/>
</NODE> </NODE>
......
Job.Email = Email Address Job.Email = Email Address
Job.ConfirmPassword = Confirm Password
SecUser.FirstName = First Name SecUser.FirstName = First Name
SecUser.LastName = Last Name SecUser.LastName = Last Name
......
#completeCulture = Please complete the culture assessment. #completeCulture = Please complete the culture assessment.
#emailExists = An account already exists with this email address.
\ No newline at end of file
...@@ -6,19 +6,93 @@ ...@@ -6,19 +6,93 @@
<oneit:dynIncluded> <oneit:dynIncluded>
<% <%
ObjectTransaction objTran = process.getTransaction (); ObjectTransaction objTran = process.getTransaction ();
String currentPage = WebUtils.getSamePageInRenderMode(request, "SignIn");
String nextPage = WebUtils.getArticleLink(request, objTran, WebUtils.JOB_APPLICATION, "Page"); String nextPage = WebUtils.getArticleLink(request, objTran, WebUtils.JOB_APPLICATION, "Page");
String linkSent = (String) request.getParameter("VerificationLinkSent");
Job job = (Job) process.getAttribute("Job"); Job job = (Job) process.getAttribute("Job");
Candidate candidate = (Candidate) process.getAttribute("NewCandidate");
if(request.getParameter("JobID")!=null)
{
job = Job.getJobByID(transaction, Long.parseLong((String) request.getParameter("JobID")));
process.setAttribute("Job", job);
}
//to process candidate verification
String id = request.getParameter("id");
String key = request.getParameter("key");
String candidateId = request.getParameter("aid");
String pin = request.getParameter("pin");
if(id != null && key != null)
{
job = Job.searchJobKey(transaction, Long.parseLong(id), key);
}
if(candidateId!=null && pin!=null)
{
candidate = Candidate.searchIdPin(transaction, Long.parseLong(candidateId), pin);
if(candidate!=null && candidate.getIsAccountVerified()==Boolean.TRUE)
{
response.setStatus(404);
return;
}
}
process.setAttribute("Job", job);
process.setAttribute("NewCandidate", candidate);
Debug.assertion(job != null, "Job is null in applicant portal"); Debug.assertion(job != null, "Job is null in applicant portal");
%> %>
<script> <script type="text/javascript">
$(document.body).addClass('bg-color'); $(document.body).addClass('bg-color');
$(document).ready(function() {
recalcFunction = setupRecalc ($("form"), {'recalcOnError':true});
$('.send-link-btn').attr('disabled', 'disabled');
$('input[type="password"]').keyup(function() {
if($(this).val() != '') {
$('.sign-in-btn').removeAttr('disabled');
} else {
$('.sign-in-btn').attr('disabled', 'disabled');
}
});
// $('.reset-pw-btn').attr('disabled', 'disabled');
// $('.reset-pw').keyup(function() {
// if($(this).val() != '') {
// $('.reset-pw-btn').removeAttr('disabled');
// } else {
// $('.reset-pw-btn').attr('disabled', 'disabled');
// }
// });
});
</script> </script>
<style>
button[disabled] {
opacity: 0.6;
background-color: #0582ba;
}
</style>
<%
if(linkSent!=null)
{
request.setAttribute("VerificationLinkSent", null);
%>
<div class="alert alert-success verificationlinksent-info">
A verification email has been sent to you. Please check your email :)
</div>
<%
}
%>
<oneit:form name="applyJob" method="post" enctype="multipart/form-data"> <oneit:form name="applyJob" method="post" enctype="multipart/form-data">
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/> <oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="main-verify-identity"> <div class="main-verify-identity">
<div class="verify-aust-logo"><img src="images/australia-post.png"></div> <div class="verify-aust-logo"><img src="images/australia-post.png"></div>
<div class="pl-verify">Please verify your identity before applying to:</div> <div class="pl-verify">Please verify your identity before applying to:</div>
...@@ -26,25 +100,81 @@ ...@@ -26,25 +100,81 @@
<oneit:toString value="<%= job.getPageTitle() %>" mode="EscapeHTML"/> <oneit:toString value="<%= job.getPageTitle() %>" mode="EscapeHTML"/>
</div> </div>
<div class="main-box-layout verify-i-setpone"> <div class="main-box-layout verify-i-setpone">
<div class="box-label">Sign in using your social network of choice</div>
<ul class="social-login"> <%
<li><a href="#"><img src="images/login-linkedin-icon.svg"></a></li> if(candidate==null)
<li><a href="#"><img src="images/login-facebok-icon.svg"></a></li> {
<li><a href="#"><img src="images/login-google.png"></a></li> %>
</ul> <div class="box-label">Sign in using your social network of choice</div>
<div class="box-br-line"><span></span></div> <ul class="social-login">
<div class="box-label">Or sign in via email</div> <li><a href="#"><img src="images/login-linkedin-icon.svg"></a></li>
<div class="form-group text-left"> <li><a href="#"><img src="images/login-facebok-icon.svg"></a></li>
<label>Email Address</label> <li><a href="#"><img src="images/login-google.png"></a></li>
<oneit:ormInput obj="<%= job %>" type="text" attributeName="Email" cssClass="form-control second-style" /> </ul>
</div> <div class="box-br-line"><span></span></div>
<div class="form-group"> <div class="box-label">Or sign in via email</div>
<oneit:button value="Verify and proceed" name="signIn" cssClass="box-btn" <div class="form-group text-left">
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage) <label>Email Address</label>
.mapEntry("Job",job) <oneit:ormInput obj="<%= job %>" type="text" attributeName="Email" cssClass="form-control second-style" />
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap()) </div>
.toMap() %>"/>
</div> <oneit:recalcClass htmlTag="div" classScript="job.isEmailFound() ? 'show': 'hide'" job="<%= job %>">
<div class="form-group text-left">
<label>Password</label>
<oneit:ormInput obj="<%= job %>" type="password" attributeName="Password" cssClass="form-control second-style" />
</div>
<div class="form-group">
<oneit:button value="Sign In" name="signIn" cssClass="box-btn sign-in-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("Job",job)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
.toMap() %>"/>
</div>
</oneit:recalcClass>
<oneit:recalcClass htmlTag="div" classScript="job.getEmail()==null || job.isEmailFound() ? 'hide': 'show'" job="<%= job %>">
<div class="form-group">
<oneit:button value="Send link" name="sendVerificationMail" cssClass="box-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", currentPage)
.mapEntry("Job",job)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
.mapEntry("restartProcess", Boolean.TRUE)
.mapEntry("attribNamesToRestore", "Job")
.mapEntry("attribNamesToRestore", Collections.singleton("Job"))
.toMap() %>"/>
</div>
</oneit:recalcClass>
<%
}
else
{
SecUser secUser = candidate.getUser();
job.setEmail(secUser.getUserName());
%>
<div class="form-group text-left">
<label>Email Address</label>
<oneit:ormInput obj="<%= job %>" type="text" attributeName="Email" cssClass="form-control second-style" disabled="true" readonly="true"/>
</div>
<div class="form-group text-left">
<label>Password</label>
<oneit:ormInput obj="<%= job %>" type="password" attributeName="Password" cssClass="form-control second-style reset-pw"/>
</div>
<div class="form-group text-left">
<label>Confirm password</label>
<oneit:ormInput obj="<%= job %>" type="password" attributeName="ConfirmPassword" cssClass="form-control second-style reset-pw"/>
</div>
<div class="form-group">
<oneit:button value="Sign In" name="resetPassword" cssClass="box-btn reset-pw-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("Job",job)
.mapEntry("NewCandidate",candidate)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
.toMap() %>"/>
</div>
<%
}
%>
</div> </div>
</div> </div>
</oneit:form> </oneit:form>
......
<?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">oneit_sec_user_extension</tableName>
<column name="verification_mail_send_date" type="Date" nullable="true"/>
<column name="verification_key" type="String" nullable="true" length="10"/>
<column name="is_account_verified" type="Boolean" nullable="true"/>
</NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<OBJECTS xmlns:oneit="http://www.1iT.com.au" name="">
<NODE factory="Vector" name="Script"><NODE class="oneit.appservices.upgrade.cms.CMSArticleUpdateOperation" factory="Participant" name="Account Verification Mail">
<createSpecificIdentifier factory='String' value='I90Q26LQURCWXZZFP21EWM3EHUGXTJ'/>
<articleIdentifiers factory="Array" class="java.lang.String">
<NODE factory="String" value="I90Q26LQURCWXZZFP21EWM3EHUGXTJ"/>
</articleIdentifiers>
<createdLabel factory="String" value="I90Q26LQURCWXZZFP21EWM3EHUGXTJ"/>
<newParentCategory factory="String" value="RESOURCE_LIBRARY"/>
<articleAttributeChanges factory="Map">
<NODE name="EmailTo" factory="Null"/>
<NODE name="EmailFrom" factory="String" value="info@talentology.com.au"/>
<NODE name="EmailSubject" factory="String" value="Verify your email"/>
<NODE name="Shortcuts" factory="String" value="AccountVerificationMail"/>
<NODE name="EmailCC" factory="Null"/>
<NODE name="EmailBCC" factory="Null"/>
</articleAttributeChanges>
<ormAttributeChanges factory="Map">
<NODE name="PublishDate" factory="Date" value="2016-02-05 00:00:00"/>
<NODE name="WithdrawDate" factory="Date" value="2066-02-05 16:00:00"/>
<NODE name="Title" factory="String" value="Account Verification Mail"/>
<NODE name="ShortTitle" factory="String" value="Reset Code Email"/>
<NODE name="SortOrder" factory="Integer" value="-200926"/>
<NODE name="Type" factory="Enumerated" class="oneit.business.content.ArticleType" value="ARTICLE"/>
<NODE name="Template" factory="Enumerated" class="oneit.business.content.ArticleTemplate" value="EMAIL_TEMPLATE"/>
</ormAttributeChanges>
<content factory="Map"> <NODE name="EmailBody" factory="Map">
<NODE name="Content" factory="String"><![CDATA[<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="HTML Tidy, see www.w3.org" name="generator">
<title></title>
</head>
<body>
<p>Hello,</p>
<p>Welcome to Talantology! Your account has been created.</p>
<p>To verify this account please <a href="${link}">click here</a>. After verifying your account, you can apply for jobs.</p>
<p>Thank You.</p>
</body>
</html>
]]></NODE>
<NODE name="TransformedContent" factory="String"><![CDATA[<p>Hello,</p><p>Welcome to Talantology! Your account has been created.</p><p>To verify this account please <a href="${link}">click here</a>. After verifying your account, you can apply for job.</p><p>Thank You.</p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
</content>
</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