Search in sources :

Example 1 with ExtendedColumn

use of henplus.view.ExtendedColumn in project henplus by neurolabs.

the class ResultTablePrinter method printResult.

public static int printResult(final TableDiffResult result) {
    /*
         * if all columns belong to the same table name, then don't report it. A
         * different table name may only occur in rare circumstance like object
         * oriented databases.
         */
    // boolean allSameTableName = true;
    /*
         * build up actual describe table.
         */
    final List<Column[]> rows = new ArrayList<Column[]>();
    if (result != null) {
        // first, print removed columns
        final SortedSet<henplus.sqlmodel.Column> removed = result.getRemovedColumns();
        if (removed != null) {
            // ExtendedColumn header = new ExtendedColumn("Removed Columns",
            // 8, ExtendedColumn.ALIGN_CENTER);
            // rows.add(header);
            appendLines(STAT_REMOVED, rows, removed);
        }
        // then, print added columns
        final SortedSet<henplus.sqlmodel.Column> added = result.getAddedColumns();
        if (added != null) {
            appendLines(STAT_ADDED, rows, added);
        }
        // at last, print modified columns
        final LinkedHashMap<henplus.sqlmodel.Column, henplus.sqlmodel.Column> modified = result.getModifiedColumns();
        if (modified != null) {
            appendModified(rows, modified);
        }
    }
    /*
         * we render the table now, since we only know know, whether we will
         * show the first column or not.
         */
    final ExtendedTableRenderer table = new ExtendedTableRenderer(DESC_META, HenPlus.out());
    for (Column[] row : rows) {
        table.addRow(row);
    }
    table.closeTable();
    return Command.SUCCESS;
}
Also used : ExtendedColumn(henplus.view.ExtendedColumn) Column(henplus.view.Column) ArrayList(java.util.ArrayList) ExtendedTableRenderer(henplus.view.ExtendedTableRenderer)

Example 2 with ExtendedColumn

use of henplus.view.ExtendedColumn in project henplus by neurolabs.

the class ResultTablePrinter method appendModified.

private static void appendModified(final List<Column[]> rows, final LinkedHashMap<henplus.sqlmodel.Column, henplus.sqlmodel.Column> modified) {
    final Iterator<henplus.sqlmodel.Column> iter = modified.keySet().iterator();
    while (iter.hasNext()) {
        final henplus.sqlmodel.Column org = iter.next();
        final henplus.sqlmodel.Column mod = modified.get(org);
        final ExtendedColumn[] orgView = new ExtendedColumn[8];
        final ExtendedColumn[] modView = new ExtendedColumn[8];
        orgView[0] = new ExtendedColumn(STAT_MODIFIED_ORG, DESC_META[0].getAlignment());
        modView[0] = new ExtendedColumn(STAT_MODIFIED_NEW, DESC_META[0].getAlignment());
        // if this was modified it doesn't matter
        orgView[1] = new ExtendedColumn(org.getPosition(), DESC_META[1].getAlignment());
        modView[1] = new ExtendedColumn(mod.getPosition(), DESC_META[1].getAlignment());
        // this should not differ
        orgView[2] = new ExtendedColumn(org.getName(), DESC_META[2].getAlignment());
        modView[2] = new ExtendedColumn(mod.getName(), DESC_META[2].getAlignment());
        final String orgType = extractType(org);
        final String modType = extractType(mod);
        orgView[3] = new ExtendedColumn(orgType, DESC_META[3].getAlignment());
        modView[3] = new ExtendedColumn(modType, DESC_META[3].getAlignment());
        if (!modType.equals(orgType)) {
            markAsChanged(modView[3]);
        }
        orgView[4] = new ExtendedColumn(org.isNullable() ? YES : NO, DESC_META[4].getAlignment());
        modView[4] = new ExtendedColumn(mod.isNullable() ? YES : NO, DESC_META[4].getAlignment());
        if (org.isNullable() != mod.isNullable()) {
            markAsChanged(modView[4]);
        }
        Logger.debug("default: %s", org.getDefault());
        final String orgDefaultVal = org.getDefault() != null ? org.getDefault().trim() : null;
        // oracle appends newline to default values for some reason.
        orgView[5] = new ExtendedColumn(orgDefaultVal, DESC_META[5].getAlignment());
        final String modDefaultVal = mod.getDefault() != null ? mod.getDefault().trim() : null;
        modView[5] = new ExtendedColumn(modDefaultVal, DESC_META[5].getAlignment());
        if (orgDefaultVal != null && !orgDefaultVal.equals(modDefaultVal) || orgDefaultVal == null && modDefaultVal != null) {
            markAsChanged(modView[5]);
        }
        // primary key
        final String pkDescOrg = getPkDesc(org);
        final String pkDescMod = getPkDesc(mod);
        orgView[6] = new ExtendedColumn(pkDescOrg, DESC_META[6].getAlignment());
        modView[6] = new ExtendedColumn(pkDescMod, DESC_META[6].getAlignment());
        // check if one of the cols has to be marked as changed
        if (org.isPartOfPk() && !mod.isPartOfPk()) {
            markAsChanged(orgView[6]);
        } else if (!org.isPartOfPk() && mod.isPartOfPk()) {
            markAsChanged(modView[6]);
        } else if (org.isPartOfPk() && mod.isPartOfPk()) {
            // compare values of pk names
            if (org.getPkInfo().getPkName() != null && !org.getPkInfo().getPkName().equals(mod.getPkInfo().getPkName())) {
                markAsChanged(modView[6]);
            }
        }
        // foreign key
        final String fkDescOrg = getFkDesc(org);
        final String fkDescMod = getFkDesc(mod);
        orgView[7] = new ExtendedColumn(fkDescOrg, DESC_META[7].getAlignment());
        modView[7] = new ExtendedColumn(fkDescMod, DESC_META[7].getAlignment());
        // check if one of the cols has to be marked as changed
        if (org.isForeignKey() && !mod.isForeignKey()) {
            markAsChanged(orgView[7]);
        } else if (!org.isForeignKey() && mod.isForeignKey()) {
            markAsChanged(modView[7]);
        } else if (org.isForeignKey() && mod.isForeignKey()) {
            // compare values of pk names
            if (!org.getFkInfo().equals(mod.getFkInfo())) {
                markAsChanged(modView[7]);
            }
        }
        rows.add(orgView);
        rows.add(modView);
    }
}
Also used : ExtendedColumn(henplus.view.ExtendedColumn) ExtendedColumn(henplus.view.ExtendedColumn) Column(henplus.view.Column)

Aggregations

Column (henplus.view.Column)2 ExtendedColumn (henplus.view.ExtendedColumn)2 ExtendedTableRenderer (henplus.view.ExtendedTableRenderer)1 ArrayList (java.util.ArrayList)1