コード例 #1
0
ファイル: TypeRef.cs プロジェクト: stfnbssl/Tree2Soft
 /// <summary>
 /// Initialize this DataType with DomainModelContext informations.
 /// For TypeRef(s) this method try to detect a meaningful System.Type.
 /// If it does not succed the System.Type is set to "System.Object".
 /// </summary>
 /// <param name="ctx"></param>
 public override void Initialize(DomainModelContext ctx)
 {
     if (DomainFullName.ToLower() == "object")
         _type = typeof(object);
     else
     {
         try
         {
             _type = ctx.DomainModel.GetClrTypeByNodeTagName(DomainFullName);
             return;
         }
         catch { }
         try
         {
             if (DomainFullName == "object[]")
                 _type = typeof(object[]);
             else if (DomainFullName == "string[]")
                 _type = typeof(string[]);
             else if (DomainFullName == "char[]")
                 _type = typeof(char[]);
             else if (DomainFullName == "bool[]")
                 _type = typeof(bool[]);
             else if (DomainFullName == "int[]")
                 _type = typeof(int[]);
             else if (DomainFullName == "float[]")
                 _type = typeof(float[]);
             else if (DomainFullName == "double[]")
                 _type = typeof(double[]);
             else if (DomainFullName == "decimal[]")
                 _type = typeof(decimal[]);
             else
                 _type = System.Type.GetType(DomainFullName);
             return;
         }
         catch { }
         _type = typeof(object);
     }
 }
コード例 #2
0
ファイル: DataType.cs プロジェクト: stfnbssl/Tree2Soft
 /// <summary>
 /// Initialize this DataType with DomainModelContext informations.
 /// </summary>
 /// <param name="ctx"></param>
 public virtual void Initialize(DomainModelContext ctx)
 {
 }
コード例 #3
0
ファイル: Property.cs プロジェクト: stfnbssl/Tree2Soft
 /// <summary>
 /// Initialize the node.
 /// </summary>
 /// <param name="ctx"></param>
 public override void Initialize(DomainModelContext ctx)
 {
     base.Initialize(ctx);
     DomainDataType = ctx.CreateDataType(Domain);
 }
コード例 #4
0
ファイル: FactoryManager.cs プロジェクト: stfnbssl/Tree2Soft
 /// <summary>
 /// Executes a single transformation
 /// </summary>
 /// <param name="transformationInfo"></param>
 /// <returns></returns>
 private TransformationResult ExecuteTransformation(TransformationInfo transformationInfo)
 {
     ITransformer transformer = RetrieveTransformer(transformationInfo);
     if (transformer == null)
     {
         throw new FactoryException("Cannot retrieve transformer " + transformationInfo.TransformerName);
     }
     else
     {
         transformer.SetTransformationInfo(transformationInfo);
     }
     IDomainModel model = RetrieveModel(transformationInfo.ModelInfo);
     if (model == null)
     {
         throw new FactoryException("Cannot retrieve domain Model " + transformationInfo.ModelInfo.ToString());
     }
     else
     {
         // initialize the domain model with type system informations
         // target the production context language and data provider
         TypeSystem.TypeSystem typeSystem = RetrieveTypeSystem(
             transformer.TargetLanguage,
             transformer.TargetDataProvider
             );
         DomainModelContext modelContext = new DomainModelContext(null, typeSystem);
         model.Initialize(modelContext);
     }
     // check if the transformer can transform this model
     if (transformer.CanTransform(model))
         // execute transformation passing domain model and production context to the transformer
         return transformer.Transform(model, _productionContext);
     else
         throw new FactoryException("Transformer " + transformationInfo.TransformerName + " cannot transform model " + transformationInfo.ModelInfo.ToString());
 }
コード例 #5
0
ファイル: Reference.cs プロジェクト: stfnbssl/Tree2Soft
 /// <summary>
 /// Initialize the node and creates the association collection
 /// on the OneSideDomainNodeType and the ManySideDomainNodeType.
 /// </summary>
 /// <param name="ctx"></param>
 public override void Initialize(DomainModelContext ctx)
 {
     base.Initialize(ctx);
     if (Initialized) return;
     Initialized = true;
     MetaDomainModel root = Root as MetaDomainModel;
     if (string.IsNullOrEmpty(Name)) // ParentClassName
     {
         throw new NullReferenceException("Name cannot be null");
     }
     ManySideDomainNodeType = DomainNodeType;
     OneSideDomainNodeType = root.GetDomainNodeTypeByName(Name);
     if (OneSideDomainNodeType == null)
     {
         throw new MetaDomainModelException("Cannot find ParentClassName " + this.Name);
     }
     // Add to association collections on both side
     if (IsOneToOneAssociation)
     {
         OneSideDomainNodeType.OneToOneAssociations.Add(this);
         ManySideDomainNodeType.OneToOneAssociations.Add(this);
     }
     else
     {
         OneSideDomainNodeType.OneToManyAssociations.Add(this);
         ManySideDomainNodeType.ManyToOneAssociations.Add(this);
     }
 }
コード例 #6
0
ファイル: MetaDomainModel.cs プロジェクト: stfnbssl/Tree2Soft
 /// <summary>
 /// Initialize the node.
 /// </summary>
 /// <param name="ctx"></param>
 public override void Initialize(DomainModelContext ctx)
 {
     base.Initialize(ctx);
     foreach (DomainNodeType clazz in DomainNodeTypes)
     {
         clazz.Parent = this;
         clazz.Initialize(ctx);
     }
 }
コード例 #7
0
ファイル: DomainNodeType.cs プロジェクト: stfnbssl/Tree2Soft
 /// <summary>
 /// Initialize the node
 /// </summary>
 /// <param name="ctx"></param>
 public override void Initialize(DomainModelContext ctx)
 {
     base.Initialize(ctx);
     foreach (Property p in Properties)
     {
         p.Parent = this;
         p.Initialize(ctx);
     }
     foreach (Reference r in References)
     {
         r.Parent = this;
         r.Initialize(ctx);
     }
 }