Esempio n. 1
0
 private void OnValidate()
 {
     if (tagDetect == null)
     {
         tagDetect = GetComponent <TagDetection>();
     }
     if (server == null)
     {
         server = GetComponent <TagServer>();
     }
 }
Esempio n. 2
0
        /*  Nr zmiany
         *      -nowe pole (nazwy pól?)
         *      -nowy kod  (trigger?)
         *
         *  Nr zmiany
         *      -nowe pole
         *
         *      itd....
         */

        private static string UpdateVersionList(string codeLine, ObjectClass obj)
        {
            List <string> versionList = new List <string>();

            versionList = codeLine.Substring(codeLine.IndexOf('=') + 1).Split(',').ToList();
            versionList[versionList.Count - 1] = versionList.Last().Substring(0, versionList.Last().Length - 1);
            versionList = versionList.Union(TagDetection.GetModyficationList(obj.Contents)).ToList();

            string versionString = string.Join(",", versionList.ToArray());

            if (versionString.Length >= 248)
            {
                versionString = versionString.Remove(0, versionString.Length - (247));
                versionString = versionString.Remove(0, versionString.IndexOf(','));
                versionString = versionString.Insert(0, "~");
            }
            return("    Version List=" + versionString + ";");
        }
Esempio n. 3
0
        public static bool UpdateDocumentationTrigger()
        {
            List <string> locationList = new List <string>();

            foreach (ObjectClass obj in ObjectClassRepository.objectRepository)
            {
                StringReader  reader  = new StringReader(obj.Contents);
                StringBuilder builder = new StringBuilder();
                StringWriter  writer  = new StringWriter(builder);
                string        line;
                bool          bracketFlag = false, beginFlag = false, writing = false, documentationPrompt = false, deleteFlag = false, addBrackets = false, bracketsExist = false;

                while (null != (line = reader.ReadLine()) && line != "  PROPERTIES")
                {
                    if (line.Contains("Version List="))
                    {
                        line = UpdateVersionList(line, obj);
                    }
                    writer.WriteLine(line);
                }
                writer.WriteLine(line);
                while (null != (line = reader.ReadLine()))
                {
                    if (line.StartsWith("    BEGIN"))
                    {
                        beginFlag = true;
                    }

                    if (line.StartsWith("    {") && beginFlag)
                    {
                        bracketFlag   = true;
                        bracketsExist = true;
                    }

                    if (line.StartsWith("      Automated Documentation"))
                    {
                        documentationPrompt = true;
                    }

                    if (line.StartsWith("    }") && bracketFlag)
                    {
                        bracketFlag   = false;
                        deleteFlag    = false;
                        writing       = true;
                        bracketsExist = true;
                    }

                    if (line.StartsWith("    END") && beginFlag && bracketsExist)
                    {
                        beginFlag = false;
                        //deleteFlag = false;
                    }

                    if (line.StartsWith("    END.") && beginFlag && !bracketsExist)
                    {
                        //Console.WriteLine("HELLO");
                        writing     = true;
                        addBrackets = true;
                        deleteFlag  = false;
                        //bracketsExist = true;
                        beginFlag = false;
                        //continue;
                    }

                    if (line.StartsWith("      #") && documentationPrompt)
                    {
                        deleteFlag = false;
                        foreach (string item in TagDetection.GetModyficationList(obj.Contents))
                        {
                            if (line.Contains(item))
                            {
                                deleteFlag = true;
                            }
                        }
                    }

                    if (writing)
                    {
                        if (addBrackets)
                        {
                            writer.WriteLine("    {");
                        }
                        if (!(documentationPrompt) && obj.Changelog.Count > 0 && !addBrackets)
                        {
                            writer.WriteLine(Environment.NewLine + "      Automated Documentation");
                        }
                        else if (!(documentationPrompt) && obj.Changelog.Count > 0 && addBrackets)
                        {
                            writer.WriteLine("      Automated Documentation");
                        }
                        foreach (string item in TagDetection.GetModyficationList(obj.Contents))
                        {
                            int actionCounter = 0;
                            writer.WriteLine("      #" + item + "#");
                            locationList = new List <string>();
                            foreach (ChangeClass change in obj.Changelog)
                            {
                                if (change.ChangelogCode == item && change.ChangeType != "Action" && !(locationList.Exists(loc => loc == change.Location)))
                                {
                                    if (change.ChangeType == "Field")
                                    {
                                        int fieldNum = Int32.Parse(change.Contents);
                                        if (fieldNum <= 50000 || fieldNum >= 99999)
                                        {
                                            locationList.Add(change.Location);
                                            writer.WriteLine("      - Changed " + change.ChangeType + ": " + change.Location);
                                        }
                                        else
                                        {
                                            locationList.Add(change.Location);
                                            writer.WriteLine("      - New " + change.ChangeType + ": " + change.Location);
                                        }
                                    }
                                    else
                                    {
                                        locationList.Add(change.Location);
                                        writer.WriteLine("      - New " + change.ChangeType + ": " + change.Location);
                                    }
                                }

                                if (change.ChangeType == "Action" && change.ChangelogCode == item)
                                {
                                    actionCounter++;
                                }
                            }

                            if (actionCounter == 1)
                            {
                                writer.WriteLine("      - New Action");
                            }
                            else if (actionCounter > 1)
                            {
                                writer.WriteLine("      - New Actions");
                            }
                        }
                        if (addBrackets)
                        {
                            writer.WriteLine("    }");
                        }
                        addBrackets = false;
                        writing     = false;
                    }
                    if (!(deleteFlag))
                    {
                        writer.WriteLine(line);
                    }
                }

                obj.Contents = builder.ToString();

                writer.Close();
                builder = new StringBuilder();
                writer  = new StringWriter(builder);
            }
            return(true);
        }
Esempio n. 4
0
 public void Initialize()
 {
     _service = new TagDetection();
 }
        public static bool FindAndSaveChanges(string expectedModification)
        {
            foreach (ObjectClass obj in ObjectClassRepository.objectRepository)
            {
                InitTags(obj);
                if (expectedModification != "" && !tags.Contains(expectedModification))
                {
                    return(false);
                }
                if (expectedModification != "")
                {
                    tags = new List <string>()
                    {
                        expectedModification
                    }
                }
                ;
                foreach (string modtag in tags)
                {
                    StringReader  reader = new StringReader(obj.Contents);
                    StringBuilder builder = new StringBuilder();
                    StringWriter  writer = new StringWriter(builder);
                    string        line, currentFlag = null; //MAYBE SUBJECT TO CHANGES
                    Regex         endFlag = new Regex("");
                    string        nestedFlag = "";
                    ChangeClass   change = new ChangeClass();
                    bool          startFlag = false;
                    int           nesting = 0;
                    string        trigger = "";
                    bool          fieldFlag = false, actionFlag = false, controlFlag = false, openControlFlag = false;
                    string        fieldName = "", sourceExpr = "", description = "", fieldContent = "";

                    while (null != (line = reader.ReadLine()))
                    {
                        if (ChangeDetection.TriggerDetection.DetectIfAnyTriggerInLine(line))
                        {
                            trigger = ChangeDetection.TriggerDetection.GetTriggerName(line);
                        }

                        // Flags
                        if (obj.Type == "Table")
                        {
                            if (fieldFlag == false && ChangeDetection.FlagDetection.DetectIfFieldsStartFlag(line))
                            {
                                fieldFlag = true;
                            }
                            else if (fieldFlag == true && ChangeDetection.FlagDetection.DetectIfFieldsEndFlag(line))
                            {
                                fieldFlag = false;
                            }
                            else if (fieldFlag == true && ChangeDetection.FlagDetection.DetectIfNextFieldFlag(line))
                            {
                                fieldName    = ChangeDetection.FlagDetection.GetNextFieldName(line);
                                fieldContent = ChangeDetection.FlagDetection.GetNextFieldNumber(line);
                            }
                        }
                        else if (obj.Type == "Page")
                        {
                            if (actionFlag == false && ChangeDetection.FlagDetection.DetectIfActionStartFlag(line))
                            {
                                actionFlag = true;
                            }
                            else if (actionFlag == true && ChangeDetection.FlagDetection.DetectIfActionEndFlag(line))
                            {
                                actionFlag  = false;
                                controlFlag = true;
                            }
                            else if (controlFlag == true && ChangeDetection.FlagDetection.DetectIfControlEndFlag(line))
                            {
                                controlFlag = false;
                            }
                        }

                        if (startFlag == true)
                        {
                            if (line.Contains(modtag) && endFlag.IsMatch(line)) //Problem jest ze strzałkami i zagnieżdżeniami !
                            {
                                if (nesting == 1)                               // IF DODANY <-----
                                {
                                    startFlag = false;
                                    if (builder.ToString() != "")
                                    {
                                        change = new ChangeClass(currentFlag, builder.ToString(), "Code", (fieldFlag ? (fieldName + " - ") : "") + trigger, obj.Type + " " + obj.Number + " " + obj.Name);
                                        ChangeClassRepository.AppendChange(change);
                                        obj.Changelog.Add(change);
                                    }

                                    writer.Close();
                                    builder = new StringBuilder();
                                    writer  = new StringWriter(builder);
                                }
                                nesting--; // NESTING DODANE <-----
                            }
                            else if (line.EndsWith(nestedFlag))
                            {
                                nesting++; // DODANE <-----
                            }
                            else
                            {
                                writer.WriteLine(line);
                            }
                        }
                        else if (startFlag == false)
                        {
                            if (line.Contains(modtag) && !(line.StartsWith("Description=")) && !(line.Contains("Version List=")) && line.Contains(@"//"))
                            {
                                if (TagDetection.CheckIfTagsIsAlone(line))
                                {
                                    change = new ChangeClass(modtag, line, "Code", (fieldFlag ? (fieldName + " - ") : "") + trigger, obj.Type + " " + obj.Number + " " + obj.Name);
                                    ChangeClassRepository.AppendChange(change);
                                    obj.Changelog.Add(change);
                                }
                                else if (TagDetection.GetTagedModyfication(line) == modtag && TagDetection.CheckIfBeginTagInLine(line))
                                {
                                    currentFlag = modtag;
                                    startFlag   = true;
                                    nesting++; // ZMIENIONE <-----
                                    endFlag    = TagDetection.GetFittingEndPattern(line);
                                    nestedFlag = line.Trim(' ');
                                }
                            }
                            else if (obj.Type == "Table")
                            {
                                //if (line.Contains(modtag) && line.Contains("Description=") && !(line.Contains("Version List=")))
                                if (line.Contains("Description=") && TagDetection.GetDescriptionTagList(line).Contains(modtag) && !(line.Contains("Version List=")))
                                {
                                    //ChangeDetection.FlagDetection.GetDescription(line).Replace("IT/", "");
                                    change = new ChangeClass(modtag, fieldContent, "Field", fieldName, obj.Type + " " + obj.Number + " " + obj.Name);
                                    ChangeClassRepository.AppendChange(change);
                                    obj.Changelog.Add(change);
                                }
                            }
                            else if (obj.Type == "Page")
                            {
                                if (actionFlag)
                                {
                                    if (line.Contains(modtag) && line.Contains("Description="))
                                    {
                                        description = ChangeDetection.FlagDetection.GetDescription(line);
                                        change      = new ChangeClass(modtag, "", "Action", "", "");
                                        ChangeClassRepository.AppendChange(change);
                                        obj.Changelog.Add(change);
                                    }
                                }
                                else if (controlFlag)
                                {
                                    if (line.Contains(modtag) && line.Contains("Description="))
                                    {
                                        description     = ChangeDetection.FlagDetection.GetDescription(line);
                                        openControlFlag = true;
                                    }
                                    else if (openControlFlag && line.Contains("SourceExpr="))
                                    {
                                        sourceExpr = ChangeDetection.FlagDetection.GetSourceExpr(line);
                                        change     = new ChangeClass(modtag, "", "Control", sourceExpr, "");
                                        ChangeClassRepository.AppendChange(change);
                                        obj.Changelog.Add(change);
                                        openControlFlag = false;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(true);
        }
    }
 public static void InitTags(ObjectClass obj)
 {
     tags = TagDetection.GetModyficationList(obj.Contents);
 }