|
@@ -37,11 +37,13 @@ namespace GFGEditor
|
|
|
_idDic.Clear();
|
|
|
_indexs.Clear();
|
|
|
//_hasSameIds = false;
|
|
|
- List<string> keyNames = new List<string>();
|
|
|
- List<string> keyTypes = new List<string>();
|
|
|
- List<string> groupNames = new List<string>();
|
|
|
- List<string> groupTypes = new List<string>();
|
|
|
- bool groupOnly = false;
|
|
|
+ List<string> keyName = new List<string>();//默认用id查询单条数据
|
|
|
+ List<string> keyType = new List<string>();
|
|
|
+ Dictionary<string, List<string>> keyNames = new Dictionary<string, List<string>>();
|
|
|
+ Dictionary<string, List<string>> keyTypes = new Dictionary<string, List<string>>();
|
|
|
+ Dictionary<string, List<string>> groupNames = new Dictionary<string, List<string>>();
|
|
|
+ Dictionary<string, List<string>> groupTypes = new Dictionary<string, List<string>>();
|
|
|
+ bool groupOnly = false;//可根据id分组时,不提供根据id查询单条数据的接口
|
|
|
int len = worksheet.Dimension.End.Column;
|
|
|
if (len <= 0)
|
|
|
{
|
|
@@ -55,107 +57,154 @@ namespace GFGEditor
|
|
|
string nameWhole = worksheet.Cells[3, i].Text.Trim();
|
|
|
string[] nameInfos = nameWhole.Split('#');
|
|
|
string name = nameInfos[0];
|
|
|
- if (i == 1 || nameWhole.Contains("#k"))
|
|
|
+ if (i == 1)
|
|
|
{
|
|
|
- keyNames.Add(name);
|
|
|
- keyTypes.Add(type);
|
|
|
+ keyName.Add(name);
|
|
|
+ keyType.Add(type);
|
|
|
}
|
|
|
- if (nameWhole.Contains("#g"))
|
|
|
+ for (int j = 1; j < nameInfos.Length; j++)
|
|
|
{
|
|
|
- groupNames.Add(name);
|
|
|
- groupTypes.Add(type);
|
|
|
+ if (nameInfos[j].Contains("k"))
|
|
|
+ {
|
|
|
+ if (!keyNames.ContainsKey(nameInfos[j]))
|
|
|
+ {
|
|
|
+ keyNames.Add(nameInfos[j], new List<string>());
|
|
|
+ keyTypes.Add(nameInfos[j], new List<string>());
|
|
|
+ }
|
|
|
+ keyNames[nameInfos[j]].Add(name);
|
|
|
+ keyTypes[nameInfos[j]].Add(type);
|
|
|
+ }
|
|
|
+ if (nameInfos[j].Contains("g"))
|
|
|
+ {
|
|
|
+ if (!groupNames.ContainsKey(nameInfos[j]))
|
|
|
+ {
|
|
|
+ groupNames.Add(nameInfos[j], new List<string>());
|
|
|
+ groupTypes.Add(nameInfos[j], new List<string>());
|
|
|
+ }
|
|
|
+ groupNames[nameInfos[j]].Add(name);
|
|
|
+ groupTypes[nameInfos[j]].Add(type);
|
|
|
+ }
|
|
|
}
|
|
|
- ParseDataColumn(annotation, type, name, i);
|
|
|
- }
|
|
|
- if (keyNames.Count == groupNames.Count)
|
|
|
- {
|
|
|
- bool isSame = true;
|
|
|
- for (var i = 0; i < keyNames.Count; i++)
|
|
|
+ foreach (string key in groupNames.Keys)
|
|
|
{
|
|
|
- if (keyNames[i] != groupNames[i])
|
|
|
+ if (groupNames[key].Count == 1 && groupNames[key][0] == keyName[0])
|
|
|
{
|
|
|
- isSame = false;
|
|
|
+ groupOnly = true;
|
|
|
}
|
|
|
}
|
|
|
- groupOnly = isSame;
|
|
|
+ ParseDataColumn(annotation, type, name, i);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
//创建sqlite表
|
|
|
SQLiteHelper.Instance.CreateTable(configArrayName, _names.ToArray(), _types.ToArray());
|
|
|
AddDataToSql(worksheet, configName, configArrayName);
|
|
|
|
|
|
//生成管理类代码
|
|
|
string configArrayStr = CodeTemplateFactory.ConfigArrayTemplate;
|
|
|
- string paramsStr;
|
|
|
- string colNames;
|
|
|
- string colValues;
|
|
|
- _declarationBuilder.AppendFormat("\t\t//{0}", "组合key");
|
|
|
+
|
|
|
+ _declarationBuilder.AppendFormat("\t\t//{0}", "key");
|
|
|
_declarationBuilder.AppendLine();
|
|
|
- _declarationBuilder.AppendFormat("\t\tpublic {0} {1};", "string", "combinedKey");
|
|
|
+ _declarationBuilder.AppendFormat("\t\tpublic {0} {1};", "string", "key");
|
|
|
_declarationBuilder.AppendLine();
|
|
|
- //处理查询单条数据函数
|
|
|
- if (groupOnly)
|
|
|
+
|
|
|
+ // _assignmentBuilder.AppendFormat("\t\t\t{0} = \"{1}\";", "key", keyName);
|
|
|
+ // _assignmentBuilder.AppendLine();
|
|
|
+
|
|
|
+ foreach (string key in keyNames.Keys)
|
|
|
{
|
|
|
- configArrayStr = configArrayStr.Replace("{singleFunction}", "");
|
|
|
- _assignmentBuilder.AppendFormat("\t\t\t{0} = \"{1}\";", "combinedKey", string.Join("_", groupNames));
|
|
|
- _assignmentBuilder.AppendLine();
|
|
|
+ _declarationBuilder.AppendFormat("\t\t//{0}{1}", "key_", key);
|
|
|
+ _declarationBuilder.AppendLine();
|
|
|
+ _declarationBuilder.AppendFormat("\t\tpublic {0} {1}{2};", "string", "combinedKey_", key);
|
|
|
+ _declarationBuilder.AppendLine();
|
|
|
+
|
|
|
}
|
|
|
- else
|
|
|
+
|
|
|
+ foreach (string key in groupNames.Keys)
|
|
|
{
|
|
|
- string FunctionSingleStr = CodeTemplateFactory.FunctionSingleTemplate;
|
|
|
- CreateParamsString(keyNames, keyTypes, out paramsStr, out colNames, out colValues);
|
|
|
- FunctionSingleStr = FunctionSingleStr.Replace("{params}", paramsStr);
|
|
|
- FunctionSingleStr = FunctionSingleStr.Replace("{colNames}", colNames);
|
|
|
- FunctionSingleStr = FunctionSingleStr.Replace("{colValues}", colValues);
|
|
|
- configArrayStr = configArrayStr.Replace("{singleFunction}", FunctionSingleStr);
|
|
|
- _assignmentBuilder.AppendFormat("\t\t\t{0} = \"{1}\";", "combinedKey", string.Join("_", keyNames));
|
|
|
- _assignmentBuilder.AppendLine();
|
|
|
+ _declarationBuilder.AppendFormat("\t\t//{0}{1}", "groupKey_", key);
|
|
|
+ _declarationBuilder.AppendLine();
|
|
|
+ _declarationBuilder.AppendFormat("\t\tpublic {0} {1}{2};", "string", "groupKey_", key);
|
|
|
+ _declarationBuilder.AppendLine();
|
|
|
+
|
|
|
}
|
|
|
|
|
|
- //处理查询多条数据函数
|
|
|
- if (groupNames.Count > 0)
|
|
|
+
|
|
|
+ string ConstructorStr = CodeTemplateFactory.ConstructorTemplate;
|
|
|
+ configArrayStr = configArrayStr.Replace("{Constructor}", ConstructorStr);
|
|
|
+
|
|
|
+ string singleFunction = "";
|
|
|
+ //处理查询单条数据函数
|
|
|
+ if (!groupOnly)
|
|
|
+ {
|
|
|
+ singleFunction = HandleSingleFunction("key", keyName, keyType, "GetCfg", "_cfgsDic", configArrayStr);
|
|
|
+ }
|
|
|
+ foreach (string key in keyNames.Keys)
|
|
|
{
|
|
|
- string FunctionGroupStr = CodeTemplateFactory.FunctionGroupTemplate;
|
|
|
- CreateParamsString(groupNames, groupTypes, out paramsStr, out colNames, out colValues);
|
|
|
- FunctionGroupStr = FunctionGroupStr.Replace("{params}", paramsStr);
|
|
|
- FunctionGroupStr = FunctionGroupStr.Replace("{colNames}", colNames);
|
|
|
- FunctionGroupStr = FunctionGroupStr.Replace("{colValues}", colValues);
|
|
|
+ string functionName = string.Format("GetCfgBy{0}", string.Join("And", keyNames[key]));
|
|
|
+ string cfgsDicName = string.Format("_cfgsDicBy{0}", string.Join("And", keyNames[key]));
|
|
|
|
|
|
- configArrayStr = configArrayStr.Replace("{groupFunction}", FunctionGroupStr);
|
|
|
+ singleFunction = singleFunction + HandleSingleFunction("combinedKey_" + key, keyNames[key], keyTypes[key], functionName, cfgsDicName, configArrayStr);
|
|
|
}
|
|
|
- else
|
|
|
+ configArrayStr = configArrayStr.Replace("{singleFunction}", singleFunction);
|
|
|
+
|
|
|
+ string groupFunction = "";
|
|
|
+
|
|
|
+ //处理查询多条数据函数
|
|
|
+ if (groupNames.Count > 0)
|
|
|
{
|
|
|
- configArrayStr = configArrayStr.Replace("{groupFunction}", "");
|
|
|
+ int index0 = 0;
|
|
|
+ foreach (string key in groupNames.Keys)
|
|
|
+ {
|
|
|
+ string functionName = groupNames.Count == 1 ? "GetCfgs" : string.Format("GetCfgsBy{0}", string.Join("And", groupNames[key]));
|
|
|
+ string cfgsGroupDicName = string.Format("_cfgsGroupDic{0}", index0);
|
|
|
+ groupFunction = groupFunction + HandleGroupFunction("groupKey_" + key, groupNames[key], groupTypes[key], functionName, cfgsGroupDicName, configArrayStr);
|
|
|
+ index0++;
|
|
|
+ }
|
|
|
}
|
|
|
+ configArrayStr = configArrayStr.Replace("{groupFunction}", groupFunction);
|
|
|
+
|
|
|
+
|
|
|
//处理全部数据函数
|
|
|
string FunctionAllStr = CodeTemplateFactory.FunctionAllTemplate;
|
|
|
configArrayStr = configArrayStr.Replace("{allFunction}", FunctionAllStr);
|
|
|
- //if (needAll)
|
|
|
- //{
|
|
|
+
|
|
|
configArrayStr = configArrayStr.Replace("{editorConditionStart}", "");
|
|
|
configArrayStr = configArrayStr.Replace("{editorConditionEnd}", "");
|
|
|
- //}
|
|
|
- //else
|
|
|
- //{
|
|
|
- // configArrayStr = configArrayStr.Replace("{editorConditionStart}", "#if UNITY_EDITOR");
|
|
|
- // configArrayStr = configArrayStr.Replace("{editorConditionEnd}", "#endif");
|
|
|
- //}
|
|
|
- //处理回调函数内语句块
|
|
|
- if (groupOnly)
|
|
|
- {
|
|
|
- configArrayStr = configArrayStr.Replace("{FunctionAllSingleBlock}", "");
|
|
|
- }
|
|
|
- else
|
|
|
+
|
|
|
+ List<string> singleStrArry = new List<string>();
|
|
|
+ if (!groupOnly)
|
|
|
{
|
|
|
- configArrayStr = configArrayStr.Replace("{FunctionAllSingleBlock}", CodeTemplateFactory.FunctionAllSingleBlockTemplate);
|
|
|
+ string singleStr = CodeTemplateFactory.FunctionAllSingleBlockTemplate;
|
|
|
+ singleStr = singleStr.Replace("{cfgsDicName}", "_cfgsDic");
|
|
|
+ singleStr = singleStr.Replace("{combinedKey}", "cfg.key");
|
|
|
+ singleStrArry.Add(singleStr);
|
|
|
}
|
|
|
- if (groupNames.Count > 0)
|
|
|
+ foreach (string key in keyNames.Keys)
|
|
|
{
|
|
|
- configArrayStr = configArrayStr.Replace("{FunctionAllGroupBlock}", CodeTemplateFactory.FunctionAllGroupBlockTemplate);
|
|
|
+ string cfgsDicName = string.Format("_cfgsDicBy{0}", string.Join("And", keyNames[key]));
|
|
|
+ string singleStr = CodeTemplateFactory.FunctionAllSingleBlockTemplate;
|
|
|
+ singleStr = singleStr.Replace("{cfgsDicName}", cfgsDicName);
|
|
|
+ singleStr = singleStr.Replace("{combinedKey}", "cfg.combinedKey_" + key);
|
|
|
+ singleStrArry.Add(singleStr);
|
|
|
}
|
|
|
- else
|
|
|
+ string singleStrs = string.Join("\n", singleStrArry);
|
|
|
+ List<string> groupStrArry = new List<string>();
|
|
|
+ int index1 = 0;
|
|
|
+ foreach (string key in groupNames.Keys)
|
|
|
{
|
|
|
- configArrayStr = configArrayStr.Replace("{FunctionAllGroupBlock}", "");
|
|
|
+ string cfgsDicName = string.Format("_cfgsGroupDic{0}", index1);
|
|
|
+ string singleStr = CodeTemplateFactory.FunctionAllGroupBlockTemplate;
|
|
|
+ singleStr = singleStr.Replace("{cfgsGroupDicName}", cfgsDicName);
|
|
|
+ singleStr = singleStr.Replace("{groupKey}", "cfg.groupKey_" + key);
|
|
|
+ groupStrArry.Add(singleStr);
|
|
|
+ index1++;
|
|
|
}
|
|
|
+ string groupStrs = string.Join("\n", groupStrArry);
|
|
|
+
|
|
|
+ configArrayStr = configArrayStr.Replace("{FunctionAllBlock}", singleStrs + "\n" + groupStrs);
|
|
|
+
|
|
|
+ // foreach()
|
|
|
//名称处理
|
|
|
configArrayStr = configArrayStr.Replace("{CfgName}", configName);
|
|
|
configArrayStr = configArrayStr.Replace("{CfgArrayName}", configArrayName);
|
|
@@ -177,7 +226,35 @@ namespace GFGEditor
|
|
|
|
|
|
Debug.LogFormat("生成{0}", configName);
|
|
|
}
|
|
|
+ private static string HandleSingleFunction(string key, List<string> keyNames, List<string> keyTypes, string functionName, string cfgsDicName, string configArrayStr)
|
|
|
+ {
|
|
|
+ string FunctionSingleStr = CodeTemplateFactory.FunctionSingleTemplate;
|
|
|
+ CreateParamsString(keyNames, keyTypes, out string paramsStr, out string colNames, out string colValues);
|
|
|
+ FunctionSingleStr = FunctionSingleStr.Replace("{params}", paramsStr);
|
|
|
+ FunctionSingleStr = FunctionSingleStr.Replace("{colNames}", colNames);
|
|
|
+ FunctionSingleStr = FunctionSingleStr.Replace("{colValues}", colValues);
|
|
|
+ FunctionSingleStr = FunctionSingleStr.Replace("{FunctionName}", functionName);
|
|
|
+ FunctionSingleStr = FunctionSingleStr.Replace("{cfgsDicName}", cfgsDicName);
|
|
|
+
|
|
|
+ _assignmentBuilder.AppendFormat("\t\t\t{0} = \"{1}\";", key, string.Join("_", keyNames));
|
|
|
+ _assignmentBuilder.AppendLine();
|
|
|
+ return FunctionSingleStr;
|
|
|
+ }
|
|
|
+ private static string HandleGroupFunction(string key, List<string> groupNames, List<string> groupTypes, string functionName, string cfgsGroupDicName, string configArrayStr)
|
|
|
+ {
|
|
|
+ string FunctionGroupStr = CodeTemplateFactory.FunctionGroupTemplate;
|
|
|
+ CreateParamsString(groupNames, groupTypes, out string paramsStr, out string colNames, out string colValues);
|
|
|
+ FunctionGroupStr = FunctionGroupStr.Replace("{params}", paramsStr);
|
|
|
+ FunctionGroupStr = FunctionGroupStr.Replace("{colNames}", colNames);
|
|
|
+ FunctionGroupStr = FunctionGroupStr.Replace("{colValues}", colValues);
|
|
|
+ FunctionGroupStr = FunctionGroupStr.Replace("{FunctionName}", functionName);
|
|
|
+ FunctionGroupStr = FunctionGroupStr.Replace("{cfgsGroupDicName}", cfgsGroupDicName);
|
|
|
+
|
|
|
+ _assignmentBuilder.AppendFormat("\t\t\t{0} = \"{1}\";", key, string.Join("_", groupNames));
|
|
|
+ _assignmentBuilder.AppendLine();
|
|
|
+ return FunctionGroupStr;
|
|
|
|
|
|
+ }
|
|
|
private static void ParseDataColumn(string annotation, string type, string name, int index)
|
|
|
{
|
|
|
if (type.Length > 0 && name.Length > 0)
|