use of com.manydesigns.portofino.model.Model in project Portofino by ManyDesigns.
the class TableTest method testActualColumnNames.
public void testActualColumnNames() {
Model model = new Model();
Database db = new Database();
db.setConnectionProvider(new JdbcConnectionProvider());
db.setDatabaseName("portofino");
Schema schema = new Schema();
schema.setDatabase(db);
db.getSchemas().add(schema);
schema.setSchemaName("meta");
Table table = new Table();
table.setSchema(schema);
table.setTableName("ignore");
schema.getTables().add(table);
Column column = new Column();
column.setTable(table);
column.setColumnName(" ab!!!..acus$%/()");
column.setColumnType("varchar");
column.setLength(0);
column.setScale(0);
table.getColumns().add(column);
model.getDatabases().add(db);
model.init(new PropertiesConfiguration());
assertNotNull(column.getActualPropertyName());
assertEquals("_ab_____acus$____", column.getActualPropertyName());
table = new Table();
table.setSchema(schema);
table.setTableName("ignore");
column = new Column();
column.setTable(table);
column.setColumnName("0DPrpt");
column.setColumnType("varchar");
column.setLength(0);
column.setScale(0);
table.getColumns().add(column);
schema.getTables().clear();
schema.getTables().add(table);
model.init(null);
assertEquals("_0dprpt", column.getActualPropertyName());
column.setColumnName("XYZéèçò°àùì");
model.init(null);
assertEquals("xyzéèçò_àùì", column.getActualPropertyName());
column.setColumnName("ĖĔĕĘĘŜŞŝōŎľĿʛʋʊɪɩɨɷ");
model.init(null);
assertEquals("ĖĔĕĘĘŜŞŝōŎľĿʛʋʊɪɩɨɷ", column.getActualPropertyName());
}
use of com.manydesigns.portofino.model.Model in project Portofino by ManyDesigns.
the class TableTest method testDuplicatePropertyNames.
public void testDuplicatePropertyNames() {
Model model = new Model();
Database db = new Database();
db.setDatabaseName("portofino");
db.setConnectionProvider(new JdbcConnectionProvider());
Schema schema = new Schema();
schema.setDatabase(db);
db.getSchemas().add(schema);
schema.setSchemaName("meta");
Table table = new Table();
table.setSchema(schema);
table.setTableName("ignore");
schema.getTables().add(table);
Column column = new Column();
column.setTable(table);
column.setColumnName("dup");
column.setColumnType("varchar");
column.setLength(0);
column.setScale(0);
table.getColumns().add(column);
Column column2 = new Column();
column2.setTable(table);
column2.setColumnName("dup");
column2.setColumnType("number");
column2.setLength(0);
column2.setScale(0);
table.getColumns().add(column2);
model.getDatabases().add(db);
model.init(new PropertiesConfiguration());
assertFalse(StringUtils.equals(column.getActualPropertyName(), column2.getActualPropertyName()));
Table table2 = new Table();
table2.setSchema(schema);
table2.setTableName("ignore2");
schema.getTables().add(table2);
Column column3 = new Column();
column3.setTable(table2);
column3.setColumnName("dup");
column3.setColumnType("date");
column3.setLength(0);
column3.setScale(0);
table2.getColumns().add(column3);
ForeignKey fk = new ForeignKey(table);
fk.setToSchema("meta");
fk.setToTableName("ignore2");
fk.setToDatabase("portofino");
fk.setName("dup");
Reference ref = new Reference(fk);
ref.setFromColumn("dup");
ref.setToColumn("dup");
fk.getReferences().add(ref);
table.getForeignKeys().add(fk);
model.init(null);
assertFalse(StringUtils.equals(column.getActualPropertyName(), column2.getActualPropertyName()));
assertFalse(StringUtils.equals(column.getActualPropertyName(), fk.getActualOnePropertyName()));
assertFalse(StringUtils.equals(column3.getActualPropertyName(), fk.getActualManyPropertyName()));
fk.setName("dup_2");
model.init(null);
assertFalse(StringUtils.equals(column.getActualPropertyName(), column2.getActualPropertyName()));
assertFalse(StringUtils.equals(column.getActualPropertyName(), fk.getActualOnePropertyName()));
assertFalse(StringUtils.equals(column3.getActualPropertyName(), fk.getActualManyPropertyName()));
}
use of com.manydesigns.portofino.model.Model in project Portofino by ManyDesigns.
the class QueryUtils method getRelatedObjects.
/**
* Navigates a ...-to-many relationship returning the list of objects associated with a given entity.
* @param persistence the persistence object
* @param databaseName the name of the database (connection provider)
* @param entityName the type (entity name) of the master object
* @param obj the master object
* @param oneToManyRelationshipName the name of the relationship to navigate
* @return the list of associated objects
*/
@SuppressWarnings({ "unchecked" })
public static List<Object> getRelatedObjects(Persistence persistence, String databaseName, String entityName, Object obj, String oneToManyRelationshipName) {
Model model = persistence.getModel();
ForeignKey relationship = DatabaseLogic.findOneToManyRelationship(model, databaseName, entityName, oneToManyRelationshipName);
if (relationship == null) {
throw new IllegalArgumentException("Relationship not defined: " + oneToManyRelationshipName);
}
Table fromTable = relationship.getFromTable();
Session session = persistence.getSession(fromTable.getDatabaseName());
ClassAccessor toAccessor = persistence.getTableAccessor(databaseName, entityName);
try {
CriteriaDefinition criteria = createCriteria(session, fromTable);
List<Predicate> where = new ArrayList<>();
for (Reference reference : relationship.getReferences()) {
Column fromColumn = reference.getActualFromColumn();
Column toColumn = reference.getActualToColumn();
PropertyAccessor toPropertyAccessor = toAccessor.getProperty(toColumn.getActualPropertyName());
Object toValue = toPropertyAccessor.get(obj);
where.add(criteria.builder.equal(criteria.root.get(fromColumn.getActualPropertyName()), toValue));
}
return session.createQuery(criteria.query.where(where.toArray(new Predicate[0]))).list();
} catch (Throwable e) {
String msg = String.format("Cannot access relationship %s on entity %s.%s", oneToManyRelationshipName, databaseName, entityName);
logger.warn(msg, e);
}
return null;
}
use of com.manydesigns.portofino.model.Model in project Portofino by ManyDesigns.
the class QueryUtilsTest method testMergeQueryWithAlias.
public void testMergeQueryWithAlias() throws NoSuchFieldException {
Model model = new Model();
Database database = new Database();
database.setDatabaseName("db");
model.getDatabases().add(database);
Schema schema = new Schema(database);
schema.setSchemaName("schema");
database.getSchemas().add(schema);
Table table = new Table(schema);
table.setTableName("test_table");
schema.getTables().add(table);
Column column = new Column(table);
column.setColumnName("column1");
column.setColumnType("varchar");
column.setLength(10);
column.setScale(0);
table.getColumns().add(column);
PrimaryKey primaryKey = new PrimaryKey(table);
PrimaryKeyColumn pkColumn = new PrimaryKeyColumn(primaryKey);
primaryKey.getPrimaryKeyColumns().add(pkColumn);
pkColumn.setColumnName("column1");
table.setPrimaryKey(primaryKey);
model.init(new PropertiesConfiguration());
TableAccessor tableAccessor = new TableAccessor(table);
TableCriteria criteria = new TableCriteria(table);
criteria.eq(tableAccessor.getProperty("column1"), "123");
// W/o select
QueryStringWithParameters queryStringWithParameters = QueryUtils.mergeQuery("from test_table t", criteria, null);
assertEquals("FROM test_table t WHERE t.column1 = :p1", queryStringWithParameters.getQueryString());
queryStringWithParameters = QueryUtils.mergeQuery("from test_table t where t.foo = 1", criteria, null);
assertEquals("FROM test_table t WHERE (t.foo = 1) AND t.column1 = :p1", queryStringWithParameters.getQueryString());
queryStringWithParameters = QueryUtils.mergeQuery("from test_table t, other where t.foo = other.bar", criteria, null);
assertEquals("FROM test_table t, other WHERE (t.foo = other.bar) AND t.column1 = :p1", queryStringWithParameters.getQueryString());
queryStringWithParameters = QueryUtils.mergeQuery("from test_table t, other x where t.foo = x.bar", criteria, null);
assertEquals("FROM test_table t, other x WHERE (t.foo = x.bar) AND t.column1 = :p1", queryStringWithParameters.getQueryString());
// W/select
queryStringWithParameters = QueryUtils.mergeQuery("select t from test_table t", criteria, null);
assertEquals("SELECT t FROM test_table t WHERE t.column1 = :p1", queryStringWithParameters.getQueryString());
queryStringWithParameters = QueryUtils.mergeQuery("select t from test_table t where t.foo = 1", criteria, null);
assertEquals("SELECT t FROM test_table t WHERE (t.foo = 1) AND t.column1 = :p1", queryStringWithParameters.getQueryString());
queryStringWithParameters = QueryUtils.mergeQuery("select t from test_table t, other where t.foo = other.bar", criteria, null);
assertEquals("SELECT t FROM test_table t, other WHERE (t.foo = other.bar) AND t.column1 = :p1", queryStringWithParameters.getQueryString());
queryStringWithParameters = QueryUtils.mergeQuery("select t from test_table t, other x where t.foo = x.bar", criteria, null);
assertEquals("SELECT t FROM test_table t, other x WHERE (t.foo = x.bar) AND t.column1 = :p1", queryStringWithParameters.getQueryString());
// W/multiple select
queryStringWithParameters = QueryUtils.mergeQuery("select t, u from test_table t", criteria, null);
assertEquals("SELECT t, u FROM test_table t WHERE t.column1 = :p1", queryStringWithParameters.getQueryString());
queryStringWithParameters = QueryUtils.mergeQuery("select t, u from test_table t where t.foo = 1", criteria, null);
assertEquals("SELECT t, u FROM test_table t WHERE (t.foo = 1) AND t.column1 = :p1", queryStringWithParameters.getQueryString());
queryStringWithParameters = QueryUtils.mergeQuery("select t, u from test_table t, other where t.foo = other.bar", criteria, null);
assertEquals("SELECT t, u FROM test_table t, other WHERE (t.foo = other.bar) AND t.column1 = :p1", queryStringWithParameters.getQueryString());
queryStringWithParameters = QueryUtils.mergeQuery("select t, u from test_table t, other x where t.foo = x.bar", criteria, null);
assertEquals("SELECT t, u FROM test_table t, other x WHERE (t.foo = x.bar) AND t.column1 = :p1", queryStringWithParameters.getQueryString());
}
use of com.manydesigns.portofino.model.Model in project Portofino by ManyDesigns.
the class TableTest method testActualEntityNames.
public void testActualEntityNames() {
Model model = new Model();
Database db = new Database();
db.setDatabaseName("portofino");
Schema schema = new Schema();
schema.setDatabase(db);
schema.setSchemaName("meta");
Table table = new Table();
table.setSchema(schema);
table.setTableName(" ab!!!..acus$%/()");
model.getDatabases().add(db);
table.init(model, null);
assertNotNull(table.getActualEntityName());
assertEquals("_ab_____acus$____", table.getActualEntityName());
System.out.println(table.getActualEntityName());
table = new Table();
table.setSchema(schema);
table.setTableName("0DPrpt");
table.init(model, null);
assertEquals("_0dprpt", table.getActualEntityName());
System.out.println(table.getActualEntityName());
db = new Database();
db.setDatabaseName("1portofino");
schema = new Schema();
schema.setDatabase(db);
schema.setSchemaName("meta");
table = new Table();
table.setSchema(schema);
table.setTableName("0DPrpt");
table.init(model, null);
assertEquals("_0dprpt", table.getActualEntityName());
System.out.println(table.getActualEntityName());
db = new Database();
db.setDatabaseName("$1portofino");
schema = new Schema();
schema.setDatabase(db);
schema.setSchemaName("meta");
table = new Table();
table.setSchema(schema);
table.setTableName("0DPrpt");
table.init(model, null);
assertEquals("_0dprpt", table.getActualEntityName());
System.out.println(table.getActualEntityName());
db = new Database();
db.setDatabaseName(".portofino");
table.setTableName("0DPrpt");
table.init(model, null);
assertEquals("_0dprpt", table.getActualEntityName());
System.out.println(table.getActualEntityName());
table.setTableName("XYZéèçò°àùì");
table.init(model, null);
assertEquals("xyzéèçò_àùì", table.getActualEntityName());
System.out.println(table.getActualEntityName());
table.setTableName("ĖĔĕĘĘŜŞŝōŎľĿʛʋʊɪɩɨɷ");
table.init(model, null);
assertEquals("ĖĔĕĘĘŜŞŝōŎľĿʛʋʊɪɩɨɷ", table.getActualEntityName());
System.out.println(table.getActualEntityName());
}
Aggregations