/// <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); }
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); }
/// <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")); } }
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); }
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); } }
protected Rotor(PlacementConditions placementConditions, SchemaClass sc) : base(placementConditions, sc) { }
protected Wheel(PlacementConditions placementConditions, SchemaClass sc) : base(placementConditions, sc) { }
protected CylinderHead(PlacementConditions placementConditions, SchemaClass sc) : base(placementConditions, sc) { }
public static Guid GetClassSchemaGuid(string className) { SchemaClass schemaClass = GetSchemaClass(className); return(schemaClass.SchemaGuid); }
public static string GetSchemaClassDistinguishedName(string className) { SchemaClass schemaClass = GetSchemaClass(className); return(schemaClass.DistinguishedName); }
/// <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")); } }
protected Engine(PlacementConditions placementConditions, SchemaClass sc) : base(placementConditions, sc) { }