/** * Process this internal message. * @param internalMessage The message to process. * @return (optional) The return message if applicable. */ public BaseMessage processMessage(BaseMessage internalMessage) { TrxMessageHeader messageHeader = (TrxMessageHeader)internalMessage.getMessageHeader(); //if (messageHeader.get(TrxMessageHeader.MESSAGE_CODE) == null) // messageHeader.put(TrxMessageHeader.MESSAGE_CODE, HotelRateRequestMessageOutProcessor.MESSAGE_CODE); // External operation name //if (messageHeader.get(TrxMessageHeader.MESSAGE_RESPONSE_CODE) == null) // For email transport, need to know who processes the returned message // messageHeader.put(TrxMessageHeader.MESSAGE_RESPONSE_CODE, com.tourgeek.tour.product.hotel.message.in.HotelRateResponseSOAPMsgReplyOut.MESSAGE_CODE); // External operation name return null; // No return from a message out }
/** * From this external message, figure out the message type. * @externalMessage The external message just received. * @return The message type for this kind of message (transport specific). */ public String getMessageCode(BaseMessage externalTrxMessage) { if (externalTrxMessage.getMessageHeader() == null) return null; return (String)externalTrxMessage.getMessageHeader().get(TrxMessageHeader.MESSAGE_CODE); } /**
/** * From this external message, figure out the message type. * @externalMessage The external message just received. * @return The message type for this kind of message (transport specific). */ public String getMessageVersion(BaseMessage externalTrxMessage) { if (externalTrxMessage.getMessageHeader() == null) return null; return (String)externalTrxMessage.getMessageHeader().get(MessageVersion.VERSION); } /**
/** * Is this message a reply (or a request). * @param externalMessage The incomming message. * @return MessageType.MESSAGE_IN or MessageType.REPLY_IN If this is a reply. */ public String getMessageProcessType(BaseMessage externalMessage) { if (externalMessage.getMessageHeader() != null) if (externalMessage.getMessageHeader().get(TrxMessageHeader.MESSAGE_PROCESS_TYPE) != null) return (String)externalMessage.getMessageHeader().get(TrxMessageHeader.MESSAGE_PROCESS_TYPE); return MessageType.MESSAGE_IN; // Override this to check for sure. } /**
/** * Is this message a reply (or a request). * @param externalMessage The incomming message. * @return MessageType.MESSAGE_IN or MessageType.REPLY_IN If this is a reply. */ public String getMessageInfoType(BaseMessage externalMessage) { if (externalMessage != null) if (externalMessage.getMessageHeader() != null) if (externalMessage.getMessageHeader().get(TrxMessageHeader.MESSAGE_INFO_TYPE) != null) return (String)externalMessage.getMessageHeader().get(TrxMessageHeader.MESSAGE_INFO_TYPE); return MessageInfoType.REQUEST; // Override this to check for sure. } /**
/** * If an exception occurred, set it in the message * @param ex */ public void setMessageException(Throwable ex) { String strErrorMessage = ex.getMessage(); BaseMessage message = this.getMessage(); if ((message != null) && (message.getMessageHeader() instanceof TrxMessageHeader)) ((TrxMessageHeader)message.getMessageHeader()).put(TrxMessageHeader.MESSAGE_ERROR, strErrorMessage); else ex.printStackTrace(); } }
/** * Is this message a reply (or a request). * @param externalMessage The incomming message. * @return MessageType.MESSAGE_IN or MessageType.REPLY_IN If this is a reply. */ public String getMessageInfoType(BaseMessage externalMessage) { String strSubject = (String)externalMessage.getMessageHeader().get(EmailMessageTransport.SUBJECT_PARAM); if (strSubject != null) if (strSubject.toUpperCase().startsWith("RE:")) return MessageInfoType.REPLY; // This is (most likely) a reply to my message. return super.getMessageInfoType(externalMessage); } /**
/** * Is this message a reply (or a request). * @param externalMessage The incoming message. * @return MessageType.MESSAGE_IN or MessageType.REPLY_IN If this is a reply. */ public String getMessageProcessType(BaseMessage externalMessage) { String strSubject = (String)externalMessage.getMessageHeader().get(EmailMessageTransport.SUBJECT_PARAM); if (strSubject != null) if (strSubject.toUpperCase().startsWith("RE:")) return MessageType.MESSAGE_IN; // This is (most likely) a reply to my message. return super.getMessageProcessType(externalMessage); } /**
/** * Get the XSLT Document to do the conversion. * Override this if you have a standard document to suppyl. * @param source The source XML document. * @return The XML tree that conforms to the ECXML format. */ public String getXSLTDocument() { TrxMessageHeader messageHeader = (TrxMessageHeader)this.getMessage().getMessageHeader(); String strDocument = null; if (messageHeader != null) strDocument = (String)messageHeader.get(TrxMessageHeader.XSLT_DOCUMENT); return strDocument; } /**
/** * Run this process. * @param job The process to run. * @param properties The properties to pass to this process. */ public void runProcess(BaseProcess job, Map<String,Object> properties) { if (properties == null) properties = new HashMap<String,Object>(); Map<String,Object> propMessage = m_message.getMessageHeader().getProperties(); if (propMessage != null) properties.putAll(propMessage); properties.put(DBParams.MESSAGE, m_message); job.init(this, null, properties); job.run(); job.free(); } }
/** * Does the current user have permission to access this screen. * @return NORMAL_RETURN if access is allowed, ACCESS_DENIED or LOGIN_REQUIRED otherwise. */ public int checkSecurity() { int iErrorCode = super.checkSecurity(); if (iErrorCode == DBConstants.NORMAL_RETURN) { // Okay, their group can access this screen, but can this user access this data? BaseMessage message = this.getMessage(); String strContactID = (String)message.getMessageHeader().get(TrxMessageHeader.CONTACT_ID); String strContactType = (String)message.getMessageHeader().get(TrxMessageHeader.CONTACT_TYPE); iErrorCode = this.checkContactSecurity(strContactType, strContactID); } return iErrorCode; } /**
/** * Does the current user have permission to access this screen. * @return NORMAL_RETURN if access is allowed, ACCESS_DENIED or LOGIN_REQUIRED otherwise. */ public int checkSecurity() { int iErrorCode = super.checkSecurity(); if (iErrorCode == DBConstants.NORMAL_RETURN) { // Okay, their group can access this screen, but can this user access this data? BaseMessage message = this.getMessage(); String strContactID = (String)message.getMessageHeader().get(TrxMessageHeader.CONTACT_ID); String strContactType = (String)message.getMessageHeader().get(TrxMessageHeader.CONTACT_TYPE); iErrorCode = this.checkContactSecurity(strContactType, strContactID); } return iErrorCode; } /**
/** * Run this process. * @param job The process to run. * @param properties The properties to pass to this process. */ public void runProcess(BaseProcess job, Map<String,Object> properties) { Map<String,Object> propMessage = m_message.getMessageHeader().getProperties(); if (properties == null) propMessage = properties; else if (propMessage != null) properties.putAll(propMessage); job.init(this, null, properties); if (job instanceof BaseMessageProcessor) // Always if (m_message instanceof BaseMessage) // Always ((BaseMessageProcessor)job).setTargetMessage((BaseMessage)m_message); job.run(); job.free(); } }
/** * Handle the record changed message. */ public int handleMessage(BaseMessage message) { RecordMessageHeader messageHeader = (RecordMessageHeader)message.getMessageHeader(); Record record = m_listener.getOwner().getRecord(); if (messageHeader.isRecordMatch(record)) // Double-check to make sure this is the right message record.refreshToCurrent(DBConstants.AFTER_UPDATE_TYPE, false); // This will cause a field changed event if it changed. return super.handleMessage(message); // Override this to process change } }
/** * Handle the record changed message. */ public int handleMessage(BaseMessage message) { RecordMessageHeader messageHeader = (RecordMessageHeader)message.getMessageHeader(); Record record = m_listener.getOwner().getRecord(); if (messageHeader.isRecordMatch(record)) // Double-check to make sure this is the right message record.refreshToCurrent(DBConstants.AFTER_UPDATE_TYPE, false); // This will cause a field changed event if it changed. return super.handleMessage(message); // Override this to process change } }
/** * Handle the record changed message. */ public int handleMessage(BaseMessage message) { RecordMessageHeader messageHeader = (RecordMessageHeader)message.getMessageHeader(); Record record = m_listener.getOwner().getRecord(); if (messageHeader.isRecordMatch(record)) // Double-check to make sure this is the right message record.refreshToCurrent(DBConstants.AFTER_UPDATE_TYPE, false); // This will cause a field changed event if it changed. return super.handleMessage(message); // Override this to process change } }
/** * Create the response message for this message. * @return the response message (or null if none). */ public BaseMessage createReplyMessage(BaseMessage message) { Object objResponseID = message.getMessageHeader().get(TrxMessageHeader.MESSAGE_RESPONSE_ID); if (objResponseID == null) return null; // TODO (don) FIX this - return an error. MessageProcessInfo recMessageProcessInfo = this.getMessageProcessInfo(objResponseID.toString()); MessageInfo recMessageInfo = (MessageInfo)((ReferenceField)recMessageProcessInfo.getField(MessageProcessInfo.kMessageInfoID)).getReference(); BaseMessage replyMessage = new TreeMessage(null, null); MessageRecordDesc messageRecordDesc = recMessageInfo.createNewMessage(replyMessage, null); return replyMessage; } /**
/** * Process this internal message. * @param messageResponseIn The message to process. * @return (optional) The return message if applicable. */ public BaseMessage getOriginalMessage(BaseMessage messageResponseIn) { BaseMessage messageOrig = null; TrxMessageHeader trxMessageHeader = (TrxMessageHeader)messageResponseIn.getMessageHeader(); String strOrigTrxID = (String)trxMessageHeader.get(TrxMessageHeader.ORIG_LOG_TRX_ID); MessageLog recMessageLog = this.getMessageLog(strOrigTrxID); if ((recMessageLog != null) && ((recMessageLog.getEditMode() == DBConstants.EDIT_CURRENT) || (recMessageLog.getEditMode() == DBConstants.EDIT_IN_PROGRESS))) { messageOrig = recMessageLog.createMessage(strOrigTrxID); } return messageOrig; } /**
/** * Get the unmarshaller. * @return */ public BaseConvertToMessage getConvertToMessage() { if (m_convertToMessage == null) { BaseMessageHeader trxMessageHeader = this.getMessage().getMessageHeader(); String strMessageClass = (String)trxMessageHeader.get(TrxMessageHeader.MESSAGE_MARSHALLER_CLASS); String strPackage = (String)trxMessageHeader.get(TrxMessageHeader.BASE_PACKAGE); strMessageClass = ClassServiceUtility.getFullClassName(strPackage, strMessageClass); m_convertToMessage = (BaseConvertToMessage)ClassServiceUtility.getClassService().makeObjectFromClassName(strMessageClass); if (m_convertToMessage != null) m_convertToMessage.init(this); } return m_convertToMessage; } /**
/** * Get the unmarshaller. * @return */ public BaseConvertToNative getConvertToNative() { if (m_convertToNative == null) { BaseMessageHeader trxMessageHeader = this.getMessage().getMessageHeader(); String strMessageClass = (String)trxMessageHeader.get(TrxMessageHeader.MESSAGE_MARSHALLER_CLASS); String strPackage = (String)trxMessageHeader.get(TrxMessageHeader.BASE_PACKAGE); strMessageClass = ClassServiceUtility.getFullClassName(strPackage, strMessageClass); m_convertToNative = (BaseConvertToNative)ClassServiceUtility.getClassService().makeObjectFromClassName(strMessageClass); if (m_convertToNative != null) m_convertToNative.init(this); } return m_convertToNative; } /**