/** * Return all pairs that is not in the same table but with the same type and the same column name */ private List<Pair<TableColumn, TableColumn>> getNameMatchedPairs(List<TableInstance> tables) { if (tables.size() == 1) { return null; } List<Pair<TableColumn, TableColumn>> pairs = new LinkedList<Pair<TableColumn, TableColumn>>(); List<TableColumn> allColumns = new LinkedList<TableColumn>(); for (TableInstance t : tables) { allColumns.addAll(t.getColumns()); } for (int i = 0; i < allColumns.size(); i++) { for (int j = i; j < allColumns.size(); j++) { TableColumn c1 = allColumns.get(i); TableColumn c2 = allColumns.get(j); if (c1.isKey() && c2.isKey()) { continue; } if (TableUtils.sameType(c1, c2) && !c1.getTableName().equals(c2.getTableName()) && this.columnMatched(c1, c2)) { Pair<TableColumn, TableColumn> p = new Pair<TableColumn, TableColumn>(c1, c2); pairs.add(p); } } } return pairs; }