/// <summary> /// 设置递交组件,作废,由处理ReadMe时读取Coms操作,数据库记录不可靠 /// </summary> private void SetComs() { ComComms.Clear(); // 查询出的组件是如下的一段 // config.ini [V6.1.4.7] GJShortMessage.dll [V6.1.4.1] HsNoticeSvr.exe [V6.1.4.6] // 需要进行分解,操作如下 string name, version, line, cs = ComString; int i = -1, s = 0, e = 0; while ((i = cs.IndexOf("\r\n")) > 0) { line = cs.Substring(0, i); s = line.IndexOf("["); // 取第一个版本分隔符号 name = line.Substring(0, s).Trim(); // 程序名称 s = line.LastIndexOf("["); e = line.LastIndexOf("]"); // 取版本分隔符号 version = line.Substring(s + 1, e - s - 1); // 程序版本 CommitCom c = new CommitCom(name, version); // 添加组件 ComComms.Add(c); // 取剩余递交项 cs = cs.Substring(i + 2); } }
public virtual Boolean CompileSql(CommitCom c) { bool Result = true; string path = string.Empty; string u = string.Empty; foreach (string user in c.users) { if (c.ctype == ComType.Sql) { path = Path.Combine(OutDir, c.cname); } else { path = c.sawfile.LocalPath; } u = GetConnDesc(user); if (u == string.Empty) { Result = false; log.WriteErrorLog("无法确认用户连接。" + c.cname + " " + user); break; } Result = CompileSqlOne(u, path); if (!Result) { break; } } return(Result); }
public Detail(CommitCom c) { this.Name = c.cname; Pas = c.cname.Replace("libs_", "").Replace("flow.10.so", ""); ProcFiles = new ArrayList(); MiddFiles = new ArrayList(); Gcc = "s_" + Pas + "flow.gcc"; SO = "libs_" + Pas + "flow.10.so"; ProcFiles.Add(Gcc); ProcFiles.Add("s_" + Pas + "func.h"); if (c.cname.IndexOf("s_ls_") >= 0) { ProcFiles.Add("s_" + Pas + "flow.cpp"); ProcFiles.Add("s_" + Pas + "func.cpp"); // 与原子与逻辑不同 } else if (c.cname.IndexOf("s_as_") >= 0) { ProcFiles.Add("s_" + Pas + "flow.pc"); ProcFiles.Add("s_" + Pas + "func.pc"); MiddFiles.Add("s_" + Pas + "func.cpp"); } MiddFiles.Add("s_" + Pas + "flow.o"); MiddFiles.Add("s_" + Pas + "func.o"); Compile = false; Show = true; }
public virtual bool CompileFront(CommitCom c) { string Lang; int Ver; GetLangVer(c.cname, out Lang, out Ver); // 确定工程名称 string dPro = Path.Combine(c.sawfile.LocalPath, Path.GetFileNameWithoutExtension(c.cname) + ".dpr"); bool Result = CompileDpr(Ver, dPro, OutDir); return(Result); }
public Detail FindByName(CommitCom c) { if (c.ctype == ComType.SO) { return(FindBySo(c.cname)); } else if (c.ctype == ComType.Sql) { return(FindBySql(c.cname)); } else if (c.ctype == ComType.FuncXml) { return(FindByFuncXml(c.cname)); } else { return(null); } }
private bool CompileHDT2(CommitCom c) { bool Result = true; //分解Project string t = c.sawfile.LocalPath; string Pdata = string.Empty; string Pproject = string.Empty; string Pbiz = string.Empty; string FlagStr = string.Empty; if (c.ctype == ComType.FuncXml && c.cname.IndexOf("functionlist") >= 0) { Pdata = Path.Combine(WorkSpace, @"Sources\DevCodes"); Pproject = name; // 用项目配置 Pbiz = c.cname; FlagStr = "functionlist文件生成完成"; } else { int i = t.IndexOf("DevCodes"); Pdata = t.Substring(0, i + 8); // t = t.Substring(i + 9); i = t.IndexOf("\\"); Pproject = t.Substring(0, i); Pbiz = t.Substring(i + 1); FlagStr = "生成模块代码总耗时"; } // 开发工具限制,一定要在HDT下调用程序,否则总是会报下JAVA的错误,因此通过批处理编译,批处理中先将目录进行切换。 Process p = new Process(); p.StartInfo.FileName = "cm_back.bat"; p.StartInfo.Arguments = " " + Pdata + " " + Pproject + " " + Pbiz + " " + OutDir; log.WriteLog("[编译命令] " + p.StartInfo.FileName + p.StartInfo.Arguments); p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.CreateNoWindow = true; p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived); p.ErrorDataReceived += new DataReceivedEventHandler(p_OutputDataReceived); p.Start(); // 启动 p.BeginOutputReadLine(); p.BeginErrorReadLine(); p.WaitForExit(); p.Close(); // <提示>经纪业务运营平台V21已经存在 输出在错误流 if (sBuilder.ToString().IndexOf("Exception") >= 0 || // 异常 sBuilder.ToString().IndexOf("exception") >= 0 || // 异常 sBuilder.ToString().IndexOf("错误信息") >= 0) // 文件缺失时,<警告>模块代码已生成,但有错误信息。请参考日志文件:file:/E:/hstrade20/trun { log.WriteLog("HDT编译过程可能有错误,请检查日志文件确认!", LogLevel.Error); Result = false; } log.WriteLog("编译结束 " + c.cname); return(Result); }
private bool CompileHDT(CommitCom c) { bool Result = true; //分解Project string t = c.sawfile.LocalPath; string Pdata = string.Empty; string Pproject = string.Empty; string Pbiz = string.Empty; string FlagStr = string.Empty; if (c.ctype == ComType.FuncXml && c.cname.IndexOf("functionlist") >= 0) { Pdata = Path.Combine(WorkSpace, @"Sources\DevCodes"); Pproject = name; // 用项目配置 Pbiz = c.cname; FlagStr = "functionlist文件生成完成"; } else { int i = t.IndexOf("DevCodes"); Pdata = t.Substring(0, i + 8); // t = t.Substring(i + 9); i = t.IndexOf("\\"); Pproject = t.Substring(0, i); Pbiz = t.Substring(i + 1); FlagStr = "生成模块代码总耗时"; } // 开发工具限制,一定要在HDT下调用程序,否则总是会报下JAVA的错误,因此通过批处理编译,批处理中先将目录进行切换。 Process p = new Process(); p.StartInfo.FileName = "cm_back.bat"; p.StartInfo.Arguments = " " + Pdata + " " + Pproject + " " + Pbiz + " " + OutDir; p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.CreateNoWindow = true; p.Start(); string strOutput = p.StandardOutput.ReadToEnd(); log.WriteFileLog("[编译命令] " + p.StartInfo.FileName + p.StartInfo.Arguments); log.WriteFileLog("[编译日志]"); log.WriteFileLog("编译输出:"); if (strOutput.IndexOf(FlagStr) < 0) { log.WriteLog(strOutput, LogLevel.Error); Result = false; } else { log.WriteLog(strOutput); } log.WriteFileLog("[编译结束]"); p.WaitForExit(); p.Close(); return(Result); }
public override bool CompileBackEnd(CommitCom c) { return(CompileHDT2(c)); }
public override bool CompileFront(CommitCom c) { return(base.CompileFront(c)); }
public override Detail GetDetail(CommitCom c) { Detail d = new Detail(c); return(d); }
// 编译Excel文件或者后台Sql private bool CompileExcel(CommitCom c) { // 确定详细设计说明书文件 MacroType m; Detail d = Dls.FindByName(c); if (d == null) { log.WriteErrorLog("查找不到对应的详细设计说明书模块!"); return(false); } // 标定index bool Result = true; int index = Dls.IndexOf(d) + 1; // 先把存在的CError删除,以检测是否发生编译错误 if (File.Exists(Path.Combine(OutDir, "CError.txt"))) { File.Delete(Path.Combine(OutDir, "CError.txt")); } // 编译Excel 最耗时,对Excel检查是否需要编译,比较PC文件 bool bNew = false; DateTime t2 = File.GetLastWriteTime(c.sawfile.LocalPath); DateTime t1 = t2.AddSeconds(-1); if (c.ctype == ComType.SO) { foreach (string s in d.ProcFiles) { t1 = File.GetLastWriteTime(Path.Combine(OutDir, s)); if (DateTime.Compare(t1, t2) > 0) { bNew = true; break; } } } else if (c.ctype == ComType.Sql || c.ctype == ComType.FuncXml) { if (c.ctype == ComType.Sql) { t1 = File.GetLastWriteTime(Path.Combine(OutDir, d.SqlFile)); } else { t1 = File.GetLastWriteTime(Path.Combine(OutDir, d.XmlFile)); } if (DateTime.Compare(t1, t2) > 0) { bNew = true; } } if (bNew) { log.WriteLog("本地源代码时间晚于Excel文件时间,不需集成处理!" + c.cname + " " + c.ctype); return(true); } if (c.ctype == ComType.SO) { m = MacroType.ProC; } else if (c.ctype == ComType.Sql) { m = MacroType.SQL; } else if (c.ctype == ComType.FuncXml) { m = MacroType.FuncXml; } else { return(true); } Result = Exh.ScmRunExcelMacro(m, index, OutDir); if (!Result) { return(false); } else if (File.Exists(Path.Combine(OutDir, "CError.txt"))) { Result = false; log.WriteErrorLog("检测到编译错误文件 CError.txt,请确认!"); } return(Result); }
public override Detail GetDetail(CommitCom c) { return(Dls.FindByName(c)); }
public virtual bool CompileBackEnd(CommitCom c) { return(true); }
public virtual Detail GetDetail(CommitCom c) { return(null); }