/** * This method allows to establish how many extra property columns are specified in the given * ResultSet. Besides, it builds the two strings used to complete the query. * * @param rs it's the ResultSet to analyze. * @param basicColumnsSet it's the set of labels that must be considered as basic. * @throws java.sql.SQLException if any error occurs analyzing the ResultSet object. */ protected void updateExtraPropertyInfo(ResultSet rs) throws SQLException { short numberOfExtraColumns = 0; String[] extraProperties = new String[0]; columnSuffix = new StringBuilder(); updateSuffix = new StringBuilder(); placeholderSuffix = new StringBuilder(); if (rs != null) { ResultSetMetaData metaData = rs.getMetaData(); int numberOfColumns = metaData.getColumnCount(); numberOfExtraColumns = (short) (numberOfColumns - basicColumns.size()); extraProperties = new String[numberOfExtraColumns]; int j = 0; if (numberOfExtraColumns > 0) { for (int i = 1; i <= numberOfColumns; i++) { String columnName = metaData.getColumnName(i); if (columnName != null) { String columnKey = columnName.toLowerCase(); if (!basicColumns.contains(columnKey)) { extraProperties[j] = columnKey; columnSuffix.append(", "); columnSuffix.append(columnName); // create the suffix used to insert the extra properties placeholderSuffix.append(", "); placeholderSuffix.append("? "); // create the suffix used to update the extra properties updateSuffix.append(", "); updateSuffix.append(columnName); updateSuffix.append(" =? "); j++; } } } } } queryDesc.setNumberOfExtraColumns(numberOfExtraColumns); queryDesc.setExtraProperties(extraProperties); }