📄 tickethandler.java
字号:
MetaData metadata = context.getMetaData();
FamgMeta formMeta = metadata.getFamgMeta(formIndex);
FieldMeta fieldMeta = formMeta.getForm().getEntityMeta().getField(fromLinkFieldId);
FamgMeta.Index toFormIndex = fieldMeta.getLinkedForm();
String linkedForm = metadata.getFormID(toFormIndex);
int state = formContext.getFormState(formIndex);
switch (state){
case FormState.SELECTED_STATE:
ArrayList linkFilter = new ArrayList();
if (linkedForm.equalsIgnoreCase(interFormId)){ // the link for ticket form is pressed
linkFilter.add(
new EntityData(INTER_TICKET_ENTITY, new Long(-1),
new FieldData[] {
new TextboxFieldData( INTER_TICKET_FILTER_FIELD,
formContext.getSelectedRecordId(formIndex).toString()
)
}));
interHandler.setExternalEntityFilters(linkFilter);
} else if (linkedForm.equalsIgnoreCase(attachTicketFormId)) {
linkFilter.add(
new EntityData(ATTACHMENT_OBJECTS_ENTITY, new Long(-1),
new FieldData[] {
new TextboxFieldData( OBJECT_ID,
formContext.getSelectedRecordId(formIndex).toString()
)
}));
attachHandler.setExternalEntityFilters(linkFilter);
} else if (linkedForm.equalsIgnoreCase(eventFormId)) {
EntityReferenceData erd = new EntityReferenceData(TICKETEVENT_FILTER_FIELD);
erd.setSelectedRowID(formContext.getSelectedRecordId(formIndex));
//formContext.setFieldData(erd, toFormIndex);
linkFilter.add(
new EntityData(TICKETEVENT_ENTITY, new Long(-1),
new FieldData[] { erd } ));
eventHandler.setExternalEntityFilters(linkFilter);
}
else
break;
//clear form
context.getGridOperations().activateGrid(toFormIndex);
context.getFormOperations().activateForm(toFormIndex);
formContext.clearForm(toFormIndex, true);
//perform search
getOperationContext().performOperation(OperationTypes.SEARCH_RECORDS, toFormIndex);
return;
}
//surfe to form
super.handleLinkEvent(fromLinkFieldId);
}
protected void createSolutionFromNewState(FamgMeta.Index formIndex){
FormOperations context = getOperationContext().getFormOperations();
FieldData ticketStatus = context.getFieldData(formIndex, STATUS);
boolean wrongStatus = false;
if(!ticketStatus.isEmpty()) {
long selId = ((ListboxFieldData) ticketStatus).getItemsSelected()
.getSelectedIDs()[0];
switch((int) selId) {
case TicketHelper.RELEASE_CANDIDATE_STATUS:
case TicketHelper.DELIVERED_STATUS:
case TicketHelper.CLOSED_STATUS:
break;
default:
wrongStatus = true;
}
} else {
wrongStatus = true;
}
if(wrongStatus){
DialogHelper.showModalMessageDialog("This button is available only if ticket status is release candidate, delivered or closed.");
return;
}
FieldData ticketId = context.getFieldData(formIndex,
TICKET_ID_FIELD_NAME);
FieldData ticketProduct = context.getFieldData(formIndex,
PRODUCT_ID_FIELD_NAME);
FieldData ticketComponent = context.getFieldData(formIndex,
COMPONENT_ID_FIELD_NAME);
FieldData ticketSubject = context.getFieldData(formIndex,
SUBJECT_FIELD_NAME);
FieldData ticketDesc = context.getFieldData(formIndex,
DESCRIPTION_FIELD_NAME);
FieldData ticketDescText = context.getFieldData(formIndex,
DESCRIPTION_TEXT_FIELD_NAME);
FieldData ticketResp = context.getFieldData(formIndex,
RESPONSE_FIELD_NAME);
FieldData ticketRespText = context.getFieldData(formIndex,
RESPONSE_TEXT_FIELD_NAME);
FieldData clonedTicketId = ticketId.cloneData();
clonedTicketId.setFieldID(SOLUTION_CUR_TICKET_ID_FIELD);
FieldData clonedProduct = null;
FieldData clonedComponent = null;
FieldData clonedSubject = null;
FieldData clonedDesc = null;
FieldData clonedDescText = null;
FieldData clonedResp = null;
FieldData clonedRespText = null;
if(!ticketProduct.isEmpty()){
clonedProduct = ticketProduct.cloneData();
clonedProduct.setFieldID(SOLUTION_PRODUCT_FIELD);
}
if(!ticketComponent.isEmpty()){
clonedComponent = ticketComponent.cloneData();
clonedComponent.setFieldID(SOLUTION_COMPONENT_FIELD);
}
if(!ticketSubject.isEmpty()){
clonedSubject = ticketSubject.cloneData();
clonedSubject.setFieldID(SOLUTION_SUMMARY_FIELD);
}
if(!ticketDesc.isEmpty()){
clonedDesc = ticketDesc.cloneData();
clonedDesc.setFieldID(SOLUTION_PROBLEM_FIELD);
}
if(!ticketDescText.isEmpty()){
clonedDescText = ticketDescText.cloneData();
clonedDescText.setFieldID(SOLUTION_PROBLEM_TEXT_FIELD);
}
if(!ticketResp.isEmpty()){
clonedResp = ticketResp.cloneData();
clonedResp.setFieldID(SOLUTION_SOL_FIELD);
}
if(!ticketRespText.isEmpty()){
clonedRespText = ticketRespText.cloneData();
clonedRespText.setFieldID(SOLUTION_SOL_TEXT_FIELD);
}
FieldData[] initData = new FieldData[8];
initData[0] = clonedTicketId;
initData[1] = clonedProduct;
initData[2] = clonedComponent;
initData[3] = clonedSubject;
initData[4] = clonedDesc;
initData[5] = clonedDescText;
initData[6] = clonedResp;
initData[7] = clonedRespText;
initializeHandler(initData);
}
public static boolean compareFieldData(ListboxFieldData data1, ListboxFieldData data2) {
if(data1 == null && data2 != null) {
return true;
}
if(data1 != null && data2 == null) {
return true;
}
long[] ids1 = data1.getItemsSelected().getSelectedIDs();
long[] ids2 = data2.getItemsSelected().getSelectedIDs();
if(ids1.length != ids2.length) {
return true;
} else {
for(int i = 0; i < ids1.length; i++) {
if(ids1[i] != ids2[i]) {
return true;
}
}
}
return false;
}
protected void initializeHandler(FieldData[] initData){
solutionHandler.setInitialFieldsData(initData);
OperationsHelper.createNewRecord(solutionFormId, getOperationContext());
}
public void setSolutionHandler(SolutionHandler solutionHandler) {
this.solutionHandler = solutionHandler;
}
public void setAttachHandler(AttachmentTicketHandler attachHandler) {
this.attachHandler = attachHandler;
}
public void setInterHandler(InteractionHandler interHandler) {
this.interHandler = interHandler;
}
public void setInterFormId(String interFormId) {
this.interFormId = interFormId;
}
public void setTicketEventHandler(TicketEventHandler eventHandler) {
this.eventHandler = eventHandler;
}
public void setTicketEventFormId(String eventFormId) {
this.eventFormId = eventFormId;
}
public void setAttachTicketFormId(String attachTicketFormId) {
this.attachTicketFormId = attachTicketFormId;
}
public void setSolutionFormId(String solutionFormId) {
this.solutionFormId = solutionFormId;
}
private class FromAndToEmailAsyncCallback extends RPC.QAsyncCallback {
int objectType;
long objectId;
String oldMessage;
String oldSubject;
public FromAndToEmailAsyncCallback(int objType, long objId, String subject, String text) {
objectType = objType;
objectId = objId;
oldSubject = subject;
oldMessage = text;
}
public void onRequestEnded(boolean success, Object result) {
if(success) {
boolean isOk = true;
String fromAdr = "";
String toAdr = "";
if(result == null) {
isOk = false;
} else if(!(result instanceof String[])) {
isOk = false;
} else {
String[] retEmails = (String[]) result;
if(retEmails.length != 2) {
isOk = false;
} else {
fromAdr = retEmails[0];
toAdr = retEmails[1];
if(StringUtil.isStringEmpty(fromAdr) || StringUtil
.isStringEmpty(toAdr))
isOk = false;
}
}
if(!isOk) {
DialogHelper.showModalMessageDialog(
"Can't get email adresses. Reply can't be sent.");
return;
}
String newBody = "\n----------------------------------------" +
"\nFrom: " + toAdr +
"\nSubject: " + oldSubject +
"\nDescription:\n" + oldMessage;
replyInitVals.put(EmailComposeHelper.FROM_MAP_FIELD, fromAdr);
replyInitVals.put(EmailComposeHelper.TO_MAP_FIELD, toAdr);
replyInitVals.put(EmailComposeHelper.BODY_MAP_FIELD, newBody);
if(replyDialog == null) {
replyDialog = new ReplyComposeDialog("Send Email Form");
}
replyDialog.setInitialDataMap(replyInitVals);
replyDialog.setObjectType(objectType);
replyDialog.setObjectId(objectId);
replyDialog.show(true);
} else {
DialogHelper.showModalMessageDialog(
"RPC call failed. Reply can't be sent.");
}
}
}
private class CreateLinkAsyncCallback extends RPC.QAsyncCallback {
public CreateLinkAsyncCallback() {
}
public void onRequestEnded(boolean success, Object result) {
if(success) {
Boolean rv = (Boolean) result;
if(rv != null) {
if(rv == Boolean.FALSE) {
DialogHelper.showModalMessageDialog(
"The link already exists.");
} else {
DialogHelper.showModalMessageDialog(
"The link is created.");
}
}
} else {
DialogHelper.showModalMessageDialog("RPC call failed.");
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -