ulrich
2020-12-28 e1568a090ae0b5d6221a38f234945017e6d34c95
src/de/uhilger/baselink/GenericRecord.java
@@ -43,6 +43,7 @@
 * the <a href="http://www.gnu.org/licenses/" target="_blank">GNU General Public License</a>
 */
public class GenericRecord implements Record {
  private static final Logger logger = Logger.getLogger(GenericRecord.class.getName());
  
   /** default getter method indicator */
   public static final String GETTER_NAME = "get";
@@ -63,15 +64,15 @@
    * @param c  the class to persist
    */
   public GenericRecord(Class<?> c) {      
      Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).finest(c.getName());
      logger.finest(c.getName());
      this.recordClass = c;
      
      DBTable table = c.getAnnotation(DBTable.class);
      if(table != null) {
         Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).finest(tableName);
         logger.finest(tableName);
         tableName = table.name();
      } else {
         Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).severe("missing table annotation");
         logger.severe("missing table annotation");
      }
      
      primaryKeyColNames = new ArrayList<String>();
@@ -79,11 +80,11 @@
      if(primaryKey != null) {
         String[] names = primaryKey.value();
         for(int i = 0; i < names.length; i++) {
            Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).finest(names[i]);
            logger.finest(names[i]);
            primaryKeyColNames.add(names[i]);
         }
      } else {
         Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).severe("missing primary key annotation");
         logger.severe("missing primary key annotation");
      }
      columns = new Hashtable<String,Field>();
@@ -96,16 +97,16 @@
            String fieldName = field.name();
            mapper.setColumnType(field.type());
            mapper.setColumnName(fieldName);
            Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).finest(fieldName);
            logger.finest(fieldName);
            String methodName = method.getName();
            if(methodName.startsWith(GETTER_NAME)) {
               String fieldMethod = methodName.substring(3);
               Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).finest(fieldMethod);
               logger.finest(fieldMethod);
               Class<?> returnType = method.getReturnType();
               try {
                  mapper.setSetter(c.getMethod(SETTER_NAME + fieldMethod, returnType));
               } catch (Exception e) {
                  Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).log(Level.SEVERE, e.getLocalizedMessage(), e);
                  logger.log(Level.SEVERE, e.getLocalizedMessage(), e);
               }
               mapper.setGetter(method);
            }
@@ -127,7 +128,7 @@
      sql.append(tableName);
      sql.append(" where ");
      appendPrimaryKeyFields(sql);
      Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).finest(sql.toString());
      logger.finest(sql.toString());
      PreparedStatement ps = c.prepareStatement(sql.toString());
      prepareFields(0, primaryKeyColNames, ps, record);
      return ps;
@@ -163,7 +164,7 @@
      sql.append(" values (");//?, ?)");
      sql.append(valueList);
      sql.append(")");
      Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).finest(sql.toString());
      logger.finest(sql.toString());
      PreparedStatement ps = c.prepareStatement(sql.toString(), autoGeneratedKeys);
      prepareFields(0, ps, record);
      return ps;
@@ -204,7 +205,7 @@
      sql.append(fieldList);
      sql.append(" where ");
      appendPrimaryKeyFields(sql);      
      Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).finest(sql.toString());
      logger.finest(sql.toString());
      PreparedStatement ps = c.prepareStatement(sql.toString());
      prepareFields(0, ps, record);
      prepareFields(columns.size(), primaryKeyColNames, ps, record);
@@ -219,12 +220,12 @@
    * @throws Exception
    */
   public Object toObject(ResultSet resultSet, boolean includeBlobs) throws Exception {
      Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).finest(recordClass.getName());
      logger.finest(recordClass.getName());
      Object o = recordClass.newInstance();
      Enumeration<String> fieldNames = columns.keys();
      while(fieldNames.hasMoreElements()) {
         String columnName = fieldNames.nextElement();
         Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).finest(columnName);
         logger.finest(columnName);
         Field mapper = columns.get(columnName);
         Method setter = mapper.getSetter();
         if(setter != null) {
@@ -237,7 +238,7 @@
               }
            } else {
               data = resultSet.getObject(columnName);
               Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).finest(data.toString());
               logger.finest(data.toString());
               setter.invoke(o, data);
            }
         }
@@ -278,6 +279,8 @@
            ps.setBinaryStream(i+offset, new ByteArrayInputStream(content.getBytes()), content.length());
         } else {
            ps.setObject(i+offset, o);
        int nr = i + offset;
        logger.finest(nr + " " + o.toString());
         }
         i++;
      }