Beispiel #1
0
  /**
   * This method allows to create all queries used by the push listener framework
   *
   * @param registryTableName the name of the table storing information about the push listener
   *     entries
   * @param clusterSize number of the members in the cluster
   * @param serverIndex unique index of the instance in the cluster
   */
  private void createQueries(String registryTableName, int clusterSize, int serverIndex) {
    String segmentationClause = null;

    String queryReadEntries =
        MessageFormat.format(SQL_READ_ENTRIES, new Object[] {columnSuffix, registryTableName});

    StringBuffer queryReadChangedEntries = new StringBuffer(queryReadEntries);
    StringBuffer queryReadActiveEntries = new StringBuffer(queryReadEntries);
    StringBuffer queryDeleteEntries =
        new StringBuffer(
            MessageFormat.format(SQL_DELETE_ENTRIES, new Object[] {registryTableName}));
    if (clusterSize > 1) {
      segmentationClause =
          MessageFormat.format(
              SQL_SEGMENTATION_CLAUSE,
              new Object[] {String.valueOf(clusterSize), String.valueOf(serverIndex)});
      queryReadChangedEntries.append(segmentationClause).append(" and ");
      queryReadActiveEntries.append(segmentationClause).append(" and ");
      queryDeleteEntries.append(" and ").append(segmentationClause);
    }
    queryReadChangedEntries.append(SQL_WHERECLAUSE_STATUS);
    queryDesc.setReadChangedEntriesQuery(queryReadChangedEntries.toString());
    queryReadActiveEntries.append(SQL_WHERECLAUSE_ACTIVE_ENTRIES);
    queryDesc.setReadActiveEntriesQuery(queryReadActiveEntries.toString());
    queryDesc.setReadEntryQuery(
        MessageFormat.format(SQL_READ_ENTRY, new Object[] {columnSuffix, registryTableName}));
    queryDesc.setDeleteEntryQuery(
        MessageFormat.format(SQL_DELETE_ENTRY, new Object[] {registryTableName}));
    queryDesc.setDeleteEntriesQuery(queryDeleteEntries.toString());
    queryDesc.setUpdateEntryQuery(
        MessageFormat.format(SQL_UPDATE_ENTRY, new Object[] {registryTableName, updateSuffix}));
    queryDesc.setUpdateStatusQuery(
        MessageFormat.format(SQL_UPDATE_STATUS, new Object[] {registryTableName}));
    queryDesc.setInsertEntryQuery(
        MessageFormat.format(
            SQL_INSERT_ENTRY, new Object[] {registryTableName, columnSuffix, placeholderSuffix}));
  }