Repository: cayenne Updated Branches: refs/heads/master 5ce43b74d -> 63a42ca04
cleanup Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/63a42ca0 Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/63a42ca0 Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/63a42ca0 Branch: refs/heads/master Commit: 63a42ca04f90aaefe12c68aaea2b0e627fdb9373 Parents: 5ce43b7 Author: Andrus Adamchik <and...@objectstyle.com> Authored: Tue Nov 1 21:22:02 2016 +0300 Committer: Andrus Adamchik <and...@objectstyle.com> Committed: Tue Nov 1 22:02:11 2016 +0300 ---------------------------------------------------------------------- .../naming/LegacyObjectNameGenerator.java | 2 +- .../cayenne/dbsync/reverse/db/DbLoader.java | 10 +- .../cayenne/dbsync/reverse/db/ExportedKey.java | 503 +++++++++---------- 3 files changed, 239 insertions(+), 276 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cayenne/blob/63a42ca0/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/LegacyObjectNameGenerator.java ---------------------------------------------------------------------- diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/LegacyObjectNameGenerator.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/LegacyObjectNameGenerator.java index 430fbbc..cba4c47 100644 --- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/LegacyObjectNameGenerator.java +++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/LegacyObjectNameGenerator.java @@ -26,7 +26,7 @@ import org.apache.cayenne.util.Util; /** * An ObjectNameGenerator that creates names in Cayenne's old-fashioned style. I.e. the same way Cayenne did before 3.0, - * with "to" prefixes and "array" suffixes. + * with relationship "to" prefixes and "Array" suffixes. * * @since 4.0 */ http://git-wip-us.apache.org/repos/asf/cayenne/blob/63a42ca0/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java ---------------------------------------------------------------------- diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java index 7f9b780..89f5f5e 100644 --- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java +++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java @@ -187,14 +187,14 @@ public class DbLoader { continue; } - if (!new EqualsBuilder().append(pkEntity.getCatalog(), key.pkCatalog) - .append(pkEntity.getSchema(), key.pkSchema).append(fkEntity.getCatalog(), key.fkCatalog) - .append(fkEntity.getSchema(), key.fkSchema).isEquals()) { + if (!new EqualsBuilder().append(pkEntity.getCatalog(), key.getPkCatalog()) + .append(pkEntity.getSchema(), key.getPkSchema()).append(fkEntity.getCatalog(), key.getFkCatalog()) + .append(fkEntity.getSchema(), key.getFkSchema()).isEquals()) { LOGGER.info("Skip relation: '" + key + "' because it related to objects from other catalog/schema"); - LOGGER.info(" relation primary key: '" + key.pkCatalog + "." + key.pkSchema + "'"); + LOGGER.info(" relation primary key: '" + key.getPkCatalog() + "." + key.getPkSchema() + "'"); LOGGER.info(" primary key entity: '" + pkEntity.getCatalog() + "." + pkEntity.getSchema() + "'"); - LOGGER.info(" relation foreign key: '" + key.fkCatalog + "." + key.fkSchema + "'"); + LOGGER.info(" relation foreign key: '" + key.getFkCatalog() + "." + key.getFkSchema() + "'"); LOGGER.info(" foreign key entity: '" + fkEntity.getCatalog() + "." + fkEntity.getSchema() + "'"); continue; } http://git-wip-us.apache.org/repos/asf/cayenne/blob/63a42ca0/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ExportedKey.java ---------------------------------------------------------------------- diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ExportedKey.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ExportedKey.java index 080d6c4..1dfbdfb 100644 --- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ExportedKey.java +++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ExportedKey.java @@ -1,270 +1,233 @@ -/***************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - ****************************************************************/ -package org.apache.cayenne.dbsync.reverse.db; - -import org.apache.cayenne.util.EqualsBuilder; -import org.apache.cayenne.util.HashCodeBuilder; -import org.apache.commons.lang.builder.CompareToBuilder; - -import java.sql.ResultSet; -import java.sql.SQLException; - -/** - * ExportedKey is an representation of relationship between two tables - * in database. It can be used for creating names for relationships - * - * Example: - * Table A with primary key ID - * Table B with primary key ID and foreign key A_ID - * - * In that case ExportedKey will be: - * pkTable: A - * pkColumn: A.ID - * fkTable: B - * fkColumn: B.A_ID - * fkName: name of foreign key - * pkName: - * keySeq: TODO - * - */ -public class ExportedKey implements Comparable { - - public final String pkCatalog; - public final String pkSchema; - /** - * Name of source table - */ - public final String pkTable; - - /** - * Name of source column - */ - public final String pkColumn; - - public final String fkCatalog; - public final String fkSchema; - /** - * Name of destination table - */ - public final String fkTable; - - /** - * Name of destination column - */ - public final String fkColumn; - - /** - * Name of foreign key (might be null) - */ - public final String fkName; - - /** - * Name of primary key (might be null) - */ - public final String pkName; - - - public final short keySeq; - - public ExportedKey(String pkTable, String pkColumn, String pkName, - String fkTable, String fkColumn, String fkName, short keySeq) { - this(null, null, pkTable, pkColumn, pkName, null, null, fkTable, fkColumn, fkName, keySeq); - } - - public ExportedKey(String pkCatalog, String pkSchema, String pkTable, String pkColumn, String pkName, - String fkCatalog, String fkSchema, String fkTable, String fkColumn, String fkName, short keySeq) { - this.pkCatalog = pkCatalog; - this.pkSchema = pkSchema; - this.pkTable = pkTable; - this.pkColumn = pkColumn; - this.pkName = pkName; - this.fkCatalog = fkCatalog; - this.fkSchema = fkSchema; - this.fkTable = fkTable; - this.fkColumn = fkColumn; - this.fkName = fkName; - this.keySeq = keySeq; - } - - /** - * Extracts data from a resultset pointing to a exported key to - * ExportedKey class instance - * - * @param rs ResultSet pointing to a exported key, fetched using - * DataBaseMetaData.getExportedKeys(...) - */ - public static ExportedKey extractData(ResultSet rs) throws SQLException { - return new ExportedKey( - rs.getString("PKTABLE_CAT"), - rs.getString("PKTABLE_SCHEM"), - rs.getString("PKTABLE_NAME"), - rs.getString("PKCOLUMN_NAME"), - rs.getString("PK_NAME"), - rs.getString("FKTABLE_CAT"), - rs.getString("FKTABLE_SCHEM"), - rs.getString("FKTABLE_NAME"), - rs.getString("FKCOLUMN_NAME"), - rs.getString("FK_NAME"), - rs.getShort("KEY_SEQ") - ); - } - - - public String getPkCatalog() { - return pkCatalog; - } - - public String getPkSchema() { - return pkSchema; - } - - public String getFkCatalog() { - return fkCatalog; - } - - public String getFkSchema() { - return fkSchema; - } - - /** - * @return source table name - */ - public String getPKTableName() { - return pkTable; - } - - /** - * @return destination table name - */ - public String getFKTableName() { - return fkTable; - } - - /** - * @return source column name - */ - public String getPKColumnName() { - return pkColumn; - } - - /** - * @return destination column name - */ - public String getFKColumnName() { - return fkColumn; - } - - /** - * @return PK name - */ - public String getPKName() { - return pkName; - } - - /** - * @return FK name - */ - public String getFKName() { - return fkName; - } - - public short getKeySeq() { - return keySeq; - } - - - @Override - public boolean equals(Object obj) { - if (obj == null) { - return false; - } - if (obj == this) { - return true; - } - if (obj.getClass() != getClass()) { - return false; - } - ExportedKey rhs = (ExportedKey) obj; - return new EqualsBuilder() - .append(this.pkCatalog, rhs.pkCatalog) - .append(this.pkSchema, rhs.pkSchema) - .append(this.pkTable, rhs.pkTable) - .append(this.pkColumn, rhs.pkColumn) - .append(this.fkCatalog, rhs.fkCatalog) - .append(this.fkSchema, rhs.fkSchema) - .append(this.fkTable, rhs.fkTable) - .append(this.fkColumn, rhs.fkColumn) - .append(this.fkName, rhs.fkName) - .append(this.pkName, rhs.pkName) - .append(this.keySeq, rhs.keySeq) - .isEquals(); - } - - @Override - public int hashCode() { - return new HashCodeBuilder() - .append(pkCatalog) - .append(pkSchema) - .append(pkTable) - .append(pkColumn) - .append(fkCatalog) - .append(fkSchema) - .append(fkTable) - .append(fkColumn) - .append(fkName) - .append(pkName) - .append(keySeq) - .toHashCode(); - } - - @Override - public int compareTo(Object obj) { - if (obj == null || !obj.getClass().equals(getClass())) { - throw new IllegalArgumentException(); - } - if (obj == this) { - return 0; - } - - ExportedKey rhs = (ExportedKey) obj; - return new CompareToBuilder() - .append(pkCatalog, rhs.pkCatalog) - .append(pkSchema, rhs.pkSchema) - .append(pkTable, rhs.pkTable) - .append(pkName, rhs.pkName) - .append(fkCatalog, rhs.fkCatalog) - .append(fkSchema, rhs.fkSchema) - .append(fkTable, rhs.fkTable) - .append(fkName, rhs.fkName) - .append(keySeq, rhs.keySeq) - .append(pkColumn, rhs.pkColumn) - .append(fkColumn, rhs.fkColumn) - .toComparison(); - } - - @Override - public String toString() { - return getStrKey() + " # " + keySeq; - } - - public String getStrKey() { - return pkCatalog + "." + pkSchema + "." + pkTable + "." + pkColumn - + " <- " + fkCatalog + "." + fkSchema + "." + fkTable + "." + fkColumn; - } -} +/***************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + ****************************************************************/ +package org.apache.cayenne.dbsync.reverse.db; + +import org.apache.cayenne.util.EqualsBuilder; +import org.apache.cayenne.util.HashCodeBuilder; +import org.apache.commons.lang.builder.CompareToBuilder; + +import java.sql.ResultSet; +import java.sql.SQLException; + +/** + * ExportedKey is an representation of relationship between two tables in database. It can be used for creating names + * for relationships. + * + * @since 4.0 + */ +public class ExportedKey implements Comparable { + + private final String pkCatalog; + private final String pkSchema; + private final String pkTable; + private final String pkColumn; + private final String fkCatalog; + private final String fkSchema; + private final String fkTable; + private final String fkColumn; + private final String fkName; + private final String pkName; + private final short keySeq; + + public ExportedKey(String pkTable, String pkColumn, String pkName, + String fkTable, String fkColumn, String fkName, short keySeq) { + this(null, null, pkTable, pkColumn, pkName, null, null, fkTable, fkColumn, fkName, keySeq); + } + + public ExportedKey(String pkCatalog, String pkSchema, String pkTable, String pkColumn, String pkName, + String fkCatalog, String fkSchema, String fkTable, String fkColumn, String fkName, short keySeq) { + this.pkCatalog = pkCatalog; + this.pkSchema = pkSchema; + this.pkTable = pkTable; + this.pkColumn = pkColumn; + this.pkName = pkName; + this.fkCatalog = fkCatalog; + this.fkSchema = fkSchema; + this.fkTable = fkTable; + this.fkColumn = fkColumn; + this.fkName = fkName; + this.keySeq = keySeq; + } + + /** + * Extracts data from a resultset pointing to a exported key to + * ExportedKey class instance + * + * @param rs ResultSet pointing to a exported key, fetched using + * DataBaseMetaData.getExportedKeys(...) + */ + public static ExportedKey extractData(ResultSet rs) throws SQLException { + return new ExportedKey( + rs.getString("PKTABLE_CAT"), + rs.getString("PKTABLE_SCHEM"), + rs.getString("PKTABLE_NAME"), + rs.getString("PKCOLUMN_NAME"), + rs.getString("PK_NAME"), + rs.getString("FKTABLE_CAT"), + rs.getString("FKTABLE_SCHEM"), + rs.getString("FKTABLE_NAME"), + rs.getString("FKCOLUMN_NAME"), + rs.getString("FK_NAME"), + rs.getShort("KEY_SEQ") + ); + } + + + public String getPkCatalog() { + return pkCatalog; + } + + public String getPkSchema() { + return pkSchema; + } + + public String getFkCatalog() { + return fkCatalog; + } + + public String getFkSchema() { + return fkSchema; + } + + /** + * @return source table name + */ + public String getPKTableName() { + return pkTable; + } + + /** + * @return destination table name + */ + public String getFKTableName() { + return fkTable; + } + + /** + * @return source column name + */ + public String getPKColumnName() { + return pkColumn; + } + + /** + * @return destination column name + */ + public String getFKColumnName() { + return fkColumn; + } + + /** + * @return PK name + */ + public String getPKName() { + return pkName; + } + + /** + * @return FK name + */ + public String getFKName() { + return fkName; + } + + public short getKeySeq() { + return keySeq; + } + + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + if (obj == this) { + return true; + } + if (obj.getClass() != getClass()) { + return false; + } + ExportedKey rhs = (ExportedKey) obj; + return new EqualsBuilder() + .append(this.pkCatalog, rhs.pkCatalog) + .append(this.pkSchema, rhs.pkSchema) + .append(this.pkTable, rhs.pkTable) + .append(this.pkColumn, rhs.pkColumn) + .append(this.fkCatalog, rhs.fkCatalog) + .append(this.fkSchema, rhs.fkSchema) + .append(this.fkTable, rhs.fkTable) + .append(this.fkColumn, rhs.fkColumn) + .append(this.fkName, rhs.fkName) + .append(this.pkName, rhs.pkName) + .append(this.keySeq, rhs.keySeq) + .isEquals(); + } + + @Override + public int hashCode() { + return new HashCodeBuilder() + .append(pkCatalog) + .append(pkSchema) + .append(pkTable) + .append(pkColumn) + .append(fkCatalog) + .append(fkSchema) + .append(fkTable) + .append(fkColumn) + .append(fkName) + .append(pkName) + .append(keySeq) + .toHashCode(); + } + + @Override + public int compareTo(Object obj) { + if (obj == null || !obj.getClass().equals(getClass())) { + throw new IllegalArgumentException(); + } + if (obj == this) { + return 0; + } + + ExportedKey rhs = (ExportedKey) obj; + return new CompareToBuilder() + .append(pkCatalog, rhs.pkCatalog) + .append(pkSchema, rhs.pkSchema) + .append(pkTable, rhs.pkTable) + .append(pkName, rhs.pkName) + .append(fkCatalog, rhs.fkCatalog) + .append(fkSchema, rhs.fkSchema) + .append(fkTable, rhs.fkTable) + .append(fkName, rhs.fkName) + .append(keySeq, rhs.keySeq) + .append(pkColumn, rhs.pkColumn) + .append(fkColumn, rhs.fkColumn) + .toComparison(); + } + + @Override + public String toString() { + return getStrKey() + " # " + keySeq; + } + + public String getStrKey() { + return pkCatalog + "." + pkSchema + "." + pkTable + "." + pkColumn + + " <- " + fkCatalog + "." + fkSchema + "." + fkTable + "." + fkColumn; + } +}