private FieldIndex GetForeignKeyIndex(recordDefinition recordDefinition, fieldDefinition fieldDefinition) { key[] keys = recordDefinition.keys; if (keys != null) { foreach (key key in keys) { fieldDefinitionReference[] keyFieldDefinitionReferences = key.fieldDefinitionReferences; foreach (fieldDefinitionReference fieldDefinitionReference in keyFieldDefinitionReferences) { if (fieldDefinitionReference.name.Equals(fieldDefinition.name)) { object o = key.Item; if (o is foreignKey) { foreignKey f = (foreignKey)o; List <FieldIndex> indexes = GetForeignKeyIndexes(f); // TODO: Is it possible to have reference to more than one AddmlFieldDefinition? if (indexes.Count != 1) { throw new AddmlDefinitionParseException( "foreignKey must reference exactly one fieldDefinitionReference. " + f); } FieldIndex index = indexes[0]; // Må puttes på til slutt! return(index); /* * if (!_allFieldDefinitions.ContainsKey(index)) * { * return null; * } * * return _allFieldDefinitions[index]; */ } } } } } return(null); }
private List <FieldIndex> GetForeignKeyReferenceIndexes(foreignKey foreignKey) { List <FieldIndex> indexes = new List <FieldIndex>(); flatFileDefinitionReference flatFileDefinitionReference = foreignKey.flatFileDefinitionReference; foreach ( recordDefinitionReference recordDefinitionReference in flatFileDefinitionReference.recordDefinitionReferences) { foreach ( fieldDefinitionReference fieldDefinitionReference in recordDefinitionReference.fieldDefinitionReferences) { indexes.Add(new FieldIndex(flatFileDefinitionReference, recordDefinitionReference, fieldDefinitionReference)); } } return(indexes); }