Ejemplo n.º 1
0
        private static void FixEnumerationSelect(SchemaModel model, DomainStructure namespaces)
        {
            // predefined type is defined as a select between two enumerations. We implement selects as interfaces and enumerations
            // in C# can not implement interfaces
            var transportElement     = model.Get <EntityDefinition>(e => e.Name == "IfcTransportElement").First();
            var transportElementType = model.Get <EntityDefinition>(e => e.Name == "IfcTransportElementType").First();
            var predefinedType       = transportElement.Attributes.First(a => a.Name == "PredefinedType") as ExplicitAttribute;
            var typePredefinedType   = transportElementType.Attributes.First(a => a.Name == "PredefinedType") as ExplicitAttribute;

            var select = predefinedType.Domain as SelectType;
            var enums  = select.Selections.OfType <EnumerationType>().ToList();
            var ns     = namespaces.Domains.FirstOrDefault(d => d.Types.Any(t => t == enums[0].Name));

            var singleEnum = model.New <EnumerationType>(transportElement.ParentSchema, e => {
                e.Name            = "IfcTransportElementTypeEnum";
                e.PersistanceName = e.Name;
                e.TypeId          = model.LastTypeId + 1;
                e.Elements        = new List <ExpressId>(
                    enums.SelectMany(en => en.Elements).Distinct()
                    );
            });

            predefinedType.Domain     = singleEnum;
            typePredefinedType.Domain = singleEnum;
            ns.Types.Add(singleEnum.Name);

            // remove select and enumerations not used
            model.Remove(select);
            enums.ForEach(e => model.Remove(e));
        }
Ejemplo n.º 2
0
        private static void EnhanceNullStyleInIfc(SchemaModel model, DomainStructure structure)
        {
            var nullStyle = model.Get <EnumerationType>(n => n.Name == "IfcNullStyle").FirstOrDefault();

            if (nullStyle == null)
            {
                return;
            }
            nullStyle.Name            = "IfcNullStyleEnum";
            nullStyle.PersistanceName = "IfcNullStyleEnum";

            var defType = model.New <DefinedType>(nullStyle.ParentSchema, d =>
            {
                d.Name            = "IfcNullStyle";
                d.PersistanceName = "IfcNullStyle";
                d.Domain          = nullStyle;
            });

            var selects = model.Get <SelectType>(s => s.Selections.Contains(nullStyle));

            foreach (var @select in selects)
            {
                select.Selections.Remove(nullStyle);
                select.Selections.Add(defType);
            }

            //adjust namespace
            var domain = structure.GetDomainForType("IfcNullStyle");

            domain.Types.Add("IfcNullStyleEnum");
        }
Ejemplo n.º 3
0
        public void SchemaCreation()
        {
            var model = new SchemaModel {Schema = {Name = "Sample Schema", Identification = "SAMPLE_TEST"}};

            var definedType = model.New((DefinedType t) =>
            {
                t.Name = "Identifier";
                t.Domain = model.PredefinedSimpleTypes.StringType;
            });

            var entity = model.New((EntityDefinition e) => { e.Name = "Model"; });
            entity.AddAttribute(model.New((ExplicitAttribute a) =>
            {
                a.Name = "Name";
                a.Domain = definedType;
            }));
            entity.AddAttribute(model.New((ExplicitAttribute a) =>
            {
                a.Name = "Description";
                a.Domain = model.PredefinedSimpleTypes.StringType;
            }));
        }