Commit bde271d9 by Chamath

SaveMessageAsCopy service and SaveWorkflowAsCopy service added.

parent b64f7aeb
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
<column name="variance" type="Long" nullable="true"/> <column name="variance" type="Long" nullable="true"/>
<column name="business_hours_only" type="Boolean" nullable="true"/> <column name="business_hours_only" type="Boolean" nullable="true"/>
<column name="message_content" type="CLOB" nullable="false"/> <column name="message_content" type="CLOB" nullable="false"/>
<column name="template_type" type="String" nullable="true" length="200"/> <column name="template_type" type="String" nullable="false" length="200"/>
<column name="is_global_template" type="Boolean" nullable="true"/> <column name="is_global_template" type="Boolean" nullable="true"/>
<column name="is_system_generated" type="Boolean" nullable="true"/> <column name="is_system_generated" type="Boolean" nullable="true"/>
<column name="hiring_team_id" type="Long" length="11" nullable="true"/> <column name="hiring_team_id" type="Long" length="11" nullable="true"/>
......
...@@ -17,7 +17,7 @@ CREATE TABLE tl_message_template ( ...@@ -17,7 +17,7 @@ CREATE TABLE tl_message_template (
variance numeric(12) NULL, variance numeric(12) NULL,
business_hours_only char(1) NULL, business_hours_only char(1) NULL,
message_content text NOT NULL, message_content text NOT NULL,
template_type varchar(200) NULL, template_type varchar(200) NOT NULL,
is_global_template char(1) NULL, is_global_template char(1) NULL,
is_system_generated char(1) NULL, is_system_generated char(1) NULL,
hiring_team_id numeric(12) NULL hiring_team_id numeric(12) NULL
......
...@@ -18,7 +18,7 @@ CREATE TABLE tl_message_template ( ...@@ -18,7 +18,7 @@ CREATE TABLE tl_message_template (
variance number(12) NULL, variance number(12) NULL,
business_hours_only char(1) NULL, business_hours_only char(1) NULL,
message_content clob NOT NULL, message_content clob NOT NULL,
template_type varchar2(200) NULL, template_type varchar2(200) NOT NULL,
is_global_template char(1) NULL, is_global_template char(1) NULL,
is_system_generated char(1) NULL, is_system_generated char(1) NULL,
hiring_team_id number(12) NULL hiring_team_id number(12) NULL
......
...@@ -18,7 +18,7 @@ CREATE TABLE tl_message_template ( ...@@ -18,7 +18,7 @@ CREATE TABLE tl_message_template (
variance numeric(12) NULL, variance numeric(12) NULL,
business_hours_only char(1) NULL, business_hours_only char(1) NULL,
message_content text NOT NULL, message_content text NOT NULL,
template_type varchar(200) NULL, template_type varchar(200) NOT NULL,
is_global_template char(1) NULL, is_global_template char(1) NULL,
is_system_generated char(1) NULL, is_system_generated char(1) NULL,
hiring_team_id numeric(12) NULL hiring_team_id numeric(12) NULL
......
...@@ -376,7 +376,8 @@ public abstract class BaseMessageTemplate extends BaseBusinessClass ...@@ -376,7 +376,8 @@ public abstract class BaseMessageTemplate extends BaseBusinessClass
metaInfo.put ("attribHelper", "EnumeratedAttributeHelper"); metaInfo.put ("attribHelper", "EnumeratedAttributeHelper");
metaInfo.put ("dbcol", "template_type"); metaInfo.put ("dbcol", "template_type");
metaInfo.put ("mandatory", "false"); metaInfo.put ("defaultValue", "TemplateType.EMAIL");
metaInfo.put ("mandatory", "true");
metaInfo.put ("name", "TemplateType"); metaInfo.put ("name", "TemplateType");
metaInfo.put ("type", "TemplateType"); metaInfo.put ("type", "TemplateType");
metaInfo.put (METADATA_DB_TABLENAME, "tl_message_template"); metaInfo.put (METADATA_DB_TABLENAME, "tl_message_template");
...@@ -458,7 +459,7 @@ public abstract class BaseMessageTemplate extends BaseBusinessClass ...@@ -458,7 +459,7 @@ public abstract class BaseMessageTemplate extends BaseBusinessClass
_Variance = (Integer)(0); _Variance = (Integer)(0);
_BusinessHoursOnly = (Boolean)(Boolean.FALSE); _BusinessHoursOnly = (Boolean)(Boolean.FALSE);
_MessageContent = (String)(HELPER_MessageContent.initialise (_MessageContent)); _MessageContent = (String)(HELPER_MessageContent.initialise (_MessageContent));
_TemplateType = (TemplateType)(HELPER_TemplateType.initialise (_TemplateType)); _TemplateType = (TemplateType)(TemplateType.EMAIL);
_IsGlobalTemplate = (Boolean)(HELPER_IsGlobalTemplate.initialise (_IsGlobalTemplate)); _IsGlobalTemplate = (Boolean)(HELPER_IsGlobalTemplate.initialise (_IsGlobalTemplate));
_IsSystemGenerated = (Boolean)(Boolean.FALSE); _IsSystemGenerated = (Boolean)(Boolean.FALSE);
} }
...@@ -1449,6 +1450,7 @@ public abstract class BaseMessageTemplate extends BaseBusinessClass ...@@ -1449,6 +1450,7 @@ public abstract class BaseMessageTemplate extends BaseBusinessClass
oldAndNewIdentical = HELPER_TemplateType.compare (_TemplateType, newTemplateType); oldAndNewIdentical = HELPER_TemplateType.compare (_TemplateType, newTemplateType);
} }
BusinessObjectParser.assertFieldCondition (newTemplateType != null, this, FIELD_TemplateType, "mandatory");
if (FIELD_TemplateType_Validators.length > 0) if (FIELD_TemplateType_Validators.length > 0)
...@@ -3022,7 +3024,7 @@ public abstract class BaseMessageTemplate extends BaseBusinessClass ...@@ -3022,7 +3024,7 @@ public abstract class BaseMessageTemplate extends BaseBusinessClass
result.add(HELPER_Variance.getAttribObject (getClass (), _Variance, false, FIELD_Variance)); result.add(HELPER_Variance.getAttribObject (getClass (), _Variance, false, FIELD_Variance));
result.add(HELPER_BusinessHoursOnly.getAttribObject (getClass (), _BusinessHoursOnly, false, FIELD_BusinessHoursOnly)); result.add(HELPER_BusinessHoursOnly.getAttribObject (getClass (), _BusinessHoursOnly, false, FIELD_BusinessHoursOnly));
result.add(HELPER_MessageContent.getAttribObject (getClass (), _MessageContent, true, FIELD_MessageContent)); result.add(HELPER_MessageContent.getAttribObject (getClass (), _MessageContent, true, FIELD_MessageContent));
result.add(HELPER_TemplateType.getAttribObject (getClass (), _TemplateType, false, FIELD_TemplateType)); result.add(HELPER_TemplateType.getAttribObject (getClass (), _TemplateType, true, FIELD_TemplateType));
result.add(HELPER_IsGlobalTemplate.getAttribObject (getClass (), _IsGlobalTemplate, false, FIELD_IsGlobalTemplate)); result.add(HELPER_IsGlobalTemplate.getAttribObject (getClass (), _IsGlobalTemplate, false, FIELD_IsGlobalTemplate));
result.add(HELPER_IsSystemGenerated.getAttribObject (getClass (), _IsSystemGenerated, false, FIELD_IsSystemGenerated)); result.add(HELPER_IsSystemGenerated.getAttribObject (getClass (), _IsSystemGenerated, false, FIELD_IsSystemGenerated));
......
package performa.orm; package performa.orm;
import java.util.Set;
import oneit.objstore.BaseBusinessClass;
import oneit.objstore.cloning.BusinessCopyHelper;
import oneit.objstore.cloning.StandardAssocCopyingRule;
import oneit.security.SecUser;
public class MessageTemplate extends BaseMessageTemplate public class MessageTemplate extends BaseMessageTemplate
{ {
...@@ -33,4 +39,26 @@ public class MessageTemplate extends BaseMessageTemplate ...@@ -33,4 +39,26 @@ public class MessageTemplate extends BaseMessageTemplate
{ {
return super.getDelayMin() != null ? super.getDelayMin(): 0; return super.getDelayMin() != null ? super.getDelayMin(): 0;
} }
private StandardAssocCopyingRule getCloneForCopy()
{
return new StandardAssocCopyingRule()
{
@Override
protected Boolean shouldClone (BaseBusinessClass from,String assocName,BaseBusinessClass to)
{
if (to instanceof MessageTemplate)
{
return Boolean.TRUE;
}
return null;
}
};
}
public MessageTemplate getClonedTemplate()
{
return (MessageTemplate) BusinessCopyHelper.copyRootBusinessObject (this, null, getCloneForCopy());
}
} }
\ No newline at end of file
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<ATTRIB name="Variance" type="Integer" dbcol="variance" mandatory="false" defaultValue="0" /> <ATTRIB name="Variance" type="Integer" dbcol="variance" mandatory="false" defaultValue="0" />
<ATTRIB name="BusinessHoursOnly" type="Boolean" dbcol="business_hours_only" mandatory="false" defaultValue="Boolean.FALSE"/> <ATTRIB name="BusinessHoursOnly" type="Boolean" dbcol="business_hours_only" mandatory="false" defaultValue="Boolean.FALSE"/>
<ATTRIB name="MessageContent" type="String" dbcol="message_content" mandatory="true" /> <ATTRIB name="MessageContent" type="String" dbcol="message_content" mandatory="true" />
<ATTRIB name="TemplateType" type="TemplateType" dbcol="template_type" attribHelper="EnumeratedAttributeHelper" mandatory="false"/> <ATTRIB name="TemplateType" type="TemplateType" dbcol="template_type" attribHelper="EnumeratedAttributeHelper" mandatory="true" defaultValue="TemplateType.EMAIL"/>
<ATTRIB name="IsGlobalTemplate" type="Boolean" dbcol="is_global_template" mandatory="false"/> <ATTRIB name="IsGlobalTemplate" type="Boolean" dbcol="is_global_template" mandatory="false"/>
<ATTRIB name="IsSystemGenerated" type="Boolean" dbcol="is_system_generated" mandatory="false" defaultValue="Boolean.FALSE"/> <ATTRIB name="IsSystemGenerated" type="Boolean" dbcol="is_system_generated" mandatory="false" defaultValue="Boolean.FALSE"/>
......
package performa.orm; package performa.orm;
import java.io.*;
import java.util.*;
import oneit.appservices.config.*;
import oneit.logging.*;
import oneit.objstore.*; import oneit.objstore.*;
import oneit.utils.*; import oneit.objstore.cloning.*;
import performa.orm.types.*;
public class WorkFlowTemplate extends BaseWorkFlowTemplate public class WorkFlowTemplate extends BaseWorkFlowTemplate
...@@ -24,6 +13,31 @@ public class WorkFlowTemplate extends BaseWorkFlowTemplate ...@@ -24,6 +13,31 @@ public class WorkFlowTemplate extends BaseWorkFlowTemplate
{ {
// Do not add any code to this, always put it in initialiseNewObject // Do not add any code to this, always put it in initialiseNewObject
} }
}
private StandardAssocCopyingRule getCloneForCopy()
{
return new StandardAssocCopyingRule()
{
@Override
protected Boolean shouldClone (BaseBusinessClass from,String assocName,BaseBusinessClass to)
{
if (to instanceof WorkFlowMessage || to instanceof WorkFlowTemplate)
{
return Boolean.TRUE;
}
if (WorkFlowTemplate.MULTIPLEREFERENCE_WorkFlowStages.contentEquals(assocName))
{
return Boolean.TRUE;
}
return null;
}
};
}
public WorkFlowTemplate getClonedTemplate()
{
return (WorkFlowTemplate) BusinessCopyHelper.copyRootBusinessObject (this, null, getCloneForCopy());
}
}
\ No newline at end of file
package performa.ws;
import java.util.*;
import oneit.appservices.ws.*;
import oneit.appservices.ws.services.ORMUpdateJSONService;
import oneit.objstore.*;
import oneit.security.SecUser;
import oneit.utils.*;
import oneit.utils.parsers.FieldException;
import performa.orm.*;
/**
*
* @author chamathkalhara
*/
public class SaveMessageAsCopy extends ORMUpdateJSONService
{
@Override
public void processForm(JSONServiceRequest request, ObjectTransaction objTran, org.json.JSONObject result, MultiException exceptions,
Set<BaseBusinessClass> createdBBCs, Set<BaseBusinessClass> updatedBBCs) throws BusinessException, org.json.JSONException, FieldException
{
List<MessageTemplate> createdMessageTemplates = WSUtils.filterBBCs(MessageTemplate.REFERENCE_MessageTemplate, createdBBCs);
List<MessageTemplate> updatedMessageTemplates = WSUtils.filterBBCs(MessageTemplate.REFERENCE_MessageTemplate, updatedBBCs);
List<MessageTemplate> allMessageTemplates = new ArrayList(createdMessageTemplates);
allMessageTemplates.addAll(updatedMessageTemplates);
for (MessageTemplate messageTemplate : allMessageTemplates)
{
MessageTemplate cloanedTemplate = revertAttributesAndClone(messageTemplate);
cloanedTemplate.setIsGlobalTemplate(Boolean.FALSE);
SecUser secUser = SecUser.getTXUser(objTran);
if(secUser != null && secUser.getExtension(CompanyUser.REFERENCE_CompanyUser) != null)
{
CompanyUser companyUser = secUser.getExtension(CompanyUser.REFERENCE_CompanyUser);
cloanedTemplate.setHiringTeam(companyUser.getSelectedTeam());
}
}
super.processForm(request, objTran, result, exceptions, createdBBCs, updatedBBCs); //To change body of generated methods, choose Tools | Templates.
}
private MessageTemplate revertAttributesAndClone(MessageTemplate messageTemplate)
{
BaseBusinessClass[] involvedObjs = messageTemplate.getTransaction().getObjectsToStore();
MessageTemplate clonedTemplate = messageTemplate.getClonedTemplate();
// Now we copy back the changed objects before cloning
for (int i = 0; i < involvedObjs.length; i++)
{
if (involvedObjs[i].getStatus() == ObjectStatus.INVALID || involvedObjs[i].getStatus() == ObjectStatus.CLEAN)
{
// Do nothing
}
else if (involvedObjs[i].getStatus() == ObjectStatus.NEW)
{
involvedObjs[i].delete();
}
else
{
involvedObjs[i].rollback();
}
}
return clonedTemplate;
}
}
\ No newline at end of file
package performa.ws;
import java.util.*;
import oneit.appservices.ws.*;
import oneit.appservices.ws.services.ORMUpdateJSONService;
import oneit.objstore.*;
import oneit.security.SecUser;
import oneit.utils.*;
import org.json.*;
import performa.orm.*;
/**
*
* @author chamathkalhara
*/
public class SaveWorkflowAsCopy extends ORMUpdateJSONService
{
@Override
public void processForm(JSONServiceRequest request, ObjectTransaction objTran, JSONObject result, MultiException exceptions,
Set<BaseBusinessClass> createdBBCs, Set<BaseBusinessClass> updatedBBCs) throws BusinessException, JSONException
{
List<WorkFlowTemplate> createdWorkFlowTemplates = WSUtils.filterBBCs(WorkFlowTemplate.REFERENCE_WorkFlowTemplate, createdBBCs);
List<WorkFlowTemplate> updatedWorkFlowTemplates = WSUtils.filterBBCs(WorkFlowTemplate.REFERENCE_WorkFlowTemplate, updatedBBCs);
List<WorkFlowTemplate> allWorkFlowTemplates = new ArrayList(createdWorkFlowTemplates);
allWorkFlowTemplates.addAll(updatedWorkFlowTemplates);
for (WorkFlowTemplate workFlowTemplate : allWorkFlowTemplates)
{
WorkFlowTemplate cloanedTemplate = revertAttributesAndClone(workFlowTemplate);
cloanedTemplate.setIsGlobalTemplate(Boolean.FALSE);
SecUser secUser = SecUser.getTXUser(objTran);
if(secUser != null && secUser.getExtension(CompanyUser.REFERENCE_CompanyUser) != null)
{
CompanyUser companyUser = secUser.getExtension(CompanyUser.REFERENCE_CompanyUser);
cloanedTemplate.setHiringTeam(companyUser.getSelectedTeam());
}
}
super.processForm(request, objTran, result, exceptions, createdBBCs, updatedBBCs); //To change body of generated methods, choose Tools | Templates.
}
private WorkFlowTemplate revertAttributesAndClone(WorkFlowTemplate workflowTemplate)
{
BaseBusinessClass[] involvedObjs = workflowTemplate.getTransaction().getObjectsToStore();
WorkFlowTemplate clonedTemplate = workflowTemplate.getClonedTemplate();
// Now we copy back the changed objects before cloning
for (int i = 0; i < involvedObjs.length; i++)
{
if (involvedObjs[i].getStatus() == ObjectStatus.INVALID || involvedObjs[i].getStatus() == ObjectStatus.CLEAN)
{
// Do nothing
}
else if (involvedObjs[i].getStatus() == ObjectStatus.NEW)
{
involvedObjs[i].delete();
}
else
{
involvedObjs[i].rollback();
}
}
return clonedTemplate;
}
}
\ No newline at end of file
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
<NODE name="SaveWebService::Performa"> <NODE name="SaveWebService::Performa">
<Privilege name="performa.orm.MessageTemplate" factory="String" value="*"/> <Privilege name="performa.orm.MessageTemplate" factory="String" value="*"/>
<Privilege name="performa.orm.WorkFlowTemplate" factory="String" value="*"/>
</NODE> </NODE>
<NODE name="JSONServices::Performa"> <NODE name="JSONServices::Performa">
...@@ -75,6 +76,14 @@ ...@@ -75,6 +76,14 @@
<QueryType factory="String" name="All" value="performa.search.SearchMessageTemplate"/> <QueryType factory="String" name="All" value="performa.search.SearchMessageTemplate"/>
</NODE> </NODE>
<NODE name="SaveMessageAsCopy" factory="Participant" class="performa.ws.SaveMessageAsCopy" privilege="*">
<INHERITS nodename="SaveWebService::.*" mandatory="false"/>
</NODE>
<NODE name="SaveWorkflowAsCopy" factory="Participant" class="performa.ws.SaveWorkflowAsCopy" privilege="*">
<INHERITS nodename="SaveWebService::.*" mandatory="false"/>
</NODE>
<!-- Enum services --> <!-- Enum services -->
<NODE name="ResponseAction" factory="Participant" class="oneit.appservices.ws.services.EnumJSONService" enumClass="performa.orm.types.ResponseAction" privilege="*"/> <NODE name="ResponseAction" factory="Participant" class="oneit.appservices.ws.services.EnumJSONService" enumClass="performa.orm.types.ResponseAction" privilege="*"/>
<NODE name="StageType" factory="Participant" class="oneit.appservices.ws.services.EnumJSONService" enumClass="performa.orm.types.StageType" privilege="*"/> <NODE name="StageType" factory="Participant" class="oneit.appservices.ws.services.EnumJSONService" enumClass="performa.orm.types.StageType" privilege="*"/>
......
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