public override void Generate(KBObject baseObject, PatternInstance instance)
        {
            if (baseObject is Transaction)
            {

                //modMain.SetGXPath(Artech.Common.Helpers.IO.PathHelper.StartupPath);

                pinstance = instance;
                Transaction transaction = (Transaction)baseObject;
                HPatternInstance wwInstance = new HPatternInstance(transaction.Model);

                settings = wwInstance.Settings;

                //Dictionary<string, object> propertiesg = new Dictionary<string, object>();
                //propertiesg[Properties.HTMLATT.ReadOnly] = true;
                //settings.Grid.Rules

                //Dictionary<string, object> propertiesg = new Dictionary<string, object>();
                //propertiesg[Properties.HTMLSFL.Rules] = Properties.HTMLSFL.Rules_Values.Rows;

                //System.Text.Encoding.w
                // string template = System.Text.Encoding.Default.GetString(file.BlobPart.Data);

                // testes
                /*
                KBModel model = Artech.Architecture.UI.Framework.Services.UIServices.KB.CurrentModel;
                foreach (WikiFileKBObject file in WikiFileKBObject.GetAll(model)) {
                    System.Windows.Forms.MessageBox.Show("File: " + file.Name);
                    byte[] b = file.BlobPart.Data;
                    string saida = System.Text.StringBuilder .GetString(b);
                    System.Text.StringBuilder sb = System.Text.StringBuilder();

                }
                */

                //Antlr.StringTemplate.FileSystemTemplateLoader st = new Antlr.StringTemplate.FileSystemTemplateLoader("");

                Generate(transaction, wwInstance);
                wwInstance.SaveTo(instance);
            }
            else if (baseObject is WebPanel)
            {
                HPatternInstance wwInstance = new HPatternInstance(instance);
                if (wwInstance.WebPanelRoot == null)
                {
                    wwInstance.WebPanelRoot = new WebPanelRootElement();
                }
                wwInstance.SaveTo(instance);
            } else {
                throw new PatternException(Messages.ParentMustBeTransaction);
            }
        }
 private static void UpdateAttributes(HPatternInstance instance, HPatternSettings settings, Transaction transaction)
 {
     string picturedefault = settings.Template.PictureCharacterDefault;
     foreach (RowElement row in instance.Transaction.GetRows(""))
     {
         foreach (ColumnElement col in row.Columns)
         {
             foreach (AttributeElement att in col.Attributes)
             {
                 if (att.Attribute != null)
                 {
                     string picture = "";
                     if (att.Picture.ToLower() == "default")
                     {
                         picture = picturedefault;
                         if (picture != String.Empty && (att.Attribute.Type == eDBType.CHARACTER || att.Attribute.Type  == eDBType.VARCHAR))
                         {
                             att.Attribute.SetPropertyValue(Properties.ATT.Picture, picture);
                             att.Attribute.Save();
                         }
                     }
                     else
                     {
                         picture = att.Picture;
                         if (picture != String.Empty)
                         {
                             att.Attribute.SetPropertyValue(Properties.ATT.Picture, picture);
                             att.Attribute.Save();
                         }
                     }
                 }
             }
         }
     }
 }
        private static bool CanRedirectToView(HPatternInstance instance, out ViewElement view)
        {
            // Do we have an appropriate view element?
            if (instance.Levels.Count > 0 &&
                instance.Levels[0].View != null &&
                CanRedirectTo(instance.Levels[0].View))
            {
                view = instance.Levels[0].View;
                return true;
            }

            view = null;
            return false;
        }
        private static bool CanRedirectToSelection(HPatternInstance instance, out SelectionElement selection)
        {
            // Do we have an appropriate selection element?
            if (instance.Levels.Count > 0 &&
                instance.Levels[0].Selection != null &&
                CanRedirectTo(instance.Levels[0].Selection))
            {
                selection = instance.Levels[0].Selection;
                return true;
            }

            selection = null;
            return false;
        }
Example #5
0
        public static HPatternInstance FastLoadCache(PatternInstance instance)
        {
            if (instance == null)
                throw new ArgumentNullException("instance");

            HPatternInstance cachedWWInstance = instance.GetPropertyValue<HPatternInstance>(k_CacheProperty);
            if (cachedWWInstance != null)
                return cachedWWInstance;

            HPatternInstance wwInstance = new HPatternInstance(instance);
            return wwInstance;
        }
Example #6
0
        public static Boolean GetAutoResize(String value, HPatternInstance instance)
        {
            switch (value)
            {
                case SelectionElement.AutoResizeValue.False:
                    return false;
                case SelectionElement.AutoResizeValue.True:
                    return true;
                default:
                    return instance.Settings.Grid.AutoResize;

            }
        }
        private static void UpdateProperties(HPatternInstance instance, HPatternSettings settings, Transaction transaction)
        {
            WebPanel mTransaction = settings.MasterPages.Transaction;
            string AMP = SettingsThemeElement.SetObjectThemeValue.True;
            string ATema = settings.Theme.SetObjectTheme;
            Theme tTema = null;
            if (ATema != SettingsThemeElement.SetObjectThemeValue.False)
                tTema = settings.Theme.Theme;

            foreach (SettingsThemeMasterPageElement sis in settings.CustomThemeMasterPage)
            {
                if (transaction.Name.IndexOf(sis.Name, StringComparison.InvariantCultureIgnoreCase) >= 0)
                {
                    if (sis.SetMasterPage != SettingsThemeMasterPageElement.SetMasterPageValue.False)
                    {
                        mTransaction = sis.Transaction;
                        AMP = sis.SetMasterPage;
                    }
                    if (sis.SetTheme != SettingsThemeMasterPageElement.SetThemeValue.False)
                    {
                        tTema = sis.Theme;
                        ATema = sis.SetTheme;
                    }
                    break;
                }
            }

            if (transaction.IsPropertyDefault(Properties.TRN.MasterPage) || AMP == SettingsThemeElement.SetObjectThemeValue.Force)
            {
                if (mTransaction == null)
                {
                    transaction.SetPropertyValue(Properties.TRN.MasterPage, new WebPanelReference());
                }
                else
                {
                    transaction.SetPropertyValue(Properties.TRN.MasterPage, new WebPanelReference(mTransaction));
                }
            }

            if (tTema != null)
            {
                if (transaction.IsPropertyDefault(Properties.TRN.Theme) || ATema == SettingsThemeElement.SetObjectThemeValue.Force)
                {
                    transaction.SetPropertyValue(Properties.TRN.Theme, new KBObjectReference(tTema));
                }
            }

            if (instance.Levels.Count > 0 && instance.Levels[0].View != null)
            {
                if (instance.Levels[0].View.UseAsSearchViewer)
                {
                    try
                    {

                        PropertyManager.PropertySpecDescriptor searchViewerProperty = transaction.GetPropertyDescriptor(Properties.TRN.SearchViewer);
                        if (searchViewerProperty.IsApplicable && searchViewerProperty.IsBrowsable && searchViewerProperty.IsDefaultValue)
                        {
                            WebPanel viewObject = WebPanel.Get(transaction.Model, instance.Levels[0].View.ObjectName);
                            if (viewObject != null)
                                transaction.SetPropertyValue(Properties.TRN.SearchViewer, new KBObjectReference(viewObject));
                        }

                    }
                    catch (Exception e) {
                        LogLicense.LogEmpty(e.Message + e.StackTrace);
                    }
                }
            }
        }
        private static string UpdateEvents(HPatternInstance instance, HPatternSettings settings, Transaction transaction)
        {
            BasicParser parser = new BasicParser("");

            DeleteGeneratedBlocks(parser);

            UpdateEventCodes(instance.Settings, parser);

            parser.InsertBefore(0, MenuContext.get(instance.WebObject.Actions).Events());

            // Se não vou gerar BC e tenho abas
            if (!instance.Transaction.WebBC && instance.Transaction.Form.Tabs.Count > 0)
            {
                Tab tabs = Tab.getTab(instance.Transaction.Form, transaction);
                parser.InsertBefore(0, tabs.Subs());
                //parser.InsertBefore(0, TemplateAbas.EventsExtra(instance.Transaction.Form));
            }
            UpdateEventActions(instance, settings, parser);
            UpdateEventPrompts(instance, settings,parser);
            UpdateEventAfterTrn(instance, transaction, parser);
            UpdateEventStart(instance, settings, transaction, parser);

            return parser.Text;
        }
Example #9
0
 private void ChangeDocumentation(DocumentationPart docp, KBObject obj, HPatternInstance wwInstance, HPatternSettings settings)
 {
     TemplateInternal.DocumentationSave(docp, obj, wwInstance, settings);
 }
        private void AddFirstLevel(Transaction trn, HPatternInstance instance, IList<TransactionAttribute> fixedAttris)
        {
            string levelKey = String.Format("{0}:{1}", trn.Guid, trn.Structure.Root.Id);

            LevelElement levelElement = instance.AddLevel(levelKey);
            levelElement.Name = trn.Name;
            AddDescriptionAttribute(levelElement, trn.Structure.Root.DescriptionAttribute);
            AddSelection(trn, levelElement);
            AddPrompt(trn, levelElement);
            if (settings.Template.SuggestView)
            {
                AddView(trn, levelElement, true, trn.Structure.Root.PrimaryKey, trn.Structure.Root, trn.Name, trn.Description, true, fixedAttris);
            }
        }
        private void Generate(Transaction transaction, HPatternInstance instance)
        {
            instance.UpdateTransaction = HPatternInstance.UpdateTransactionValue.CreateDefault;
            if (instance.Transaction == null)
            {
                instance.Transaction = new TransactionElement();
            }
            instance.Transaction.Transaction = transaction;
            instance.Transaction.BCErrorCode = settings.Template.BCErrorCode;
            instance.Transaction.BCSucessCode = settings.Template.BCSucessCode;
            HPatternBuildProcess.ClearSuggest();

            AddParameters(instance.Transaction.Parameters, true, transaction.Structure.Root.PrimaryKey, new List<TransactionAttribute>());

            AddSuggestParameters(instance.Transaction.Parameters, true, false);

            AddSuggestActions(instance.Transaction.Actions, instance.Settings,true);

            AddFormTransaction(transaction, instance.Transaction.Form);

            AddFirstLevel(transaction, instance, new List<TransactionAttribute>());

            string tmpn = HPatternBuildProcess.GetSugestName(transaction.Name, instance.Settings);
            if (!String.IsNullOrEmpty(tmpn))
                instance.Transaction.ObjName = tmpn;

            if (instance.Transaction.Form.Tabs.Count == 0 && settings.Template.TabFunction == SettingsTemplateElement.TabFunctionValue.TreeViewAnchor
                && instance.Transaction.Form.Instance.Levels != null && instance.Transaction.Form.Instance.Levels.Count > 0
                && instance.Transaction.Form.Instance.Levels[0].View != null)
            {
                TabFormElement tabf = instance.Transaction.Form.AddTabForm(transaction.Name);
                tabf.Description = transaction.Description;
            }
        }
        private void BuildPrompt(HPatternInstance instance, AttributeElement ae,TransactionAttribute ta,Transaction trn)
        {
            List<string> listapk = new List<string>();
            foreach (AttributeRelation ar in ta.ForeignKeyTo.KeyAttributes)
            {
                listapk.Add(ar.Related.Name);
            }

            IEnumerable<WebPanel> listaw = WebPanel.GetAll(instance.Model);
            bool geralink = false;
            foreach (WebPanel wobj in listaw)
            {
                // Se este objeto foi gerado pelo Pattern
                if (String.IsNullOrEmpty(settings.Template.PromptSuggestNameContains) || wobj.Name.ToLower().IndexOf(settings.Template.PromptSuggestNameContains.ToLower()) >= 0)
                {
                    // Aqui vamos retirar a o loop infinito, então nunca ira sugerir um prompt dele mesmo
                    bool gera = true;
                    if (wobj.Parent is PatternInstance)
                    {
                        if (((PatternInstance)wobj.Parent).KBObjectKey.Equals(pinstance.KBObjectKey))
                            gera = false;
                    }
                    if (gera)
                    {
                        foreach (Signature sig in wobj.GetSignatures())
                        {
                            if (sig.ParametersCount > 0)
                            {
                                foreach (AttributeRelation ar in ta.ForeignKeyTo.KeyAttributes)
                                {
                                    geralink = false;
                                    foreach (Parameter par in sig.Parameters)
                                    {
                                        if (par.Object.Name.ToLower().IndexOf(ar.Related.Name.ToLower()) >= 0)
                                        {
                                            geralink = true;
                                        }
                                    }
                                    if (!geralink)
                                        break;
                                }
                                if (geralink)
                                {
                                    LinkElement link = new LinkElement();
                                    ae.Links.Add(link);
                                    link = new LinkElement();
                                    link.WebpanelObject = wobj;
                                    link.Tooltip = wobj.Description;

                                    foreach (AttributeRelation ar in ta.ForeignKeyTo.KeyAttributes)
                                    {
                                        link.Parameters.Add(new ParameterElement(ar.Base.Name));
                                    }
                                    break;
                                }
                            }
                            break;
                        }
                    }
                }
                if (geralink)
                {
                    break;
                }
            }
        }
Example #13
0
        public static HPatternInstance Load(PatternInstance instance)
        {
            if (instance == null)
                throw new ArgumentNullException("instance");

            HPatternInstance cachedWWInstance = instance.GetPropertyValue<HPatternInstance>(k_CacheProperty);
            if (cachedWWInstance != null)
                return cachedWWInstance;

            HPatternInstance wwInstance = new HPatternInstance(instance);
            wwInstance.Prepare();

            instance.PatternPart.InstanceChanged += new EventHandler<InstanceChangedEventArgs>(wwInstance.AssociatedInstance_InstanceChanged);
            instance.SilentSetPropertyValue(k_CacheProperty, wwInstance);
            return wwInstance;
        }
        private static void UpdateEventAfterTrn(HPatternInstance instance, Transaction transaction, BasicParser parser)
        {
            StringBuilder eventCodeAfterTrn = new StringBuilder();
            //if (transaction.IsBusinessComponent)
            //{
                eventCodeAfterTrn.AppendLine("[web]");
                eventCodeAfterTrn.AppendLine("{");
            //}

                if (instance.Settings.Template.GenerateCallBackLink)
                {
                    eventCodeAfterTrn.AppendLine(Indentation.Indent(String.Format("If &{0}.IsEmpty()", HPatternInstance.PARMCALLBACK), 1));
                    eventCodeAfterTrn.AppendLine(Indentation.Indent("Return", 2));
                    eventCodeAfterTrn.AppendLine(Indentation.Indent("Else", 1));
                    eventCodeAfterTrn.AppendLine(Indentation.Indent(String.Format("PrLinkCallBack(&{0})", HPatternInstance.PARMCALLBACK), 2));
                    eventCodeAfterTrn.AppendLine(Indentation.Indent("EndIf", 1));
                    eventCodeAfterTrn.AppendLine("");
                }
                else
                {

                    bool appendBlankLine = false;
                    AppendRedirection(instance, eventCodeAfterTrn, "Insert", instance.AfterInsert, ref appendBlankLine);
                    AppendRedirection(instance, eventCodeAfterTrn, "Update", instance.AfterUpdate, ref appendBlankLine);

                    // Delete is special because we cannot return to caller when deleting from a view.
                    if (!AppendRedirection(instance, eventCodeAfterTrn, "Delete", instance.AfterDelete, ref appendBlankLine))
                    {
                        SelectionElement emergencyRedirection;
                        if (instance.Settings.Template.UseTransactionContext && CanRedirectToSelection(instance, out emergencyRedirection))
                        {
                            if (appendBlankLine)
                                eventCodeAfterTrn.AppendLine(String.Empty);

                            eventCodeAfterTrn.AppendLine("If (&Mode = TrnMode.Delete and not &TrnContext.CallerOnDelete)");
                            eventCodeAfterTrn.AppendLine(String.Format("\t{0}.Call({1})", emergencyRedirection.ObjectName, emergencyRedirection.Parameters.List()));
                            eventCodeAfterTrn.Append("Endif");
                        }
                    }

                }

                //if (transaction.IsBusinessComponent)
                //{
                eventCodeAfterTrn.AppendLine("");
                eventCodeAfterTrn.Append("}");
                //}

            // Add the event (or modify the existing one).
            UpdateEventCode(parser, new string[] { "After", "Trn" }, eventCodeAfterTrn.ToString());
        }
Example #15
0
        private void SetObjectsMasterPage(string tipo, bool ar, HPatternInstance wwInstance, InstanceObjectsGroup group, WebPanel masterPage, Theme tTema, string ATema, string AMP)
        {
            if (group != null && tipo == "p")
            {
                foreach (WebPanel webPanel in group.GetObjects<WebPanel>())
                {
                    webPanel.SetPropertyValue(Properties.WBP.EncryptUrlParameters, Properties.WBP.EncryptUrlParameters_Values.No);
                }
            }

            if (group != null)
            {
                foreach (WebPanel webPanel in group.GetObjects<WebPanel>())
                {
                    if (webPanel.IsPropertyDefault(Properties.WBP.MasterPage) || AMP == SettingsThemeElement.SetObjectThemeValue.Force)
                    {
                        if (masterPage == null)
                        {
                            webPanel.SetPropertyValue(Properties.WBP.MasterPage, new WebPanelReference());
                        }
                        else
                        {
                            webPanel.SetPropertyValue(Properties.WBP.MasterPage, new WebPanelReference(masterPage));
                        }
                    }

                    if (tTema != null)
                    {
                        if (webPanel.IsPropertyDefault(Properties.WBP.Theme) || ATema == SettingsThemeElement.SetObjectThemeValue.Force)
                        {
                            webPanel.SetPropertyValue(Properties.WBP.Theme, new KBObjectReference(tTema));
                        }
                    }

                    if (tipo == "p") {

                        foreach (LevelElement l in wwInstance.Levels) {
                            foreach (PromptElement p in l.Prompts) {
                                bool ari = ar;
                                if (p.AutomaticRefresh.ToLower() == "true")
                                    ari = true;
                                if (p.AutomaticRefresh.ToLower() == "false")
                                    ari = false;

                                if (webPanel.Name.ToLower() == p.Name.ToLower()) {
                                    if (ari)
                                    {
                                        webPanel.SetPropertyValue(Properties.WBP.AutomaticRefresh, Properties.WBP.AutomaticRefresh_Values.WhenVariablesInConditionsChange);
                                    }
                                    else
                                    {
                                        webPanel.SetPropertyValue(Properties.WBP.AutomaticRefresh, Properties.WBP.AutomaticRefresh_Values.No);
                                    }
                                }

                            }

                        }
                    }

                    if (tipo == "s") {
                        InstanceObject sl = group.Objects.Find(delegate(InstanceObject iobj) { return iobj.Object == HPatternObject.Selection; });

                        if (sl != null)
                        {
                            if (webPanel.Name == sl.Name) {
                                foreach (LevelElement l in wwInstance.Levels) {
                                    bool ari = ar;
                                    if (l.Selection.AutomaticRefresh.ToLower() == "true")
                                        ari = true;
                                    if (l.Selection.AutomaticRefresh.ToLower() == "false")
                                        ari = false;

                                    if (ari)
                                    {
                                        webPanel.SetPropertyValue(Properties.WBP.AutomaticRefresh, Properties.WBP.AutomaticRefresh_Values.WhenVariablesInConditionsChange);
                                    }
                                    else
                                    {
                                        webPanel.SetPropertyValue(Properties.WBP.AutomaticRefresh, Properties.WBP.AutomaticRefresh_Values.No);
                                    }

                                }
                            }
                        }
                    }
                }
            }
        }
 private static void UpdateEventPrompts(HPatternInstance instance,HPatternSettings settings, BasicParser parser)
 {
     string tmp = Helpers.Template.PromptEvents(instance.Transaction.Form, settings);
     if (!String.IsNullOrEmpty(tmp))
     {
         StringBuilder eventCode = new StringBuilder();
         //eventCode.AppendLine(Indentation.Indent(k_GeneratedMarkerStart, 1));
         eventCode.Append(tmp);
         eventCode.Append(Environment.NewLine);
         //eventCode.AppendLine(Indentation.Indent(k_GeneratedMarkerEnd, 1));
         parser.InsertBefore(0, eventCode.ToString());
     }
 }
        private static void UpdateVariables(HPatternInstance instance, HPatternSettings settings, Transaction transaction)
        {
            foreach (RowElement row in instance.Transaction.GetRows(""))
            {
                foreach (ColumnElement col in row.Columns)
                {
                    foreach (VariableElement vare in col.Variables)
                    {
                        if (vare.Domain != null) {
                            Variable var = AddVariable(transaction,vare.Name);
                            if (var != null)
                                var.DomainBasedOn = vare.Domain;

                        }
                        if (vare.Attribute != null)
                        {
                            Variable var = AddVariable(transaction, vare.Name);
                            if (var != null)
                                var.AttributeBasedOn = vare.Attribute;
                        }
                    }
                }
            }

            Tab tabs = Tab.getTab(instance.Transaction.Form, transaction);

            tabs.VariablesTrn();

            /*
            Variable var2 = AddVariable(transaction, "MenuData");
            if (var2 != null)
                DataType.ParseInto(transaction.Model, "MenuData", var2);

            var2 = AddVariable(transaction, "MenuDataItem");
            if (var2 != null)
                DataType.ParseInto(transaction.Model, "MenuData.MenuDataItem", var2);
            */

            Variable var2 = AddVariable(transaction, "HTTPRequest");
            if (var2 != null)
                DataType.ParseInto(transaction.Model, "HttpRequest", var2);

            var2 = AddVariable(transaction, "n");
            if (var2 != null)
            {
                var2.Type = eDBType.NUMERIC;
                var2.Length = 1;
                var2.Decimals = 0;
                var2.Signed = false;
            }

            // Add variables for primary key.
            foreach (TransactionAttribute trnAtt in transaction.Structure.Root.PrimaryKey)
                AddBasedOnVariable(transaction, trnAtt.Name, trnAtt);

            // Add variables for Context.
            foreach (SettingsContextVariableElement contextVar in settings.Context)
            {
                Variable var = AddVariable(transaction, contextVar.Name);
                if (var != null)
                    contextVar.SetType(var);
            }

            // Add variables for Security.
            //if (settings.Security.Enabled)
            //{
                var2 = AddVariable(transaction, "IsAuthorized");
                if (var2 != null)
                    var2.Type = eDBType.Boolean;
            //}

            if (instance.Transaction.Parameters != null)
            {
                if (instance.Transaction.Parameters.Count > 0) {

                    foreach (ParameterElement pare in instance.Transaction.Parameters)
                    {
                        if (pare.IsAttribute)
                        {
                            TransactionAttribute ta = transaction.Structure.Root.GetAttribute(pare.Name);
                            if (ta != null)
                            {
                                AddBasedOnVariable(transaction, pare.Name, ta);
                            }
                        }
                        else
                        {
                            if (!String.IsNullOrEmpty(pare.DomainName))
                            {
                                Variable var = AddVariable(transaction, pare.Name.Replace("&",""));
                                if (var != null)
                                    var.DomainBasedOn = pare.Domain;
                            }
                        }
                    }
                }
            }

            /*
            if (instance.Transaction.Form.HasConditionalTabs())
            {
                Variable var = AddVariable(transaction, "conta");
                if (var != null)
                {
                    var.Type = eDBType.NUMERIC;
                    var.Length = 4;
                    var.Decimals = 0;
                    var.Signed = false;
                }
            }
            */

            if (settings.Template.UseTransactionContext)
            {
                Variable var = AddVariable(transaction, "TrnContext");
                if (var != null)
                    DataType.ParseInto(transaction.Model, "TransactionContext", var);

                var = AddVariable(transaction, "WebSession");
                if (var != null)
                    DataType.ParseInto(transaction.Model, "WebSession", var);

                if (HasContextAttributes(transaction))
                {
                    // Add variables for Context Attributes (FKs excluding PKs atts)
                    foreach (TransactionAttribute trnAtt in ContextAttributes(transaction))
                        AddBasedOnVariable(transaction, "Insert_" + trnAtt.Name, trnAtt);

                    var = AddVariable(transaction, "TrnContextAtt");
                    if (var != null)
                        DataType.ParseInto(transaction.Model, "TransactionContext.Attribute", var);
                }
            }
            addLinkCallBack(instance,transaction.Variables);

            MenuContext.get(instance.WebObject.Actions).Variables(transaction.Variables);
        }
        private static void UpdateEventStart(HPatternInstance instance, HPatternSettings settings, Transaction transaction, BasicParser parser)
        {
            StringBuilder eventCodeStart = new StringBuilder(100);

            eventCodeStart.AppendLine(Messages.VersionHPattern());

            Generator.GeneratorParameters parameters = new Generator.GeneratorParameters();
            DefaultProvider.PrepareTemplateParameters(parameters);
            parameters.Properties["Settings"] = settings;
            parameters.Properties["tipo"] = 0;

            AppendTemplateOutput(eventCodeStart, "SubLoadContext", parameters);

            //if (settings.Security.Enabled)
            //{

            eventCodeStart.AppendLine("[web]");
            eventCodeStart.AppendLine("{");

            parameters.Properties["Instance"] = instance;
            parameters.Properties["IsTransaction"] = true;

            AppendTemplateOutput(eventCodeStart, "SubCheckSecurity", parameters);

            //}

            if (settings.Security.EventStart != String.Empty)
            {
                eventCodeStart.AppendLine("");
                eventCodeStart.AppendLine(settings.Security.EventStart);
            }

            eventCodeStart.AppendLine();
            eventCodeStart.Append("}");

            if (settings.Template.UseTransactionContext)
            {
                if (eventCodeStart.Length > 0)
                    eventCodeStart.AppendLine();

                eventCodeStart.AppendLine("&TrnContext.FromXml(&WebSession.Get(!\"TrnContext\"))");

                if (HasContextAttributes(transaction))
                {
                    eventCodeStart.AppendLine("If (&TrnContext.TransactionName = &Pgmname and &Mode = TrnMode.Insert)");
                    eventCodeStart.AppendLine("\tFor &TrnContextAtt in &TrnContext.Attributes");

                    bool first = true;
                    foreach (TransactionAttribute icAtt in ContextAttributes(transaction))
                    {
                        if (first)
                        {
                            eventCodeStart.AppendLine("\t\tDo Case");
                            first = false;
                        }
                        eventCodeStart.AppendFormat("\t\t\t// When inserting with instantiated {0}\r\n", icAtt.Name);
                        eventCodeStart.AppendFormat("\t\t\tCase &TrnContextAtt.AttributeName = !\"{0}\"\r\n", icAtt.Name);
                        eventCodeStart.AppendFormat("\t\t\t\t&Insert_{0}.FromString(&TrnContextAtt.AttributeValue)\r\n", icAtt.Name);
                    }
                    if (!first)
                        eventCodeStart.AppendLine("\t\tEndcase");

                    eventCodeStart.AppendLine("\tEndfor");
                    eventCodeStart.Append("Endif");
                }
            }

            if (settings.Template.EventStart != String.Empty) {
                eventCodeStart.AppendLine("");
                eventCodeStart.AppendLine(settings.Template.EventStart);
            }

            eventCodeStart.AppendLine("");
            eventCodeStart.AppendLine("[web]");
            eventCodeStart.AppendLine("{");

                IBaseCollection<RowElement> lista = instance.Transaction.GetRows("",true,true);

                foreach (RowElement row in lista)
                {

                    foreach (ColumnElement col in row.Columns)
                    {
                        foreach (VariableElement var in col.Variables)
                        {
                            if (var.Domain != null || var.Attribute != null)
                            {
                                if (!var.Visible || !row.Visible)
                                {
                                    eventCodeStart.AppendLine("");
                                    eventCodeStart.AppendFormat("&{0}.Visible = false", var.Name);
                                }
                                if (!String.IsNullOrEmpty(var.LoadCode))
                                {
                                    eventCodeStart.AppendLine("");
                                    eventCodeStart.AppendLine(var.LoadCode);
                                }
                                if (!String.IsNullOrEmpty(var.LinksEventStart))
                                {
                                    eventCodeStart.AppendLine("");
                                    eventCodeStart.AppendLine(var.LinksEventStart);
                                }

                            }
                        }

                        foreach (AttributeElement att in col.Attributes)
                        {
                            if (att.Attribute != null)
                            {
                                if (!att.Visible || !row.Visible)
                                {
                                    eventCodeStart.AppendLine("");
                                    eventCodeStart.AppendFormat("{0}.Visible = false", att.AttributeName);

                                }
                                if (!String.IsNullOrEmpty(att.LinksEventStart))
                                {
                                    eventCodeStart.AppendLine("");
                                    eventCodeStart.AppendLine(att.LinksEventStart);
                                }
                                if (!String.IsNullOrEmpty(att.EventStart))
                                {
                                    eventCodeStart.AppendLine("");
                                    eventCodeStart.AppendLine(String.Format(att.EventStart, att.AttributeName, att.AttributeName));
                                }
                            }
                        }

                        foreach (TextElement text in col.Texts)
                        {

                            if (!text.Visible || !row.Visible)
                            {
                                eventCodeStart.AppendLine("");
                                eventCodeStart.AppendFormat("{0}.Visible = false", text.Name);
                            }
                        }
                    }
                }
            //}

            bool setFocus = instance.Transaction.GetSetFocus;
            /*
                settings.Template.TransactionSetFocus;
            if (instance.Transaction.SetFocus.ToLower() == "true")
                setFocus = true;
            if (instance.Transaction.SetFocus.ToLower() == "true")
                setFocus = false;
            */

            Artech.Genexus.Common.Objects.Attribute setFocusAtt = instance.Transaction.SetFocusAttribute;
            if (setFocusAtt == null && transaction.Structure.Root.DescriptionAttribute != null)
            {
                setFocusAtt = transaction.Structure.Root.DescriptionAttribute.Attribute;
            }

            if (setFocus && setFocusAtt != null)
            {
                eventCodeStart.AppendLine();
                eventCodeStart.AppendLine(setFocusAtt.Name + ".SetFocus()");
            }

            eventCodeStart.AppendLine("");

            // Se não vou gerar BC e tenho abas
            if (!instance.Transaction.WebBC && instance.Transaction.Form.Tabs.Count > 0)
            {
                Tab tabs = Tab.getTab(instance.Transaction.Form, transaction);
                eventCodeStart.Append(tabs.Events());
                //eventCodeStart.Append( TemplateAbas.Start(instance.Transaction.Form));
            }

            eventCodeStart.AppendLine(Helpers.Template.HMaskEventStart(instance.Transaction, "", false));

            eventCodeStart.AppendLine("}");

            if (!String.IsNullOrEmpty(instance.Transaction.EventStart))
            {
                eventCodeStart.AppendLine(Indentation.Indent(instance.Transaction.EventStart, 1));
            }

            if (eventCodeStart.Length > 0)
                UpdateEventCode(parser, new string[] { "Start" }, eventCodeStart.ToString());
        }
 private static void addLinkCallBack(HPatternInstance instance,VariablesPart variables)
 {
     if (instance.Settings.Template.GenerateCallBackLink)
     {
         Variable var = AddVariable(variables,HPatternInstance.PARMCALLBACK);
         if (var != null)
             var.DomainBasedOn = Domain.Get(instance.Model,HPatternInstance.PARMCALLBACK);
     }
 }
        private static string UpdateRules(HPatternInstance instance, HPatternSettings settings, Transaction transaction)
        {
            StringBuilder rules = new StringBuilder();

            StringBuilder eventCodeAfterTrn = new StringBuilder();
            //if (transaction.IsBusinessComponent)
            //{
            rules.AppendLine("[web]");
            rules.AppendLine("{");
            //}

            // Add 'parm' rule
            rules.Append(instance.Transaction.GeraParm(false));

            // Add Prompts rule
            rules.Append(Helpers.Template.PromptRules(instance.Transaction.Form, settings));

            // Add 'primary key rules'
            foreach (TransactionAttribute trnAtt in transaction.Structure.Root.PrimaryKey)
            {
                rules.AppendFormat("\r\n{0} = &{0} if not &{0}.IsEmpty();", trnAtt.Name);

                bool edita = false;
                bool sai = false;

                foreach (RowElement row in Helpers.Template.GetRows(instance.Transaction, ""))
                {
                    foreach (ColumnElement col in row.Columns)
                    {
                        foreach (AttributeElement att in col.Attributes)
                        {
                            if (att.AttributeName == trnAtt.Name)
                            {
                                if (att.Readonly || att.Visible == false || row.Visible == false)
                                {
                                    edita = true;

                                }
                                sai = true;
                                break;
                            }
                        }

                        if (sai)
                            break;

                    }

                    if (sai)
                        break;
                }

                if (edita || (transaction.Structure.Root.PrimaryKey.Count == 1 && trnAtt.Attribute.GetPropertyValue<bool>(Properties.ATT.Autonumber)))
                    rules.AppendFormat("\r\nnoaccept({0});", trnAtt.Name);
                else
                    rules.AppendFormat("\r\nnoaccept({0}) if not &{0}.IsEmpty();", trnAtt.Name);
            }

            // Add 'noprompt' rule.
            rules.AppendFormat("\r\nnoprompt({0});", GetList(transaction.Structure.Root.PrimaryKey));

            // Add context rules if applicable.
            if (settings.Template.UseTransactionContext)
            {
                rules.AppendLine();
                foreach (TransactionAttribute trnAtt in ContextAttributes(transaction))
                {
                    rules.AppendFormat("\r\n{0} = &Insert_{0} if &Mode = TrnMode.Insert and not &Insert_{0}.IsEmpty();", trnAtt.Name);
                    rules.AppendFormat("\r\nnoaccept({0}) if &Mode = TrnMode.Insert and not &Insert_{0}.IsEmpty();", trnAtt.Name);
                }
            }

            if (settings.Security.RuleCode != String.Empty) {
                rules.AppendLine(settings.Security.RuleCode);
            }

            rules.AppendLine();
            rules.Append(Helpers.Template.HMaskRuleSave(instance.Transaction, "", ""));
            rules.AppendLine();

            //if (transaction.IsBusinessComponent)
            //{
            rules.AppendLine("}");
            //}

            string ruledate = settings.Template.RuleDate;
            string valueruledate = settings.Template.ValueRuleDate;
            string ruledatetime = settings.Template.RuleDateTime;
            string valueruledatetime = settings.Template.ValueRuleDateTime;
            string defaultvalue = "";
            string defaultrule = "";

                IBaseCollection<RowElement> lista = new BaseCollection<RowElement>();
                lista = instance.Transaction.GetRows("",true,true);

                foreach (RowElement row in lista)
                {

                    foreach (ColumnElement col in row.Columns)
                    {
                        foreach (AttributeElement att in col.Attributes)
                        {
                            if (att.Attribute != null)
                            {

                                // Atributo Requerido

                                bool required = att.getRequired(transaction);

                                if (required)
                                {
                                    string message = settings.Template.RequiredNotNullMessage;
                                    if (att.RequiredMessage != String.Empty && att.RequiredMessage.ToLower() != "default")
                                    {
                                        message = att.RequiredMessage;
                                    }

                                    message = String.Format(message, (att.Description.Substring(0,1) == "=" ? att.Attribute.Description : att.Description ));

                                    if (att.RequiredAfterVal)
                                    {
                                        rules.AppendLine(String.Format("Error('{0}') if {1}.IsEmpty() on AfterValidate;", message, att.AttributeName));
                                    }
                                    else
                                    {
                                        rules.AppendLine(String.Format("Error('{0}') if {1}.IsEmpty();", message, att.AttributeName));
                                    }

                                }

                                // Regra para o atributo
                                defaultvalue = att.ValueRule;
                                if (defaultvalue == "<default>" || defaultvalue == String.Empty)
                                {
                                    defaultvalue = "";
                                    switch (att.Attribute.Type)
                                    {
                                        case eDBType.DATE:
                                            defaultvalue = valueruledate;
                                            break;

                                        case eDBType.DATETIME:
                                            defaultvalue = valueruledatetime;
                                            break;

                                    }
                                }

                                defaultrule = att.Rule;
                                if (defaultrule.ToLower() == "<default>")
                                {
                                    defaultrule = "";
                                    switch (att.Attribute.Type)
                                    {
                                        case eDBType.DATE:
                                            defaultrule = ruledate;
                                            break;

                                        case eDBType.DATETIME:
                                            defaultrule = ruledatetime;
                                            break;

                                    }
                                }

                                if (defaultvalue != String.Empty && defaultrule != String.Empty)
                                {

                                    switch (defaultrule)
                                    {
                                        case AttributeElement.RuleValue.DefaultRule: // "defaultrule":
                                            rules.AppendLine(String.Format("Default({0},{1});", att.AttributeName, defaultvalue));
                                            break;

                                        case AttributeElement.RuleValue.AfterValidate: // "aftervalidate":
                                            rules.AppendLine(String.Format("{0} = {1} On AfterValidate;", att.AttributeName, defaultvalue));
                                            break;

                                        case AttributeElement.RuleValue.AfterInsert:
                                            rules.AppendLine(String.Format("{0} = {1} On AfterInsert;", att.AttributeName, defaultvalue));
                                            break;

                                        case AttributeElement.RuleValue.AfterUpdate:
                                            rules.AppendLine(String.Format("{0} = {1} On AfterUpdate;", att.AttributeName, defaultvalue));
                                            break;

                                        case AttributeElement.RuleValue.AfterDelete:
                                            rules.AppendLine(String.Format("{0} = {1} On AfterDelete;", att.AttributeName, defaultvalue));
                                            break;

                                        case AttributeElement.RuleValue.BeforeValidate:
                                            rules.AppendLine(String.Format("{0} = {1} On BeforeValidate;", att.AttributeName, defaultvalue));
                                            break;

                                        case AttributeElement.RuleValue.BeforeInsert:
                                            rules.AppendLine(String.Format("{0} = {1} On BeforeInsert;", att.AttributeName, defaultvalue));
                                            break;

                                        case AttributeElement.RuleValue.BeforeUpdate:
                                            rules.AppendLine(String.Format("{0} = {1} On BeforeUpdate;", att.AttributeName, defaultvalue));
                                            break;

                                        case AttributeElement.RuleValue.BeforeDelete:
                                            rules.AppendLine(String.Format("{0} = {1} On BeforeDelete;", att.AttributeName, defaultvalue));
                                            break;
                                    }
                                }

                            }
                        }
                    }
                }
            //}

            string codes = TemplateInternal.RuleCodes(TemplateInternal.CodeType.Transaction, settings);
            if (!String.IsNullOrEmpty(codes))
            {
                rules.Append(codes);
            }

            return AppendRules(transaction, rules.ToString());
        }
        private static bool AppendRedirection(HPatternInstance instance, StringBuilder sb, string mode, string option, ref bool appendBlankLine)
        {
            string redirectionLine = null;

            SelectionElement selection;
            if (option == HPatternInstance.AfterInsertValue.GoToSelection && CanRedirectToSelection(instance, out selection))
                redirectionLine = String.Format("\t{0}.Call({1})", selection.ObjectName, selection.Parameters.List());

            ViewElement view;
            if (option == HPatternInstance.AfterInsertValue.GoToView && CanRedirectToView(instance, out view))
            {
                redirectionLine = String.Format("\t{0}.Call({1})", view.ObjectName, view.Parameters.ListView());
            }

            if (redirectionLine != null)
            {
                if (appendBlankLine)
                    sb.AppendLine(String.Empty);

                sb.AppendLine(String.Format("If (&Mode = TrnMode.{0})", mode));
                sb.AppendLine(redirectionLine);
                sb.Append("Endif");

                appendBlankLine = true;
                return true;
            }

            return false;
        }
Example #22
0
 public static String GetWidth(String value, HPatternInstance instance)
 {
     if (String.IsNullOrEmpty(value))
     {
         return instance.Settings.Grid.GridWidth;
     } else {
         return value;
     }
 }
Example #23
0
        public static HPatternInstance FastLoad(PatternInstance instance)
        {
            if (instance == null)
                throw new ArgumentNullException("instance");

            HPatternInstance wwInstance = new HPatternInstance(instance);
            return wwInstance;
        }