private static String getPkDesc(final henplus.sqlmodel.Column col) { String pkDesc = ""; if (col.isPartOfPk()) { final ColumnPkInfo pkInfo = col.getPkInfo(); if (pkInfo.getColumnIndex() == 1) { pkDesc = pkInfo.getPkName() != null ? pkInfo.getPkName() : "*"; } else { // the pk index is greater than 1 pkDesc = pkInfo.getPkName() != null ? pkInfo.getPkName() : "*"; pkDesc = new StringBuilder(pkDesc) .append("{") .append(pkInfo.getColumnIndex()) .append("}") .toString(); } } return pkDesc; }
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); } }