private void LoadEntity(ProjectConfig project, string directory) { // ReSharper disable once AssignNullToNotNullAttribute string path = Path.Combine(directory, "Entity"); List <string> files; if (!Directory.Exists(path)) { files = IOHelper.GetAllFiles(directory, "ent"); } else { files = IOHelper.GetAllFiles(path, "*.*"); } foreach (var entFile in files) { var entity = DeSerializer <EntityConfig>(entFile); if (entity.IsDelete) { continue; } foreach (var field in entity.Properties) { field.Parent = entity; } project.Add(entity); } }
private void ReadEnum(Type type) { EnumConfig config = _project.Enums.FirstOrDefault(p => p.Name == type.Name) ?? new EnumConfig { Name = type.Name }; _project.Add(config); GetInfo(config, type); foreach (var field in type.GetFields(BindingFlags.Static | BindingFlags.Public)) { var col = config.Items.FirstOrDefault(p => p.Name == field.Name); if (col == null) { config.Add(col = new EnumItem { Name = field.Name, Value = Convert.ToInt64(field.GetValue(null)).ToString() }); } GetInfo(col, type, field); } }
private void LoadApi(ProjectConfig project, string directory) { // ReSharper disable once AssignNullToNotNullAttribute string path = Path.Combine(directory, "Api"); var apis = IOHelper.GetAllFiles(path, "*.*"); foreach (var file in apis) { var api = DeSerializer <ApiItem>(file); if (api.IsDelete) { continue; } project.Add(api); } }
private void LoadEnums(ProjectConfig project, string directory) { // ReSharper disable once AssignNullToNotNullAttribute string path = Path.Combine(directory, "Enum"); var enums = IOHelper.GetAllFiles(path, "*.*"); foreach (var file in enums) { var type = DeSerializer <EnumConfig>(file); if (type.IsDelete) { continue; } project.Add(type); } }
private void DoImport() { _trace.Message1 = "连接数据库"; _trace.Track = _connectionString; using (MySqlConnection connection = new MySqlConnection(_connectionString)) { _trace.Track = "正在连接..."; connection.Open(); _trace.Track = "连接成功"; var tables = new List <string>(); _trace.Message1 = "分析数据表"; using (var cmd = connection.CreateCommand()) { _trace.Message2 = "读取表名"; _trace.Track = "正在读取表名..."; cmd.CommandText = $@"select Table_Name from information_schema.tables where table_schema='{_database}' and table_type='base table';"; using (var reader = cmd.ExecuteReader()) { if (!reader.HasRows) { _trace.Message1 = "没有任何表"; return; } while (reader.Read()) { tables.Add(reader.GetString(0)); } } _trace.Track = $@"读取成功({tables.Count})"; } _trace.Message1 = "分析表结构"; foreach (var t in tables) { string table = t; bool isnew = false; _trace.Message2 = table; var entity = GlobalConfig.GetEntity(p => string.Equals(p.SaveTable, table, StringComparison.OrdinalIgnoreCase)); if (entity == null) { isnew = true; entity = new EntityConfig { ReadTableName = table, Name = CoderBase.ToWordName(table) }; _trace.Track = @"新增的表"; _dispatcher.Invoke(() => { _project.Add(entity); }); } _trace.Message3 = "列分析"; using (var cmd = connection.CreateCommand()) { LoadColumn(_database, cmd, table, entity, isnew); } } } _trace.Message1 = "完成"; }
static void Main(string[] args) { var path = @"C:\Users\PetarPetrov\AppData\Local\Packages\9ed4bf97-9c34-45dc-a217-5f8121aa6dfc_7gbmn9e1bm2jj\LocalState\ifsa.sqlite"; //path = @"C:\Users\PetarPetrov\Desktop\app_studio.sqlite"; var projectConfig = new ProjectConfig(); projectConfig.Add(new EntityConfig(@"ACTIVATION_COMPLIANCES")); // TODO : !!! //projectConfig.Load(null); // load to a file //projectConfig.Save(null); // save to a file var cnString = $@"Data Source = {path}; Version = 3; DateTimeFormat=Ticks;"; var classes = new StringBuilder(); var dataProvider = new StringBuilder(); var register = new StringBuilder(); using (var dbContext = new DbContext(cnString)) { foreach (var table in DataProvider.GetTables(dbContext)) { if (table.Name.Contains('$') || table.Name.IndexOf(@"Asset_Class", StringComparison.OrdinalIgnoreCase) >= 0 || table.Name.IndexOf(@"open_balance", StringComparison.OrdinalIgnoreCase) >= 0 || table.Name.IndexOf(@"factory_cal", StringComparison.OrdinalIgnoreCase) >= 0 || table.Name.IndexOf(@"Visit_dat", StringComparison.OrdinalIgnoreCase) >= 0 || table.Name.IndexOf(@"Equipment", StringComparison.OrdinalIgnoreCase) >= 0 || table.Name.IndexOf(@"Temp_data", StringComparison.OrdinalIgnoreCase) >= 0) { continue; } var buffer = new StringBuilder(4 * 1024); buffer.Clear(); CodeGenerator.GenerateClass(buffer, table, projectConfig); buffer.AppendLine(); //CodeGenerator.GenerateCaptionsClass(buffer, table, projectConfig); //buffer.AppendLine(); //CodeGenerator.GenerateViewModel(buffer, table, projectConfig); //buffer.AppendLine(); //CodeGenerator.GeneratePropertyEnum(buffer, table, projectConfig); //buffer.AppendLine(); //CodeGenerator.GenerateParametersClass(buffer, table, projectConfig); //buffer.AppendLine(); //CodeGenerator.GenerateSortOptionsArray(buffer, table, projectConfig); //buffer.AppendLine(); //CodeGenerator.GenerateSortOptionsProperties(buffer, table, projectConfig); //buffer.AppendLine(); //CodeGenerator.GenerateSortOptionsInitialization(buffer, table, projectConfig); //buffer.AppendLine(); //CodeGenerator.GenerateIsTextMatchMethod(buffer, table, projectConfig); //buffer.AppendLine(); //CodeGenerator.GenerateSortMethod(buffer, table, projectConfig); //buffer.AppendLine(); Console.WriteLine(); Console.WriteLine(buffer.ToString()); classes.AppendLine(buffer.ToString()); buffer.Clear(); CodeGenerator.GenerateGetAll(buffer, table, projectConfig); dataProvider.AppendLine(buffer.ToString()); //register.AppendLine($@"Console.Write(""{table.Name}"" + "" : "");"); //register.AppendLine($@"Console.WriteLine(DataProviders.Get{projectConfig.GetEntityConfig(table.Name).ClassPluralName}(dbContext, cache).Count);"); register.AppendLine($@"s.Add(""{table.Name}"", DataProviders.Get{projectConfig.GetEntityConfig(table.Name).ClassPluralName}(dbContext, cache).Count);"); } var cache = new DataCache(); //cache.Register(DataProviders.GetBrandKinds); //cache.Register(DataProviders.GetBrands); //cache.Register(DataProviders.GetFlavours); //var arts = DataProviders.GetArticles(ctx, cache); //Console.WriteLine(arts.Count); var s = new Dictionary<string, int>(); var vals = s .Where(v => v.Value != 0) .Select(v => Tuple.Create(v.Key, v.Value)) .ToList(); vals.Sort((x, y) => { var cmp = y.Item2.CompareTo(x.Item2); if (cmp == 0) { cmp = string.Compare(x.Item1, y.Item1, StringComparison.OrdinalIgnoreCase); } return cmp; } ); foreach (var v in vals) { Console.WriteLine(v); } dbContext.Complete(); } var code = classes.ToString(); var data = dataProvider.ToString(); //Console.WriteLine(code.Length); //Console.WriteLine(data.Length); foreach (var s in register.ToString().Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries)) { Debug.WriteLine(s); } //Console.WriteLine(code); //Console.WriteLine(data); //return; // File.WriteAllText(@"C:\Atos\AppStudio\AppStudio\Objects.cs", string.Format(@"using System; //using AppCore.ViewModels; //namespace AppStudio //{{ // {0} //}} //", code)); // File.WriteAllText(@"C:\Atos\AppStudio\AppStudio\DataProviders.cs", string.Format(@"using System; //using System.Collections.Generic; //using AppCore; //using AppCore.Data; //namespace AppStudio //{{ // public static class DataProviders // {{ // {0} // }} //}} //", data)); }