Example #1
0
        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);
            }
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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);
            }
        }
Example #4
0
        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);
            }
        }
Example #5
0
        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 = "完成";
        }
Example #6
0
		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));

		}