/* return list of all Devices within the specified DeviceGroup (NOT SCALABLE BEYOND A FEW HUNDRED GROUPS) */ public static java.util.List<String> getUsersForGroup(String acctId, String groupId) throws DBException { /* valid account/groupId? */ if (StringTools.isBlank(acctId)) { return null; } else if (StringTools.isBlank(groupId)) { return null; } /* get db selector */ DBSelect dsel = GroupList._getUserListSelect(acctId, groupId); if (dsel == null) { return null; } /* read users for group */ java.util.List<String> usrList = new Vector<String>(); DBConnection dbc = null; Statement stmt = null; ResultSet rs = null; try { dbc = DBConnection.getDefaultConnection(); stmt = dbc.execute(dsel.toString()); rs = stmt.getResultSet(); while (rs.next()) { String usrId = rs.getString(GroupList.FLD_userID); usrList.add(usrId); } } catch (SQLException sqe) { throw new DBException("Get Group GroupeList", sqe); } finally { if (rs != null) { try { rs.close(); } catch (Throwable t) { } } if (stmt != null) { try { stmt.close(); } catch (Throwable t) { } } DBConnection.release(dbc); } /* return list */ return usrList; }
/** * Prepares the statement used to delete this object from the database. * * @param conn the database connection * @return the delete statement. * @exception java.sql.SQLException if an error occurs. */ public PreparedStatement getDeleteStatement(DBConnection conn) throws SQLException { String sql = "delete from PersonalProfile \n" + "where " + getOIdColumnName() + " = ?"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setBigDecimal(1, getOId().toBigDecimal()); return stmt; }
/* return status codes for account/device */ public static int[] getStatusCodes(String accountID, String deviceID) throws DBException { /* account-id specified? */ if (StringTools.isBlank(accountID)) { return new int[0]; } /* device-id specified? */ if (StringTools.isBlank(deviceID)) { deviceID = ALL_DEVICES; } /* select */ // DBSelect: SELECT statucCode FROM StatusCode WHERE (accountID='acct') AND (deviceID='*') ORDER // BY statucCode DBSelect<StatusCode> dsel = new DBSelect<StatusCode>(StatusCode.getFactory()); dsel.setSelectedFields(StatusCode.FLD_statusCode); DBWhere dwh = dsel.createDBWhere(); dsel.setWhere( dwh.WHERE_( dwh.AND( dwh.EQ(StatusCode.FLD_accountID, accountID), dwh.EQ(StatusCode.FLD_deviceID, deviceID)))); dsel.setOrderByFields(StatusCode.FLD_statusCode); /* get list */ java.util.List<Integer> codeList = new Vector<Integer>(); Statement stmt = null; ResultSet rs = null; try { stmt = DBConnection.getDefaultConnection().execute(dsel.toString()); rs = stmt.getResultSet(); while (rs.next()) { int code = rs.getInt(StatusCode.FLD_statusCode); codeList.add(new Integer(code)); } } catch (SQLException sqe) { throw new DBException("Getting StatusCode List", sqe); } finally { if (rs != null) { try { rs.close(); } catch (Throwable t) { } } if (stmt != null) { try { stmt.close(); } catch (Throwable t) { } } } /* return array of status codes */ int codeListInt[] = new int[codeList.size()]; for (int i = 0; i < codeListInt.length; i++) { codeListInt[i] = codeList.get(i).intValue(); } return codeListInt; }
/** * Prepares the statement used to insert this object into the database. * * @param conn the database connection. * @return the insert statement. * @exception java.sql.SQLException if an error occurs. */ public PreparedStatement getInsertStatement(DBConnection conn) throws SQLException { /* * It would probably be better to have CoreDO implement * void addToCache(CoreDO DO) {} * and have each DO that has caching enabled override it as * void addToCache(CoreDO DO) { cache.put( DO.getOId(), DO ); } * and change CoreDO to invoke addToCache() * when it invokes getInsertStatement(). */ ObjectId oid; PreparedStatement stmt = conn.prepareStatement( "insert into PersonalProfile ( LeafNumber, Profile, Mandatory, MinAge, MaxAge, Nationality, Sex, " + getOIdColumnName() + ", " + getVersionColumnName() + " ) values ( ?, ?, ?, ?, ?, ?, ?, ?, ? )"); param = new int[1]; param[0] = 1; // writeMemberStuff uses the JDBCsetCalls.template // to build up the value for this tag: // the value is a series of calls to setPrepStmtParam_TYPE methods. // Those methods are defined in GenericDO. try { setPrepStmtParam_int(stmt, param, getLeafNumber()); setPrepStmtParam_DO(stmt, param, getProfile()); setPrepStmtParam_boolean(stmt, param, getMandatory()); setPrepStmtParam_int(stmt, param, getMinAge()); setPrepStmtParam_int(stmt, param, getMaxAge()); setPrepStmtParam_DO(stmt, param, getNationality()); setPrepStmtParam_String(stmt, param, getSex()); /* The order of the values being inserted must match * the order of the columns listed in the CREATE TABLE command * that appears in the .sql file for this DO. * Since the id and version number are always the last columns * listed in the CREATE TABLE command, their values are added * to the PreparedStatement after all other values. */ setPrepStmtParam_BigDecimal(stmt, param, getOId().toBigDecimal()); setPrepStmtParam_int(stmt, param, getNewVersion()); } catch (Exception e) { throw new SQLException("Data Object error: " + e.getMessage()); } return stmt; }
/** * Prepares the statement used to update this object in the database. * * @param conn the database connection * @return the update statement. * @exception java.sql.SQLException if an error occurs. */ public PreparedStatement getUpdateStatement(DBConnection conn) throws SQLException { ObjectId oid; PreparedStatement stmt = conn.prepareStatement( "update PersonalProfile set " + getVersionColumnName() + " = ?, LeafNumber = ?, Profile = ?, Mandatory = ?, MinAge = ?, MaxAge = ?, Nationality = ?, Sex = ? " + "where " + getOIdColumnName() + " = ? and " + getVersionColumnName() + " = ?"); param = new int[1]; param[0] = 1; // int[] param = {1}; // writeMemberStuff builds up the value for this tag: // the value is a series of calls to setPrepStmtParam_TYPE methods. // Those methods are defined below. try { setPrepStmtParam_int(stmt, param, getNewVersion()); setPrepStmtParam_int(stmt, param, getLeafNumber()); setPrepStmtParam_DO(stmt, param, getProfile()); setPrepStmtParam_boolean(stmt, param, getMandatory()); setPrepStmtParam_int(stmt, param, getMinAge()); setPrepStmtParam_int(stmt, param, getMaxAge()); setPrepStmtParam_DO(stmt, param, getNationality()); setPrepStmtParam_String(stmt, param, getSex()); /* When updating a persistent object, the UPDATE_WHERE_CLAUSE tag * used to build the SQL WHERE clause (above) uses the * DO's id and version number to locate the correct row in * the database table. */ setPrepStmtParam_BigDecimal(stmt, param, getOId().toBigDecimal()); setPrepStmtParam_int(stmt, param, getVersion()); } catch (Exception e) { throw new SQLException("Data Object error: " + e.getMessage()); } return stmt; }