BothWildcardPropertiesImpl(NestedWildcardPropertiesImpl accumulated) : this() { commonNestedProperties = accumulated.CommonNestedProperties(); }
InvertSelectedProperties(Properties properties) { IList <Property> children = properties.Children; IDictionary <string, object> result = new Dictionary <string, object>(children.Count); foreach (Property property in children) { PName pname = null; string propertyName = null; if (!property.IsWildcard) { pname = property.Identifier; propertyName = pname.ns + pname.local; } switch (property.Type) { case PropertyType.IDENTIFIER: if (property.IsWildcard) { if (result is SingletonWildcardProperties) { break; } if (result is NestedWildcardProperties) { result = new BothWildcardPropertiesImpl( (NestedWildcardPropertiesImpl)result); } else { result = new SingletonWildcardPropertiesImpl(); } break; } else { if (result is SingletonWildcardProperties) { break; } } result.Add(propertyName, OSLC4NetConstants.OSLC4NET_PROPERTY_SINGLETON); break; case PropertyType.NESTED_PROPERTY: if (property.IsWildcard) { if (!(result is NestedWildcardProperties)) { if (result is SingletonWildcardProperties) { result = new BothWildcardPropertiesImpl(); } else { result = new NestedWildcardPropertiesImpl(result); } ((NestedWildcardPropertiesImpl)result).commonNestedProperties = InvertSelectedProperties((NestedProperty)property); } else { MergePropertyMaps( ((NestedWildcardProperties)result).CommonNestedProperties(), InvertSelectedProperties((NestedProperty)property)); } break; } result.Add(propertyName, InvertSelectedProperties( (NestedProperty)property)); break; } } if (!(result is NestedWildcardProperties)) { return(result); } IDictionary <String, Object> commonNestedProperties = ((NestedWildcardProperties)result).CommonNestedProperties(); foreach (string propertyName in result.Keys) { IDictionary <String, Object> nestedProperties = (IDictionary <string, object>)result[propertyName]; if (nestedProperties == OSLC4NetConstants.OSLC4NET_PROPERTY_SINGLETON) { result.Add(propertyName, commonNestedProperties); } else { MergePropertyMaps(nestedProperties, commonNestedProperties); } } return(result); }