Пример #1
0
 public static string MakeCanonicalName(string name, OdcmObject returnType, params OdcmParameter[] parameters)
 {
     return(string.Format("{0}<{1}>:{2}",
                          name,
                          string.Join(",", from parameter in parameters select parameter.Type.CanonicalName()),
                          returnType == null ? "void" : returnType.CanonicalName()));
 }
Пример #2
0
 public static string MakeCanonicalName(string name, OdcmObject returnType, params OdcmParameter[] parameters)
 {
     return string.Format("{0}<{1}>:{2}",
         name,
         string.Join(",", from parameter in parameters select parameter.Type.CanonicalName()),
         returnType == null ? "void" : returnType.CanonicalName());
 }
Пример #3
0
        public bool TryResolveType <T>(string name, string @namespace, out T type) where T : OdcmType
        {
            string canonicalName = OdcmObject.MakeCanonicalName(name, @namespace);

            var odcmType = _Types.FirstOrDefault(t => t.CanonicalName().Equals(canonicalName, StringComparison.InvariantCulture));

            type = odcmType as T;
            return(type != null);
        }
Пример #4
0
        internal static IEnumerable <OdcmCapability> GetWellKnownCapabilities(OdcmObject odcmProperty, IEnumerable <OdcmCapability> capabilities)
        {
            foreach (var term in _wellKnownCapabilities.Keys)
            {
                var c = capabilities.SingleOrDefault(FuncFromTerm(term));

                yield return(c ?? DefaultCapability(odcmProperty, term));
            }
        }
Пример #5
0
        private T FindCapability <T>(string term, OdcmObject odcmObject = null) where T : OdcmCapability
        {
            var capability = (T)Capabilities
                             .SingleOrDefault(FuncFromTerm(term));

            if (capability == null)
            {
                capability = DefaultCapability(odcmObject, term) as T;
            }

            return(capability);
        }
Пример #6
0
        private static OdcmCapability GetDefaultNegativeLinkCapability(OdcmObject odcmObject, string term)
        {
            bool defaultValue = true;

            if (odcmObject != null &&
                odcmObject is OdcmSingleton || odcmObject is OdcmEntitySet)
            {
                defaultValue = false;
            }

            return(new OdcmBooleanCapability(defaultValue, term));
        }
Пример #7
0
        private static OdcmCapability DefaultCapability(OdcmObject odcmObject, string term)
        {
            OdcmCapability result = UserDefaultCapabilityProvider?.Invoke(odcmObject, term);

            if (result == null)
            {
                DefaultProvider func;
                if (_wellKnownCapabilities.TryGetValue(term, out func))
                {
                    result = func(odcmObject, term);
                }
            }
            return(result);
        }
Пример #8
0
        private static OdcmCapability GetDefaultBooleanCapability(OdcmObject odcmObject, string term)
        {
            bool defaultValue = true;

            if (odcmObject != null && odcmObject is OdcmSingleton)
            {
                switch (term)
                {
                case TermNames.Delete:
                    defaultValue = false;
                    break;
                }
            }
            return(new OdcmBooleanCapability(defaultValue, term));
        }
Пример #9
0
        public bool TryResolveType <T>(string name, string @namespace, out T type) where T : OdcmType
        {
            string canonicalName = OdcmObject.MakeCanonicalName(name, @namespace);

            foreach (OdcmType candidate in _Types)
            {
                if (candidate.CanonicalName().Equals(canonicalName, StringComparison.InvariantCulture))
                {
                    type = candidate as T;
                    return(true);
                }
            }

            type = null;

            return(false);
        }
Пример #10
0
        public void AddProjection(ICollection <OdcmCapability> capabilities, OdcmObject odcmObject = null)
        {
            if (this is OdcmPrimitiveType || this is OdcmMethod)
            {
                return;
            }

            var knownCapabilities = OdcmProjection.GetWellKnownCapabilities(odcmObject, capabilities).ToList();

            var name = OdcmProjection.GetUniqueProjectionName(knownCapabilities, odcmObject);

            OdcmProjection projection;

            if (!_projectionHash.TryGetValue(name, out projection))
            {
                _projectionHash[name] = new OdcmProjection()
                {
                    Type         = this,
                    Capabilities = knownCapabilities,
                    BackLink     = odcmObject
                };
            }
        }
Пример #11
0
 public bool?Supports(string term, OdcmObject odcmObject = null)
 {
     return(BooleanValueOf(term, odcmObject));
 }
Пример #12
0
 private void AddVocabularyAnnotations(OdcmObject odcmObject, IEdmVocabularyAnnotatable annotatableEdmEntity)
 {
     odcmObject.Description = _edmModel.GetDescriptionAnnotation(annotatableEdmEntity);
     odcmObject.LongDescription = _edmModel.GetLongDescriptionAnnotation(annotatableEdmEntity);
 }
Пример #13
0
 public bool?BooleanValueOf(string term, OdcmObject odcmObject = null)
 {
     return(FindCapability <OdcmBooleanCapability>(term, odcmObject)?.Value);
 }
Пример #14
0
        internal static string GetUniqueProjectionName(IEnumerable <OdcmCapability> capabilities, OdcmObject odcmObject)
        {
            string name = string.Empty;

            var allCapabilities = GetWellKnownCapabilities(odcmObject, capabilities)
                                  .OrderBy(x => x.TermName);

            foreach (OdcmBooleanCapability c in allCapabilities)
            {
                name += ToInternal(c.TermName) + c.Value.ToString();
            }

            return(name);
        }
Пример #15
0
 public string StringValueOf(string term, OdcmObject odcmObject = null)
 {
     return(FindCapability <OdcmStringCapability>(term, odcmObject)?.Value);
 }
Пример #16
0
 public IEnumerable <object> CollectionValueOf(string term, OdcmObject odcmObject = null)
 {
     return(FindCapability <OdcmCollectionCapability>(term, odcmObject)?.Value);
 }
Пример #17
0
 public IEnumerable <string> EnumValueOf(string term, OdcmObject odcmObject = null)
 {
     return(FindCapability <OdcmEnumCapability>(term, odcmObject)?.Value);
 }
Пример #18
0
        public IEnumerable <string> StringCollectionValueOf(string term, OdcmObject odcmObject = null)
        {
            var capability = FindCapability <OdcmCollectionCapability>(term, odcmObject);

            return(capability?.Value.Select(x => x as string));
        }