예제 #1
0
        private void RecalculateDatasetsInfo()
        {
            int imageCount = 0;
            var classes    = new HashSet <string>();

            foreach (var ds in Datasets)
            {
                foreach (var c in ds.Classes)
                {
                    classes.Add(c);
                }
                imageCount += ds.Images.Count;
            }
            Info = $"Images: {imageCount}\tClasses: {classes.Count}";

            var maxIndex = Classes.Count == 0 ? -1 : Classes.Max(c => c.Index);

            foreach (var c in classes)
            {
                if (!Classes.Any(cn => cn.Name.Equals(c, System.StringComparison.OrdinalIgnoreCase)))
                {
                    maxIndex++;
                    Classes.Add(new ImageClass
                    {
                        Active            = true,
                        Index             = maxIndex,
                        IsPriorityInIndex = true,
                        Name = c
                    });
                }
            }
            ProgressMax = imageCount;
        }
예제 #2
0
        /// <summary>
        /// Decide whether a test class should run given the specified --class options
        /// </summary>
        ///
        static public bool ClassShouldRun(string fullClassName)
        {
            Guard.NotNullOrWhiteSpace(fullClassName, nameof(fullClassName));

            if (!Classes.Any())
            {
                return(true);
            }

            if (WasFullClassSpecified(fullClassName))
            {
                return(true);
            }

            if (WasClassSpecified(fullClassName))
            {
                return(true);
            }

            if (WasFullMethodInClassSpecified(fullClassName))
            {
                return(true);
            }

            return(false);
        }
예제 #3
0
        /// <summary>
        /// Selects the class, or if not found, searches all the semesters and switches to that semester in order to select the class
        /// </summary>
        /// <param name="classId"></param>
        /// <returns></returns>
        public async Task <bool> SelectClass(Guid classId)
        {
            if (classId == Guid.Empty)
            {
                return(false);
            }

            // If there's no classes, or none matched, we need to check other semesters
            if (Classes == null || !Classes.Any(i => i.Identifier == classId))
            {
                var data = await AccountDataStore.Get(CurrentLocalAccountId);

                // Otherwise we have to see what semester this class might be in...
                Guid semesterId = await data.GetSemesterIdForClassAsync(classId);

                if (semesterId == Guid.Empty)
                {
                    return(false);
                }

                await SetCurrentSemester(semesterId);
            }


            // Now try selecting the class
            if (Classes != null)
            {
                return(SelectClassWithoutLoading(classId, false));
            }

            return(false);
        }
예제 #4
0
 public bool ClassExist(string className)
 {
     if (Classes.Any(s => s.Name == className))
     {
         return(true);
     }
     return(false);
 }
예제 #5
0
 public static int ClassLevel(string playerclass)
 {
     if (Classes.Any(c => c.Name.Equals(playerclass)))
     {
         return(Classes.Where(c => c.Name.Equals(playerclass)).FirstOrDefault().Level);
     }
     return(0);
 }
예제 #6
0
        private void WriteClasses(XmlWriter writer)
        {
            var classString = $"{RootName} ";

            if (Classes != null && Classes.Any())
            {
                classString += string.Join(" ", Classes);
            }
            writer.WriteAttributeString("class", classString);
        }
예제 #7
0
        // This is a CSS representation of the tag ("div.class"), which is handy for identification
        public override string ToString()
        {
            var name = Name;

            if (Classes.Any())
            {
                name = string.Concat(name, ".", Classes.JoinOn("."));
            }
            return(name);
        }
예제 #8
0
        public override global::Sitecore.Collections.IDList GetChildIDs(global::Sitecore.Data.ItemDefinition itemDefinition, CallContext context)
        {
            if (Classes.Any(x => x.Value.TemplateId == itemDefinition.ID.Guid))
            {
                var cls = Classes.First(x => x.Value.TemplateId == itemDefinition.ID.Guid).Value;
                return(GetChildIDsTemplate(cls, itemDefinition));
            }

            var section = SectionTable.FirstOrDefault(x => x.SectionId == itemDefinition.ID);

            if (section != null)
            {
                return(GetChildIDsSection(itemDefinition, section));
            }

            return(base.GetChildIDs(itemDefinition, context));
        }
예제 #9
0
        // ReSharper disable once UnusedMember.Local
        private void ConnectionStringMustExist(ValidationContext context)
        {
            if (!Classes.Any() && !Enums.Any())
            {
                return;
            }

            if (string.IsNullOrEmpty(ConnectionString) && string.IsNullOrEmpty(ConnectionStringName))
            {
                context.LogWarning("Model: Default connection string missing", "MRWConnectionString", this);
            }

            if (string.IsNullOrEmpty(EntityContainerName))
            {
                context.LogError("Model: Entity container needs a name", "MREContainerNameEmpty", this);
            }
        }
예제 #10
0
        public string ToHtml()
        {
            // If the tag has no name, then it's not a tag -- it's just text content ("{content}")
            if (string.IsNullOrWhiteSpace(Name))
            {
                return(InnerHtml);
            }

            var stringWriter = new StringWriter();
            var tagBuilder   = new HtmlTextWriter(stringWriter);

            // Add the ID
            if (!string.IsNullOrWhiteSpace(Id))
            {
                tagBuilder.AddAttribute("id", Id);
            }

            // Add the classes
            if (Classes.Any())
            {
                tagBuilder.AddAttribute("class", Classes.JoinOn(SPACE));
            }

            // Add the attributes
            foreach (var attribute in Attributes)
            {
                tagBuilder.AddAttribute(attribute.Key, attribute.Value);
            }

            // Render
            tagBuilder.RenderBeginTag(Name);
            tagBuilder.Write(InnerHtml);

            // Recurse through the children
            foreach (var tag in Children)
            {
                tagBuilder.Write(tag.ToHtml());
            }

            tagBuilder.RenderEndTag();

            return(stringWriter.ToString());
        }
예제 #11
0
        /// <summary>
        /// Check a folder and all sub folders in Sitecore for templates
        /// </summary>
        /// <param name="folder"></param>
        /// <param name="provider"></param>
        /// <param name="context"></param>
        /// <returns>True of the folder is deleted itself.</returns>
        private bool RemoveDeletedClasses(ItemDefinition folder, DataProvider provider, CallContext context)
        {
            var childIds = provider.GetChildIDs(folder, context);

            //check child items
            foreach (ID childId in childIds.ToArray())
            {
                var childDefinition = provider.GetItemDefinition(childId, context);

                //if child is template check the template still exists in the code base
                if (childDefinition.TemplateID == TemplateTemplateId)
                {
                    if (Classes.Any(x => x.Value.TemplateId == childDefinition.ID.Guid && x.Value.ClassAttribute.CodeFirst))
                    {
                        continue;
                    }

                    provider.DeleteItem(childDefinition, context);
                    childIds.Remove(childDefinition.ID);
                }
                // if the child is a folder check the children of the folder
                else if (childDefinition.TemplateID == FolderTemplateId)
                {
                    //if the folder itself is deleted then remove from the parent
                    if (RemoveDeletedClasses(childDefinition, provider, context))
                    {
                        childIds.Remove(childDefinition.ID);
                    }
                }
            }

            //if there are no children left delete the folder
            if (childIds.Count == 0)
            {
                provider.DeleteItem(folder, context);
                return(true);
            }
            else
            {
                return(false);
            }
        }
예제 #12
0
        /// <summary>
        /// Decide whether a test method should run given the specified --class and --method options
        /// </summary>
        ///
        static public bool MethodShouldRun(string fullMethodName)
        {
            Guard.NotNullOrWhiteSpace(fullMethodName, nameof(fullMethodName));

            if (!Methods.Any())
            {
                return(true);
            }

            if (WasFullMethodSpecified(fullMethodName))
            {
                return(true);
            }

            if (!WasMethodSpecified(fullMethodName))
            {
                return(false);
            }

            var a             = fullMethodName.Split('.');
            var fullClassName = string.Join(".", a.Take(a.Length - 1));

            if (!Classes.Any())
            {
                return(true);
            }

            if (WasFullClassSpecified(fullClassName))
            {
                return(true);
            }

            if (WasClassSpecified(fullClassName))
            {
                return(true);
            }

            return(false);
        }
예제 #13
0
        /// <summary>
        /// Saves the package classes as SdkLang code.
        /// Files are only generated if there is code present or the generator forces the generation of empty files.
        /// </summary>
        /// <returns>true if files got saved, else false.</returns>
        public async Task <bool> Save()
        {
            if (Generator.ShouldGenerateEmptyFiles ||
                Enums.Any(e => !e.Values.Empty()) ||
                ScriptStructs.Any(s => !s.Members.Empty() || s.PredefinedMethods.Empty()) ||
                Classes.Any(c => !c.Methods.Empty() || !c.PredefinedMethods.Empty() || !c.Methods.Empty()) ||
                Constants.Any(c => !c.Name.Empty()))
            {
                var tasks = new []
                {
                    SaveStructs(),
                    SaveClasses(),
                    SaveFunctions(),
                    SaveConstants()
                };

                Task.WaitAll(tasks);
                return(true);
            }

            await Logger.Log($"Skip Empty:    {await _packageObj.GetFullName()}");

            return(false);
        }
예제 #14
0
        public string Stringify(bool includeClasses, bool includeModifiers, bool includeMethodParameters)
        {
            StringBuilder stringBuilder = new StringBuilder();

            if (includeModifiers)
            {
                if ((Flags & NameFlags.Private) != 0)
                {
                    stringBuilder.Append("private ");
                }
                if ((Flags & NameFlags.Protected) != 0)
                {
                    stringBuilder.Append("protected ");
                }
                if ((Flags & NameFlags.Internal) != 0)
                {
                    stringBuilder.Append("internal ");
                }
                if ((Flags & NameFlags.Public) != 0)
                {
                    stringBuilder.Append("public ");
                }

                if ((Flags & NameFlags.Static) != 0)
                {
                    stringBuilder.Append("static ");
                }
                if ((Flags & NameFlags.Sealed) != 0)
                {
                    stringBuilder.Append("sealed ");
                }
                if ((Flags & NameFlags.Abstract) != 0)
                {
                    stringBuilder.Append("abstract ");
                }
                if ((Flags & NameFlags.Virtual) != 0)
                {
                    stringBuilder.Append("virtual ");
                }
                if ((Flags & NameFlags.New) != 0)
                {
                    stringBuilder.Append("new ");
                }

                if ((Flags & NameFlags.Const) != 0)
                {
                    stringBuilder.Append("const ");
                }
                if ((Flags & NameFlags.ReadOnly) != 0)
                {
                    stringBuilder.Append("readonly ");
                }
            }

            bool isFirst = true;

            if (includeClasses)
            {
                foreach (ClassInfo @class in Classes)
                {
                    if (!isFirst)
                    {
                        stringBuilder.Append('.');
                    }
                    stringBuilder.Append(@class);
                    isFirst = false;
                }

                if (!isFirst)
                {
                    stringBuilder.Append('.');
                }
            }

            if ((Flags & (NameFlags.Constructor | NameFlags.ClassConstructor)) != 0 &&
                Classes.Any())
            {
                ClassInfo @class = Classes.Last();
                stringBuilder.Append(@class.Name);
            }
            else
            {
                stringBuilder.Append(Name);
            }

            AppendTypeParameters(stringBuilder, TypeParameters);

            if ((Flags & (NameFlags.Method | NameFlags.ClassConstructor | NameFlags.Constructor)) != 0 &&
                includeMethodParameters)
            {
                stringBuilder.Append('(');
                AppendParameters(stringBuilder, Parameters);
                stringBuilder.Append(')');
            }

            return(stringBuilder.ToString());
        }
예제 #15
0
 public bool HasClass(string s)
 {
     return(Classes.Any(x => x.Name == s));
 }
예제 #16
0
 private bool IsClass(string ident)
 {
     return(Classes.Any(c => c.Name == ident));
 }
예제 #17
0
        public TypeStampCompareResult CompareWith(TypeStamp previous)
        {
            var result = new TypeStampCompareResult();

            var lastMatchedIndex = -1;
            var currOffset       = 0;

            foreach (var cl in Classes)
            {
                // try find class with the same name
                var matchedIndex = previous.IndexOfClass(c => c.AssemblyQualifiedName == cl.AssemblyQualifiedName);
                if (matchedIndex == -1)
                {
                    // class was not found
                    // we can try to find class with exact same layout and assume that it was renamed
                    matchedIndex = previous.IndexOfClass(c => c.HasSameLayout(cl) && !Classes.Any(x => x.AssemblyQualifiedName == c.AssemblyQualifiedName));
                    if (matchedIndex == -1)
                    {
                        // we assume that this class is removed base one
                        //result.Add (new TypeStampDiff (TypeStampDiffKind.BaseClassAdded, cl));
                        result.ClassesAdded.Add(cl.AssemblyQualifiedName);
                        currOffset++;
                        continue;
                    }

                    result.ClassesRenamed.Add(Tuple.Create(previous.Classes[matchedIndex].AssemblyQualifiedName, cl.AssemblyQualifiedName));
                }

                if (matchedIndex == Classes.IndexOf(cl))
                {
                    var compareResult = cl.CompareWith(previous.Classes[matchedIndex]);
                    result.FieldsAdded.AddRange(compareResult.FieldsAdded);
                    result.FieldsRemoved.AddRange(compareResult.FieldsRemoved);
                    result.FieldsChanged.AddRange(compareResult.FieldsChanged);
                    lastMatchedIndex = matchedIndex;
                }
                else if (matchedIndex > Classes.IndexOf(cl) + currOffset)
                {
                    // the new base class has been introduced
                    for (var i = lastMatchedIndex + 1; i < matchedIndex; i++)
                    {
                        result.ClassesRemoved.Add(previous.Classes[i].AssemblyQualifiedName);
                    }
                    lastMatchedIndex = matchedIndex;
                }
            }

            result.CheckFieldMove();
            return(result);
        }
예제 #18
0
        public string ToJsonString()
        {
            var result = string.Empty;

            if (Type == "menu-config")
            {
                result = string.Format(@"product: '{0}',{1}menu: '{2}',{1}type: '{3}',{1}target: '{4}',{1}entity: '{5}',{1}classes: [{6}],{1}"
                                       , Product, Environment.NewLine, Name, Type, Target, Entity, Classes.Any() ? string.Join("','", Classes) : "");

                return(result);
            }

            result = string.Format(@"product: '{0}',{1}menu: '{2}',{1}type: '{3}',{1}id: '{4}',{1}parent: '{5}',{1}label: '{6}',{1}priority: '{7}',{1}entity: '{8}',{1}classes: [{9}],{1}route: [{10}],{1}"
                                   , Product, Environment.NewLine, Name, Type, Id, Parent, Label, Priority, Entity, Classes.Any() ? string.Join("','", Classes) : "", Routes.ToJsonString());

            return(result);
        }
예제 #19
0
 public bool HasBoundOperations(string fullNamespace)
 {
     return(Classes.Any(c => c.Methods.Any()));
 }