Esempio n. 1
0
        /// <summary>
        /// Reads from Revit selected elements identificators and collect in the list only that which has apprppriate label, material and category.
        /// </summary>
        /// <param name="server">Acces to cref="Server".</param>
        /// <param name="data">Acces to cref="ServiceData".</param>
        /// <returns>List identyficators of elements with result status.</returns>
        protected List <Tuple <ElementId, ResultStatus> > ReadListElementIdWithStatus(Server.Server server, Autodesk.Revit.DB.CodeChecking.ServiceData data)
        {
            Autodesk.Revit.DB.CodeChecking.Storage.StorageService  service         = Autodesk.Revit.DB.CodeChecking.Storage.StorageService.GetStorageService();
            Autodesk.Revit.DB.CodeChecking.Storage.StorageDocument storageDocument = service.GetStorageDocument(data.Document);
            Guid activePackageId = storageDocument.CalculationParamsManager.CalculationParams.GetInputResultPackageId(server.GetServerId());

            List <Tuple <ElementId, ResultStatus> > listElementId = new List <Tuple <ElementId, ResultStatus> >();

            foreach (Element element in data.Selection)
            {
                Autodesk.Revit.DB.CodeChecking.Storage.Label ccLabel = storageDocument.LabelsManager.GetLabel(element);
                if (ccLabel != null)
                {
                    Autodesk.Revit.DB.BuiltInCategory category = (Autodesk.Revit.DB.BuiltInCategory)element.Category.Id.IntegerValue;
                    StructuralAssetClass material = ccLabel.Material;

                    if (server.GetSupportedMaterials().Contains(material) &&
                        server.GetSupportedCategories(material).Contains(category))
                    {
                        ElementId id = new ElementId(element.Id.IntegerValue);

                        SchemaClass  label  = EngineData.ReadElementLabel(category, material, ccLabel, data);
                        ResultStatus status = new Autodesk.Revit.DB.CodeChecking.Storage.ResultStatus(Server.Server.ID, activePackageId);
                        EngineData.VerifyElementLabel(category, material, label, ref status);

                        listElementId.Add(new Tuple <ElementId, ResultStatus>(id, status));
                    }
                }
            }

            return(listElementId);
        }
Esempio n. 2
0
        private void ParsePrivate(DirectoryEntry entry)
        {
            this.guid = entry.Guid;
            this.dn   = Utils.EscapeDNBackslashedChar(Utils.GetProperty(entry, BaseObject.PROPERTY_DN));   // 转义反斜杠'/'字符
            this.path = entry.Path;
            this.name = Utils.GetProperty(entry, BaseObject.PROPERTY_NAME);

            List <string> ocList = new List <string>();

            foreach (object oc in (object[])(entry.Properties[BaseObject.PROPERTY_OBJECTCLASS].Value))
            {
                ocList.Add(oc.ToString());
            }
            this.objectClass    = ocList.ToArray();
            this.objectCategory = Utils.GetProperty(entry, BaseObject.PROPERTY_OBJECTCATEGORY);

            this.schema = (SchemaClass)(System.Enum.Parse(typeof(SchemaClass), entry.SchemaClassName));

            // OU 没有objectSid
            if (schema == SchemaClass.user || schema == SchemaClass.group || schema == SchemaClass.builtinDomain ||
                schema == SchemaClass.computer || schema == SchemaClass.domainDNS)
            {
                this.objectSid = (byte[])(entry.Properties[BaseObject.PROPERTY_OBJECTSID].Value);
            }
            else
            {
                this.objectSid = new byte[] { }
            };
        }
        public string Write(SchemaClass @class)
        {
            var classAttributeBuilder = new RoslynAttributesBuilder();

            foreach (var schemaAttribute in @class.Attributes)
            {
                classAttributeBuilder.AddAttribute(name: schemaAttribute.Name, schemaAttribute.Arguments);
            }

            var attributes =
                classAttributeBuilder.BuildAttributes();

            var classBuilder = new RoslynClassBuilder(
                nameSpace: @class.NameSpace,
                name: @class.Name,
                extends: @class.Extends,
                attributes: attributes);

            classBuilder
            .AddUsings(@class.Usings.ToList());


            @class.Methods.ToList().ForEach(
                schemaMethod =>
            {
                var attributesBuilder = new RoslynAttributesBuilder();
                schemaMethod.Attributes.ToList().ForEach(a =>
                                                         attributesBuilder.AddAttribute(a.Name, a.Arguments)
                                                         );

                classBuilder.AddMethod(
                    schemaMethod.Name,
                    schemaMethod.ReturnTypeName,
                    schemaMethod.CodeContents,
                    attributesBuilder.BuildAttributes()
                    );
            }
                );


            @class.Properties.ToList().ForEach(
                schemaProperty =>
            {
                var attributesBuilder = new RoslynAttributesBuilder();
                schemaProperty.Attributes.ToList().ForEach(a =>
                                                           attributesBuilder.AddAttribute(a.Name, a.Arguments)
                                                           );

                classBuilder.AddProperty(
                    schemaProperty.Name,
                    schemaProperty.TypeName,
                    "SomeString",
                    attributesBuilder.BuildAttributes()
                    );
            }
                );

            return(classBuilder.Build());
        }
        public ObjectTypeTree GetExtendedRights()
        {
            ObjectTypeTree ret = SchemaClass.ToObjectTypeTree();

            ret.AddNodeRange(Control.Select(c => c.ToObjectTypeTree()));
            ret.AddNodeRange(ValidatedWrite.Select(c => c.ToObjectTypeTree()));
            return(ret);
        }
        public ObjectTypeTree GetAttributes()
        {
            ObjectTypeTree ret = SchemaClass.ToObjectTypeTree();

            ret.AddNodeRange(PropertySets.Select(c => c.ToObjectTypeTree()));
            ObjectTypeTree unclass = DirectoryServiceUtils.DefaultPropertySet.ToObjectTypeTree();

            unclass.AddNodeRange(Attributes.Where(a => !a.InPropertySet).Select(a => a.ToObjectTypeTree()));
            ret.AddNode(unclass);
            return(ret);
        }
Esempio n. 6
0
        /// <summary>
        /// 解析DirectoryEntry对象。
        /// </summary>
        /// <param name="entry">DirectoryEntry对象。</param>
        /// <param name="demandSchema">要求的对象SchemaClass,以便检验对象类型。</param>
        protected void Parse(DirectoryEntry entry, SchemaClass demandSchema)
        {
            // this.Parse(entry);      // ERROR -- 如何调用this的

            this.ParsePrivate(entry);

            if (this.schema != demandSchema)
            {
                entry.Close();
                entry.Dispose();

                throw new SchemaClassException("对象类型不是" + demandSchema.ToString("F"));
            }
        }
Esempio n. 7
0
        public ObjectTypeTree GetAttributes(IEnumerable <DsObjectInformation> dynamic_aux_classes)
        {
            ObjectTypeTree ret = SchemaClass.ToObjectTypeTree();

            var prop_sets = dynamic_aux_classes.SelectMany(c => c.PropertySets).Concat(PropertySets).Distinct(new ExtendedRightsComparer());

            ret.AddNodeRange(prop_sets.Select(c => c.ToObjectTypeTree()));
            ObjectTypeTree unclass = DirectoryServiceUtils.DefaultPropertySet.ToObjectTypeTree();
            var            attrs   = dynamic_aux_classes.SelectMany(c => c.Attributes).Concat(Attributes).Distinct(new AttributeComparer());

            unclass.AddNodeRange(attrs.Where(a => !a.InPropertySet).Select(a => a.ToObjectTypeTree()));
            if (unclass.Nodes.Count > 0)
            {
                ret.AddNode(unclass);
            }
            return(ret);
        }
Esempio n. 8
0
 private static SchemaClass GetSchemaClass(string className)
 {
     if (!schemaClassCache.TryGetValue(className, out SchemaClass schemaClass))
     {
         using (ActiveDirectorySchema schema = ActiveDirectorySchema.GetCurrentSchema())
         {
             ActiveDirectorySchemaClass result = schema.FindClass(className);
             System.DirectoryServices.DirectoryEntry directoryEntry = result.GetDirectoryEntry();
             schemaClass = new SchemaClass()
             {
                 LdapDisplayName   = result.Name,
                 SchemaGuid        = result.SchemaGuid,
                 DistinguishedName = (string)directoryEntry.Properties["distinguishedName"][0]
             };
             schemaClassCache.Add(result.Name, schemaClass);
         }
     }
     return(schemaClass);
 }
        private static SchemaObject Read(JToken token)
        {
            var commentToken = token["rdfs:comment"];

            if (commentToken == null)
            {
                return(null);
            }

            var supercededByToken = token["http://schema.org/supersededBy"];

            if (supercededByToken != null)
            {
                // Ignore deprecated properties.
                return(null);
            }

            var id             = new Uri(token["@id"].Value <string>());
            var types          = GetTokenValues(token["@type"]).ToList();
            var comment        = token["rdfs:comment"].Value <string>();
            var label          = GetLabel(token);
            var domainIncludes = GetTokenValues(token["http://schema.org/domainIncludes"], "@id").ToList();
            var rangeIncludes  = GetTokenValues(token["http://schema.org/rangeIncludes"], "@id").ToList();
            var subClassOf     = GetTokenValues(token["rdfs:subClassOf"], "@id").ToList();
            var isPartOf       = GetTokenValues(token["http://schema.org/isPartOf"]).FirstOrDefault();
            var layer          = isPartOf == null ?
                                 LayerName.Core :
                                 isPartOf.Replace("http://", string.Empty, StringComparison.Ordinal).Replace(".schema.org", string.Empty, StringComparison.Ordinal);

            if (types.Any(type => string.Equals(type, "rdfs:Class", StringComparison.OrdinalIgnoreCase)))
            {
                var schemaClass = new SchemaClass()
                {
                    Comment = comment,
                    Id      = id,
                    Label   = label,
                    Layer   = layer,
                };
                schemaClass.SubClassOfIds.AddRange(subClassOf);
                schemaClass.Types.AddRange(types);
                return(schemaClass);
            }
            else if (types.Any(type => string.Equals(type, "rdf:Property", StringComparison.OrdinalIgnoreCase)))
            {
                var schemaProperty = new SchemaProperty()
                {
                    Comment = comment,
                    Id      = id,
                    Label   = label,
                    Layer   = layer,
                };
                schemaProperty.DomainIncludes.AddRange(domainIncludes);
                schemaProperty.RangeIncludes.AddRange(rangeIncludes);
                schemaProperty.Types.AddRange(types);
                return(schemaProperty);
            }
            else
            {
                var schemaEnumerationValue = new SchemaEnumerationValue()
                {
                    Comment = comment,
                    Id      = id,
                    Label   = label,
                    Layer   = layer,
                };
                schemaEnumerationValue.Types.AddRange(types);
                return(schemaEnumerationValue);
            }
        }
Esempio n. 10
0
 protected Rotor(PlacementConditions placementConditions, SchemaClass sc) : base(placementConditions, sc)
 {
 }
Esempio n. 11
0
 protected Wheel(PlacementConditions placementConditions, SchemaClass sc) : base(placementConditions, sc)
 {
 }
Esempio n. 12
0
 protected CylinderHead(PlacementConditions placementConditions, SchemaClass sc) : base(placementConditions, sc)
 {
 }
Esempio n. 13
0
        public static Guid GetClassSchemaGuid(string className)
        {
            SchemaClass schemaClass = GetSchemaClass(className);

            return(schemaClass.SchemaGuid);
        }
Esempio n. 14
0
        public static string GetSchemaClassDistinguishedName(string className)
        {
            SchemaClass schemaClass = GetSchemaClass(className);

            return(schemaClass.DistinguishedName);
        }
Esempio n. 15
0
        /// <summary>
        /// 解析SearchResult对象。
        /// </summary>
        /// <param name="result">SearchResult对象。应当包括必要的属性。</param>
        /// <param name="demandSchema">要求的对象SchemaClass,以便检验对象类型。</param>
        protected void Parse(SearchResult result, SchemaClass demandSchema)
        {
            string nativeGuid = "";

            foreach (byte g in (byte[])result.Properties["objectguid"][0])
            {
                nativeGuid += g.ToString("x2");
            }
            this.guid = Utils.ConvertNativeGuidToGuid(nativeGuid);
            this.dn   = Utils.EscapeDNBackslashedChar(Utils.GetProperty(result, "distinguishedname"));   // 转义反斜杠'/'字符

            this.path = Utils.GetProperty(result, "adspath");
            this.name = Utils.GetProperty(result, "name");

            List <string> ocList = new List <string>();

            foreach (object oc in result.Properties["objectclass"])
            {
                ocList.Add(oc.ToString());
            }
            this.objectClass    = ocList.ToArray();
            this.objectCategory = Utils.GetProperty(result, "objectcategory");

            this.schema = SchemaClass.none;
            foreach (string oc in this.objectClass)
            {
                // 暂时只分析这三个
                switch (oc)
                {
                case "organizationalUnit":
                    this.schema = SchemaClass.organizationalUnit;
                    break;

                case "group":
                    this.schema = SchemaClass.group;
                    break;

                case "user":
                    this.schema = SchemaClass.user;
                    break;
                }
                if (this.schema != SchemaClass.none)
                {
                    break;
                }
            }

            // OU 没有objectSid
            if (schema == SchemaClass.user || schema == SchemaClass.group)
            {
                this.objectSid = (byte[])(result.Properties["objectsid"][0]);
            }
            else
            {
                this.objectSid = new byte[] { }
            };


            this.whenCreated = DateTime.Parse(Utils.GetProperty(result, "whenCreated"));

            if (this.schema != demandSchema)
            {
                throw new SchemaClassException("对象类型不是" + demandSchema.ToString("F"));
            }
        }
Esempio n. 16
0
 protected Engine(PlacementConditions placementConditions, SchemaClass sc) : base(placementConditions, sc)
 {
 }