コード例 #1
0
ファイル: GenSP.cs プロジェクト: Kmiiloberrio2/fwk_12
        static void GenCodeInsert(TableViewBase pTable, string pSpBody, CodeGeneratorCommon.MethodActionType action, List <GeneratedCode> pProceduresCode)
        {
            StringBuilder wBuilder          = null;
            GeneratedCode wCode             = null;
            String        wIntermediateCode = String.Empty;

            try
            {
                wBuilder = new StringBuilder();

                wBuilder          = GenCodeCommon(pTable, pSpBody);
                wIntermediateCode = "(" + GenCodeInsertParameters(pTable, action) + ")";
                wBuilder.Replace("[Parameters]", wIntermediateCode);
                wBuilder.Replace("[Fields]", GenCodeInsertFields(pTable, action));
                wBuilder.Replace("[Values]", GenCodeInsertValues(pTable, action));
                wBuilder.Replace("[ReturnAutogenerated]", GenCodeInsertReturnAutogenerated(pTable, action));

                wBuilder.Replace(CodeGeneratorCommon.CommonConstants.CONST_STOREDPROCEDURE_NAME, GetStoredProcedureName(pTable.Name, pTable.Schema, action));

                //wCode = GetEntityGeneratedCode(pMethodInfo.Entity, pProceduresCode);
                wCode = new GeneratedCode();

                wCode.Id = pTable.Name;
                wCode.Code.Append(wBuilder.ToString());
                wCode.MethodActionType = action;
                pProceduresCode.Add(wCode);
            }
            finally
            {
                wBuilder = null;
                wCode    = null;
            }
        }
コード例 #2
0
ファイル: GenSP.cs プロジェクト: Kmiiloberrio2/fwk_12
        /// <summary>
        /// Genera código de parámetros de un procedimiento almacenado de Búsqueda por clave primaria.
        /// </summary>
        /// <param name="pMethodInfo">información del método para generar stored procedure.</param>
        /// <returns>Código fuente generado.</returns>
        /// <date>2007-5-25T00:00:00</date>
        /// <author>Marcelo Oviedo</author>
        protected string GenCodeParameters(TableViewBase pTable, CodeGeneratorCommon.MethodActionType action)
        {
            StringBuilder wBuilder = new StringBuilder();

            //if (action == MethodActionType.Get)
            //{
            foreach (Column wColumn in pTable.Columns)
            {
                //if (wColumn.KeyField)// && wColumn.Selected)
                //{
                StringBuilder wParamBuilder = BuildParameter(wColumn, action, false, false);
                wBuilder.Append(wParamBuilder.ToString());
                //}
            }
            //}
            //else
            //{
            //    foreach (ParameterInfo wParameterInfo in pMethodInfo.Parameters)
            //    {

            //        StringBuilder wParamBuilder = base.BuildParameter(wParameterInfo);
            //        wBuilder.Append(wParamBuilder.ToString());
            //    }
            //}

            RemoveChars(wBuilder, 3);

            return(wBuilder.ToString());
        }
コード例 #3
0
ファイル: GenDAC.cs プロジェクト: spzenk/sfdocsamples
        private static string GenMethodReturn(TableViewBase pTable, CodeGeneratorCommon.MethodActionType t)
        {
            StringBuilder wBuilderReturn = null;
            switch (t)
            {
                case CodeGeneratorCommon.MethodActionType.Insert:
                    {
                        Column pPK = FwkGenerator.GetPrimaryKey(pTable);
                        if (pPK != null)
                        {
                            wBuilderReturn = new StringBuilder(FwkGenerator.TemplateDocument.GetTemplate("InsertReturn").Content);
                            wBuilderReturn.Replace(CodeGeneratorCommon.CommonConstants.CONST_ENTITY_PROPERTY_NAME, pPK.Name);
                            wBuilderReturn.Replace(CodeGeneratorCommon.CommonConstants.CONST_TYPENAME, FwkGenerator.GetCSharpType(pPK));

                            return wBuilderReturn.ToString();
                        }
                        else
                            return "  wDataBase.ExecuteNonQuery(wCmd);";
                    }
                case CodeGeneratorCommon.MethodActionType.Update:
                    return "  wDataBase.ExecuteNonQuery(wCmd);";

                case CodeGeneratorCommon.MethodActionType.SearchByParam:

                    wBuilderReturn = new StringBuilder(FwkGenerator.TemplateDocument.GetTemplate("SearchReturn").Content);

                    return wBuilderReturn.ToString();
                case CodeGeneratorCommon.MethodActionType.Delete:
                    return "  wDataBase.ExecuteNonQuery(wCmd);";

            }

            return string.Empty;

        }
コード例 #4
0
        static string GetInParameter(TableViewBase pTable, Column c)
        {
            StringBuilder wParamBuilder = new StringBuilder(FwkGenerator.TemplateDocument.GetTemplate("ParameterInput").Content);

            //Si es un tipo de dato string y hacepta nulos se agrega la condicion para decidir si pasar o no el parametros al SP
            if (c.Nullable && FwkGenerator.GetDbType(c).Contains("string"))
            {
                wParamBuilder.Replace("[ConditionalString]", FwkGenerator.TemplateDocument.GetTemplate("ConditionalString").Content);
            }
            else
            {
                wParamBuilder.Replace("[ConditionalString]", String.Empty);
            }

            //quito si esxiste la cadena .Value de [Property_Name].Value.ToString("yy
            if (!c.Nullable)
            {
                wParamBuilder.Replace("Value.", string.Empty);
            }

            wParamBuilder.Replace("[ParameterName]", c.Name);
            wParamBuilder.Replace("[ParameterType]", FwkGenerator.GetDbType(c));
            wParamBuilder.Replace("[ParameterValue]", string.Concat("p", pTable.Name, ".", c.Name));



            return(wParamBuilder.ToString());
        }
コード例 #5
0
        public CodeTypeDeclaration BuildPoc(TableViewBase rootModel)
        {
            CodeTypeDeclaration ctd = new CodeTypeDeclaration();
            ConstructorGraph ctorGraph = new ConstructorGraph();

            ctd.Name = rootModel.Name;
            ctd.TypeAttributes = System.Reflection.TypeAttributes.Public;
            ctd.Attributes = MemberAttributes.Public;
            ctd.IsPartial = true;
            CodeAttributeDeclaration cad_DataContract = new CodeAttributeDeclaration(" System.Runtime.Serialization.DataContractAttribute");
            ctd.CustomAttributes.Add(cad_DataContract);

            // Members
            foreach (Column c in rootModel.Columns)
            {
                MemberGraph mGraph = new MemberGraph(c);

                CodeMemberField c_field = mGraph.GetField();
                CodeMemberProperty c_prop = mGraph.GetProperty();

                CodeAttributeDeclaration cad_DataMember = new CodeAttributeDeclaration("System.Runtime.Serialization.DataMemberAttribute");
                c_prop.CustomAttributes.Add(cad_DataMember);

                ctd.Members.Add(c_field);
                ctd.Members.Add(c_prop);
            }

            foreach (CodeConstructor cc in ctorGraph.GraphConstructors(rootModel))
            {
                ctd.Members.Add(cc);
            }

            return ctd;
        }
コード例 #6
0
        /// <summary>
        /// Retorno del metodo
        /// </summary>
        /// <param name="pTable"></param>
        /// <param name="pMethodActionType"></param>
        /// <returns></returns>
        static string GetSPName(TableViewBase pTable, CodeGeneratorCommon.MethodActionType pMethodActionType)
        {
            String sufix = string.Empty;

            switch (pMethodActionType)
            {
            case CodeGeneratorCommon.MethodActionType.Insert:
                sufix = "_i";
                break;

            case CodeGeneratorCommon.MethodActionType.GetByParam:
                sufix = "_gp";
                break;

            case CodeGeneratorCommon.MethodActionType.Update:
                sufix = "_u";
                break;

            case CodeGeneratorCommon.MethodActionType.Delete:
                sufix = "_d";
                break;

            case CodeGeneratorCommon.MethodActionType.SearchByParam:

                sufix = "_sp";
                break;

            case CodeGeneratorCommon.MethodActionType.Get:
                sufix = "_g";
                break;
            }

            return(string.Concat(pTable.Name, sufix));
        }
コード例 #7
0
        static string GenSPParameters_Batch(TableViewBase pTable, CodeGeneratorCommon.MethodActionType pMethodActionType)
        {
            StringBuilder wParams        = new StringBuilder();
            int           i              = 0;
            bool          appendProperty = true;
            Column        primaryKey     = FwkGenerator.GetPrimaryKey(pTable);

            foreach (Column c in pTable.Columns)
            {
                i++;
                if (pMethodActionType == CodeGeneratorCommon.MethodActionType.Insert ||
                    pMethodActionType == CodeGeneratorCommon.MethodActionType.Update)
                {
                    if (primaryKey != null)
                    {
                        appendProperty = !(primaryKey == c && pMethodActionType == CodeGeneratorCommon.MethodActionType.Insert);
                    }

                    if (appendProperty)
                    {
                        //i == pTable.Columns.Count --> Fin de la coleccion
                        wParams.Append(Get_Property_Batch(c, (i == pTable.Columns.Count)));
                    }
                }
            }
            return(wParams.ToString());
        }
コード例 #8
0
        public CodeTypeDeclaration BuildPoc(TableViewBase rootModel)
        {
            CodeTypeDeclaration ctd       = new CodeTypeDeclaration();
            ConstructorGraph    ctorGraph = new ConstructorGraph();

            ctd.Name           = rootModel.Name;
            ctd.TypeAttributes = System.Reflection.TypeAttributes.Public;
            ctd.Attributes     = MemberAttributes.Public;
            ctd.IsPartial      = true;
            CodeAttributeDeclaration cad_DataContract = new CodeAttributeDeclaration(" System.Runtime.Serialization.DataContractAttribute");

            ctd.CustomAttributes.Add(cad_DataContract);

            // Members
            foreach (Column c in rootModel.Columns)
            {
                MemberGraph mGraph = new MemberGraph(c);

                CodeMemberField    c_field = mGraph.GetField();
                CodeMemberProperty c_prop  = mGraph.GetProperty();

                CodeAttributeDeclaration cad_DataMember = new CodeAttributeDeclaration("System.Runtime.Serialization.DataMemberAttribute");
                c_prop.CustomAttributes.Add(cad_DataMember);

                ctd.Members.Add(c_field);
                ctd.Members.Add(c_prop);
            }

            foreach (CodeConstructor cc in ctorGraph.GraphConstructors(rootModel))
            {
                ctd.Members.Add(cc);
            }

            return(ctd);
        }
コード例 #9
0
        public static string Gen_DAC(TableViewBase pTable, bool pPerformBatch, string projectNmae)
        {
            StringBuilder wClass   = new StringBuilder(_DAC_tt);
            StringBuilder wMethods = new StringBuilder();

            foreach (CodeGeneratorCommon.MethodActionType t in FwkGeneratorHelper.MethodActionTypeList)
            {
                wMethods.AppendLine(GenMethod(pTable, t));

                if (t == CodeGeneratorCommon.MethodActionType.Insert || t == CodeGeneratorCommon.MethodActionType.Update)
                {
                    if (pPerformBatch)
                    {
                        wMethods.AppendLine(GenBatchMethod(pTable, t));
                    }
                }
            }

            wClass.Replace(CodeGeneratorCommon.CommonConstants.CONST_BODY, wMethods.ToString());
            wClass.Replace(CodeGeneratorCommon.CommonConstants.CONST_AUTHOR, Environment.UserName);
            wClass.Replace(CodeGeneratorCommon.CommonConstants.CONST_ENTITY_NAME, pTable.Name);
            wClass.Replace(CodeGeneratorCommon.CommonConstants.CONST_CREATION_DATETIME, string.Format("{0:s}", DateTime.Now));
            wClass.Replace(CodeGeneratorCommon.CommonConstants.CONST_FwkProject_NAME, projectNmae);

            return(wClass.ToString());
        }
コード例 #10
0
ファイル: GenSP.cs プロジェクト: Kmiiloberrio2/fwk_12
        ///TODO: Ver si se utiliza esto
        static string GenCodeInsertReturnAutogenerated(TableViewBase pTable, CodeGeneratorCommon.MethodActionType action)
        {
            StringBuilder wBuilder = new StringBuilder();
            string        wText    = string.Empty;

            foreach (Column wColumn in pTable.Columns)
            {
                if (wColumn.Identity)
                {
                    wBuilder.Append("@");
                    wBuilder.Append(wColumn.Name);

                    //wText = Properties.Settings.Default.GetReturnAutogeneratedPattern.Replace("[Name]", wBuilder.ToString());
                    break;
                }
            }

            string wOutputIdentitySet = FwkGeneratorHelper.TemplateDocument.GetTemplate("SP_OutputIdentitySet").Content;

            if (wBuilder.Length == 0)
            {
                return(String.Empty);
            }
            else
            {
                return(wOutputIdentitySet.Replace("[OutputVariable]", wBuilder.ToString()));
            }
        }
コード例 #11
0
ファイル: GenDAC.cs プロジェクト: Pelsoft/fwk_10.3
 static string GenBatchMethod(TableViewBase pTable, CodeGeneratorCommon.MethodActionType t)
 {
     StringBuilder wMethod = new StringBuilder(FwkGeneratorHelper.TemplateDocument.GetTemplate("MethodBatch").Content);
     wMethod.Replace("[SummaryParams]", GenParametersSummary(t, pTable));
     wMethod.Replace("[ParamArgs]", GenMethodParameters(t, pTable));
     wMethod.Replace("[MethodName]", t.ToString());
     wMethod.Replace("[StoredProcedureName]", GetSPName(pTable, t));
     wMethod.Replace("[Parameters]", GenSPParameters_Batch(pTable, t));
     return wMethod.ToString();
 }
コード例 #12
0
ファイル: GenSP.cs プロジェクト: gpanayir/sffwk
        /// <summary>
        /// Genera el código fuente de un conjunto de procedimientos almacenados.
        /// </summary>
        /// <remarks>
        /// Este método hace distinción de dos tipos de métodos: métodos <b>built-in</b> y métodos <b>generados por el usuario</b> (<see cref="MethodActionType"/>).
        /// La generación de los del tipo built-in la determina esta clase, los parámetros son tomados de los campos de la tabla seleccionada para generar la entidad y sus métodos. Para los del otro tipo, se tomarán los parámetros selecionados por el usuario o los propios de un procedimiento almacenado preexistente.
        /// </remarks>
        /// <param name="pEntityInfo">Entidad para la que se generarán los procedimientos almacenados.</param>
        /// <param name="pProceduresCode">Lista de código generado.</param>
        /// <date>2006-03-20T00:00:00</date>
        /// <author>Marcelo Oviedo</author>
        internal static List<GeneratedCode> GenCode(TableViewBase pTable, List<GeneratedCode> pProceduresCode)
        {

            string wSPBodyCode;


            foreach (CodeGeneratorCommon.MethodActionType wMethodType in FwkGeneratorHelper.MethodActionTypeList)
            {

                wSPBodyCode = FwkGeneratorHelper.TemplateDocument.GetTemplate(string.Concat("SP_", wMethodType)).Content;

                switch (wMethodType)
                {
                    case CodeGeneratorCommon.MethodActionType.Insert:
                        {
                            GenCodeInsert(pTable,  wSPBodyCode, wMethodType, pProceduresCode);
                            break;
                        }

                    case CodeGeneratorCommon.MethodActionType.Update:
                        {
                            GenCodeUpdate(pTable,  wSPBodyCode, wMethodType, pProceduresCode);
                            break;
                        }

                    case CodeGeneratorCommon.MethodActionType.Delete:
                        {
                            GenCodeDelete(pTable, wSPBodyCode, wMethodType, pProceduresCode);
                            break;
                        }
                    //case MethodActionType.Get:
                    //    {
                    //        GenCodeGet(wMethodInfo, wActionCode, pProceduresCode);
                    //        break;
                    //    }
                    //case MethodActionType.GetAll:
                    //case MethodActionType.GetAllPaginated:
                    //    {
                    //        GenCodeGetAll(wMethodInfo, wSPBodyCode, pProceduresCode);
                    //        break;
                    //    }
                    case CodeGeneratorCommon.MethodActionType.SearchByParam:
                        {
                            GenCodeGetByParam(pTable, wSPBodyCode, wMethodType, pProceduresCode);
                            break;
                        }

                }


            }
            return pProceduresCode;

        }
コード例 #13
0
        static string GenBatchMethod(TableViewBase pTable, CodeGeneratorCommon.MethodActionType t)
        {
            StringBuilder wMethod = new StringBuilder(FwkGenerator.TemplateDocument.GetTemplate("MethodBatch").Content);

            wMethod.Replace("[SummaryParams]", GenParametersSummary(t, pTable));
            wMethod.Replace("[ParamArgs]", GenMethodParameters(t, pTable));
            wMethod.Replace("[MethodName]", t.ToString());
            wMethod.Replace("[StoredProcedureName]", GetSPName(pTable, t));
            wMethod.Replace("[Parameters]", GenSPParameters_Batch(pTable, t));
            return(wMethod.ToString());
        }
コード例 #14
0
        static string GetOutParameter(TableViewBase pTable, Column c)
        {
            StringBuilder wParamBuilder = new StringBuilder(FwkGenerator.TemplateDocument.GetTemplate("ParameterOutput").Content);

            wParamBuilder.Replace("[ParameterName]", c.Name);
            wParamBuilder.Replace("[ParameterType]", FwkGenerator.GetDbType(c));
            wParamBuilder.Replace("[ParameterLength]", c.DataType.MaximumLength.ToString());


            return(wParamBuilder.ToString());
        }
コード例 #15
0
 public static Column GetPrimaryKey(TableViewBase table)
 {
     foreach (Column c in table.Columns)
     {
         if (c.Identity)
         {
             return(c);
         }
     }
     return(null);
 }
コード例 #16
0
ファイル: GenDAC.cs プロジェクト: Pelsoft/fwk_10.3
 static string GenMethod(TableViewBase pTable, CodeGeneratorCommon.MethodActionType t)
 {
     StringBuilder wMethod = new StringBuilder(_Method_tt);
     wMethod.Replace("[SummaryParams]", GenParametersSummary(t, pTable));
     wMethod.Replace("[ParamArgs]", GenMethodParameters(t, pTable));
     wMethod.Replace("[MethodName]", t.ToString());
     wMethod.Replace("[RetType]", GetRetType(pTable, t));
     wMethod.Replace("[StoredProcedureName]", GetSPName(pTable, t));
     wMethod.Replace("[Parameters]", GenSPParameters(pTable, t));
     wMethod.Replace("[Declarations]", GenDeclaration(pTable, t));
     wMethod.Replace("[Return]", GenMethodReturn(pTable, t));
     return wMethod.ToString();
 }
コード例 #17
0
        private static string GenDeclaration(TableViewBase pTable, CodeGeneratorCommon.MethodActionType t)
        {
            switch (t)
            {
            case CodeGeneratorCommon.MethodActionType.GetByParam:
            case CodeGeneratorCommon.MethodActionType.SearchByParam:
            {
                return(FwkGenerator.TemplateDocument.GetTemplate("EntityAnListDeclaration").Content);
            }
            }

            return(string.Empty);
        }
コード例 #18
0
ファイル: GenSP.cs プロジェクト: Kmiiloberrio2/fwk_12
        /// <summary>
        /// Genera código común para todas las acciones.
        /// </summary>
        /// <param name="pMethodInfo">información del método para generar stored procedure.</param>
        /// <param name="pSpBody">StringBuilder sobre el cual se realizarán los reemplazos de tags.</param>

        /// <date>2007-5-25T00:00:00</date>
        /// <author>Marcelo Oviedo</author>
        static StringBuilder GenCodeCommon(TableViewBase pTable, string pSpBody)
        {
            StringBuilder wBuilder = new StringBuilder();

            wBuilder.Append(_CommonTemplate);

            wBuilder.Replace("[ProcedureBody]", pSpBody);

            wBuilder.Replace(CodeGeneratorCommon.CommonConstants.CONST_AUTHOR, Environment.UserName);
            wBuilder.Replace(CodeGeneratorCommon.CommonConstants.CONST_CREATION_DATETIME, string.Format("{0:s}", DateTime.Now));
            wBuilder.Replace(CodeGeneratorCommon.CommonConstants.CONST_TABLE_NAME, pTable.Name);

            return(wBuilder);
        }
コード例 #19
0
        static string GenMethod(TableViewBase pTable, CodeGeneratorCommon.MethodActionType t)
        {
            StringBuilder wMethod = new StringBuilder(_Method_tt);

            wMethod.Replace("[SummaryParams]", GenParametersSummary(t, pTable));
            wMethod.Replace("[ParamArgs]", GenMethodParameters(t, pTable));
            wMethod.Replace("[MethodName]", t.ToString());
            wMethod.Replace("[RetType]", GetRetType(pTable, t));
            wMethod.Replace("[StoredProcedureName]", GetSPName(pTable, t));
            wMethod.Replace("[Parameters]", GenSPParameters(pTable, t));
            wMethod.Replace("[Declarations]", GenDeclaration(pTable, t));
            wMethod.Replace("[Return]", GenMethodReturn(pTable, t));
            return(wMethod.ToString());
        }
コード例 #20
0
ファイル: GenSP.cs プロジェクト: Kmiiloberrio2/fwk_12
        /// <summary>
        /// Genera el código fuente de un conjunto de procedimientos almacenados.
        /// </summary>
        /// <remarks>
        /// Este método hace distinción de dos tipos de métodos: métodos <b>built-in</b> y métodos <b>generados por el usuario</b> (<see cref="MethodActionType"/>).
        /// La generación de los del tipo built-in la determina esta clase, los parámetros son tomados de los campos de la tabla seleccionada para generar la entidad y sus métodos. Para los del otro tipo, se tomarán los parámetros selecionados por el usuario o los propios de un procedimiento almacenado preexistente.
        /// </remarks>
        /// <param name="pEntityInfo">Entidad para la que se generarán los procedimientos almacenados.</param>
        /// <param name="pProceduresCode">Lista de código generado.</param>
        /// <date>2006-03-20T00:00:00</date>
        /// <author>Marcelo Oviedo</author>
        internal static List <GeneratedCode> GenCode(TableViewBase pTable, List <GeneratedCode> pProceduresCode)
        {
            string wSPBodyCode;


            foreach (CodeGeneratorCommon.MethodActionType wMethodType in FwkGeneratorHelper.MethodActionTypeList)
            {
                wSPBodyCode = FwkGeneratorHelper.TemplateDocument.GetTemplate(string.Concat("SP_", wMethodType)).Content;

                switch (wMethodType)
                {
                case CodeGeneratorCommon.MethodActionType.Insert:
                {
                    GenCodeInsert(pTable, wSPBodyCode, wMethodType, pProceduresCode);
                    break;
                }

                case CodeGeneratorCommon.MethodActionType.Update:
                {
                    GenCodeUpdate(pTable, wSPBodyCode, wMethodType, pProceduresCode);
                    break;
                }

                case CodeGeneratorCommon.MethodActionType.Delete:
                {
                    GenCodeDelete(pTable, wSPBodyCode, wMethodType, pProceduresCode);
                    break;
                }

                //case MethodActionType.Get:
                //    {
                //        GenCodeGet(wMethodInfo, wActionCode, pProceduresCode);
                //        break;
                //    }
                //case MethodActionType.GetAll:
                //case MethodActionType.GetAllPaginated:
                //    {
                //        GenCodeGetAll(wMethodInfo, wSPBodyCode, pProceduresCode);
                //        break;
                //    }
                case CodeGeneratorCommon.MethodActionType.SearchByParam:
                {
                    GenCodeGetByParam(pTable, wSPBodyCode, wMethodType, pProceduresCode);
                    break;
                }
                }
            }
            return(pProceduresCode);
        }
コード例 #21
0
ファイル: GenSP.cs プロジェクト: Kmiiloberrio2/fwk_12
        /// <summary>
        /// Genera código de campos de retorno de un procedimiento almacenado de Búsqueda.
        /// Genera los campos del SELECT
        /// </summary>
        /// <param name="pMethodInfo">información del método para generar stored procedure.</param>
        /// <returns>Código fuente generado.</returns>
        /// <date>2007-5-25T00:00:00</date>
        /// <author>Marcelo Oviedo</author>
        static string GenCodeGetSelectList(TableViewBase pTable)
        {
            StringBuilder wBuilder = new StringBuilder();

            foreach (Column wColumn in pTable.Columns)
            {
                //wBuilder.Append("\t");
                wBuilder.AppendLine(wColumn.Name);
                wBuilder.Append(",");
            }

            RemoveChars(wBuilder, 2);

            return(wBuilder.ToString());
        }
コード例 #22
0
ファイル: GenDAC.cs プロジェクト: spzenk/sfdocsamples
        private static string GenDeclaration(TableViewBase pTable, CodeGeneratorCommon.MethodActionType t)
        {

            switch (t)
            {
                case CodeGeneratorCommon.MethodActionType.GetByParam:
                case CodeGeneratorCommon.MethodActionType.SearchByParam:
                    {
                        return FwkGenerator.TemplateDocument.GetTemplate("EntityAnListDeclaration").Content;
                    }

            }

            return string.Empty;

        }
コード例 #23
0
ファイル: GenSP.cs プロジェクト: Kmiiloberrio2/fwk_12
        static string GenCodeInsertParameters(TableViewBase pTable, CodeGeneratorCommon.MethodActionType action)
        {
            StringBuilder wBuilder = new StringBuilder();
            StringBuilder wParamBuilder;

            foreach (Column c in pTable.Columns)
            {
                if (IsColumnValidToInsert(c))
                {
                    wParamBuilder = BuildParameter(c, action, true, true);
                    wBuilder.Append(wParamBuilder.ToString());
                }
            }
            RemoveChars(wBuilder, 3);
            return(wBuilder.ToString());
        }
コード例 #24
0
ファイル: GenSP.cs プロジェクト: Kmiiloberrio2/fwk_12
        /// <summary>
        /// Genera código de parámetros de un procedimiento almacenado de borrado.
        /// </summary>
        /// <param name="pMethodInfo">información del método para generar stored procedure.</param>
        /// <returns>Código fuente generado.</returns>
        /// <date>2007-5-25T00:00:00</date>
        /// <author>Marcelo Oviedo</author>
        static string GenCodeDeleteParameters(TableViewBase pTable, CodeGeneratorCommon.MethodActionType action)
        {
            StringBuilder wBuilder = new StringBuilder();

            foreach (Column wColumn in pTable.Columns)
            {
                if (wColumn.InPrimaryKey) //&& wColumn.Selected)
                {
                    StringBuilder wParamBuilder = BuildParameter(wColumn, action, false, false);
                    wBuilder.Append(wParamBuilder.ToString());
                }
            }

            RemoveChars(wBuilder, 3);

            return(wBuilder.ToString());
        }
コード例 #25
0
ファイル: GenSP.cs プロジェクト: Kmiiloberrio2/fwk_12
        /// <summary>
        ///
        /// </summary>
        /// <param name="pMethodInfo"></param>
        /// <returns></returns>
        /// <author>Marcelo Oviedo</author>
        static string GenCodeInsertValues(TableViewBase pTable, CodeGeneratorCommon.MethodActionType action)
        {
            StringBuilder wBuilder = new StringBuilder();

            foreach (Column wColumn in pTable.Columns)
            {
                //wColumn.Selected
                if (IsColumnValidToInsert(wColumn))
                {
                    wBuilder.AppendLine(string.Concat("@", wColumn.Name, ","));
                }
            }

            RemoveChars(wBuilder, 3);

            return(wBuilder.ToString());
        }
コード例 #26
0
 private static void SetExtendedProperies(DataTable dataTable, TableViewBase view)
 {
     foreach (ExtendedProperty property in view.ExtendedProperties)
     {
         dataTable.ExtendedProperties[property.Name] = property.Value;
     }
     foreach (DataColumn dataColumn in dataTable.Columns)
     {
         if (view.Columns.Contains(dataColumn.ColumnName))
         {
             foreach (ExtendedProperty property in view.Columns[dataColumn.ColumnName].ExtendedProperties)
             {
                 dataColumn.ExtendedProperties[property.Name] = property.Value;
             }
         }
     }
 }
コード例 #27
0
ファイル: TreeViewHelper.cs プロジェクト: gpanayir/sffwk
        /// <summary>
        /// Carga las coluimnas al nodo pParentNode.-
        /// </summary>
        /// <param name="pParentNode">Nodo padre </param>
        /// <param name="pTable"></param>
        internal static void LoadColumnsNodes(TreeNode pParentNode, TableViewBase pTable)
        {
            TreeNode wTreeNode;
            foreach (Column wColumn in pTable.Columns)
            {

                String nullable = wColumn.Nullable ? "NULL" : String.Empty;

                wTreeNode = new TreeNode();
         
                wTreeNode.Checked = false;
                wTreeNode.Text = string.Concat(wColumn.Name, " ", wColumn.DataType.Name, " ", nullable);
                //wTreeNode.Tag = wColumn;
                wTreeNode.ImageIndex = 3;
                wTreeNode.SelectedImageIndex = 3;
                pParentNode.Nodes.Add(wTreeNode);
            }
        }
コード例 #28
0
ファイル: GenSP.cs プロジェクト: Kmiiloberrio2/fwk_12
        /// <summary>
        ///
        /// </summary>
        /// <param name="pMethodInfo"></param>
        /// <returns></returns>
        /// <author>Marcelo Oviedo</author>
        static string GenCodeInsertFields(TableViewBase pTable, CodeGeneratorCommon.MethodActionType action)
        {
            StringBuilder wBuilder = new StringBuilder();

            foreach (Column wColumn in pTable.Columns)
            {
                //!wColumn.Autogenerated && wColumn.Selected &&
                if (IsColumnValidToInsert(wColumn))
                {
                    wBuilder.AppendLine(wColumn.Name);
                    wBuilder.Append(",");
                }
            }

            RemoveChars(wBuilder, 2);

            return(wBuilder.ToString());
        }
コード例 #29
0
        /// <summary>
        /// Carga las coluimnas al nodo pParentNode.-
        /// </summary>
        /// <param name="pParentNode">Nodo padre </param>
        /// <param name="pView"></param>
        internal static void LoadColumnsNodes(TreeNode pParentNode, TableViewBase pView)
        {
            TreeNode wTreeNode;

            foreach (Column wColumn in pView.Columns)
            {
                String nullable = wColumn.Nullable ? "NULL" : String.Empty;

                wTreeNode = new TreeNode();

                wTreeNode.Checked = false;
                wTreeNode.Text    = string.Concat(wColumn.Name, " ", wColumn.DataType.Name, " ", nullable);
                //wTreeNode.Tag = wColumn;
                wTreeNode.ImageIndex         = 3;
                wTreeNode.SelectedImageIndex = 3;
                pParentNode.Nodes.Add(wTreeNode);
            }
        }
コード例 #30
0
ファイル: GenSP.cs プロジェクト: Kmiiloberrio2/fwk_12
        static void GenCodeGetByParam(TableViewBase pTable, string pSpBody, CodeGeneratorCommon.MethodActionType action, List <GeneratedCode> pProceduresCode)
        {
            GeneratedCode wCode = null;

            try
            {
                String wSPCode = GenerateStoreSearchByParam(pTable);

                wCode = new GeneratedCode();
                wCode.Code.Append(wSPCode);
                wCode.MethodActionType = action;
                wCode.Id = pTable.Name;
                pProceduresCode.Add(wCode);
            }
            finally
            {
                wCode = null;
            }
        }
コード例 #31
0
ファイル: GenSP.cs プロジェクト: Kmiiloberrio2/fwk_12
        /// <summary>
        /// Genera el listado de campos para el update
        /// </summary>
        /// <param name="pMethodInfo"></param>
        /// <returns>string</returns>
        /// <author>Marcelo Oviedo</author>
        static string GenCodeUpdateSetStatements(TableViewBase pTable, CodeGeneratorCommon.MethodActionType action)
        {
            StringBuilder wBuilder = new StringBuilder();

            foreach (Column wColumn in pTable.Columns)
            {
                if (!wColumn.Identity)//&& wColumn.Selected)
                {
                    wBuilder.Append(wColumn.Name);
                    wBuilder.Append(" = @");

                    wBuilder.Append(wColumn.Name);
                    wBuilder.Append(",\r\n");
                }
            }

            RemoveChars(wBuilder, 3);

            return(wBuilder.ToString());
        }
コード例 #32
0
ファイル: TableInfo.cs プロジェクト: VFLashM/BitsAndPieces
 public void Bind(TableViewBase table)
 {
     this.urn     = table.Urn;
     this.columns = new List <string>();
     foreach (Column col in table.Columns)
     {
         this.columns.Add(col.Name);
     }
     foreach (Index ind in table.Indexes)
     {
         if (ind.IndexKeyType == IndexKeyType.DriPrimaryKey)
         {
             this.primaryKey = new List <string>();
             foreach (IndexedColumn col in ind.IndexedColumns)
             {
                 this.primaryKey.Add(col.Name);
             }
         }
     }
 }
コード例 #33
0
        private static string GenMethodReturn(TableViewBase pTable, CodeGeneratorCommon.MethodActionType t)
        {
            StringBuilder wBuilderReturn = null;

            switch (t)
            {
            case CodeGeneratorCommon.MethodActionType.Insert:
            {
                Column pPK = FwkGeneratorHelper.GetPrimaryKey(pTable);
                if (pPK != null)
                {
                    wBuilderReturn = new StringBuilder("  cmd.ExecuteNonQuery();");
                    wBuilderReturn.AppendLine(FwkGeneratorHelper.TemplateDocument.GetTemplate("InsertReturn").Content);
                    wBuilderReturn.Replace(CodeGeneratorCommon.CommonConstants.CONST_ENTITY_PROPERTY_NAME, pPK.Name);
                    wBuilderReturn.Replace(CodeGeneratorCommon.CommonConstants.CONST_TYPENAME, FwkGeneratorHelper.GetCSharpType(pPK));

                    return(wBuilderReturn.ToString());
                }
                else
                {
                    return("  cmd.ExecuteNonQuery();");
                }
            }

            case CodeGeneratorCommon.MethodActionType.Update:
                return("  cmd.ExecuteNonQuery();");

            case CodeGeneratorCommon.MethodActionType.SearchByParam:

                wBuilderReturn = new StringBuilder(FwkGeneratorHelper.TemplateDocument.GetTemplate("SearchReturn").Content);

                return(wBuilderReturn.ToString());

            case CodeGeneratorCommon.MethodActionType.Delete:
                return("  cmd.ExecuteNonQuery();");
            }

            return(string.Empty);
        }
コード例 #34
0
        public TableInfo CreateTableInfo(string database, TableViewBase table)
        {
            var id = new List <string>();

            if (database != _defaultDatabase)
            {
                id.Add(database);
            }
            if (table.Schema != "dbo")
            {
                id.Add(table.Schema);
            }
            else if (id.Count > 0)
            {
                id.Add("");
            }
            id.Add(table.Name);
            var res = new TableInfo(id, AliasFromName(table.Name));

            res.Bind(table);
            return(res);
        }
コード例 #35
0
ファイル: GenDAC.cs プロジェクト: Pelsoft/fwk_10.3
        public static string Gen_DAC(TableViewBase pTable, bool pPerformBatch, string projectNmae)
        {
            StringBuilder wClass = new StringBuilder(_DAC_tt);
            StringBuilder wMethods = new StringBuilder();

            foreach (CodeGeneratorCommon.MethodActionType t in FwkGeneratorHelper.MethodActionTypeList)
            {
                wMethods.AppendLine(GenMethod(pTable, t));

                if (t == CodeGeneratorCommon.MethodActionType.Insert || t == CodeGeneratorCommon.MethodActionType.Update)
                    if (pPerformBatch)
                        wMethods.AppendLine(GenBatchMethod(pTable, t));
            }

            wClass.Replace(CodeGeneratorCommon.CommonConstants.CONST_BODY, wMethods.ToString());
            wClass.Replace(CodeGeneratorCommon.CommonConstants.CONST_AUTHOR, Environment.UserName);
            wClass.Replace(CodeGeneratorCommon.CommonConstants.CONST_ENTITY_NAME, pTable.Name);
            wClass.Replace(CodeGeneratorCommon.CommonConstants.CONST_CREATION_DATETIME, string.Format("{0:s}", DateTime.Now));
            wClass.Replace(CodeGeneratorCommon.CommonConstants.CONST_FwkProject_NAME, projectNmae);

            return wClass.ToString();
        }
コード例 #36
0
ファイル: GenSP.cs プロジェクト: Kmiiloberrio2/fwk_12
        static string GenCodeWhereClause(TableViewBase pTable)
        {
            StringBuilder wBuilder = new StringBuilder();


            foreach (Column wColumn in pTable.Columns)
            {
                if (wColumn.IsForeignKey || wColumn.InPrimaryKey)
                {
                    wBuilder.Append(wColumn.Name);
                    wBuilder.Append(" = @");

                    wBuilder.Append(wColumn.Name);
                    wBuilder.Append(" AND \r\n");
                }
            }



            RemoveChars(wBuilder, 6);

            return(wBuilder.ToString());
        }
コード例 #37
0
        /// <summary>
        /// Retorno del metodo
        /// </summary>
        /// <param name="pTable"></param>
        /// <param name="pMethodActionType"></param>
        /// <returns></returns>
        static string GetRetType(TableViewBase pTable, CodeGeneratorCommon.MethodActionType pMethodActionType)
        {
            String wBuilder = string.Empty;
            Column c        = FwkGenerator.GetPrimaryKey(pTable);

            switch (pMethodActionType)
            {
            case CodeGeneratorCommon.MethodActionType.Insert:

            case CodeGeneratorCommon.MethodActionType.Update:
            case CodeGeneratorCommon.MethodActionType.Delete:
                wBuilder = "void";
                break;

            case CodeGeneratorCommon.MethodActionType.SearchByParam:
                wBuilder = string.Concat(pTable.Name, "List");
                break;

            case CodeGeneratorCommon.MethodActionType.GetByParam:
                wBuilder = pTable.Name;
                break;
            }
            return(wBuilder);
        }
コード例 #38
0
ファイル: GenDAC.cs プロジェクト: Pelsoft/fwk_10.3
        /// <summary>
        /// Genera código de parámetros de llamado a un método.
        /// </summary>
        /// <param name="CodeGeneratorCommon.MethodActionType">información sobre el método a generar.</param>
        /// <param name="pTable">tabla.</param>
        /// <returns>Código que representa los parámetros para ejecutar el método.</returns>
        /// <author>Marcelo Oviedo</author>
        static string GenMethodParameters(CodeGeneratorCommon.MethodActionType pMethodActionType, TableViewBase pTable)
        {
            String wBuilder = string.Empty;
            switch (pMethodActionType)
            {
                case CodeGeneratorCommon.MethodActionType.Insert:
                case CodeGeneratorCommon.MethodActionType.Update:
                case CodeGeneratorCommon.MethodActionType.GetByParam:
                case CodeGeneratorCommon.MethodActionType.SearchByParam:

                    wBuilder = string.Concat(pTable.Name, " p", pTable.Name);
                    break;
                case CodeGeneratorCommon.MethodActionType.Delete:
                    Column pPK = FwkGeneratorHelper.GetPrimaryKey(pTable);
                    if (pPK != null)
                    {
                        FwkGeneratorHelper.GetCSharpType(pPK);
                        wBuilder = String.Concat(FwkGeneratorHelper.GetCSharpType(pPK), " p", pPK.Name);
                    }
                    else
                    {
                        wBuilder = String.Concat("int pId");
                    }

                    break;
            }
            return wBuilder;


        }
コード例 #39
0
ファイル: GenDAC.cs プロジェクト: Pelsoft/fwk_10.3
        /// <summary>
        /// Genera comentarios sobre los parámetros de un método.
        /// </summary>
        /// <param name="pMethodInfo">información sobre el método a generar.</param>
        /// <returns>Comentarios sobre los parámetros.</returns>
        /// <author>Marcelo Oviedo</author>
        static string GenParametersSummary(CodeGeneratorCommon.MethodActionType pMethodActionType, TableViewBase pTable)
        {
            StringBuilder wBuilder = new StringBuilder(FwkGeneratorHelper.TemplateDocument.GetTemplate("ParameterSummary").Content);



            switch (pMethodActionType)
            {
                case CodeGeneratorCommon.MethodActionType.Insert:
                case CodeGeneratorCommon.MethodActionType.Update:
                case CodeGeneratorCommon.MethodActionType.GetByParam:
                case CodeGeneratorCommon.MethodActionType.SearchByParam:

                    wBuilder.Replace("[MethodParameterName]", pTable.Name);
                    wBuilder.Replace("[ParameterName]", pTable.Name);
                    break;
                case CodeGeneratorCommon.MethodActionType.Delete:
                    Column pPK = FwkGeneratorHelper.GetPrimaryKey(pTable);
                    if (pPK != null)
                    {
                        wBuilder.Replace("[MethodParameterName]", pPK.Name);
                    }
                    else
                    {
                        wBuilder.Replace("[MethodParameterName]", "pId");
                    }
                    wBuilder.Replace("[ParameterName]", string.Concat("Id por el cual realizar la busqueda de registros a eliminar de tabla ", pTable.Name));
                    break;
            }
            return wBuilder.ToString();




        }
コード例 #40
0
ファイル: GenSP.cs プロジェクト: gpanayir/sffwk
        static void GenCodeGetByParam(TableViewBase pTable, string pSpBody, CodeGeneratorCommon.MethodActionType action, List<GeneratedCode> pProceduresCode)
        {
            GeneratedCode wCode = null;

            try
            {
                String wSPCode = GenerateStoreSearchByParam(pTable);

                wCode = new GeneratedCode();
                wCode.Code.Append(wSPCode);
                wCode.MethodActionType = action;
                wCode.Id = pTable.Name;
                pProceduresCode.Add(wCode);

            }
            finally
            {

                wCode = null;
            }
        }
コード例 #41
0
ファイル: GenSP.cs プロジェクト: gpanayir/sffwk
        /// <summary>
        /// Genera el script del sp para obtener por parametros (GetAll By param)
        /// </summary>
        /// <param name="pTable"></param>
        /// <returns></returns>
        /// <author>Marcelo Oviedo</author>
        static string GenerateStoreSearchByParam(TableViewBase pTable)
        {

            StringBuilder wSPPatternWitchExecutesql = new StringBuilder();
            StringBuilder sbNombreCampo = new StringBuilder();
            StringBuilder sbParametros = new StringBuilder();
            StringBuilder sbParametrosTipo = new StringBuilder();
            StringBuilder sbParametrosSolo = new StringBuilder();
            StringBuilder sbCampos = new StringBuilder();
            Boolean wAnyParameterToSelec = false;
            string szParametro = String.Empty;


            //----------------------------------------------------------------------
            //-- Cargo el contenido de la Definicion global para Store Search
            //----------------------------------------------------------------------
            wSPPatternWitchExecutesql.Append(_CommonTemplateExecuteSQL);

            try
            {
                wSPPatternWitchExecutesql.Replace(CodeGeneratorCommon.CommonConstants.CONST_AUTHOR, Environment.UserName);
                wSPPatternWitchExecutesql.Replace(CodeGeneratorCommon.CommonConstants.CONST_CREATION_DATETIME, DateTime.Now.ToString());


                #region Nombre del SP
                //Patron de nombres de SP 
                string wSpName = GetStoredProcedureName(pTable.Name, pTable.Schema, CodeGeneratorCommon.MethodActionType.SearchByParam);

                ///Nombre del Store procedure 
                wSpName = wSpName.Replace(CodeGeneratorCommon.CommonConstants.CONST_TABLE_NAME, pTable.Name);
                wSPPatternWitchExecutesql = wSPPatternWitchExecutesql.Replace(CodeGeneratorCommon.CommonConstants.CONST_STOREDPROCEDURE_NAME, wSpName);
                #endregion

                #region -- Recorro la coleccion Campos que se haya SELECCIONADO


                foreach (Column wColumn in pTable.Columns)
                {
                    //-- Por el momento no podemos buscar por campos XML, IMAGE, TIMESTAMP
                    //wColumn.Selected &&
                    if ( IsColumnValidToSearch(wColumn))
                    {
                        wAnyParameterToSelec = true;
                        ///TODO: Ver tema fechas
                        if (wColumn.DataType.SqlDataType.ToString().ToUpper().Contains("DATETIME"))
                        {
                            //Solo  para parametros tipo fechas ya que se atiende de manera especial este tipo de dato.-
                            szParametro = BuildParameter(wColumn, CodeGeneratorCommon.MethodActionType.SearchByParam, true, true).Replace(wColumn.Name, wColumn.Name + "Desde").ToString();
                            szParametro += Environment.NewLine;
                            szParametro += BuildParameter(wColumn, CodeGeneratorCommon.MethodActionType.SearchByParam, true, true).Replace(wColumn.Name, wColumn.Name + "Hasta").ToString();
                            szParametro =szParametro.Replace("@","--" + "@");

                            szParametro +=BuildParameter(wColumn, CodeGeneratorCommon.MethodActionType.SearchByParam, true, true).ToString();
                        }
                        else
                        {
                            szParametro = BuildParameter(wColumn, CodeGeneratorCommon.MethodActionType.SearchByParam, true, true).ToString();
                        }

                        sbParametros.AppendLine(szParametro);

                        sbParametrosTipo.AppendLine(szParametro);


                        sbParametrosSolo.Append(GetPatternSearchParametersSp_ExecuteSql(wColumn));

                        //-- Levanto el Pattern correspondiente a este tipo de campo
                        //-------------------------------------------------------------
                        sbCampos.AppendLine(GetPatternSearch(wColumn));
                    }
                }
                #endregion

                if (wAnyParameterToSelec)
                {
                    //--------------------------------------------------------
                    //-- Replazo los parámetros
                    //--------------------------------------------------------
                    wSPPatternWitchExecutesql = wSPPatternWitchExecutesql.Replace("<PARAMETROS>", sbParametros.ToString().TrimEnd().Remove(sbParametros.ToString().TrimEnd().Length - 1, 1));
                    wSPPatternWitchExecutesql = wSPPatternWitchExecutesql.Replace("<PARAMETROS_TIPO>", sbParametrosTipo.ToString().TrimEnd().Remove(sbParametrosTipo.ToString().TrimEnd().Length - 1, 1));
                    wSPPatternWitchExecutesql = wSPPatternWitchExecutesql.Replace("<PARAMETROS_SOLO>", sbParametrosSolo.ToString().TrimEnd().Remove(sbParametrosSolo.ToString().TrimEnd().Length - 1, 1));

                    //-- Reemplado en Select * From [TableName]
                    wSPPatternWitchExecutesql = wSPPatternWitchExecutesql.Replace(CodeGeneratorCommon.CommonConstants.CONST_TABLE_NAME, pTable.Name);

                    wSPPatternWitchExecutesql = wSPPatternWitchExecutesql.Replace("<CAMPOS>", sbCampos.ToString());

                    //if (false)
                    //    wSPPatternWitchExecutesql.Replace("<WITH_NO_LOCK>", "WITH (NOLOCK)");
                    //else
                    wSPPatternWitchExecutesql.Replace("<WITH_NO_LOCK>", String.Empty);

                }
                else
                {
                    wSPPatternWitchExecutesql.Remove(0, wSPPatternWitchExecutesql.Length);
                    wSPPatternWitchExecutesql.Append("El SP :");
                    wSPPatternWitchExecutesql.Append(wSpName);
                    wSPPatternWitchExecutesql.AppendLine(" no se pudo crear debido a que no tiene campos seleccionados");
                    wSPPatternWitchExecutesql.AppendLine("de la tabla ");
                    wSPPatternWitchExecutesql.Append(pTable.Name);
                    wSPPatternWitchExecutesql.AppendLine(" que son validos para efectuar una busqueda");
                }

                return wSPPatternWitchExecutesql.ToString();
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }
コード例 #42
0
ファイル: GenDAC.cs プロジェクト: Pelsoft/fwk_10.3
        static string GetOutParameter(TableViewBase pTable, Column c)
        {
            StringBuilder wParamBuilder = new StringBuilder(FwkGeneratorHelper.TemplateDocument.GetTemplate("ParameterOutput").Content);
            wParamBuilder.Replace("[ParameterName]", c.Name);
            wParamBuilder.Replace("[ParameterType]", FwkGeneratorHelper.GetDBType(c));
            wParamBuilder.Replace("[ParameterLength]", c.DataType.MaximumLength.ToString());


            return wParamBuilder.ToString();
        }
コード例 #43
0
ファイル: GenDAC.cs プロジェクト: Pelsoft/fwk_10.3
        static string GenSPParameters(TableViewBase pTable, CodeGeneratorCommon.MethodActionType pMethodActionType)
        {

            StringBuilder wParams = new StringBuilder();



            switch (pMethodActionType)
            {
                case CodeGeneratorCommon.MethodActionType.Insert:
                    foreach (Column c in pTable.Columns)
                    {
                        if (!FwkGeneratorHelper.NotSupportTypes_ToIncludeInBackEnd.Contains(c.DataType.SqlDataType.ToString().ToLower()))
                        {
                            if (c.InPrimaryKey)
                            {
                                wParams.Append(GetOutParameter(pTable, c));
                            }
                            else
                            {
                                wParams.Append(GetInParameter(pTable, c));
                            }
                        }
                    }
                    break;

                case CodeGeneratorCommon.MethodActionType.Update:
                    foreach (Column c in pTable.Columns)
                    {
                        if (!FwkGeneratorHelper.NotSupportTypes_ToIncludeInBackEnd.Contains(c.DataType.SqlDataType.ToString().ToLower()))
                        {
                            wParams.Append(GetInParameter(pTable, c));
                        }
                    }
                    break;
                case CodeGeneratorCommon.MethodActionType.Delete:

                    Column cPK = FwkGeneratorHelper.GetPrimaryKey(pTable);
                    if (cPK != null)
                        wParams.Append(GetInParameter(cPK.Name, FwkGeneratorHelper.GetDBType(cPK)));
                    else
                        wParams.Append(GetInParameter("Id", "System.Data.DbType.Int32"));

                    break;
                case CodeGeneratorCommon.MethodActionType.SearchByParam:
               
                    foreach (Column c in pTable.Columns)
                    {
                        if (FwkGeneratorHelper.GeColumnFindeable(c))
                            wParams.Append(GetInParameter(pTable, c));

                    }
                    break;
                case CodeGeneratorCommon.MethodActionType.Get:
                    wParams.Append(string.Empty);
                    break;

            }
            return wParams.ToString();
        }
コード例 #44
0
ファイル: GenSP.cs プロジェクト: gpanayir/sffwk
        static void GenCodeInsert(TableViewBase pTable, string pSpBody, CodeGeneratorCommon.MethodActionType action, List<GeneratedCode> pProceduresCode)
        {

            StringBuilder wBuilder = null;
            GeneratedCode wCode = null;
            String wIntermediateCode = String.Empty;
            try
            {
                wBuilder = new StringBuilder();

                wBuilder = GenCodeCommon(pTable, pSpBody);
                wIntermediateCode = "(" + GenCodeInsertParameters(pTable, action) + ")";
                wBuilder.Replace("[Parameters]", wIntermediateCode);
                wBuilder.Replace("[Fields]", GenCodeInsertFields(pTable, action));
                wBuilder.Replace("[Values]", GenCodeInsertValues(pTable, action));
                wBuilder.Replace("[ReturnAutogenerated]", GenCodeInsertReturnAutogenerated(pTable, action));

                wBuilder.Replace(CodeGeneratorCommon.CommonConstants.CONST_STOREDPROCEDURE_NAME, GetStoredProcedureName(pTable.Name, pTable.Schema, action));

                //wCode = GetEntityGeneratedCode(pMethodInfo.Entity, pProceduresCode);
                wCode = new GeneratedCode();

                wCode.Id = pTable.Name;
                wCode.Code.Append(wBuilder.ToString());
                wCode.MethodActionType = action;
                pProceduresCode.Add(wCode);
            }
            finally
            {
                wBuilder = null;
                wCode = null;
            }
        }
コード例 #45
0
ファイル: GenSP.cs プロジェクト: gpanayir/sffwk
        static string GenCodeWhereClause(TableViewBase pTable)
        {
            StringBuilder wBuilder = new StringBuilder();


            foreach (Column wColumn in pTable.Columns)
            {
                if ( wColumn.IsForeignKey || wColumn.InPrimaryKey)
                {
                wBuilder.Append(wColumn.Name);
                wBuilder.Append(" = @");

                wBuilder.Append(wColumn.Name);
                wBuilder.Append(" AND \r\n");
                }
            }




            RemoveChars(wBuilder, 6);

            return wBuilder.ToString();
        }
コード例 #46
0
ファイル: GenSP.cs プロジェクト: gpanayir/sffwk
        /// <summary>
        /// Genera código de parámetros de un procedimiento almacenado de Búsqueda por clave primaria.
        /// </summary>
        /// <param name="pMethodInfo">información del método para generar stored procedure.</param>
        /// <returns>Código fuente generado.</returns>
        /// <date>2007-5-25T00:00:00</date>
        /// <author>Marcelo Oviedo</author>
        protected string GenCodeParameters(TableViewBase pTable, CodeGeneratorCommon.MethodActionType action)
        {

            StringBuilder wBuilder = new StringBuilder();

            //if (action == MethodActionType.Get)
            //{
            foreach (Column wColumn in pTable.Columns)
            {
                //if (wColumn.KeyField)// && wColumn.Selected)
                //{
                StringBuilder wParamBuilder = BuildParameter(wColumn, action, false, false);
                wBuilder.Append(wParamBuilder.ToString());
                //}
            }
            //}
            //else
            //{
            //    foreach (ParameterInfo wParameterInfo in pMethodInfo.Parameters)
            //    {

            //        StringBuilder wParamBuilder = base.BuildParameter(wParameterInfo);
            //        wBuilder.Append(wParamBuilder.ToString());
            //    }
            //}

            RemoveChars(wBuilder, 3);

            return wBuilder.ToString();

        }
コード例 #47
0
ファイル: GenSP.cs プロジェクト: gpanayir/sffwk
        /// <summary>
        /// Genera código de campos de retorno de un procedimiento almacenado de Búsqueda.
        /// Genera los campos del SELECT
        /// </summary>
        /// <param name="pMethodInfo">información del método para generar stored procedure.</param>
        /// <returns>Código fuente generado.</returns>
        /// <date>2007-5-25T00:00:00</date>
        /// <author>Marcelo Oviedo</author>
        static string GenCodeGetSelectList(TableViewBase pTable)
        {
            StringBuilder wBuilder = new StringBuilder();

            foreach (Column wColumn in pTable.Columns)
            {

                //wBuilder.Append("\t");
                wBuilder.AppendLine(wColumn.Name);
                wBuilder.Append(",");

            }

            RemoveChars(wBuilder, 2);

            return wBuilder.ToString();
        }
コード例 #48
0
ファイル: GenDAC.cs プロジェクト: Pelsoft/fwk_10.3
        /// <summary>
        /// Retorno del metodo
        /// </summary>
        /// <param name="pTable"></param>
        /// <param name="pMethodActionType"></param>
        /// <returns></returns>
        static string GetRetType(TableViewBase pTable, CodeGeneratorCommon.MethodActionType pMethodActionType)
        {
            String wBuilder = string.Empty;
            Column c = FwkGeneratorHelper.GetPrimaryKey(pTable);
            switch (pMethodActionType)
            {
                case CodeGeneratorCommon.MethodActionType.Insert:

                case CodeGeneratorCommon.MethodActionType.Update:
                case CodeGeneratorCommon.MethodActionType.Delete:
                    wBuilder = "void";
                    break;
                case CodeGeneratorCommon.MethodActionType.SearchByParam:
                    wBuilder = string.Concat(pTable.Name, "List");
                    break;
                case CodeGeneratorCommon.MethodActionType.GetByParam:
                    wBuilder = pTable.Name;
                    break;
            }
            return wBuilder;
        }
コード例 #49
0
ファイル: GenDAC.cs プロジェクト: Pelsoft/fwk_10.3
        /// <summary>
        /// Retorno del metodo
        /// </summary>
        /// <param name="pTable"></param>
        /// <param name="pMethodActionType"></param>
        /// <returns></returns>
        static string GetSPName(TableViewBase pTable, CodeGeneratorCommon.MethodActionType pMethodActionType)
        {
            String sufix = string.Empty;

            switch (pMethodActionType)
            {
                case CodeGeneratorCommon.MethodActionType.Insert:
                    sufix = "_i";
                    break;
                case CodeGeneratorCommon.MethodActionType.GetByParam:
                    sufix = "_gp";
                    break;
                case CodeGeneratorCommon.MethodActionType.Update:
                    sufix = "_u";
                    break;
                case CodeGeneratorCommon.MethodActionType.Delete:
                    sufix = "_d";
                    break;
                case CodeGeneratorCommon.MethodActionType.SearchByParam:

                    sufix = "_sp";
                    break;
                case CodeGeneratorCommon.MethodActionType.Get:
                    sufix = "_g";
                    break;

            }

            return string.Concat(pTable.Name, sufix);
        }
コード例 #50
0
ファイル: GenSP.cs プロジェクト: gpanayir/sffwk
        /// <summary>
        /// 
        /// </summary>
        /// <param name="pMethodInfo"></param>
        /// <returns>string</returns>
        /// <author>Marcelo Oviedo</author>
        static string GenCodeUpdateParameters(TableViewBase pTable, CodeGeneratorCommon.MethodActionType action)
        {
            StringBuilder wBuilder = new StringBuilder();

            foreach (Column wColumn in pTable.Columns)
            {
                if (IsColumnValidToInsert(wColumn))
                {
                    StringBuilder wParamBuilder = BuildParameter(wColumn, action, false, true);
                    wBuilder.Append(wParamBuilder.ToString());
                }
            }

            RemoveChars(wBuilder, 3);

            return wBuilder.ToString();
        }
コード例 #51
0
ファイル: GenDAC.cs プロジェクト: Pelsoft/fwk_10.3
        static string GetInParameter(TableViewBase pTable, Column c)
        {
            StringBuilder wParamBuilder = new StringBuilder(FwkGeneratorHelper.TemplateDocument.GetTemplate("ParameterInput").Content);
            //Si es un tipo de dato string y hacepta nulos se agrega la condicion para decidir si pasar o no el parametros al SP
            if (c.Nullable && FwkGeneratorHelper.GetDBType(c).Contains("string"))
                wParamBuilder.Replace("[ConditionalString]", FwkGeneratorHelper.TemplateDocument.GetTemplate("ConditionalString").Content);
            else
                wParamBuilder.Replace("[ConditionalString]", String.Empty);

            //quito si esxiste la cadena .Value de [Property_Name].Value.ToString("yy
            if(!c.Nullable )
                wParamBuilder.Replace("Value.", string.Empty);

            wParamBuilder.Replace("[ParameterName]", c.Name);
            wParamBuilder.Replace("[ParameterType]", FwkGeneratorHelper.GetDBType(c));
            wParamBuilder.Replace("[ParameterValue]", string.Concat("p", pTable.Name, ".", c.Name));

            
          

            return wParamBuilder.ToString();
        }
コード例 #52
0
ファイル: GenSP.cs プロジェクト: gpanayir/sffwk
        /// <summary>
        /// Genera código de parámetros de un procedimiento almacenado de borrado.
        /// </summary>
        /// <param name="pMethodInfo">información del método para generar stored procedure.</param>
        /// <returns>Código fuente generado.</returns>
        /// <date>2007-5-25T00:00:00</date>
        /// <author>Marcelo Oviedo</author>
        static string GenCodeDeleteParameters(TableViewBase pTable, CodeGeneratorCommon.MethodActionType action)
        {
            StringBuilder wBuilder = new StringBuilder();

            foreach (Column wColumn in pTable.Columns)
            {
                if (wColumn.InPrimaryKey) //&& wColumn.Selected)
                {
                    StringBuilder wParamBuilder = BuildParameter(wColumn, action, false, false);
                    wBuilder.Append(wParamBuilder.ToString());
                }
            }

            RemoveChars(wBuilder, 3);

            return wBuilder.ToString();
        }
コード例 #53
0
ファイル: GenDAC.cs プロジェクト: Pelsoft/fwk_10.3
        static string GenSPParameters_Batch(TableViewBase pTable, CodeGeneratorCommon.MethodActionType pMethodActionType)
        {

            StringBuilder wParams = new StringBuilder();
            int i = 0;
            bool appendProperty = true;
            Column primaryKey = FwkGeneratorHelper.GetPrimaryKey(pTable);
            foreach (Column c in pTable.Columns)
            {
                i++;
                if (pMethodActionType == CodeGeneratorCommon.MethodActionType.Insert ||
                    pMethodActionType == CodeGeneratorCommon.MethodActionType.Update)
                {

                    if (primaryKey != null)
                        appendProperty = !(primaryKey == c && pMethodActionType == CodeGeneratorCommon.MethodActionType.Insert);

                    if (appendProperty)
                        //i == pTable.Columns.Count --> Fin de la coleccion
                        wParams.Append(Get_Property_Batch(c, (i == pTable.Columns.Count)));

                }
               

            }
            return wParams.ToString();
        }
コード例 #54
0
ファイル: GenSP.cs プロジェクト: gpanayir/sffwk
        /// <summary>
        /// Genera el listado de campos para el update 
        /// </summary>
        /// <param name="pMethodInfo"></param>
        /// <returns>string</returns>
        /// <author>Marcelo Oviedo</author>
        static string GenCodeUpdateSetStatements(TableViewBase pTable, CodeGeneratorCommon.MethodActionType action)
        {
            StringBuilder wBuilder = new StringBuilder();

            foreach (Column wColumn in pTable.Columns)
            {
                if (!wColumn.Identity)//&& wColumn.Selected)
                {
                    wBuilder.Append(wColumn.Name);
                    wBuilder.Append(" = @");
                    
                    wBuilder.Append(wColumn.Name);
                    wBuilder.Append(",\r\n");
                }
            }

            RemoveChars(wBuilder, 3);

            return wBuilder.ToString();
        }
コード例 #55
0
ファイル: GenSP.cs プロジェクト: gpanayir/sffwk
        /// <summary>
        /// 
        /// </summary>
        /// <param name="pMethodInfo"></param>
        /// <returns></returns>
        /// <author>Marcelo Oviedo</author>
        static string GenCodeInsertFields(TableViewBase pTable, CodeGeneratorCommon.MethodActionType action)
        {
            StringBuilder wBuilder = new StringBuilder();

            foreach (Column wColumn in pTable.Columns)
            {
                //!wColumn.Autogenerated && wColumn.Selected &&
                if (IsColumnValidToInsert(wColumn))
                {
                    wBuilder.AppendLine(wColumn.Name);
                    wBuilder.Append(",");
                }
            }

            RemoveChars(wBuilder, 2);

            return wBuilder.ToString();
        }
コード例 #56
0
ファイル: FwkGenerator.cs プロジェクト: spzenk/sfdocsamples
        public static Column GetPrimaryKey(TableViewBase table)
        {
            foreach (Column c in table.Columns)
            {
                if (c.Identity)
                {
                    return c;
                }

            }
            return null;
        }
コード例 #57
0
        private void createStgIndex(Index i, TableViewBase parent)
        {
            if (i.PartitionScheme == "")
            {
                throw (new System.NotSupportedException(
                           String.Format("The index '{0}' is not aligned to a Partition Scheme", i.Name)));
            }

            // todo:  differentiate between Base Table as source, and View as source

            // LZAV:  Index stgIndex = new Index(parent, parent.Name + "_" + i.Name);
            String indexName = parent.Name + "_" + i.Name;                      // LZAV

            if (indexName.Length > 128)                                         // LZAV
            {
                indexName = "IX_CL_" + parent.Name;                             // LZAV
            }
            Index stgIndex = new Index(parent, indexName);                      // LZAV

            foreach (IndexedColumn iCol in i.IndexedColumns)
            {
                IndexedColumn stgICol = new IndexedColumn(stgIndex, iCol.Name, iCol.Descending);
                stgICol.IsIncluded = iCol.IsIncluded;
                stgIndex.IndexedColumns.Add(stgICol);
            }
            stgIndex.IndexType           = i.IndexType;
            stgIndex.IndexKeyType        = i.IndexKeyType;
            stgIndex.IsClustered         = i.IsClustered;
            stgIndex.IsUnique            = i.IsUnique;
            stgIndex.CompactLargeObjects = i.CompactLargeObjects;
            stgIndex.IgnoreDuplicateKeys = i.IgnoreDuplicateKeys;
            stgIndex.IsFullTextKey       = i.IsFullTextKey;
            stgIndex.PadIndex            = i.PadIndex;
            stgIndex.FileGroup           = db.PartitionSchemes[i.PartitionScheme].FileGroups[partitionNumber - 1];

            // add the partitioning column to the index if it is not already there
            String partitionKeyName = i.PartitionSchemeParameters[0].Name;

            if (stgIndex.IndexedColumns[partitionKeyName] == null)
            {
                IndexedColumn stgICol = new IndexedColumn(stgIndex, partitionKeyName);
                // It is added as a Key to the Clustered index and as an Include column to a Nonclustered
                stgICol.IsIncluded = !stgIndex.IsClustered;
                stgIndex.IndexedColumns.Add(stgICol);
            }

            if (srv.VersionMajor >= 10)
            {
                // Define compression property to match by creating a Physical Partition object (not applicable to Colstore)
                {
                    PhysicalPartition stgPartition = new PhysicalPartition(stgIndex, 1);
                    if (i.IndexType != IndexType.NonClusteredColumnStoreIndex)
                    {
                        stgPartition.DataCompression = i.PhysicalPartitions[partitionNumber - 1].DataCompression;
                    }
                    stgIndex.PhysicalPartitions.Add(stgPartition);
                }
                // Handle Filtered Index
                if (i.HasFilter)
                {
                    stgIndex.FilterDefinition = i.FilterDefinition;
                }
            }
            scriptChunks.Add(stgIndex.Script());
            if (executeCommands)
            {
                stgIndex.Create();
            }
        }
コード例 #58
0
ファイル: GenSP.cs プロジェクト: gpanayir/sffwk
        /// <summary>
        /// 
        /// </summary>
        /// <param name="pMethodInfo"></param>
        /// <returns></returns>
        /// <author>Marcelo Oviedo</author>
        static string GenCodeInsertValues(TableViewBase pTable, CodeGeneratorCommon.MethodActionType action)
        {
            StringBuilder wBuilder = new StringBuilder();

            foreach (Column wColumn in pTable.Columns)
            {
                //wColumn.Selected 
                if (IsColumnValidToInsert(wColumn))
                {
                    wBuilder.AppendLine(string.Concat("@", wColumn.Name,","));
                }
            }

            RemoveChars(wBuilder, 3);

            return wBuilder.ToString();
        }
コード例 #59
0
ファイル: DatabaseScripter.cs プロジェクト: bhank/ScriptDB
        private void ScriptIndexes(TableViewBase tableOrView, bool verbose, Database db, ScriptingOptions so, string tablesOrViewsOutputDirectory)
        {
            var indexes = Path.Combine(tablesOrViewsOutputDirectory, "Indexes");
            var primaryKeys = Path.Combine(tablesOrViewsOutputDirectory, "PrimaryKeys");
            var uniqueKeys = Path.Combine(tablesOrViewsOutputDirectory, "UniqueKeys");

            var fileName = Path.Combine(tablesOrViewsOutputDirectory, GetScriptFileName(tableOrView));

            foreach (Index smo in tableOrView.Indexes)
            {
                if (IncludeSystemObjects || !smo.IsSystemObject)
                {
                    string dir =
                        (smo.IndexKeyType == IndexKeyType.DriPrimaryKey) ? primaryKeys :
                        (smo.IndexKeyType == IndexKeyType.DriUniqueKey) ? uniqueKeys : indexes;
                    if (!TableOneFile)
                        fileName = Path.Combine(dir, GetScriptFileName(tableOrView, smo));
                    using (StreamWriter sw = GetStreamWriter(fileName, TableOneFile))
                    {
                        if (verbose) Console.Error.WriteLine("[{0}].[{1}].[{2}]: [{3}]", db.Name, tableOrView.Schema, tableOrView.Name, smo.Name);
                        if (!CreateOnly)
                        {
                            so.ScriptDrops = so.IncludeIfNotExists = true;
                            WriteScript(smo.Script(so), sw);
                        }
                        so.ScriptDrops = so.IncludeIfNotExists = false;
                        WriteScript(smo.Script(so), sw);

                        if (Properties)
                        {
                            ScriptProperties(smo, sw);
                        }
                    }
                }
            }
        }
コード例 #60
0
ファイル: GenSP.cs プロジェクト: gpanayir/sffwk
        ///TODO: Ver si se utiliza esto
        static string GenCodeInsertReturnAutogenerated(TableViewBase pTable, CodeGeneratorCommon.MethodActionType action)
        {
            StringBuilder wBuilder = new StringBuilder();
            string wText = string.Empty;

            foreach (Column wColumn in pTable.Columns)
            {
                if (wColumn.Identity)
                {
                    wBuilder.Append("@");
                    wBuilder.Append(wColumn.Name);

                    //wText = Properties.Settings.Default.GetReturnAutogeneratedPattern.Replace("[Name]", wBuilder.ToString());
                    break;
                }
            }

            string wOutputIdentitySet = FwkGeneratorHelper.TemplateDocument.GetTemplate("SP_OutputIdentitySet").Content;
            if (wBuilder.Length == 0)
                return String.Empty;
            else
                return wOutputIdentitySet.Replace("[OutputVariable]", wBuilder.ToString());
        }