예제 #1
0
        private static string GenerateViewModelText(string templateType, string templateName, string ClassName, string TableName, string CategoryName, string autogenWarningText)
        {
            //Splittum template-inu í flokka eftir --PROPERTIES-- taginu
            var splitTemplate = TemplateParser.SplitTemplate(TemplateParser.ParseTemplate(templateType, templateName, ClassName, TableName, CategoryName, ""));

            //Náum í lista af properties fyrir töflunafnið
            var properties = DatabaseMockup.Get_propertyType_propertyName_List(TableName);

            //Byrjum á að smíða texta strenginn, setjum fyrst inn viðvörun um að file-inn sé auto generated
            string viewModelText = "//" + autogenWarningText + Environment.NewLine;

            //Setjum inn efri part splittaða template-sins
            viewModelText += splitTemplate.ElementAt(0).ToString();

            foreach (var element in properties)
            {
                //Athugum hvort að porperty type sé selectable, við viljum aðeins generate-a ef við erum að eiga við selectable týpu
                if (DatabaseMockup.IsSelectable(CategoryName, element.Item2))
                {
                    viewModelText += TemplateParser.ParseTemplate(templateType, templateType + "selectable", ClassName + "List", TableName, CategoryName, element.Item2.Substring(0, element.Item2.Length - 2));
                    viewModelText += Environment.NewLine;
                }
            }

            //Setjum inn lokahluta template-sins
            viewModelText += splitTemplate.ElementAt(1);

            return(viewModelText);
        }
        //Býr til texta fyrir heilan controller
        private static string GenerateControllerText(string CategoryName, string autogenWarningText)
        {
            //Splittum template-inu í flokka eftir --PROPERTIES-- taginu
            var splitTemplate = TemplateParser.SplitTemplate(TemplateParser.ParseTemplate("Controller", "Controller", "", "", CategoryName, ""));

            //Byrjum á að smíða texta strenginn, setjum fyrst inn viðvörun um að file-inn sé auto generated
            string controllerText = "//" + autogenWarningText + Environment.NewLine;

            //Setjum inn efri hluta controller skilgreiningar
            controllerText += splitTemplate.ElementAt(0) + Environment.NewLine + Environment.NewLine + Environment.NewLine;

            //Náum í lista af öllum klösum(töflum) sem eiga heima innan CategoryName flokksins
            var classesInCategory = DatabaseMockup.Get_className_categoryName_InCategory(CategoryName);

            //Setjum inn allar controller functions
            for (int i = 0; i < DatabaseMockup.Get_className_categoryName_InCategory(CategoryName).Count; i++)
            {
                controllerText += GenerateControllerTextForSingleClass("Controller", "Controller", classesInCategory.ElementAt(i).Item1, classesInCategory.ElementAt(i).Item2, CategoryName);

                //Setjum inn newlines á milli klasa ef við erum ekki á síðasta klasanum
                if (i != DatabaseMockup.Get_className_categoryName_InCategory(CategoryName).Count - 1)
                {
                    controllerText += Environment.NewLine + Environment.NewLine;
                }
            }

            //Setjum inn neðri hluta controller-sins, það ættu bara að vera tveir }
            controllerText += splitTemplate.ElementAt(1);

            return(controllerText);
        }
예제 #3
0
        public static void GenerateViewModels(string path, string autogenWarningText)
        {
            //Eyðum möppu
            DeleteViewModels(path);

            //Búum möppu til upp á nýtt
            System.IO.Directory.CreateDirectory(path);

            foreach (var element in DatabaseMockup.Get_className_tableName_categoryName_List())
            {
                //Náum í alla flags sem eru á tölfunni(ClassName)
                var flags = DatabaseMockup.GetFlagsForClassName(element.Item1);

                //Generate-um ClassNameViewModel file-ana, ef það er eitthvað view notað(Create, Edit eða Details) þá þurfum við ViewModel fyrir það
                if (!(flags.Contains("NoCreate") && flags.Contains("NoEdit") && flags.Contains("NoDetails")))
                {
                    GenerateViewModelFile(GenerateViewModelText("ViewModel", "ViewModel", element.Item1, element.Item2, element.Item3, autogenWarningText), element.Item1, element.Item3, path);
                }

                //Generate-um ClassNameListViewModel file-ana
                if (!(flags.Contains("NoList")))
                {
                    GenerateViewModelFile(GenerateViewModelText("ViewModel", "ViewModelList", element.Item1, element.Item2, element.Item3, autogenWarningText), element.Item1 + "List", element.Item3, path);
                }
            }
        }
예제 #4
0
        public static void GenerateViews(string path, string autogenWarningText)
        {
            //Eyðum möppu
            DeleteViews(path);

            //Búum möppu til upp á nýtt
            System.IO.Directory.CreateDirectory(path);

            foreach (var element in DatabaseMockup.Get_className_tableName_categoryName_List())
            {
                //Generate-um Create view
                if (!(DatabaseMockup.GetFlagsForClassName(element.Item1).Contains("NoCreate")))
                {
                    GenerateViewFile(GenerateViewText("CreateEdit", "CreateView", element.Item1, element.Item2, element.Item3, autogenWarningText), element.Item1, "Create" + element.Item1, element.Item3, path);
                }

                //Generate-um Edit view
                if (!(DatabaseMockup.GetFlagsForClassName(element.Item1).Contains("NoEdit")))
                {
                    GenerateViewFile(GenerateViewText("CreateEdit", "EditView", element.Item1, element.Item2, element.Item3, autogenWarningText), element.Item1, "Edit" + element.Item1, element.Item3, path);
                }

                //Generate-um Details view
                if (!(DatabaseMockup.GetFlagsForClassName(element.Item1).Contains("NoDetails")))
                {
                    GenerateViewFile(GenerateViewText("Details", "DetailsView", element.Item1, element.Item2, element.Item3, autogenWarningText), element.Item1, "Details" + element.Item1, element.Item3, path);
                }

                //Generate-um List view
                if (!(DatabaseMockup.GetFlagsForClassName(element.Item1).Contains("NoList")))
                {
                    GenerateViewFile(GenerateViewText("List", "ListView", element.Item1, element.Item2, element.Item3, autogenWarningText), element.Item1, element.Item2, element.Item3, path);
                }
            }
        }
        //Býr til texta fyrir allar functions sem einn klasi þarf innan controllers
        private static string GenerateControllerTextForSingleClass(string templateType, string templateName, string ClassName, string TableName, string CategoryName)
        {
            //Náum í alla flags sem eru á tölfunni(ClassName)
            var flags = DatabaseMockup.GetFlagsForClassName(ClassName);

            //Byrjum á að smíða loka template strenginn,
            string controllerString = "";

            //Setjum inn smá comment á milli tafla(klasa) til að það verði skýrara að skoða controller-inn.
            controllerString += "\t\t/*\r\n";
            controllerString += "\t\t\t" + ClassName + " functions\r\n";
            controllerString += "\t\t*/\r\n";

            //Setjum inn List functions
            if (!(flags.Contains("NoList")))
            {
                controllerString += GetPropertiesTextForControllerFunctionString(templateType, templateName + "List", ClassName, TableName, CategoryName);
            }

            //Setjum inn Create functions
            if (!(flags.Contains("NoCreate")))
            {
                controllerString += GetPropertiesTextForControllerFunctionString(templateType, templateName + "Create", ClassName, TableName, CategoryName);
            }

            //Setjum inn Edit functions
            if (!(flags.Contains("NoEdit")))
            {
                controllerString += GetPropertiesTextForControllerFunctionString(templateType, templateName + "Edit", ClassName, TableName, CategoryName);
            }

            //Setjum inn Details function
            if (!(flags.Contains("NoDetails")))
            {
                controllerString += GetPropertiesTextForControllerFunctionString(templateType, templateName + "Details", ClassName, TableName, CategoryName);
            }

            //Setjum inn Delete function
            if (!(flags.Contains("NoDelete")))
            {
                controllerString += TemplateParser.ParseTemplate(templateType, templateName + "Delete", ClassName, TableName, CategoryName, "") + Environment.NewLine + Environment.NewLine;
            }

            //Ef að engin functions fyrir þessa töflu áttu að fara í controller-inn, þá setjum við inn eitt línubil til að jafna útlitið á generated controller-num
            if (flags.Contains("NoList") && flags.Contains("NoCreate") && flags.Contains("NoEdit") && flags.Contains("NoDetails") && flags.Contains("NoDelete"))
            {
                controllerString += Environment.NewLine;
            }

            return(controllerString);
        }
        public static void GenerateControllers(string path, string autogenWarningText)
        {
            //Eyðum möppu
            DeleteControllers(path);

            //Búum möppu til upp á nýtt
            System.IO.Directory.CreateDirectory(path);

            foreach (var category in DatabaseMockup.GetCategories())
            {
                //Generate-um einn controller fyrir hvern category sem finnst
                GenerateControllerFile(GenerateControllerText(category, autogenWarningText), category, path);
            }
        }
        //Býr til streng sem að inniheldur textann fyrir --PROPERTIES-- innan controller function template-ana
        private static string GetPropertiesTextForControllerFunctionString(string templateType, string templateName, string ClassName, string TableName, string CategoryName)
        {
            string propertiesControllerString = "";

            //Splittum template-inu í flokka eftir --PROPERTIES-- taginu
            var splitTemplate = TemplateParser.SplitTemplate(TemplateParser.ParseTemplate(templateType, templateName, ClassName, TableName, CategoryName, ""));

            //Náum í lista af properties fyrir töflunafnið
            var properties = DatabaseMockup.Get_propertyType_propertyName_List(TableName);

            //Setjum inn efsta part splittaða template-sins
            propertiesControllerString += splitTemplate.ElementAt(0).ToString();

            foreach (var element in properties)
            {
                //Athugum hvort að porperty type sé selectable, við viljum aðeins generate-a ef við erum að eiga selectable týpu
                if (DatabaseMockup.IsSelectable(CategoryName, element.Item2))
                {
                    propertiesControllerString += TemplateParser.ParseTemplate(templateType, templateType + "Selectable", ClassName, TableName, CategoryName, element.Item2.Substring(0, element.Item2.Length - 2));
                    propertiesControllerString += Environment.NewLine;
                }
            }

            //Við athugum hvort að eitthvað hafi komið inn í --PROPERTIES--, annaðhvort í foreach lykkjunni hér að ofan eða í Template-inu, ef að síðasta táknið í propertiesControllerString er { þá kom
            //ekkert inn(það er -3 vegna þess að síðustu táknin eru: '{' '\r' '\n')
            if (!(propertiesControllerString.ElementAt(propertiesControllerString.Length - 3) == '{'))
            {
                //Ef eitthvað kom inn þá þurfum við að taka út síðustu kommuna(sem ætti að vera alveg síðasta táknið í strengnun)
                propertiesControllerString = propertiesControllerString.Substring(0, propertiesControllerString.Length - 3) + Environment.NewLine;
            }

            //Setjum inn lokahluta template-sins
            propertiesControllerString += splitTemplate.ElementAt(1) + Environment.NewLine;

            return(propertiesControllerString);
        }
예제 #8
0
        private static string GenerateViewText(string templateType, string templateName, string ClassName, string TableName, string CategoryName, string autogenWarningText)
        {
            //Splittum template-inu í flokka eftir --PROPERTIES-- taginu
            var splitTemplate = TemplateParser.SplitTemplate(TemplateParser.ParseTemplate("Views/" + templateType, templateName, ClassName, TableName, CategoryName, ""));

            //Náum í lista af properties fyrir töflunafnið
            var properties = DatabaseMockup.Get_propertyType_propertyName_List(TableName);

            //Byrjum á að smíða texta strenginn, setjum fyrst inn viðvörun um að file-inn sé auto generated
            string viewText = "@* " + autogenWarningText + " *@" + Environment.NewLine;

            //Síðan setjum við efsta part splittaða template-sins inn
            viewText += splitTemplate.ElementAt(0).ToString();

            //Útbúum færibreytu sem segir okkur til um hvort við séum að fara í gegnum for lykkjuna tvisvar sinnum, það þarf að gera það fyrir List view-in
            int k = 0;

            for (int i = 0; i < properties.Count; i++)
            {
                if (templateType == "CreateEdit")
                {
                    //Special case fyrir selectable, það á að vera represent-að á sérstakan hátt, ekki sem int
                    if (DatabaseMockup.IsSelectable(CategoryName, properties.ElementAt(i).Item2))
                    {
                        //Trimmum Id af endanum á property ef við erum að eiga við selectable, Id er sett inn í template-inu fyrir selectable
                        string propertyTrimmed = properties.ElementAt(i).Item2.Substring(0, properties.ElementAt(i).Item2.Length - 2);

                        viewText += TemplateParser.ParseTemplate("Views/" + templateType, templateType + "Selectable", ClassName, TableName, CategoryName, propertyTrimmed);
                    }
                    //Special case fyrir boolean
                    else if (properties.ElementAt(i).Item1 == "bool")
                    {
                        viewText += TemplateParser.ParseTemplate("Views/" + templateType, templateType + "Bool", ClassName, TableName, CategoryName, properties.ElementAt(i).Item2);
                    }
                    //Special case fyrir primary Id, sem er ekki höndlað eins og önnur editable int og er partur af Create og Edit views(sleppt í Create og hafður hidden í Edit)
                    else if (properties.ElementAt(i).Item2 != "Id")
                    {
                        //Ef við erum ekki að deal-a við special case, eins og Id, þá getum við lesið template-ið fyrir property-ið beint úr CreateEdittype template-inu
                        viewText += TemplateParser.ParseTemplate("Views/" + templateType, templateType + "Type", ClassName, TableName, CategoryName, properties.ElementAt(i).Item2);
                    }

                    //Setjum inn newline á milli properties á meðan við erum ekki á primaryKey, þetta er til þess að losna við auka línubil sem myndast annars í Create og Edit fyrir Id-ið, það er ekki höndlað sem property hér heldur tilgreint í ViewTemplate-unum sjálfum
                    if (properties.ElementAt(i).Item2 != "Id")
                    {
                        viewText += Environment.NewLine;
                    }
                }
                else if (templateType == "Details")
                {
                    viewText += TemplateParser.ParseTemplate("Views/" + templateType, templateType + "Type", ClassName, TableName, CategoryName, properties.ElementAt(i).Item2);

                    //Setjum inn newline á milli properties
                    viewText += Environment.NewLine;
                }
                else if (templateType == "List")
                {
                    var splitListPropertyTypeTemplate = new List <string>();

                    //Special case fyrir selectable, það á að vera represent-að á sérstakan hátt, ekki sem int
                    if (DatabaseMockup.IsSelectable(CategoryName, properties.ElementAt(i).Item2))
                    {
                        //Trimmum Id af endanum á property ef við erum að eiga við selectable, Id er sett inn í template-inu fyrir selectable
                        string propertyTrimmed = properties.ElementAt(i).Item2.Substring(0, properties.ElementAt(i).Item2.Length - 2);

                        //Splittum Template file-um fyrir ListView þar sem við erum bæði með fyrir ofan og neðan töflu í þeim
                        splitListPropertyTypeTemplate = TemplateParser.SplitTemplate(TemplateParser.ParseTemplate("Views/" + templateType, templateType + "Selectable",
                                                                                                                  ClassName, TableName, CategoryName, propertyTrimmed));
                    }
                    else
                    {
                        //Splittum Template file-um fyrir ListView þar sem við erum bæði með fyrir ofan og neðan töflu í þeim
                        splitListPropertyTypeTemplate = TemplateParser.SplitTemplate(TemplateParser.ParseTemplate("Views/" + templateType, templateType + "Type",
                                                                                                                  ClassName, TableName, CategoryName, properties.ElementAt(i).Item2));
                    }

                    if (properties.ElementAt(i).Item2 == "Id")
                    {
                    }

                    //Setjum annaðhvort efri eða neðri part property-sins inn, fer eftir því hvort við erum á first eða second pass í for lykkjunni
                    viewText += splitListPropertyTypeTemplate.ElementAt(k).ToString();
                }

                //Ef við erum að eiga við lista og erum komin á enda properties þá þurfum við að gera k að 1 og fara aftur í gegnum properties; það þarf að setja inn neðri helming list-view-sins
                if (templateType == "List" && i == properties.Count - 1 && k == 0)
                {
                    i         = -1;                         //
                    k         = 1;
                    viewText += splitTemplate.ElementAt(1); //Bætum við miðju úr töflu
                }
            }

            //Setjum inn lokahluta template-sins, það er á mismunandi stað eftir því hvort verið er að eiga við lista eða Edit/Create views
            if (templateType == "List")
            {
                viewText += splitTemplate.ElementAt(2);
            }
            else
            {
                viewText += splitTemplate.ElementAt(1);
            }

            return(viewText);
        }