/// <summary> /// Банка, содержащая ртуть и воду /// </summary> /// <param name="jarInstance">банка,</param> /// <param name="month">месяц,</param> /// <param name="year">год,</param> /// <param name="state">состояние на момент окончания месяца,</param> /// <param name="method">метод заливки,</param> /// <param name="mercuryProduction">добыча ртути,</param> /// <param name="waterProduction">добыча воды,</param> /// <param name="minutes">время заливки в минутах.</param> public JarHistory(Jar jarInstance, int month, int year, JarType type, JarState state, FillingMethod method, int mercuryProduction, int waterProduction, int minutes) : this(jarInstance,month,year,JarType.WaterMercury, state,method) { Method = method; Minutes = minutes; MercuryProduction = mercuryProduction; WaterProduction = waterProduction; }
//внешний ключ(при необходимости) //public int JarId { get; set; } /// <summary> /// Пустая или запланированная банка /// </summary> /// <param name="jarInstance">банка,</param> /// <param name="month">месяц,</param> /// <param name="year">год,</param> /// <param name="type">вид хранимого вещества,</param> /// <param name="state">состояние на момент окончания месяца,</param> /// <param name="method">метод заливки,</param> public JarHistory(Jar jarInstance, int month, int year, JarType type, JarState state, FillingMethod method=FillingMethod.NoFilling) { if (jarInstance == null) throw new Exception("Невозможно хранить состояние несуществующей банки"); else _jarInstance = jarInstance; Type = type; Month = month; Year = year; State = state; Method = method; }
static string CreateSingleJar(string jdkFolder, string originFolder, string pathName, JarType type, string destinationFolder, int timeout, string manifestFile = null) { string filter = string.Empty; string patternName = string.Empty; string fileWithNames = string.Empty; switch (type) { case JarType.Compiled: filter = Const.FileNameAndDirectory.CompiledFilter; patternName = Const.FileNameAndDirectory.CompiledPattern; fileWithNames = Const.FileNameAndDirectory.CompiledFile; break; case JarType.Source: filter = Const.FileNameAndDirectory.SourceFilter; patternName = Const.FileNameAndDirectory.SourcePattern; fileWithNames = Const.FileNameAndDirectory.SourceFile; break; default: throw new InvalidOperationException(); } #if NET_CORE var assemblyName = pathName.Replace(Const.Framework.NETCoreFolder, string.Empty); #else var assemblyName = pathName.Replace(Const.Framework.NETFrameworkFolder, string.Empty); #endif assemblyName = assemblyName.Replace("\\", string.Empty); var destinationJar = string.Format(patternName, assemblyName); destinationJar = Path.Combine(destinationFolder, destinationJar); var searchPath = Path.Combine(originFolder, pathName); searchPath = Path.GetFullPath(searchPath); StringBuilder sb = new StringBuilder(); foreach (var item in Directory.EnumerateFiles(searchPath, filter, SearchOption.AllDirectories)) { var fileName = Path.GetFullPath(item); fileName = fileName.Replace(searchPath, "."); sb.AppendLine(fileName); } var outputStr = sb.ToString(); if (string.IsNullOrEmpty(outputStr)) { return(string.Empty); // discard empty folders } File.WriteAllText(Path.Combine(searchPath, fileWithNames), sb.ToString()); if (string.IsNullOrEmpty(manifestFile)) { launchProcess(searchPath, Path.Combine(jdkFolder, JarCompiler), "cvf " + destinationJar + " @" + fileWithNames, timeout); } else { launchProcess(searchPath, Path.Combine(jdkFolder, JarCompiler), "cvfm " + destinationJar + " " + manifestFile + " @" + fileWithNames, timeout); } return(assemblyName); }
/// <summary> /// Банка, содержащая воду /// </summary> /// <param name="jarInstance">банка,</param> /// <param name="month">месяц,</param> /// <param name="year">год,</param> /// <param name="state">состояние на момент окончания месяца,</param> /// <param name="method">метод заливки,</param> /// <param name="waterLoading">добыча воды,</param> /// <param name="minutes">время заливки в минутах.</param> public JarHistory(Jar jarInstance, int month, int year, JarType type, JarState state, FillingMethod method, int waterLoading, int minutes) : this(jarInstance, month, year, JarType.WaterMercury, state,method) { Method = method; Minutes = minutes; WaterLoading = waterLoading; }
static string CreateSingleJar(string jdkFolder, string rootFolder, string originFolder, string pathName, JarType type, string destinationFolder, int timeout, bool withEmbedding, string manifestFile = null) { string filter = string.Empty; string patternName = string.Empty; string fileWithNames = string.Empty; switch (type) { case JarType.Compiled: filter = Const.FileNameAndDirectory.CompiledFilter; patternName = Const.FileNameAndDirectory.CompiledPattern; fileWithNames = Const.FileNameAndDirectory.CompiledFile; break; case JarType.Source: filter = Const.FileNameAndDirectory.SourceFilter; patternName = Const.FileNameAndDirectory.SourcePattern; fileWithNames = Const.FileNameAndDirectory.SourceFile; break; default: throw new InvalidOperationException(); } var assemblyName = pathName.Replace(Const.Framework.RuntimeFolder, string.Empty); assemblyName = assemblyName.Replace("\\", string.Empty); assemblyName = assemblyName.Replace("/", string.Empty); var destinationJar = string.Format(patternName, assemblyName); destinationJar = Path.Combine(destinationFolder, destinationJar); var searchPath = Path.Combine(originFolder, pathName); searchPath = Path.GetFullPath(searchPath); StringBuilder sb = new StringBuilder(); foreach (var item in Directory.EnumerateFiles(searchPath, filter, SearchOption.AllDirectories)) { var fileName = Path.GetFullPath(item); fileName = fileName.Replace(searchPath, "."); sb.AppendLine(fileName); } if (withEmbedding && !string.IsNullOrEmpty(manifestFile)) // we are making JCOReflector.jar { var jcoBridgeEmbeddedFile = Path.Combine(searchPath, Const.FileNameAndDirectory.OrgSubDirectory, Const.FileNameAndDirectory.MasesSubDirectory, Const.FileNameAndDirectory.JCOBridgeSubDirectory, Const.FileNameAndDirectory.NetreflectionSubDirectory, Const.FileNameAndDirectory.JCOBridgeEmbeddedFile); var localArchive = Const.FileNameAndDirectory.CreateJCOBridgeZip(rootFolder); if (File.Exists(jcoBridgeEmbeddedFile)) { File.Delete(jcoBridgeEmbeddedFile); } File.Move(localArchive, jcoBridgeEmbeddedFile); if (!File.Exists(jcoBridgeEmbeddedFile)) { throw new InvalidOperationException(string.Format("Unable to find {0}", jcoBridgeEmbeddedFile)); } var fileName = Path.GetFullPath(jcoBridgeEmbeddedFile); fileName = fileName.Replace(searchPath, "."); sb.AppendLine(fileName); } var outputStr = sb.ToString(); if (string.IsNullOrEmpty(outputStr)) { return(string.Empty); // discard empty folders } File.WriteAllText(Path.Combine(searchPath, fileWithNames), sb.ToString()); string jarParam = (logLevel > LogLevel.Info) ? "cvf" : "cf"; if (string.IsNullOrEmpty(manifestFile)) { launchProcess(searchPath, Path.Combine(jdkFolder, JarCompiler), jarParam + " " + destinationJar + " @" + fileWithNames, timeout); } else { launchProcess(searchPath, Path.Combine(jdkFolder, JarCompiler), jarParam + "m " + destinationJar + " " + manifestFile + " @" + fileWithNames, timeout); } return(assemblyName); }