Package org.apache.ddlutils.model

Examples of org.apache.ddlutils.model.Column


        if (columnChanges != null)
        {
            for (Iterator changesPerColumnIt = columnChanges.entrySet().iterator(); changesPerColumnIt.hasNext();)
            {
                Map.Entry entry            = (Map.Entry)changesPerColumnIt.next();
                Column    sourceColumn     = (Column)entry.getKey();
                ArrayList changesPerColumn = (ArrayList)entry.getValue();

                // Sybase does not like us to use the ALTER TABLE ALTER statement if we don't actually
                // change the datatype or the required constraint but only the default value
                // Thus, if we only have to change the default, we use a different handler
                if ((changesPerColumn.size() == 1) && (changesPerColumn.get(0) instanceof ColumnDefaultValueChange))
                {
                    processChange(currentModel,
                                  desiredModel,
                                  (ColumnDefaultValueChange)changesPerColumn.get(0));
                }
                else
                {
                    Column targetColumn = targetTable.findColumn(sourceColumn.getName(),
                                                                 getPlatform().isDelimitedIdentifierModeOn());

                    processColumnChange(sourceTable, targetTable, sourceColumn, targetColumn);
                }
                for (Iterator changeIt = changesPerColumn.iterator(); changeIt.hasNext();)
View Full Code Here


        printIndent();
        print("REPLACE ");
        printIdentifier(getColumnName(change.getChangedColumn()));

        Table  curTable  = currentModel.findTable(change.getChangedTable().getName(), getPlatform().isDelimitedIdentifierModeOn());
        Column curColumn = curTable.findColumn(change.getChangedColumn().getName(), getPlatform().isDelimitedIdentifierModeOn());

        print(" DEFAULT ");
        if (isValidDefaultValue(change.getNewDefaultValue(), curColumn.getTypeCode()))
        {
            printDefaultValue(change.getNewDefaultValue(), curColumn.getTypeCode());
        }
        else
        {
            print("NULL");
        }
View Full Code Here

  /**
     * {@inheritDoc}
     */
    protected Column readColumn(DatabaseMetaDataWrapper metaData, Map values) throws SQLException
    {
    Column column = super.readColumn(metaData, values);

    if ((column.getTypeCode() == Types.DECIMAL) && (column.getSizeAsInt() == 19) && (column.getScale() == 0))
    {
      // Back-mapping to BIGINT
      column.setTypeCode(Types.BIGINT);
    }
        else if (column.getDefaultValue() != null)
        {
        if (column.getTypeCode() == Types.TIMESTAMP)
        {
          // Sybase maintains the default values for DATE/TIME jdbc types, so we have to
          // migrate the default value to TIMESTAMP
          PatternMatcher matcher   = new Perl5Matcher();
          Timestamp      timestamp = null;
   
          if (matcher.matches(column.getDefaultValue(), _isoDatePattern))
          {
            timestamp = new Timestamp(Date.valueOf(matcher.getMatch().group(1)).getTime());
          }
          else if (matcher.matches(column.getDefaultValue(), _isoTimePattern))
          {
            timestamp = new Timestamp(Time.valueOf(matcher.getMatch().group(1)).getTime());
          }
          if (timestamp != null)
          {
            column.setDefaultValue(timestamp.toString());
          }
        }
            else if (TypeMap.isTextType(column.getTypeCode()))
            {
                column.setDefaultValue(unescape(column.getDefaultValue(), "'", "''"));
            }
        }
    return column;
  }
View Full Code Here

            ResultSet rs = prepStmt.executeQuery();

            while (rs.next())
            {
                String columnName = rs.getString(1).trim();
                Column column     = table.findColumn(columnName, getPlatform().isDelimitedIdentifierModeOn());

                if (column != null)
                {
                    String defaultValue = rs.getString(2);

                    if (!rs.wasNull() && (defaultValue != null))
                    {
                        defaultValue = defaultValue.trim();
                        if (defaultValue.startsWith("DEFAULT "))
                        {
                            defaultValue = defaultValue.substring("DEFAULT ".length());
                        }
                        column.setDefaultValue(defaultValue);
                    }
                   
                    short   precision          = rs.getShort(3);
                    boolean precisionSpecified = !rs.wasNull();
                    short   scale              = rs.getShort(4);
                    boolean scaleSpecified     = !rs.wasNull();

                    if (precisionSpecified)
                    {
                        // for some reason, Interbase stores the negative scale
                        column.setSizeAndScale(precision, scaleSpecified ? -scale : 0);
                    }

                    short dbType      = rs.getShort(5);
                    short blobSubType = rs.getShort(6);

                    // CLOBs are returned by the driver as VARCHAR
                    if (!rs.wasNull() && (dbType == 261) && (blobSubType == 1))
                    {
                        column.setTypeCode(Types.CLOB);
                    }
                }
            }
            rs.close();
        }
View Full Code Here

            ResultSet rs = stmt.executeQuery("SELECT RDB$GENERATOR_NAME FROM RDB$GENERATORS");

            while (rs.next())
            {
                String generatorName = rs.getString(1).trim();
                Column column        = (Column)names.get(generatorName);

                if (column != null)
                {
                    column.setAutoIncrement(true);
                }
            }
            rs.close();
        }
        finally
View Full Code Here

    /**
     * {@inheritDoc}
     */
    protected Column readColumn(DatabaseMetaDataWrapper metaData, Map values) throws SQLException
    {
        Column column = super.readColumn(metaData, values);

        // MySQL converts illegal date/time/timestamp values to "0000-00-00 00:00:00", but this
        // is an illegal ISO value, so we replace it with NULL
        if ((column.getTypeCode() == Types.TIMESTAMP) &&
            "0000-00-00 00:00:00".equals(column.getDefaultValue()))
        {
            column.setDefaultValue(null);
        }
        return column;
    }
View Full Code Here

    /**
     * {@inheritDoc}
     */
    protected Column readColumn(DatabaseMetaDataWrapper metaData, Map values) throws SQLException
    {
        Column column       = super.readColumn(metaData, values);
        String defaultValue = column.getDefaultValue();

        if (defaultValue != null)
        {
            // we check for these strings
            //   GENERATED_BY_DEFAULT               -> 'GENERATED BY DEFAULT AS IDENTITY'
            //   AUTOINCREMENT: start 1 increment 1 -> 'GENERATED ALWAYS AS IDENTITY'
            if ("GENERATED_BY_DEFAULT".equals(defaultValue) || defaultValue.startsWith("AUTOINCREMENT:"))
            {
                column.setDefaultValue(null);
                column.setAutoIncrement(true);
            }
            else if (TypeMap.isTextType(column.getTypeCode()))
            {
                column.setDefaultValue(unescape(defaultValue, "'", "''"));
            }
        }
        return column;
    }
View Full Code Here

    /**
     * {@inheritDoc}
     */
    protected Column readColumn(DatabaseMetaDataWrapper metaData, Map values) throws SQLException
    {
        Column column = super.readColumn(metaData, values);

        // make sure the defaultvalue is null when an empty is returned.
        if ("".equals(column.getDefaultValue()))
        {
            column.setDefaultValue(null);
        }
        return column;
    }
View Full Code Here

                changeIt.remove();
            }
        }
        for (Iterator columnIt = changedColumns.iterator(); columnIt.hasNext();)
        {
            Column sourceColumn = (Column)columnIt.next();
            Column targetColumn = targetTable.findColumn(sourceColumn.getName(), getPlatform().isDelimitedIdentifierModeOn());

            processColumnChange(sourceTable, targetTable, sourceColumn, targetColumn);
        }
    }
View Full Code Here

  /**
     * {@inheritDoc}
     */
    protected Column readColumn(DatabaseMetaDataWrapper metaData, Map values) throws SQLException
    {
    Column column = super.readColumn(metaData, values);

    if (column.getDefaultValue() != null)
    {
      // Oracle pads the default value with spaces
      column.setDefaultValue(column.getDefaultValue().trim());
    }
    if (column.getTypeCode() == Types.DECIMAL)
    {
      // We're back-mapping the NUMBER columns returned by Oracle
      // Note that the JDBC driver returns DECIMAL for these NUMBER columns
      switch (column.getSizeAsInt())
      {
        case 1:
          if (column.getScale() == 0)
          {
            column.setTypeCode(Types.BIT);
          }
          break;
        case 3:
          if (column.getScale() == 0)
          {
            column.setTypeCode(Types.TINYINT);
          }
          break;
        case 5:
          if (column.getScale() == 0)
          {
            column.setTypeCode(Types.SMALLINT);
          }
          break;
        case 18:
          column.setTypeCode(Types.REAL);
          break;
        case 22:
          if (column.getScale() == 0)
          {
            column.setTypeCode(Types.INTEGER);
          }
          break;
        case 38:
          if (column.getScale() == 0)
          {
            column.setTypeCode(Types.BIGINT);
          }
          else
          {
            column.setTypeCode(Types.DOUBLE);
          }
          break;
      }
    }
    else if (column.getTypeCode() == Types.FLOAT)
    {
      // Same for REAL, FLOAT, DOUBLE PRECISION, which all back-map to FLOAT but with
      // different sizes (63 for REAL, 126 for FLOAT/DOUBLE PRECISION)
      switch (column.getSizeAsInt())
      {
        case 63:
          column.setTypeCode(Types.REAL);
          break;
        case 126:
          column.setTypeCode(Types.DOUBLE);
          break;
      }
    }
    else if ((column.getTypeCode() == Types.DATE) || (column.getTypeCode() == Types.TIMESTAMP))
    {
      // Oracle has only one DATE/TIME type, so we can't know which it is and thus map
      // it back to TIMESTAMP
      column.setTypeCode(Types.TIMESTAMP);

      // we also reverse the ISO-format adaptation, and adjust the default value to timestamp
      if (column.getDefaultValue() != null)
      {
        PatternMatcher matcher   = new Perl5Matcher();
        Timestamp      timestamp = null;
 
        if (matcher.matches(column.getDefaultValue(), _oracleIsoTimestampPattern))
        {
          String timestampVal = matcher.getMatch().group(1);

          timestamp = Timestamp.valueOf(timestampVal);
        }
        else if (matcher.matches(column.getDefaultValue(), _oracleIsoDatePattern))
        {
          String dateVal = matcher.getMatch().group(1);

          timestamp = new Timestamp(Date.valueOf(dateVal).getTime());
        }
        else if (matcher.matches(column.getDefaultValue(), _oracleIsoTimePattern))
        {
          String timeVal = matcher.getMatch().group(1);

          timestamp = new Timestamp(Time.valueOf(timeVal).getTime());
        }
        if (timestamp != null)
        {
          column.setDefaultValue(timestamp.toString());
        }
      }
    }
        else if (TypeMap.isTextType(column.getTypeCode()))
        {
            column.setDefaultValue(unescape(column.getDefaultValue(), "'", "''"));
        }
    return column;
  }
View Full Code Here

TOP

Related Classes of org.apache.ddlutils.model.Column

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.