private static void ListRulePart(KBObject obj, StreamWriter file) { RulesPart rp = obj.Parts.Get <RulesPart>(); if (rp != null) { file.WriteLine(Environment.NewLine + "=== RULES ==="); file.WriteLine(rp.Source); } }
private static void ListRulePart(KBObject obj, StreamWriter file) { RulesPart rp = obj.Parts.Get <RulesPart>(); if (rp != null) { PrintSectionHeader("RULES", file); file.WriteLine(rp.Source); if (!ValidateParms(obj)) { file.WriteLine("--> ATTENTION REVIEWER: Parameters without IN/OUT"); } } }
public static bool CheckObjUsesVariable(Variable v, KBObject obj) { bool varused = true; if (!v.IsStandard) { varused = false; ProcedurePart pp = obj.Parts.Get <ProcedurePart>(); if (pp != null) { varused = VariableIsUsedInText(pp.Source, v.Name); } if (!varused) { RulesPart rp = obj.Parts.Get <RulesPart>(); if (rp != null) { varused = VariableIsUsedInText(rp.Source, v.Name); } } if (!varused) { ConditionsPart cp = obj.Parts.Get <ConditionsPart>(); if (cp != null) { varused = VariableIsUsedInText(cp.Source, v.Name); } } if (!varused) { EventsPart ep = obj.Parts.Get <EventsPart>(); if (ep != null) { varused = VariableIsUsedInText(ep.Source, v.Name); } } if (!varused) { WebFormPart fp = obj.Parts.Get <WebFormPart>(); if (fp != null) { varused = VariableIsUsedInWebForm(fp, v.Id);; } } } return(varused); }
public static bool ValidateINOUTinParm(KBObject obj) { bool err = false; ICallableObject callableObject = obj as ICallableObject; if (callableObject != null) { foreach (Signature signature in callableObject.GetSignatures()) { Boolean someInOut = false; foreach (Parameter parm in signature.Parameters) { if (parm.Accessor.ToString() == "PARM_INOUT") { someInOut = true; break; } } if (someInOut) { RulesPart rulesPart = obj.Parts.Get <RulesPart>(); if (rulesPart != null) { Regex myReg = new Regex("//.*", RegexOptions.None); Regex paramReg = new Regex(@"parm\(.*\)", RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.IgnoreCase); string reglas = rulesPart.Source; reglas = myReg.Replace(reglas, ""); Match match = paramReg.Match(reglas); if (match != null) { int countparms = match.ToString().Split(new char[] { ',' }).Length; int countsemicolon = match.ToString().Split(new char[] { ':' }).Length - 1; err = (countparms != countsemicolon); } } } } } return(err); }
public static string ExtractRuleParm(KBObject obj) { RulesPart rulesPart = obj.Parts.Get <RulesPart>(); string aux = ""; if (rulesPart != null) { Regex myReg = new Regex("//.*", RegexOptions.None); Regex paramReg = new Regex(@"parm\(.*\)", RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.IgnoreCase); string reglas = rulesPart.Source; reglas = myReg.Replace(reglas, ""); Match match = paramReg.Match(reglas); if (match != null) { aux = match.ToString(); } else { aux = ""; } } return(aux); }
public static void SaveObjectNewParm(IOutputService output, KBObject obj, string oldParm, string newParm) { RulesPart rulPart = obj.Parts.Get <RulesPart>(); string newRules = ""; try { newParm = newParm.Replace(";", " "); newRules = rulPart.Source.Replace(oldParm, newParm); rulPart.Source = newRules; } catch (Exception e) { output.AddLine(e.Message); }; try { obj.Save(); } catch (Exception e) { output.AddLine("Error SAVING " + obj.Name + " New parm rule " + newParm + " " + e.Message); } }
private static void CleanAllRules(KBObject obj) { RulesPart rulesPart = obj.Parts.Get <RulesPart>(); rulesPart.Source = ""; }
public static string ChangeRuleParmWithIN(KBObject obj) { string newParm = ""; string oldRules = ""; RulesPart rulesPart = obj.Parts.Get <RulesPart>(); ICallableObject callableObject = obj as ICallableObject; if (callableObject != null) { foreach (Signature signature in callableObject.GetSignatures()) { Boolean someInOut = false; foreach (Parameter parm in signature.Parameters) { if (parm.Accessor.ToString() == "PARM_INOUT") { someInOut = true; break; } } if (someInOut && (rulesPart != null)) { Regex myReg = new Regex("//.*", RegexOptions.None); Regex myReg2 = new Regex(@"/\*.*\*/", RegexOptions.Singleline); Regex paramReg = new Regex(@"parm\(.*\)", RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.IgnoreCase); string reglas = rulesPart.Source; reglas = myReg.Replace(reglas, ""); reglas = myReg2.Replace(reglas, ""); string reglas2 = reglas.Replace(Environment.NewLine, " "); Match match = paramReg.Match(reglas2); if (match != null) { int countparms = match.ToString().Split(new char[] { ',' }).Length; int countsemicolon = match.ToString().Split(new char[] { ':' }).Length - 1; if (countparms != countsemicolon) { string objNameLink = Functions.linkObject(obj); Regex coma = new Regex(",", RegexOptions.None); newParm = coma.Replace(match.ToString(), ", IN:"); Regex inreg = new Regex("IN:", RegexOptions.IgnoreCase); newParm = inreg.Replace(newParm, "IN:"); Regex outreg = new Regex("OUT:", RegexOptions.IgnoreCase); newParm = outreg.Replace(newParm, "OUT:"); Regex IOreg = new Regex("INOUT:", RegexOptions.IgnoreCase); newParm = IOreg.Replace(newParm, "INOUT:"); newParm = newParm.Replace(" ", ""); newParm = newParm.Replace("out:", "OUT:"); newParm = newParm.Replace("Out:", "OUT:"); newParm = newParm.Replace("InOut:", "INOUT:"); newParm = newParm.Replace("inout:", "INOUT:"); newParm = newParm.Replace("in:", "IN:"); newParm = newParm.Replace("In:", "IN:"); //---- CAMBIO REPETIDOS. newParm = newParm.Replace("()", "##"); //Por los vectores newParm = newParm.Replace("(", "(IN:"); newParm = newParm.Replace("IN:IN:", "IN:"); newParm = newParm.Replace("IN:OUT:", "OUT:"); newParm = newParm.Replace("IN:INOUT:", "INOUT:"); newParm = newParm.Replace("##", "()"); //Vuelvo el vector al original newParm = newParm + ";"; } } } } } return(newParm); }
internal int MergeRules(RulesPart obj, PatternInstanceElement c, string template, bool overwrite) { if (!String.IsNullOrEmpty(template)) { return MergeRules(obj, AppendTemplateOutput(obj.KBObject, obj, c, template), overwrite); } return 0; }
internal static int MergeRules(RulesPart obj, string novo, bool overwrite) { string oldValue = obj.Source; obj.Source = MergeTextMarked(obj.Source, novo, overwrite); return (oldValue != obj.Source ? 1 : 0); }
private static void WriteObjectContent(KBObject obj, StreamWriter file) { RulesPart rp = obj.Parts.Get <RulesPart>(); if (rp != null) { file.WriteLine(Environment.NewLine + "=== RULES ==="); file.WriteLine(rp.Source); } EventsPart ep = obj.Parts.Get <EventsPart>(); if (ep != null) { file.WriteLine(Environment.NewLine + "=== EVENTS SOURCE ==="); file.WriteLine(ep.Source); } switch (obj.TypeDescriptor.Name) { case "Attribute": Artech.Genexus.Common.Objects.Attribute att = (Artech.Genexus.Common.Objects.Attribute)obj; file.WriteLine(Functions.ReturnPicture(att)); if (att.Formula == null) { file.WriteLine(""); } else { file.WriteLine(att.Formula.ToString()); } break; case "Procedure": ProcedurePart pp = obj.Parts.Get <ProcedurePart>(); if (pp != null) { file.WriteLine(Environment.NewLine + "=== PROCEDURE SOURCE ==="); file.WriteLine(pp.Source); } break; case "Transaction": StructurePart sp = obj.Parts.Get <StructurePart>(); if (sp != null) { file.WriteLine(Environment.NewLine + "=== STRUCTURE ==="); file.WriteLine(sp.ToString()); } break; case "WorkPanel": break; case "WebPanel": break; case "WebComponent": break; case "Table": Table tbl = (Table)obj; foreach (TableAttribute attr in tbl.TableStructure.Attributes) { String line = ""; if (attr.IsKey) { line = "*"; } else { line = " "; } line += attr.Name + " " + attr.GetPropertiesObject().GetPropertyValueString("DataTypeString") + "-" + attr.GetPropertiesObject().GetPropertyValueString("Formula"); if (attr.IsExternalRedundant) { line += " External_Redundant"; } line += " Null=" + attr.IsNullable; if (attr.IsRedundant) { line += " Redundant"; } file.WriteLine(line); } break; case "SDT": SDT sdtToList = (SDT)obj; if (sdtToList != null) { file.WriteLine(Environment.NewLine + "=== STRUCTURE ==="); ListStructure(sdtToList.SDTStructure.Root, 0, file); } break; default: //Unknown object. Use export format. file.Write(SerializeObject(obj).ToString()); break; } file.WriteLine(Environment.NewLine + "====== PROPERTIES ======="); foreach (Property prop in obj.Properties) { if (!prop.IsDefault) { file.WriteLine(prop.Name + " -> " + prop.Value.ToString()); } else { if ((prop.Name == "CommitOnExit") || (prop.Name == "TRNCMT") || (prop.Name == "GenerateObject")) { file.WriteLine(prop.Name + " -> " + prop.Value.ToString()); } } } //CATEGORIES IEnumerable <Artech.Udm.Framework.References.EntityReference> refe = obj.GetReferences(); string GUIDCatString = "00000000-0000-0000-0000-000000000006"; List <string> categories = new List <string>(); foreach (Artech.Udm.Framework.References.EntityReference reference in refe) { Guid GUIDRefTo = reference.To.Type; string GUIDRefToString = GUIDRefTo.ToString(); if (GUIDRefToString == GUIDCatString) { KBCategory cat = KBCategory.Get(UIServices.KB.CurrentModel, reference.To.Id); categories.Add(cat.Name); } } if (categories.Count > 0) { file.WriteLine(Environment.NewLine + "====== CATEGORIES ======="); foreach (string name in categories) { file.WriteLine(name); } } }