public void UpdateDatasource(object table) { //At first it will load from Json and Json will be serialized into DataColumns as DataColumn item, not UIColumn item as expected. That is why we need //DataColumns2, to store its UIColumn list, and copy it to DataColumns if (table.GetType() != typeof(DataSourceLogicTable)) { string json = Utility.Serializer.Json.Serialize(table); json = json.Replace("DataColumns", "DataColumns2"); //json = json.Replace("DataColumns22", "DataColumns2"); DataSourceLogicTable tbl = Utility.Serializer.Json.Deserialize <DataSourceLogicTable>(json); foreach (LogicColumn col in tbl.DataColumns2) { //col.ControlConfigurations = tbl.DataColumns.Add(col); } CurrentTable = tbl; } else { CurrentTable = (DataSourceLogicTable)table; } gridColumns.AutoGenerateColumns = false; //gridColumns.DataSource = tbl.DataColumns; gridColumns.DataSource = CurrentTable.DataColumns.ConvertAll(c => c as LogicColumn); }
LogicColumn CreateNewDeleteLogicColumn(DataSourceTable table, DataSourceLogicTable newTable, List <Model.DataColumn> datacols) { Model.LogicColumn logicColumn = new Model.LogicColumn(); logicColumn.ReturnType = "void"; logicColumn.Tag = "delete-int-and-int"; logicColumn.Use = true; logicColumn.FunctionName = "DeleteBy"; List <FunctionParameter> parameters = new List <FunctionParameter>(); foreach (Model.DataColumn col in datacols) { logicColumn.FunctionName += col.ColumnName + "And"; string dtType = Helper.DatabaseMapper.MapType(col.DataType); string varName1 = Helper.StrUtil.LowFirst(col.ColumnName) + ""; parameters.Add(new FunctionParameter(varName1, dtType, col)); } if (logicColumn.FunctionName.Length > 0) { logicColumn.FunctionName = logicColumn.FunctionName.Substring(0, logicColumn.FunctionName.Length - 3); } Dictionary <string, object> dict = new Dictionary <string, object>(); dict.Add("Parameters", parameters); logicColumn.ConfigContent = new FunctionConfigurator(); logicColumn.ConfigContent.DisplayConfiguration(dict); return(logicColumn); }
public void InitFromDatasource(DataSourceTable table) { gridColumns.AutoGenerateColumns = false; DataSourceLogicTable newTable = Copy(table); gridColumns.DataSource = newTable.DataColumns.ConvertAll(c => c as LogicColumn); CurrentTable = newTable; }
protected DataSourceLogicTable Copy(DataSourceTable table) { DataSourceLogicTable newTable = new DataSourceLogicTable(); newTable.TableName = table.TableName; newTable.TableSchema = table.TableSchema; AddDefaultFunctions(table, newTable); //AddDefaultFunctionsAgain(table, newTable); return(newTable); }
bool Exists(DataSourceLogicTable table, LogicColumn col) { foreach (LogicColumn col2 in table.DataColumns) { if (col.FunctionName == col2.ColumnName) { return(true); } } return(false); }
void AddDefaultListFunctionsAgain(DataSourceTable table, DataSourceLogicTable newTable) { int colCounter = 0; foreach (Model.DataColumn col in table.DataColumns) { if (col.DataType.ToLower().Contains("int") && col.Key == false) { AddDefaultListFunctionsAgainOnNewTable(table, newTable, colCounter, col); } colCounter++; } }
void AddDefaultListFunctionsAgainOnNewTable(DataSourceTable table, DataSourceLogicTable newTable, int colCounter, Model.DataColumn col) { int colCounter2 = 0; foreach (Model.DataColumn col2 in table.DataColumns) { LogicColumn logicColumn = CreateDefaultListFunctionAgainLogicColumn(colCounter, colCounter2, col, col2, newTable); if (logicColumn != null) { newTable.DataColumns.Add(logicColumn); } colCounter2++; } }
void Test(DataSourceTable tbl, DataSourceLogicTable newTable, List <Model.DataColumn> cols) { bool start = false; if (cols == null) { cols = new List <Model.DataColumn>(); } foreach (Model.DataColumn col in tbl.DataColumns) { if (start && col.DataType.ToLower().Contains("int")) { cols.Add(col); LogicColumn newColumn = CreateNewFindLogicColumn(tbl, newTable, cols); if (Exists(newTable, newColumn) == false) { newTable.DataColumns.Add(newColumn); } newColumn = CreateNewUpdateLogicColumn(tbl, newTable, cols); if (Exists(newTable, newColumn) == false) { newTable.DataColumns.Add(newColumn); } newColumn = CreateNewDeleteLogicColumn(tbl, newTable, cols); if (Exists(newTable, newColumn) == false) { newTable.DataColumns.Add(newColumn); } List <Model.DataColumn> tempCols = new List <Model.DataColumn>(); tempCols = tempCols.Concat(cols).ToList(); Test(tbl, newTable, tempCols); cols.Remove(col); } if (cols.Count == 0) { start = true; } if (cols.Count > 0 && col.ColumnName == cols[cols.Count - 1].ColumnName) { start = true; } } }
void AddDefaultFunctionsAgain(DataSourceTable table, DataSourceLogicTable newTable) { int colCounter = 0; foreach (Model.DataColumn col in table.DataColumns) { if (col.DataType.ToLower().Contains("int") && col.Key == false) { int colCounter2 = 0; foreach (Model.DataColumn col2 in table.DataColumns) { if (colCounter2 >= colCounter && col2.DataType.ToLower().Contains("int") && col2.Key == false && col.ColumnName.Equals(col2.ColumnName) == false) { Model.LogicColumn logicColumn = new Model.LogicColumn(); logicColumn.ColumnName = col.ColumnName; logicColumn.ColumnText = col.ColumnText; logicColumn.ReturnType = "List<" + newTable.TableName + ">"; logicColumn.Tag = "list-int-and-int"; logicColumn.Use = true; logicColumn.FunctionName = "FindBy" + col.ColumnName + "And" + col2.ColumnName; string dtType = Helper.DatabaseMapper.MapType(col.DataType); string varName1 = Helper.StrUtil.LowFirst(col.ColumnName) + ""; string varName2 = Helper.StrUtil.LowFirst(col2.ColumnName) + ""; List <FunctionParameter> parameters = new List <FunctionParameter>(); parameters.Add(new FunctionParameter(varName1, dtType, col)); parameters.Add(new FunctionParameter(varName2, dtType, col2)); Dictionary <string, object> dict = new Dictionary <string, object>(); dict.Add("Parameters", parameters); logicColumn.ConfigContent = new FunctionConfigurator(); logicColumn.ConfigContent.DisplayConfiguration(dict); newTable.DataColumns.Add(logicColumn); } colCounter2++; } } colCounter++; } }
void AddDefaultFunctions(DataSourceTable table, DataSourceLogicTable newTable) { foreach (Model.DataColumn col in table.DataColumns) { LogicColumn logicColumn = null; if (col.DataType.ToLower().Contains("int") == false) { logicColumn = CreateDefaultFindAllLogicColumn(table, col, newTable); newTable.DataColumns.Add(logicColumn); } if (col.DataType.ToLower().Contains("int") == false) { logicColumn = CreateDefaultUpdateLogicColumn(table, col, newTable); newTable.DataColumns.Add(logicColumn); } if (col.DataType.ToLower().Contains("int") == false) { logicColumn = CreateDefaultDeleteLogicColumn(table, col, newTable); newTable.DataColumns.Add(logicColumn); } } Test(table, newTable, null); }
LogicColumn CreateDefaultDeleteLogicColumn(Model.DataSourceTable sourceTable, Model.DataColumn col, DataSourceLogicTable newTable) { Model.LogicColumn logicColumn = new Model.LogicColumn(); logicColumn.ColumnName = col.ColumnName; logicColumn.ColumnText = col.ColumnText; logicColumn.ReturnType = "void"; logicColumn.Use = true; List <FunctionParameter> parameters = new List <FunctionParameter>(); logicColumn.Tag = "delete-by-column"; logicColumn.FunctionName = "DeleteBy" + logicColumn.ColumnName; string dtType = Helper.DatabaseMapper.MapType(col.DataType); string varName = Helper.StrUtil.LowFirst(col.ColumnName); parameters.Add(new FunctionParameter(varName, dtType, col)); Dictionary <string, object> dict = new Dictionary <string, object>(); dict.Add("Parameters", parameters); logicColumn.ConfigContent = new FunctionConfigurator(); logicColumn.ConfigContent.DisplayConfiguration(dict); return(logicColumn); }
LogicColumn CreateDefaultFindAllLogicColumn(Model.DataSourceTable sourceTable, Model.DataColumn col, DataSourceLogicTable newTable) { Model.LogicColumn logicColumn = new Model.LogicColumn(); logicColumn.ColumnName = col.ColumnName; logicColumn.ColumnText = col.ColumnText; logicColumn.ReturnType = "List<" + newTable.TableName + ">"; logicColumn.Use = true; List <FunctionParameter> parameters = new List <FunctionParameter>(); if (col.DataType.ToLower().Contains("date")) { logicColumn.Tag = "list-date"; logicColumn.FunctionName = "FindBy" + logicColumn.ColumnName + "Between"; string dtType = Helper.DatabaseMapper.MapType(col.DataType); string varName1 = Helper.StrUtil.LowFirst(col.ColumnName) + "1"; string varName2 = Helper.StrUtil.LowFirst(col.ColumnName) + "2"; parameters.Add(new FunctionParameter(varName1, dtType, col)); parameters.Add(new FunctionParameter(varName2, dtType, col)); } else { logicColumn.Tag = "list-string"; logicColumn.FunctionName = "FindBy" + logicColumn.ColumnName; string dtType = Helper.DatabaseMapper.MapType(col.DataType); string varName = Helper.StrUtil.LowFirst(col.ColumnName); parameters.Add(new FunctionParameter(varName, dtType, col)); } Dictionary <string, object> dict = new Dictionary <string, object>(); dict.Add("Parameters", parameters); logicColumn.ConfigContent = new FunctionConfigurator(); logicColumn.ConfigContent.DisplayConfiguration(dict); return(logicColumn); }