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 class CFBamClusterBuff implements Comparable<Object>, Serializable {
  public static final String CLASS_CODE = "CLUS";
  public static final String S_INIT_CREATEDBY = "654dbba0-eda7-11e1-aff1-0800200c9a66";
  public static final UUID INIT_CREATEDBY = UUID.fromString(S_INIT_CREATEDBY);
  public static final String S_INIT_UPDATEDBY = "654dbba0-eda7-11e1-aff1-0800200c9a66";
  public static final UUID INIT_UPDATEDBY = UUID.fromString(S_INIT_UPDATEDBY);
  public static final long ID_INIT_VALUE = 0L;
  public static final String FULLDOMAINNAME_INIT_VALUE = new String("");
  public static final String DESCRIPTION_INIT_VALUE = new String("");
  public static final long ID_MIN_VALUE = 0L;
  protected UUID createdByUserId = CFBamClusterBuff.INIT_CREATEDBY;
  protected Calendar createdAt = Calendar.getInstance();
  protected UUID updatedByUserId = CFBamClusterBuff.INIT_UPDATEDBY;
  protected Calendar updatedAt = Calendar.getInstance();
  protected long requiredId;
  protected String requiredFullDomainName;
  protected String requiredDescription;
  protected int requiredRevision;

  public CFBamClusterBuff() {
    requiredId = CFBamClusterBuff.ID_INIT_VALUE;
    requiredFullDomainName = new String(CFBamClusterBuff.FULLDOMAINNAME_INIT_VALUE);
    requiredDescription = new String(CFBamClusterBuff.DESCRIPTION_INIT_VALUE);
  }

  public String getClassCode() {
    return (CLASS_CODE);
  }

  public UUID getCreatedByUserId() {
    return (createdByUserId);
  }

  public void setCreatedByUserId(UUID value) {
    createdByUserId = value;
  }

  public Calendar getCreatedAt() {
    return (createdAt);
  }

  public void setCreatedAt(Calendar value) {
    createdAt = value;
  }

  public UUID getUpdatedByUserId() {
    return (updatedByUserId);
  }

  public void setUpdatedByUserId(UUID value) {
    updatedByUserId = value;
  }

  public Calendar getUpdatedAt() {
    return (updatedAt);
  }

  public void setUpdatedAt(Calendar value) {
    updatedAt = value;
  }

  public long getRequiredId() {
    return (requiredId);
  }

  public void setRequiredId(long value) {
    if (value < CFBamClusterBuff.ID_MIN_VALUE) {
      throw CFLib.getDefaultExceptionFactory()
          .newArgumentUnderflowException(
              getClass(), "setRequiredId", 1, "value", value, CFBamClusterBuff.ID_MIN_VALUE);
    }
    requiredId = value;
  }

  public String getRequiredFullDomainName() {
    return (requiredFullDomainName);
  }

  public void setRequiredFullDomainName(String value) {
    if (value == null) {
      throw CFLib.getDefaultExceptionFactory()
          .newNullArgumentException(getClass(), "setRequiredFullDomainName", 1, "value");
    }
    if (value.length() > 192) {
      throw CFLib.getDefaultExceptionFactory()
          .newArgumentOverflowException(
              getClass(), "setRequiredFullDomainName", 1, "value.length()", value.length(), 192);
    }
    requiredFullDomainName = value;
  }

  public String getRequiredDescription() {
    return (requiredDescription);
  }

  public void setRequiredDescription(String value) {
    if (value == null) {
      throw CFLib.getDefaultExceptionFactory()
          .newNullArgumentException(getClass(), "setRequiredDescription", 1, "value");
    }
    if (value.length() > 128) {
      throw CFLib.getDefaultExceptionFactory()
          .newArgumentOverflowException(
              getClass(), "setRequiredDescription", 1, "value.length()", value.length(), 128);
    }
    requiredDescription = value;
  }

  public int getRequiredRevision() {
    return (requiredRevision);
  }

  public void setRequiredRevision(int value) {
    requiredRevision = value;
  }

  public boolean equals(Object obj) {
    if (obj == null) {
      return (false);
    } else if (obj instanceof CFBamClusterBuff) {
      CFBamClusterBuff rhs = (CFBamClusterBuff) obj;
      if (!getCreatedByUserId().equals(rhs.getCreatedByUserId())) {
        return (false);
      }
      if (!getCreatedAt().equals(rhs.getCreatedAt())) {
        return (false);
      }
      if (!getUpdatedByUserId().equals(rhs.getUpdatedByUserId())) {
        return (false);
      }
      if (!getUpdatedAt().equals(rhs.getUpdatedAt())) {
        return (false);
      }
      if (getRequiredId() != rhs.getRequiredId()) {
        return (false);
      }
      if (!getRequiredFullDomainName().equals(rhs.getRequiredFullDomainName())) {
        return (false);
      }
      if (!getRequiredDescription().equals(rhs.getRequiredDescription())) {
        return (false);
      }
      return (true);
    } else if (obj instanceof CFBamClusterPKey) {
      CFBamClusterPKey rhs = (CFBamClusterPKey) obj;
      if (getRequiredId() != rhs.getRequiredId()) {
        return (false);
      }
      return (true);
    } else if (obj instanceof CFBamClusterHBuff) {
      CFBamClusterHBuff rhs = (CFBamClusterHBuff) obj;
      if (getRequiredId() != rhs.getRequiredId()) {
        return (false);
      }
      if (!getRequiredFullDomainName().equals(rhs.getRequiredFullDomainName())) {
        return (false);
      }
      if (!getRequiredDescription().equals(rhs.getRequiredDescription())) {
        return (false);
      }
      return (true);
    } else if (obj instanceof CFBamClusterHPKey) {
      CFBamClusterHPKey rhs = (CFBamClusterHPKey) obj;
      if (getRequiredId() != rhs.getRequiredId()) {
        return (false);
      }
      return (true);
    } else if (obj instanceof CFBamClusterByUDomainNameIdxKey) {
      CFBamClusterByUDomainNameIdxKey rhs = (CFBamClusterByUDomainNameIdxKey) obj;
      if (!getRequiredFullDomainName().equals(rhs.getRequiredFullDomainName())) {
        return (false);
      }
      return (true);
    } else if (obj instanceof CFBamClusterByUDescrIdxKey) {
      CFBamClusterByUDescrIdxKey rhs = (CFBamClusterByUDescrIdxKey) obj;
      if (!getRequiredDescription().equals(rhs.getRequiredDescription())) {
        return (false);
      }
      return (true);
    } else {
      boolean retval = super.equals(obj);
      return (retval);
    }
  }

  public int hashCode() {
    int hashCode = 0;
    hashCode = hashCode + getCreatedByUserId().hashCode();
    hashCode = hashCode + getCreatedAt().hashCode();
    hashCode = hashCode + getUpdatedByUserId().hashCode();
    hashCode = hashCode + getUpdatedAt().hashCode();
    hashCode = hashCode + (int) (getRequiredId());
    if (getRequiredFullDomainName() != null) {
      hashCode = hashCode + getRequiredFullDomainName().hashCode();
    }
    if (getRequiredDescription() != null) {
      hashCode = hashCode + getRequiredDescription().hashCode();
    }
    return (hashCode & 0x7fffffff);
  }

  public int compareTo(Object obj) {
    if (obj == null) {
      return (-1);
    } else if (obj instanceof CFBamClusterBuff) {
      CFBamClusterBuff rhs = (CFBamClusterBuff) obj;
      int retval = 0;
      {
        int cmp = getCreatedByUserId().compareTo(rhs.getCreatedByUserId());
        if (cmp != 0) {
          return (cmp);
        }

        cmp = getCreatedAt().compareTo(rhs.getCreatedAt());
        if (cmp != 0) {
          return (cmp);
        }

        cmp = getUpdatedByUserId().compareTo(rhs.getUpdatedByUserId());
        if (cmp != 0) {
          return (cmp);
        }

        cmp = getUpdatedAt().compareTo(rhs.getUpdatedAt());
        if (cmp != 0) {
          return (cmp);
        }
      }
      if (getRequiredId() < rhs.getRequiredId()) {
        return (-1);
      } else if (getRequiredId() > rhs.getRequiredId()) {
        return (1);
      }
      {
        int cmp = getRequiredFullDomainName().compareTo(rhs.getRequiredFullDomainName());
        if (cmp != 0) {
          return (cmp);
        }
      }
      {
        int cmp = getRequiredDescription().compareTo(rhs.getRequiredDescription());
        if (cmp != 0) {
          return (cmp);
        }
      }
      return (0);
    } else if (obj instanceof CFBamClusterPKey) {
      CFBamClusterPKey rhs = (CFBamClusterPKey) obj;
      if (getRequiredId() < rhs.getRequiredId()) {
        return (-1);
      } else if (getRequiredId() > rhs.getRequiredId()) {
        return (1);
      }
      return (0);
    } else if (obj instanceof CFBamClusterHPKey) {
      CFBamClusterHPKey rhs = (CFBamClusterHPKey) obj;
      {
        int lhsRequiredRevision = getRequiredRevision();
        int rhsRequiredRevision = rhs.getRequiredRevision();
        if (lhsRequiredRevision < rhsRequiredRevision) {
          return (-1);
        } else if (lhsRequiredRevision > rhsRequiredRevision) {
          return (1);
        }
      }
      if (getRequiredId() < rhs.getRequiredId()) {
        return (-1);
      } else if (getRequiredId() > rhs.getRequiredId()) {
        return (1);
      }
      return (0);
    } else if (obj instanceof CFBamClusterHBuff) {
      CFBamClusterHBuff rhs = (CFBamClusterHBuff) obj;
      int retval = 0;
      if (getRequiredId() < rhs.getRequiredId()) {
        return (-1);
      } else if (getRequiredId() > rhs.getRequiredId()) {
        return (1);
      }
      {
        int cmp = getRequiredFullDomainName().compareTo(rhs.getRequiredFullDomainName());
        if (cmp != 0) {
          return (cmp);
        }
      }
      {
        int cmp = getRequiredDescription().compareTo(rhs.getRequiredDescription());
        if (cmp != 0) {
          return (cmp);
        }
      }
      return (0);
    } else if (obj instanceof CFBamClusterByUDomainNameIdxKey) {
      CFBamClusterByUDomainNameIdxKey rhs = (CFBamClusterByUDomainNameIdxKey) obj;

      {
        int cmp = getRequiredFullDomainName().compareTo(rhs.getRequiredFullDomainName());
        if (cmp != 0) {
          return (cmp);
        }
      }
      return (0);
    } else if (obj instanceof CFBamClusterByUDescrIdxKey) {
      CFBamClusterByUDescrIdxKey rhs = (CFBamClusterByUDescrIdxKey) obj;

      {
        int cmp = getRequiredDescription().compareTo(rhs.getRequiredDescription());
        if (cmp != 0) {
          return (cmp);
        }
      }
      return (0);
    } else {
      throw CFLib.getDefaultExceptionFactory()
          .newUnsupportedClassException(getClass(), "compareTo", "obj", obj, null);
    }
  }

  public void set(CFBamClusterBuff src) {
    setClusterBuff(src);
  }

  public void setClusterBuff(CFBamClusterBuff src) {
    setRequiredId(src.getRequiredId());
    setCreatedByUserId(src.getCreatedByUserId());
    setCreatedAt(src.getCreatedAt());
    setUpdatedByUserId(src.getUpdatedByUserId());
    setUpdatedAt(src.getUpdatedAt());
    setRequiredFullDomainName(src.getRequiredFullDomainName());
    setRequiredDescription(src.getRequiredDescription());
    setRequiredRevision(src.getRequiredRevision());
  }

  public void set(CFBamClusterHBuff src) {
    setClusterBuff(src);
  }

  public void setClusterBuff(CFBamClusterHBuff src) {
    setRequiredId(src.getRequiredId());
    setRequiredFullDomainName(src.getRequiredFullDomainName());
    setRequiredDescription(src.getRequiredDescription());
  }
}
  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);
    }
  }