private static void appendLines( final String symbol, final List<Column[]> rows, final SortedSet<henplus.sqlmodel.Column> rowSet) { for (henplus.sqlmodel.Column col : rowSet) { final Column[] row = new Column[8]; row[0] = new Column(symbol); row[1] = new Column(col.getPosition()); row[2] = new Column(col.getName()); final String type = extractType(col); row[3] = new Column(type); row[4] = new Column(col.isNullable() ? YES : NO); final String defaultVal = col.getDefault(); // oracle appends newline to default values for some reason. row[5] = new Column((defaultVal != null ? defaultVal.trim() : null)); // String pkdesc = (String)pks.get(colname); row[6] = new Column(getPkDesc(col)); // String fkdesc = (String)fks.get(colname); row[7] = new Column(getFkDesc(col)); rows.add(row); } }
private static String extractType(final henplus.sqlmodel.Column col) { String type = col.getType(); final int colSize = col.getSize(); if (colSize > 0) { final StringBuilder sb = new StringBuilder(type); sb.append("(").append(colSize).append(")"); type = sb.toString(); } return type; }
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 String getFkDesc(final henplus.sqlmodel.Column col) { String fkDesc = ""; final ColumnFkInfo fkInfo = col.getFkInfo(); if (fkInfo != null) { final StringBuilder sb = new StringBuilder(); if (fkInfo.getFkName() != null) { sb.append(fkInfo.getFkName()).append("\n -> "); } else { sb.append(" -> "); } sb.append(fkInfo.getPkTable()).append("(").append(fkInfo.getPkColumn()).append(")"); fkDesc = sb.toString(); } return fkDesc; }
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); } }