/** * Adds a foreign key to the given table. The referenced primary key must already exist. The column names should be in key order. * @param name * @param columnNames * @param referenceTable - schema qualified reference table name * @param table * @return * @throws MetadataException */ public ForeignKey addForeignKey(String name, List<String> columnNames, String referenceTable, Table table) { return addForeignKey(name, columnNames, null, referenceTable, table); }
@Deprecated public ForeignKey addForiegnKey(String name, List<String> columnNames, List<String> referencedColumnNames, String referenceTable, Table table) { return addForeignKey(name, columnNames, referencedColumnNames, referenceTable, table); }
@Deprecated public ForeignKey addForiegnKey(String name, List<String> columnNames, String referenceTable, Table table) { return addForeignKey(name, columnNames, null, referenceTable, table); }
private void addForeignKey(MetadataFactory mf, String name, List<String> columnNames, String referenceTable, Table table) throws TranslatorException { ForeignKey fk = mf.addForeignKey("FK_"+name, columnNames, referenceTable, table); for (String column:columnNames) { Column c = table.getColumnByName(column); c.setProperty(KEY_ASSOSIATED_WITH_FOREIGN_TABLE, mf.getName()+Tokens.DOT+referenceTable); } fk.setNameInSource(name); }
ForeignKey fk = metadataFactory.addForeignKey(entry.getKey(), new ArrayList<String>(info.keyColumns.values()), new ArrayList<String>(info.referencedKeyColumns.values()), info.pkTable.table.getName(), tableInfo.table); if (record != null) { fk.setReferenceKey(record);
ArrayList<String> columnNames = new ArrayList<String>(); columnNames.add(col.getName()); ForeignKey fk = metadataFactory.addForeignKey(name, columnNames, parent.getName(), child);
final public AbstractMetadataRecord foreignKey(MetadataFactory factory, Table table, String name) throws ParseException { List<String> columnNames = null; String viewName = null; Table reference = null; KeyRecord pk = null; Column column = null; List<String> pkColumnNames = null; KeyRecord key = null; jj_consume_token(FOREIGN); jj_consume_token(KEY); columnNames = columnList(true, false); jj_consume_token(REFERENCES); viewName = id(null); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LPAREN: pkColumnNames = columnList(true, false); break; default: jj_la1[425] = jj_gen; ; } {if (true) return factory.addForeignKey(name != null?name:("FK"+table.getForeignKeys().size()), columnNames, pkColumnNames, viewName, table);} throw new Error("Missing return statement in function"); }
final public AbstractMetadataRecord foreignKey(MetadataFactory factory, Table table, String name) throws ParseException { List<String> columnNames = null; String viewName = null; Table reference = null; KeyRecord pk = null; Column column = null; List<String> pkColumnNames = null; KeyRecord key = null; jj_consume_token(FOREIGN); jj_consume_token(KEY); columnNames = columnList(true, false); jj_consume_token(REFERENCES); viewName = id(null); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LPAREN: pkColumnNames = columnList(true, false); break; default: jj_la1[425] = jj_gen; ; } {if (true) return factory.addForeignKey(name != null?name:("FK"+table.getForeignKeys().size()), columnNames, pkColumnNames, viewName, table);} throw new Error("Missing return statement in function"); }
private void addImplicitFk(MetadataFactory mf, Table fromTable, CsdlNavigationProperty property, Table toTable, List<String> columnNames, List<String> referenceColumnNames) { KeyRecord pk = getPKorUnique(fromTable); if (pk != null) { boolean matches = true; for (Column c : pk.getColumns()) { referenceColumnNames.add(c.getName()); if (toTable.getColumnByName(c.getName()) != null) { columnNames.add(c.getName()); } else { matches = false; break; } } if (matches) { mf.addForeignKey(join(fromTable.getName(), NAME_SEPARATOR, property.getName()), columnNames, referenceColumnNames, fromTable.getFullName(), toTable); } } }
private Table addNavigationAsTable(MetadataFactory mf, XMLMetadata metadata, Table fromTable, CsdlNavigationProperty property) throws TranslatorException { String name = join(fromTable.getName(), NAME_SEPARATOR, property.getName()); Table toTable = addTable(mf, name, property.getType(), property.isCollection()?ODataType.NAVIGATION_COLLECTION:ODataType.NAVIGATION, metadata); toTable.setNameInSource(property.getName()); KeyRecord pk = fromTable.getPrimaryKey(); List<String> columnNames = new ArrayList<String>(); for (Column c : pk.getColumns()) { String columnName = join(fromTable.getName(), NAME_SEPARATOR, c.getName()); Column column = mf.addColumn(columnName, c.getRuntimeType(), toTable); column.setProperty(PSEUDO, String.valueOf(Boolean.TRUE)); columnNames.add(columnName); } mf.addForeignKey("FK0", columnNames, getColumnNames(pk.getColumns()), fromTable.getFullName(), toTable); return toTable; }
mf.addForeignKey(association.getName(), toKeys, fromKeys, fromTable.getName(), toTable); mf.addForeignKey(association.getName(), fromKeys, fromTable.getName(), toTable);
metadataFactory.addForeignKey("FK0", pkColumns, table.getName(), childTable); //$NON-NLS-1$ metadataFactory.addForeignKey("FK0", pkColumns, table.getName(), childTable); //$NON-NLS-1$
column = addColumn(metadataFactory, table, columnKey, obj); String ref = ((DBRef)value).getCollectionName(); metadataFactory.addForeignKey("FK_"+columnKey, Arrays.asList(columnKey), ref, table); //$NON-NLS-1$
referenceColumnNames.add(constraint.getReferencedProperty()); mf.addForeignKey(join(fromTable.getName(), NAME_SEPARATOR, property.getName()), columnNames, referenceColumnNames, toTable.getFullName(), fromTable);
private ModelMetaData buildSourceTableWithPK() { ModelMetaData model = new ModelMetaData(); model.setName("source"); model.setModelType(Model.Type.PHYSICAL); MetadataFactory target = new MetadataFactory(VDBNAME, VDBVERSION, SystemMetadata.getInstance().getRuntimeTypeMap(), model); Table t = target.addTable("Person"); target.addColumn("id", "integer", t); target.addColumn("name", "string", t); target.addColumn("dob", "date", t); target.addPrimaryKey("PK", Arrays.asList("id"), t); Table addr = target.addTable("address"); target.addColumn("id", "integer", addr); target.addColumn("street", "string", addr); target.addColumn("pid", "integer", addr); target.addPrimaryKey("PK", Arrays.asList("id"), addr); target.addForeignKey("FK", Arrays.asList("pid"), Arrays.asList("id"), "Person", addr); String ddl = DDLStringVisitor.getDDLString(target.getSchema(), null, null); model.addSourceMetadata("ddl", ddl); model.addAttchment(MetadataFactory.class, target); return model; }
mf.addForeignKey("FK0", getColumnNames(pkColumns), getColumnNames(pk.getColumns()), parentTable.getFullName(), childTable);
mf.addForeignKey(fromTable.getName() + "_FK", leftNames, fromTable.getName(), linkTable); //$NON-NLS-1$ mf.addForeignKey(toTable.getName() + "_FK", rightNames, toTable.getName(), linkTable); // //$NON-NLS-1$