private void OnValidate() { if (tagDetect == null) { tagDetect = GetComponent <TagDetection>(); } if (server == null) { server = GetComponent <TagServer>(); } }
/* 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 + ";"); }
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); }
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); }