Example usage for javax.sql.rowset CachedRowSet last

List of usage examples for javax.sql.rowset CachedRowSet last

Introduction

In this page you can find the example usage for javax.sql.rowset CachedRowSet last.

Prototype

boolean last() throws SQLException;

Source Link

Document

Moves the cursor to the last row in this ResultSet object.

Usage

From source file:com.telefonica.iot.cygnus.backends.mysql.MySQLBackendImpl.java

@Override
public void capRecords(String dbName, String tableName, long maxRecords)
        throws CygnusRuntimeError, CygnusPersistenceError {
    // Get the records within the table
    CachedRowSet records = select(dbName, tableName, "*");

    // Get the number of records
    int numRecords = 0;

    try {/*w  ww.ja va2  s .c  o m*/
        if (records.last()) {
            numRecords = records.getRow();
            records.beforeFirst();
        } // if
    } catch (SQLException e) {
        throw new CygnusRuntimeError("Data capping error", "SQLException", e.getMessage());
    } // try catch

    // Get the reception times (they work as IDs) for future deletion
    // to-do: refactor after implementing
    // https://github.com/telefonicaid/fiware-cygnus/issues/1371
    String filters = "";

    try {
        if (numRecords > maxRecords) {
            for (int i = 0; i < (numRecords - maxRecords); i++) {
                records.next();
                String recvTime = records.getString("recvTime");

                if (filters.isEmpty()) {
                    filters += "recvTime='" + recvTime + "'";
                } else {
                    filters += " or recvTime='" + recvTime + "'";
                } // if else
            } // for
        } // if

        records.close();
    } catch (SQLException e) {
        throw new CygnusRuntimeError("Data capping error", "SQLException", e.getMessage());
    } // try catch

    if (filters.isEmpty()) {
        LOGGER.debug("No records to be deleted");
    } else {
        LOGGER.debug("Records must be deleted (dbName=" + dbName + ",tableName=" + tableName + ", filters="
                + filters + ")");
        delete(dbName, tableName, filters);
    } // if else
}

From source file:com.telefonica.iot.cygnus.backends.mysql.MySQLBackendImpl.java

@Override
public void expirateRecordsCache(long expirationTime) throws CygnusRuntimeError, CygnusPersistenceError {
    // Iterate on the cached resource IDs
    cache.startDbIterator();/*from  w  w  w. ja va  2s  .  c  om*/

    while (cache.hasNextDb()) {
        String dbName = cache.nextDb();
        cache.startTableIterator(dbName);

        while (cache.hasNextTable(dbName)) {
            String tableName = cache.nextTable(dbName);

            // Get the records within the table
            CachedRowSet records = select(dbName, tableName, "*");

            // Get the number of records
            int numRecords = 0;

            try {
                if (records.last()) {
                    numRecords = records.getRow();
                    records.beforeFirst();
                } // if
            } catch (SQLException e) {
                try {
                    records.close();
                } catch (SQLException e1) {
                    LOGGER.debug("Can't close CachedRowSet.");
                }
                throw new CygnusRuntimeError("Data expiration error", "SQLException", e.getMessage());
            } // try catch

            // Get the reception times (they work as IDs) for future
            // deletion
            // to-do: refactor after implementing
            // https://github.com/telefonicaid/fiware-cygnus/issues/1371
            String filters = "";

            try {
                for (int i = 0; i < numRecords; i++) {
                    records.next();
                    String recvTime = records.getString("recvTime");
                    long recordTime = CommonUtils.getMilliseconds(recvTime);
                    long currentTime = new Date().getTime();

                    if (recordTime < (currentTime - (expirationTime * 1000))) {
                        if (filters.isEmpty()) {
                            filters += "recvTime='" + recvTime + "'";
                        } else {
                            filters += " or recvTime='" + recvTime + "'";
                        } // if else
                    } else {
                        break;
                    } // if else
                } // for
            } catch (SQLException e) {
                throw new CygnusRuntimeError("Data expiration error", "SQLException", e.getMessage());
            } catch (ParseException e) {
                throw new CygnusRuntimeError("Data expiration error", "ParseException", e.getMessage());
            } // try catch

            if (filters.isEmpty()) {
                LOGGER.debug("No records to be deleted");
            } else {
                LOGGER.debug("Records must be deleted (dbName=" + dbName + ",tableName=" + tableName
                        + ", filters=" + filters + ")");
                delete(dbName, tableName, filters);
            } // if else
        } // while
    } // while
}