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;
}
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);
}
}
Aggregations