示例#1
0
        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);
        }
示例#2
0
        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);
        }