예제 #1
0
        public static ClassModelReference CreateClassModelReference(this IDesignModelCollection designModelCollection,
                                                                    INamespace ns,
                                                                    IParseLocationInfo parseLocation,
                                                                    string name, string type = null)
        {
            var pos = name.IndexOf(':');

            if (pos != -1)
            {
                name = name.Substring(0, pos);
                type = name.Substring(pos + 1);
            }

            pos = name.LastIndexOf('.');

            if (pos == -1)
            {
                return(new ClassModelReference(name, ns, type, parseLocation));
            }

            var nsName = name.Substring(0, pos);

            name = name.Substring(pos + 1);
            ns   = designModelCollection.GetNamespace(nsName);

            return(new ClassModelReference(name, ns, type, parseLocation));
        }
예제 #2
0
        public Runner(
            ISchemaCollection schemaCollection,
            IXmlElementParser xmlElementParser,
            IDesignModelParser designModelParser,
            IDesignModelCollection designModelCollection,
            IOutputModelCollection outputModelCollection,
            IStageHandlerRegistry stageHandlers,
            IDataTypeRegistry dataTypeRegistry,
            IEnumerable <IClassNamingConvention> classNamingConventions
            )
        {
            this._schemaCollection  = schemaCollection;
            this._xmlElementParser  = xmlElementParser;
            this._designModelParser = designModelParser;

            this._context = new Context
            {
                Schemas                 = schemaCollection,
                DesignModels            = designModelCollection,
                OutputModels            = outputModelCollection,
                DataTypeRegistry        = dataTypeRegistry,
                MainOutputConfiguration = designModelCollection.RootNamespace.OutputConfiguration,
                StageHandlers           = stageHandlers
            };
        }
예제 #3
0
 public void ResolveReferences(IDesignModelCollection designModelCollection)
 {
     _outgoingRelations.ForEach(relation =>
     {
         relation.ResolveReferences(designModelCollection);
         relation.Destination.AddIncomingRelation(relation);
     });
 }
예제 #4
0
        public void Parse(IXmlElement rootElement, IDesignModelCollection collection)
        {
            var context = new DesignModelParseContext(collection)
            {
                Namespace  = collection.RootNamespace,
                XmlElement = rootElement
            };

            this.ParseDesignModelElements(context);
        }
예제 #5
0
        public static void Resolve(this ClassModelReference reference, IDesignModelCollection designModelCollection)
        {
            if (reference.Target != null)
            {
                return;
            }

            var designModel = reference.Namespace.GetDesignModel(reference, true);

            if (!(designModel is IClassModel classDesignModel))
            {
                throw new ParseException(reference.ParseLocation, $"Design model '{reference.Name}' must be a class-like design model.");
            }

            reference.Target = classDesignModel;
        }
예제 #6
0
 public TestRunner(
     ISchemaCollection schemaCollection,
     IXmlElementParser designModelElementParser,
     IDesignModelParser designModelParser,
     IDesignModelCollection designModelCollection,
     IOutputModelCollection outputModelCollection,
     IStageHandlerRegistry stageHandlers,
     IDataTypeRegistry dataTypeRegistry,
     IEnumerable <IClassNamingConvention> classNamingConventions
     ) : base(
         schemaCollection,
         designModelElementParser,
         designModelParser,
         designModelCollection,
         outputModelCollection,
         stageHandlers,
         dataTypeRegistry,
         classNamingConventions
         )
 {
 }
예제 #7
0
 public DesignModelParseContext(IDesignModelCollection collection)
 {
     Collection = collection;
 }
예제 #8
0
 public ClassDerivationParser(IDesignModelCollection designModelCollection)
 {
     _designModelCollection = designModelCollection;
 }
예제 #9
0
 public void ResolveReferences(IDesignModelCollection designModelCollection)
 {
     DestinationReference?.Resolve(designModelCollection);
 }
예제 #10
0
 public ClassMappingParser(IDesignModelCollection designModelCollection)
 {
     _designModelCollection = designModelCollection;
 }
예제 #11
0
 public EntityRelationParser(IDesignModelCollection designModelCollection)
 {
     _designModelCollection = designModelCollection;
 }