private void buildKeyColumns(Table parentTable, Table childTable, String columnName, Object value) { if(parentTable.equals(childTable)) { return; } for (ForeignKey fk:childTable.getForeignKeys()) { if (fk.getReferenceTableName().equals(parentTable.getName())) { List<Column> columns = fk.getColumns(); for (int i = 0; i < columns.size(); i++) { Column fkColumn = columns.get(i); if (fkColumn.getName().equals(columnName)) { this.keys.put(fk.getReferenceColumns().get(i), value); } } } } if (!this.expandTables.isEmpty()) { if (childTable.getPrimaryKey() != null) { for (Column column:childTable.getPrimaryKey().getColumns()) { if (!isPseudo(column)) { if (column.getName().equals(columnName)) { this.expandKeys.put(columnName, value); } } } } } }
static Column normalizePseudoColumn(RuntimeMetadata metadata, Column column) throws TranslatorException { if (ODataMetadataProcessor.isPseudo(column)) { Table table = (Table)column.getParent(); ForeignKey fk = table.getForeignKeys().get(0); for (int i = 0; i < fk.getColumns().size(); i++) { Column c = fk.getColumns().get(i); if (c.getName().equals(column.getName())) { String refColumn = fk.getReferenceColumns().get(i); String tableName = fk.getReferenceTableName(); if (tableName.indexOf('.') == -1) { tableName = fk.getReferenceKey().getParent().getFullName(); } Table refTable = metadata.getTable(tableName); return refTable.getColumnByName(refColumn); } } } return column; }
private static CsdlNavigationProperty buildReverseNavigation(Table table, ForeignKey fk) { String refSchemaName = table.getParent().getName(); CsdlNavigationProperty navigaton = new CsdlNavigationProperty(); navigaton.setName(table.getName() + "_" + fk.getName()).setType( new FullQualifiedName(refSchemaName, table.getName())); ArrayList<CsdlReferentialConstraint> constrainsts = new ArrayList<CsdlReferentialConstraint>(); for (int i = 0; i < fk.getColumns().size(); i++) { Column c = fk.getColumns().get(i); String refColumn = fk.getReferenceColumns().get(i); CsdlReferentialConstraint constraint = new CsdlReferentialConstraint(); constraint.setProperty(refColumn); constraint.setReferencedProperty(c.getName()); } navigaton.setReferentialConstraints(constrainsts); return navigaton; }
private void buildEmbeddedReferences() throws TranslatorException { for (ForeignKey fk:this.table.getForeignKeys()) { Table referenceTable = fk.getReferenceKey().getParent(); MongoDocument refereceDoc = new MongoDocument(referenceTable, this.metadata); if (refereceDoc.isEmbeddable()) { // if this table itself is merged into embedded; then skip it if (isMerged() && getMergeTable().getName().equals(referenceTable.getName())) { // avoid self inclusion continue; } MergeDetails key = new MergeDetails(this); key.setName(fk.getReferenceTableName()); key.setParentTable(this.table.getName()); key.setReferenceColumns(MongoDBSelectVisitor.getColumnNames(fk.getColumns())); key.setColumns(fk.getReferenceColumns()); key.setEmbeddedTable(fk.getReferenceTableName()); // if the primary is reference, then it needs to built as such during the fetch if (MongoDBSelectVisitor.isPartOfForeignKey(referenceTable, fk.getReferenceColumns().get(0))) { key.setIdReference(MongoDBSelectVisitor.getForeignKeyRefTable(referenceTable, fk.getReferenceColumns().get(0))); } this.embeddedKeys.add(key); } } }
private static CsdlNavigationProperty buildNavigation(ForeignKey fk) { String refSchemaName = fk.getReferenceKey().getParent().getParent().getName(); CsdlNavigationProperty navigaton = new CsdlNavigationProperty(); navigaton.setName(fk.getName()).setType(new FullQualifiedName(refSchemaName, fk.getReferenceTableName())); ArrayList<CsdlReferentialConstraint> constrainsts = new ArrayList<CsdlReferentialConstraint>(); for (int i = 0; i < fk.getColumns().size(); i++) { Column c = fk.getColumns().get(i); String refColumn = fk.getReferenceColumns().get(i); CsdlReferentialConstraint constraint = new CsdlReferentialConstraint(); constraint.setProperty(c.getName()); constraint.setReferencedProperty(refColumn); } navigaton.setReferentialConstraints(constrainsts); return navigaton; }
private void buildForeignKeyReferences() throws TranslatorException { for (ForeignKey fk:this.table.getForeignKeys()) { MergeDetails key = new MergeDetails(this); key.setParentTable(fk.getReferenceTableName()); key.setEmbeddedTable(this.table.getName()); key.setName(fk.getName()); key.setColumns(MongoDBSelectVisitor.getColumnNames(fk.getColumns())); key.setReferenceColumns(fk.getReferenceColumns()); this.foreignKeys.put(MongoDBSelectVisitor.getColumnNames(fk.getColumns()), key); } }
UriParameter parameter = getParameter(this.updateTable.getFk().getReferenceColumns().get(i), this.referenceTable.getKeyPredicates()); value = ODataTypeManager.parseLiteral(edmProperty, column.getJavaType(), parameter.getText());
private void buildEmbeddableIntoReferences() { // if this table is marked as "embeddable", figure out all the tables it is // copied in. if (isEmbeddable()) { for (Table t:this.table.getParent().getTables().values()) { for (ForeignKey fk:t.getForeignKeys()) { if (fk.getReferenceKey().getParent().equals(this.table)){ MergeDetails key = new MergeDetails(this); key.setName(this.table.getName()); key.setParentTable(t.getName()); key.setEmbeddedTable(this.table.getName()); key.setColumns(MongoDBSelectVisitor.getColumnNames(fk.getColumns())); key.setReferenceColumns(fk.getReferenceColumns()); key.setAssociation(Association.ONE); this.copyto.add(key); } } } } }
List<String> referenceColumns = fk.getReferenceColumns(); if (fk.getReferenceKey() != null) {
List<String> referenceColumns = fk.getReferenceColumns(); if (fk.getReferenceKey() != null) {
List<String> referenceColumns = fk.getReferenceColumns(); if (fk.getReferenceKey() != null) {
private void buildContraints(Table table) { addConstraints(table.getAccessPatterns(), "AP", ACCESSPATTERN); //$NON-NLS-1$ KeyRecord pk = table.getPrimaryKey(); if (pk != null) { addConstraint("PK", PRIMARY_KEY, pk, true); //$NON-NLS-1$ } addConstraints(table.getUniqueKeys(), UNIQUE, UNIQUE); addConstraints(table.getIndexes(), INDEX, INDEX); addConstraints(table.getFunctionBasedIndexes(), INDEX, INDEX); for (int i = 0; i < table.getForeignKeys().size(); i++) { ForeignKey key = table.getForeignKeys().get(i); addConstraint("FK" + i, FOREIGN_KEY, key, false); //$NON-NLS-1$ append(SPACE).append(REFERENCES); if (key.getReferenceKey() != null) { if (key.getReferenceKey().getParent().getParent().equals(key.getParent().getParent())) { append(SPACE).append(new GroupSymbol(key.getReferenceKey().getParent().getName())); } else { append(SPACE).append(new GroupSymbol(key.getReferenceKey().getParent().getFullName())); } } else if (key.getReferenceTableName() != null) { append(SPACE).append(new GroupSymbol(key.getReferenceTableName())); } append(SPACE); addNames(key.getReferenceColumns()); appendOptions(key); } }
private void buildContraints(Table table) { addConstraints(table.getAccessPatterns(), "AP", ACCESSPATTERN); //$NON-NLS-1$ KeyRecord pk = table.getPrimaryKey(); if (pk != null) { addConstraint("PK", PRIMARY_KEY, pk, true); //$NON-NLS-1$ } addConstraints(table.getUniqueKeys(), UNIQUE, UNIQUE); addConstraints(table.getIndexes(), INDEX, INDEX); addConstraints(table.getFunctionBasedIndexes(), INDEX, INDEX); for (int i = 0; i < table.getForeignKeys().size(); i++) { ForeignKey key = table.getForeignKeys().get(i); addConstraint("FK" + i, FOREIGN_KEY, key, false); //$NON-NLS-1$ append(SPACE).append(REFERENCES); if (key.getReferenceKey() != null) { if (key.getReferenceKey().getParent().getParent().equals(key.getParent().getParent())) { append(SPACE).append(new GroupSymbol(key.getReferenceKey().getParent().getName())); } else { append(SPACE).append(new GroupSymbol(key.getReferenceKey().getParent().getFullName())); } } else if (key.getReferenceTableName() != null) { append(SPACE).append(new GroupSymbol(key.getReferenceTableName())); } append(SPACE); addNames(key.getReferenceColumns()); appendOptions(key); } }
private void buildContraints(Table table) { addConstraints(table.getAccessPatterns(), "AP", ACCESSPATTERN); //$NON-NLS-1$ KeyRecord pk = table.getPrimaryKey(); if (pk != null) { addConstraint("PK", PRIMARY_KEY, pk, true); //$NON-NLS-1$ } addConstraints(table.getUniqueKeys(), UNIQUE, UNIQUE); addConstraints(table.getIndexes(), INDEX, INDEX); addConstraints(table.getFunctionBasedIndexes(), INDEX, INDEX); for (int i = 0; i < table.getForeignKeys().size(); i++) { ForeignKey key = table.getForeignKeys().get(i); addConstraint("FK" + i, FOREIGN_KEY, key, false); //$NON-NLS-1$ append(SPACE).append(REFERENCES); if (key.getReferenceKey() != null) { if (key.getReferenceKey().getParent().getParent().equals(key.getParent().getParent())) { append(SPACE).append(new GroupSymbol(key.getReferenceKey().getParent().getName())); } else { append(SPACE).append(new GroupSymbol(key.getReferenceKey().getParent().getFullName())); } } else if (key.getReferenceTableName() != null) { append(SPACE).append(new GroupSymbol(key.getReferenceTableName())); } append(SPACE); addNames(key.getReferenceColumns()); appendOptions(key); } }
if (fk.getReferenceColumns() != null) { EdmReferentialConstraint.Builder erc = EdmReferentialConstraint.newBuilder(); erc.setPrincipalRole(fk.getReferenceTableName()); erc.addPrincipalReferences(fk.getReferenceColumns()); erc.setDependentRole(table.getName()); erc.addDependentReferences(getColumnNames(fk.getColumns()));
key.setParentTable(mergeTable.getName()); key.setColumns(MongoDBSelectVisitor.getColumnNames(fk.getColumns())); key.setReferenceColumns(fk.getReferenceColumns()); key.setEmbeddedTable(this.table.getName()); key.setAssociation(Association.MANY);