public void logout() { if ((authorization == null) || (backingStore == null)) { return; } try { boolean transactionStarted = beginTransaction(); if (!transactionStarted) { rollback(); transactionStarted = beginTransaction(); if (!transactionStarted) { setAuthorization(null); return; } } UUID secSessionId = authorization.getSecSessionId(); if (secSessionId != null) { ICFSecuritySecSessionObj secSession = getSecSessionTableObj().readSecSessionByIdIdx(secSessionId); if (secSession != null) { if (secSession.getOptionalFinish() == null) { ICFSecuritySecSessionEditObj editSecSession = secSession.beginEdit(); editSecSession.setOptionalFinish(Calendar.getInstance()); editSecSession.update(); editSecSession.endEdit(); } } } commit(); } finally { setAuthorization(null); minimizeMemory(); } }
public void setPanelMode(CFJPanel.PanelMode value) { final String S_ProcName = "setPanelMode"; CFJPanel.PanelMode oldValue = getPanelMode(); if (oldValue == value) { return; } ICFSecuritySecSessionObj focus = getSwingFocusAsSecSession(); if ((value != CFJPanel.PanelMode.Unknown) && (value != CFJPanel.PanelMode.View)) { if (focus == null) { throw CFLib.getDefaultExceptionFactory() .newNullArgumentException(getClass(), S_ProcName, 0, "swingFocus"); } } ICFSecuritySecSessionEditObj editObj; if (focus != null) { editObj = (ICFSecuritySecSessionEditObj) focus.getEdit(); } else { editObj = null; } switch (value) { case Unknown: switch (oldValue) { case Unknown: break; default: if (editObj != null) { editObj.endEdit(); } break; } break; case Add: switch (oldValue) { case Unknown: case Add: case View: if (editObj == null) { if (focus != null) { if (!focus.getIsNew()) { throw CFLib.getDefaultExceptionFactory() .newUsageException( getClass(), S_ProcName, "Transitioning to PanelMode Add requires Focus.getIsNew() to be true"); } editObj = (ICFSecuritySecSessionEditObj) focus.beginEdit(); if (editObj == null) { throw CFLib.getDefaultExceptionFactory() .newUsageException( getClass(), S_ProcName, "Expected beginEdit() to return a new edition of the focus object"); } } else { throw CFLib.getDefaultExceptionFactory() .newNullArgumentException(getClass(), S_ProcName, 0, "focus"); } } break; case Edit: throw CFLib.getDefaultExceptionFactory() .newUsageException( getClass(), S_ProcName, "Cannot transition PanelMode Edit to Add"); case Update: throw CFLib.getDefaultExceptionFactory() .newUsageException( getClass(), S_ProcName, "Cannot transition PanelMode Update to Add"); case Delete: throw CFLib.getDefaultExceptionFactory() .newUsageException( getClass(), S_ProcName, "Cannot transition PanelMode Delete to Add"); default: throw CFLib.getDefaultExceptionFactory() .newUsageException( getClass(), S_ProcName, "Cannot transition PanelMode default to Add"); } break; case View: switch (oldValue) { case Unknown: break; case View: break; case Edit: break; case Update: break; case Delete: break; default: throw CFLib.getDefaultExceptionFactory() .newUsageException( getClass(), S_ProcName, "Cannot transition PanelMode " + oldValue + " to View"); } if (editObj != null) { editObj.endEdit(); } break; case Edit: switch (oldValue) { case Unknown: if (editObj == null) { editObj = (ICFSecuritySecSessionEditObj) focus.beginEdit(); if (editObj == null) { throw CFLib.getDefaultExceptionFactory() .newUsageException( getClass(), S_ProcName, "Expected beginEdit() to return a new edition of the focus object"); } } break; case View: if (editObj == null) { editObj = (ICFSecuritySecSessionEditObj) focus.beginEdit(); if (editObj == null) { throw CFLib.getDefaultExceptionFactory() .newUsageException( getClass(), S_ProcName, "Expected beginEdit() to return a new edition of the focus object"); } } break; case Edit: if (editObj == null) { editObj = (ICFSecuritySecSessionEditObj) focus.beginEdit(); if (editObj == null) { throw CFLib.getDefaultExceptionFactory() .newUsageException( getClass(), S_ProcName, "Expected beginEdit() to return a new edition of the focus object"); } } break; default: throw CFLib.getDefaultExceptionFactory() .newUsageException( getClass(), S_ProcName, "Cannot transition PanelMode " + oldValue + " to Edit"); } break; case Update: if ((oldValue != CFJPanel.PanelMode.Edit) && (oldValue != CFJPanel.PanelMode.Add)) { throw CFLib.getDefaultExceptionFactory() .newUsageException( getClass(), S_ProcName, "Cannot transition from mode " + oldValue + " to Update"); } super.setPanelMode(value); if (editObj != null) { postFields(); if (editObj.getIsNew()) { focus = (ICFDbTestSecSessionObj) editObj.create(); setSwingFocus(focus); } else { editObj.update(); } editObj.endEdit(); editObj = null; } setPanelMode(CFJPanel.PanelMode.View); break; case Delete: switch (oldValue) { case View: if (focus != null) { if (editObj == null) { editObj = (ICFSecuritySecSessionEditObj) focus.beginEdit(); if (editObj == null) { throw CFLib.getDefaultExceptionFactory() .newUsageException( getClass(), S_ProcName, "Expected beginEdit() to return a new edition of the focus object"); } } } break; case Edit: if (focus != null) { if (editObj == null) { editObj = (ICFSecuritySecSessionEditObj) focus.beginEdit(); if (editObj == null) { throw CFLib.getDefaultExceptionFactory() .newUsageException( getClass(), S_ProcName, "Expected beginEdit() to return a new edition of the focus object"); } } } break; case Update: throw CFLib.getDefaultExceptionFactory() .newUsageException( getClass(), S_ProcName, "Cannot transition PanelMode Update to Delete"); case Delete: if (editObj == null) { editObj = (ICFSecuritySecSessionEditObj) focus.beginEdit(); if (editObj == null) { throw CFLib.getDefaultExceptionFactory() .newUsageException( getClass(), S_ProcName, "Expected beginEdit() to return a new edition of the focus object"); } } break; default: throw CFLib.getDefaultExceptionFactory() .newUsageException( getClass(), S_ProcName, "Cannot transition PanelMode " + oldValue + " to Delete"); } editObj.delete(); editObj.endEdit(); setSwingFocus(null); setPanelMode(CFJPanel.PanelMode.Unknown); break; default: switch (oldValue) { case Unknown: break; default: if (editObj != null) { editObj.endEdit(); } break; } break; } super.setPanelMode(value); populateFields(); adjustComponentEnableStates(); }
public void startElement(String uri, String localName, String qName, Attributes attrs) throws SAXException { CFFreeSwitchXMsgSchemaMessageFormatter schemaFormatter = null; try { // Common XML Attributes String attrId = null; // Request Attributes String attrSecSessionId = null; // Attribute Extraction String attrLocalName; int numAttrs; int idxAttr; final String S_ProcName = "startElement"; final String S_LocalName = "LocalName"; assert qName.equals("RqstLogOut"); CFFreeSwitchXMsgRqstHandler xmsgRqstHandler = (CFFreeSwitchXMsgRqstHandler) getParser(); if (xmsgRqstHandler == null) { throw CFLib.getDefaultExceptionFactory() .newNullArgumentException(getClass(), S_ProcName, 0, "getParser()"); } schemaFormatter = xmsgRqstHandler.getSchemaMessageFormatter(); ICFFreeSwitchSchemaObj schemaObj = xmsgRqstHandler.getSchemaObj(); if (schemaObj == null) { throw CFLib.getDefaultExceptionFactory() .newNullArgumentException(getClass(), S_ProcName, 0, "getParser().getSchemaObj()"); } // Extract Attributes numAttrs = attrs.getLength(); for (idxAttr = 0; idxAttr < numAttrs; idxAttr++) { attrLocalName = attrs.getLocalName(idxAttr); if (attrLocalName.equals("Id")) { if (attrId != null) { throw CFLib.getDefaultExceptionFactory() .newUniqueIndexViolationException( getClass(), S_ProcName, S_LocalName, attrLocalName); } attrId = attrs.getValue(idxAttr); } else if (attrLocalName.equals("SecSessionId")) { if (attrSecSessionId != null) { throw CFLib.getDefaultExceptionFactory() .newUniqueIndexViolationException( getClass(), S_ProcName, S_LocalName, attrLocalName); } attrSecSessionId = attrs.getValue(idxAttr); } else if (attrLocalName.equals("schemaLocation")) { // ignored } else { throw CFLib.getDefaultExceptionFactory() .newUnrecognizedAttributeException( getClass(), S_ProcName, getParser().getLocationInfo(), attrLocalName); } } // Ensure that required attributes have values if ((attrSecSessionId == null) || (attrSecSessionId.length() <= 0)) { throw CFLib.getDefaultExceptionFactory() .newNullArgumentException(getClass(), S_ProcName, 0, "SecSessionId"); } UUID secSessionId = UUID.fromString(attrSecSessionId); if (secSessionId == null) { throw CFLib.getDefaultExceptionFactory() .newNullArgumentException(getClass(), S_ProcName, 0, "converted-secSessionId"); } if (schemaObj.getAuthorization() == null) { throw CFLib.getDefaultExceptionFactory() .newRuntimeException(getClass(), S_ProcName, "Already disconnected from the database"); } ICFSecuritySecSessionObj secSession = schemaObj.getSecSession(); if (secSession == null) { throw CFLib.getDefaultExceptionFactory() .newRuntimeException( getClass(), S_ProcName, "Security session does not exist for this schema"); } if (!secSessionId.equals(secSession.getRequiredSecSessionId())) { throw CFLib.getDefaultExceptionFactory() .newRuntimeException( getClass(), S_ProcName, "Security session id does not match the one established by this schema"); } if (secSession.getOptionalFinish() == null) { schemaObj.rollback(); schemaObj.beginTransaction(); ICFSecuritySecSessionEditObj editSecSession = secSession.beginEdit(); editSecSession.setOptionalFinish(Calendar.getInstance()); editSecSession.update(); editSecSession.endEdit(); schemaObj.commit(); } schemaObj.disconnect(false); schemaObj.setAuthorization(null); String response = schemaFormatter.formatRspnXmlPreamble() + "\n" + "\t" + CFFreeSwitchXMsgSchemaMessageFormatter.formatRspnLoggedOut("\n\t\t\t", secSessionId) + "\n" + schemaFormatter.formatRspnXmlPostamble(); ((CFFreeSwitchXMsgRqstHandler) getParser()).appendResponse(response); } catch (RuntimeException e) { CFFreeSwitchXMsgRqstHandler xmsgRqstHandler = ((CFFreeSwitchXMsgRqstHandler) getParser()); schemaFormatter = xmsgRqstHandler.getSchemaMessageFormatter(); String response = schemaFormatter.formatRspnXmlPreamble() + "\n" + "\t" + CFFreeSwitchXMsgSchemaMessageFormatter.formatRspnException("\n\t\t\t", e) + "\n" + schemaFormatter.formatRspnXmlPostamble(); xmsgRqstHandler.resetResponse(); xmsgRqstHandler.appendResponse(response); xmsgRqstHandler.setCaughtException(true); } catch (Error e) { CFFreeSwitchXMsgRqstHandler xmsgRqstHandler = ((CFFreeSwitchXMsgRqstHandler) getParser()); schemaFormatter = xmsgRqstHandler.getSchemaMessageFormatter(); String response = schemaFormatter.formatRspnXmlPreamble() + "\n" + "\t" + CFFreeSwitchXMsgSchemaMessageFormatter.formatRspnException("\n\t\t\t", e) + "\n" + schemaFormatter.formatRspnXmlPostamble(); xmsgRqstHandler.resetResponse(); xmsgRqstHandler.appendResponse(response); xmsgRqstHandler.setCaughtException(true); } }