Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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");
                }
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
            }
        }
Esempio n. 7
0
        private static void CleanAllRules(KBObject obj)
        {
            RulesPart rulesPart = obj.Parts.Get <RulesPart>();

            rulesPart.Source = "";
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
 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;
 }
Esempio n. 10
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);
                }
            }
        }