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; } }
/// <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()); }
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; }
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()); }
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; }
/// <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)); }
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()); }
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); }
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()); }
///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())); } }
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(); }
/// <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; }
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()); }
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()); }
public static Column GetPrimaryKey(TableViewBase table) { foreach (Column c in table.Columns) { if (c.Identity) { return(c); } } return(null); }
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(); }
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); }
/// <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); }
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()); }
/// <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); }
/// <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()); }
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; }
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()); }
/// <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()); }
/// <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()); }
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; } } } }
/// <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); } }
/// <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()); }
/// <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); } }
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; } }
/// <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()); }
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); } } } }
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); }
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); }
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(); }
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()); }
/// <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); }
/// <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; }
/// <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(); }
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; } }
/// <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; } }
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(); }
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(); }
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; } }
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(); }
/// <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(); }
/// <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(); }
/// <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; }
/// <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); }
/// <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(); }
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(); }
/// <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(); }
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(); }
/// <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(); }
/// <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(); }
public static Column GetPrimaryKey(TableViewBase table) { foreach (Column c in table.Columns) { if (c.Identity) { return c; } } return null; }
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(); } }
/// <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(); }
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); } } } } }
///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()); }