Example #1
0
    public Common.Signature toProto() {
      Common.Signature.Builder builder = Common.Signature.newBuilder();

      if (null != sql) {
        builder.setSql(sql);
      }

      if (null != cursorFactory) {
        builder.setCursorFactory(cursorFactory.toProto());
      }

      if (null != columns) {
        for (ColumnMetaData column : columns) {
          builder.addColumns(column.toProto());
        }
      }

      if (null != parameters) {
        for (AvaticaParameter parameter : parameters) {
          builder.addParameters(parameter.toProto());
        }
      }

      return builder.build();
    }
  /**
   * @param column
   * @param size
   * @return 长度验证
   */
  public boolean lengthValidator(String column, int size) {
    ColumnMetaData columneMetaData = columnMetaDatas.get(column);

    if (null == columneMetaData || size <= 0) {
      return false;
    }
    return columneMetaData.getColumnSize() >= size ? true : false;
  }
 /** @param columnMetaData */
 public void addColumnMetaData(ColumnMetaData columnMetaData) {
   if (null == columnMetaData) {
     return;
   }
   if (!containColumnName(columnMetaData.getName())) {
     names.add(columnMetaData.getName());
     columnMetaDatas.put(columnMetaData.getName(), columnMetaData);
   }
 }
  public int findColumn(String columnName) throws SQLException {
    for (int i = 0; i < columns.size(); ++i) {
      ColumnMetaData column = columns.get(i);
      if (column.getColumnName().equals(columnName)) {
        return i + 1;
      }
    }

    throw new SQLException("column '" + columnName + "' not found.");
  }
  /**
   * @param columnName
   * @return
   */
  public boolean isNullable(String columnName) {

    ColumnMetaData column = columnMetaDatas.get(columnName);

    if (null != column) {
      return column.isNullable();
    }

    return false;
  }
  /**
   * @param columnsName
   * @return
   */
  public List<ColumnMetaData> intersectColumnsMetaData(List<String> columnsName) {
    List<ColumnMetaData> columnsMetaData = new ArrayList<ColumnMetaData>();

    for (ColumnMetaData columnMetaData : this.columnsName) {
      if (!columnsName.contains(columnMetaData.getName())) {
        columnsMetaData.add(columnMetaData);
      }
    }

    return columnsMetaData;
  }
Example #7
0
  public PrimaryKey(
      String dbname,
      String tableName,
      String primaryKeyName,
      int increment,
      long curValue,
      String type,
      String prefix,
      String maxSql,
      String generator,
      Connection con) {
    this.dbname = dbname;
    this.generator = generator;
    dbAdapter = SQLManager.getInstance().getDBAdapter(dbname);
    this.tableName = tableName;
    this.primaryKeyName = primaryKeyName;
    this.increment = increment;
    this.curValue = curValue;
    JDBCPool pool = (JDBCPool) (SQLManager.getInstance().getPool(dbname));
    synsequece = pool.getJDBCPoolMetadata().synsequence();
    this.seqfunction = pool.getJDBCPoolMetadata().getSeqfunction();
    String mode = pool.getKeygenerate();
    if (mode.trim().equalsIgnoreCase("auto")) keygenerator_mode = 0;
    else if (mode.trim().equalsIgnoreCase("composite")) keygenerator_mode = 1;
    if (type != null && !type.trim().equals("")) this.type = type;
    if (prefix != null && !prefix.trim().equals("")) this.prefix = prefix;
    this.maxSql = maxSql;

    if (type.equals("sequence")) {
      ColumnMetaData cd = pool.getColumnMetaData(con, tableName, primaryKeyName);
      if (cd != null) {
        int type_ = cd.getDataType();
        this.metaType = PrimaryKey.getJavaType(type_);
      } else {
        metaType = "int";
      }
    } else if (type.equals("uuid")) {
      ColumnMetaData cd = pool.getColumnMetaData(con, tableName, primaryKeyName);
      if (cd != null) {
        int type_ = cd.getDataType();
        this.metaType = PrimaryKey.getJavaType(type_);
      } else {
        metaType = "string";
      }
    } else {
      this.metaType = type;
    }
  }
  /**
   * Returns a string representation of the object using a prefix This can be used as part of a
   * facility to output a MetaData file.
   *
   * @param prefix prefix string
   * @param indent indent string
   * @return a string representation of the object.
   */
  public String toString(String prefix, String indent) {
    // Field needs outputting so generate metadata
    StringBuilder sb = new StringBuilder();
    sb.append(prefix)
        .append(
            "<version strategy=\""
                + versionStrategy.toString()
                + "\""
                + (indexed != null ? (" indexed=\"" + indexed.toString() + "\"") : ""));
    if (columnName != null && columnMetaData == null) {
      sb.append(" column=\"" + columnName + "\"");
    }
    sb.append(">\n");

    // Column MetaData
    if (columnMetaData != null) {
      sb.append(columnMetaData.toString(prefix + indent, indent));
    }

    // Add index
    if (indexMetaData != null) {
      sb.append(indexMetaData.toString(prefix + indent, indent));
    }

    // Add extensions
    sb.append(super.toString(prefix + indent, indent));

    sb.append(prefix).append("</version>\n");
    return sb.toString();
  }
Example #9
0
    public static Signature fromProto(Common.Signature protoSignature) {
      List<ColumnMetaData> metadata = new ArrayList<>(protoSignature.getColumnsCount());
      for (Common.ColumnMetaData protoMetadata : protoSignature.getColumnsList()) {
        metadata.add(ColumnMetaData.fromProto(protoMetadata));
      }

      List<AvaticaParameter> parameters = new ArrayList<>(protoSignature.getParametersCount());
      for (Common.AvaticaParameter protoParam : protoSignature.getParametersList()) {
        parameters.add(AvaticaParameter.fromProto(protoParam));
      }

      final Descriptor desc = protoSignature.getDescriptorForType();

      String sql = null;
      if (ProtobufService.hasField(protoSignature, desc, Common.Signature.SQL_FIELD_NUMBER)) {
        sql = protoSignature.getSql();
      }

      CursorFactory cursorFactory = null;
      if (ProtobufService.hasField(
          protoSignature, desc, Common.Signature.CURSOR_FACTORY_FIELD_NUMBER)) {
        cursorFactory = CursorFactory.fromProto(protoSignature.getCursorFactory());
      }

      return Signature.create(metadata, sql, parameters, cursorFactory);
    }
  /**
   * Initialisation method. This should be called AFTER using the populate method if you are going
   * to use populate. It creates the internal convenience arrays etc needed for normal operation.
   */
  public void initialise(ClassLoaderResolver clr, MetaDataManager mmgr) {
    if (hasExtension("field-name")) {
      // User has provided extension "field-name" meaning that we store the version in the column
      // for the specified field (like in JPA)
      String val = getValueForExtension("field-name");
      if (!StringUtils.isWhitespace(val)) {
        this.fieldName = val;
        this.columnName = null;
      }
    }

    if (fieldName == null) {
      // Cater for user specifying column name, or column
      if (columnMetaData == null && columnName != null) {
        columnMetaData = new ColumnMetaData();
        columnMetaData.setName(columnName);
        columnMetaData.parent = this;
      }

      // Interpret the "indexed" value to create our IndexMetaData where it wasn't specified that
      // way
      if (indexMetaData == null
          && columnMetaData != null
          && indexed != null
          && indexed != IndexedValue.FALSE) {
        indexMetaData = new IndexMetaData();
        indexMetaData.setUnique(indexed == IndexedValue.UNIQUE);
        indexMetaData.addColumn(columnMetaData.getName());
        indexMetaData.parent = this;
      }
    } else {
      if (getParent() instanceof AbstractClassMetaData) {
        AbstractMemberMetaData vermmd =
            ((AbstractClassMetaData) getParent()).getMetaDataForMember(fieldName);
        if (vermmd != null && java.util.Date.class.isAssignableFrom(vermmd.getType())) {
          NucleusLogger.GENERAL.debug(
              "Setting version-strategy of field "
                  + vermmd.getFullFieldName()
                  + " to DATE_TIME since is Date-based");
          versionStrategy = VersionStrategy.DATE_TIME;
        }
      }
    }
  }
Example #11
0
  /**
   * 构造函数,构建表的基本信息
   *
   * @param Connection con 由biaoping.yin添加
   * @param dbname 表所属的数据库链接池
   * @param tableName 表的名称
   * @param primaryKeyName 表的主键名称
   * @param increment 表主键自增值
   * @param curValue 表主键当前值
   */
  public PrimaryKey(
      String dbname, String tableName, String primaryKeyName, Object customKey, Connection con) {
    this.dbname = dbname;
    dbAdapter = SQLManager.getInstance().getDBAdapter(dbname);
    this.tableName = tableName;
    this.primaryKeyName = primaryKeyName;

    JDBCPool pool = (JDBCPool) (SQLManager.getInstance().getPool(dbname));
    synsequece = pool.getJDBCPoolMetadata().synsequence();
    this.seqfunction = pool.getJDBCPoolMetadata().getSeqfunction();
    try {
      TableMetaData table = pool.getTableMetaData(con, tableName);
      if (table != null) {
        if (primaryKeyName != null) {
          ColumnMetaData cd = pool.getColumnMetaData(con, tableName, primaryKeyName);

          int type_ = cd.getDataType();
          this.setType_(type_);
        } else {
          Set keys = table.getPrimaryKeys();
          if (keys != null) {
            Iterator keyitrs = keys.iterator();
            if (keyitrs.hasNext()) {
              PrimaryKeyMetaData key = (PrimaryKeyMetaData) keyitrs.next();
              this.primaryKeyName = key.getColumnName().toLowerCase();
              this.setType_(key.getColumn().getDataType());
            }
          }
        }
      }

    } catch (Exception e) {
      e.printStackTrace();
    }
    String mode = pool.getKeygenerate();
    if (mode.trim().equalsIgnoreCase("auto")) keygenerator_mode = 0;
    else if (mode.trim().equalsIgnoreCase("composite")) keygenerator_mode = 1;
    this.customKey = customKey;
  }