예제 #1
0
        private static void GetDependsOnWriteableDataStructure(DataStructureInfo dataStructure, List <DataStructureInfo> dependencies, IDslModel allConcepts, IConceptInfo errorContext, HashSet <string> done)
        {
            var conceptKey = dataStructure.GetKey();

            if (done.Contains(conceptKey))
            {
                return;
            }
            done.Add(conceptKey);

            if (dataStructure is EntityInfo)
            {
                dependencies.Add(dataStructure);
            }
            else if (dataStructure is SqlQueryableInfo)
            {
                var deps = allConcepts.FindByType <SqlDependsOnDataStructureInfo>().Where(dep => dep.Dependent == dataStructure).ToArray();
                foreach (var dep in deps)
                {
                    GetDependsOnWriteableDataStructure(dep.DependsOn, dependencies, allConcepts, errorContext, done);
                }
            }
            else
            {
                throw new DslSyntaxException(errorContext.GetKeywordOrTypeName()
                                             + " is not supported on dependency type '" + dataStructure.GetKeywordOrTypeName() + "'. "
                                             + errorContext.GetUserDescription() + " depends on " + dataStructure.GetUserDescription() + ".");
            }
        }
예제 #2
0
파일: DslUtility.cs 프로젝트: kmeze/Rhetos
 public static void CheckIfPropertyBelongsToDataStructure(PropertyInfo property, DataStructureInfo dataStructure, IConceptInfo errorContext)
 {
     if (property.DataStructure != dataStructure)
         throw new Exception(String.Format(
             "Invalid use of " + errorContext.GetKeywordOrTypeName() + ": Property {0}.{1}.{2} is not in data structure {3}.{4}.",
             property.DataStructure.Module.Name,
             property.DataStructure.Name,
             property.Name,
             dataStructure.Module.Name,
             dataStructure.Name));
 }
예제 #3
0
 public static void CheckIfPropertyBelongsToDataStructure(PropertyInfo property, DataStructureInfo dataStructure, IConceptInfo errorContext)
 {
     if (property.DataStructure != dataStructure)
     {
         throw new Exception(String.Format(
                                 "Invalid use of " + errorContext.GetKeywordOrTypeName() + ": Property {0}.{1}.{2} is not in data structure {3}.{4}.",
                                 property.DataStructure.Module.Name,
                                 property.DataStructure.Name,
                                 property.Name,
                                 dataStructure.Module.Name,
                                 dataStructure.Name));
     }
 }
예제 #4
0
        private static void GetDependsOnWriteableDataStructure(DataStructureInfo dataStructure, List<DataStructureInfo> dependencies, IEnumerable<IConceptInfo> allConcepts, IConceptInfo errorContext, HashSet<string> done)
        {
            var conceptKey = dataStructure.GetKey();
            if (done.Contains(conceptKey))
                return;
            done.Add(conceptKey);

            if (dataStructure is EntityInfo)
                dependencies.Add(dataStructure);
            else if (dataStructure is SqlQueryableInfo)
            {
                var deps = allConcepts.OfType<SqlDependsOnDataStructureInfo>().Where(dep => dep.Dependent == dataStructure).ToArray();
                foreach (var dep in deps)
                    GetDependsOnWriteableDataStructure(dep.DependsOn, dependencies, allConcepts, errorContext, done);
            }
            else
                throw new DslSyntaxException(errorContext.GetKeywordOrTypeName()
                    + " is not supported on dependency type '" + dataStructure.GetKeywordOrTypeName() + "'. "
                    + errorContext.GetUserDescription() + " depends on " + dataStructure.GetUserDescription() + ".");
        }