Beispiel #1
0
  private StatementBuilder generateColumn(
      Set<String> imports, ColumnInspector col, boolean trimStrings) {
    StatementBuilder sb = new StatementBuilder();
    Class<?> clazz = col.clazz;
    String column = ModelUtils.convertColumnToFieldName(col.name.toLowerCase());
    sb.append('\t');
    if (clazz == null) {
      // unsupported type
      clazz = Object.class;
      sb.append("// unsupported type " + col.type);
    } else {
      // Imports
      // don't import primitives, java.lang classes, or byte []
      if (clazz.getPackage() == null) {
      } else if (clazz.getPackage().getName().equals("java.lang")) {
      } else if (clazz.equals(byte[].class)) {
      } else {
        imports.add(clazz.getCanonicalName());
      }
      // @IQColumn
      sb.append('@').append(IQColumn.class.getSimpleName());

      // IQColumn annotation parameters
      AnnotationBuilder ap = new AnnotationBuilder();

      // IQColumn.name
      if (!col.name.equalsIgnoreCase(column)) {
        ap.addParameter("name", col.name);
      }

      // IQColumn.primaryKey
      // composite primary keys are annotated on the table
      if (col.isPrimaryKey && primaryKeys.size() == 1) {
        ap.addParameter("primaryKey=true");
      }

      // IQColumn.length
      if ((clazz == String.class) && (col.size > 0) && (col.size < Integer.MAX_VALUE)) {
        ap.addParameter("length", col.size);

        // IQColumn.trim
        if (trimStrings) {
          ap.addParameter("trim=true");
        }
      } else {
        // IQColumn.AutoIncrement
        if (col.isAutoIncrement) {
          ap.addParameter("autoIncrement=true");
        }
      }

      // IQColumn.nullable
      if (!col.nullable) {
        ap.addParameter("nullable=false");
      }

      // IQColumn.defaultValue
      if (!isNullOrEmpty(col.defaultValue)) {
        ap.addParameter("defaultValue=\"" + col.defaultValue + "\"");
      }

      // add leading and trailing ()
      if (ap.length() > 0) {
        ap.insert(0, '(');
        ap.append(')');
      }
      sb.append(ap);
    }
    sb.append(eol);

    // variable declaration
    sb.append("\t" + "public ");
    sb.append(clazz.getSimpleName());
    sb.append(' ');
    sb.append(column);
    sb.append(';');
    sb.append(eol).append(eol);
    return sb;
  }