public static Invocation ToInvocation(this Codeunit codeunit) { IEnumerable <ParameterBase> signature = new[] { new SimpleParameter("ID", codeunit.ID), new SimpleParameter("Name", codeunit.Name) }; IEnumerable <ParameterBase> objectProperties = codeunit .ObjectProperties .Where(p => p.HasValue) .SelectMany(p => p.ToParameters()); IEnumerable <ParameterBase> properties = codeunit .Properties .Where(p => p.HasValue) .SelectMany(p => p.ToParameters()); IEnumerable <ParameterBase> subObjects = new[] { new ScriptBlockParameter( "SubObjects", codeunit.Code.Variables.ToInvocations().Cast <Statement>() .Concat(codeunit.Code.Functions.ToInvocations().Cast <Statement>()) .Concat(codeunit.Code.Events.ToInvocations().Cast <Statement>()) .Concat(codeunit.Code.Documentation.CodeLines.ToInvocation().Cast <Statement>())) }; return(new Invocation( "New-CBreezeCodeunit", signature .Concat(objectProperties) .Concat(properties) .Concat(subObjects) )); }
public static void Run(this Codeunit codeunit, string roleTailoredClient, string serverName, int?serverPort, string serverInstance, string companyName) { var commands = new StringBuilder(); commands.AppendFormat("runcodeunit?codeunit={0}", codeunit.ID); RoleTailoredClient.Run(roleTailoredClient, BuildHyperlink(serverName, serverPort, serverInstance, companyName, commands.ToString())); }
public static void Write(this Codeunit codeunit, CSideWriter writer) { writer.BeginSection(codeunit.GetObjectSignature()); codeunit.ObjectProperties.Write(writer); codeunit.Properties.Write(writer); codeunit.Code.Write(writer); writer.EndSection(); writer.InnerWriter.WriteLine(); }
public static FileInfo Write(this Codeunit codeunit, string fileName) { using (var streamWriter = new StreamWriter(fileName, false, Encoding.GetEncoding("ibm850"))) { codeunit.Write(streamWriter); } return(new FileInfo(fileName)); }
protected void AddItemToInputObject(Event item, Codeunit codeunit) => AddItemToInputObject(item, codeunit.Code);
public static void Write(this Codeunit codeunit, TextWriter textWriter) => codeunit.Write(new CSideWriter(textWriter));
public static FileInfo WriteToFolder(this Codeunit codeunit, string folderName) => codeunit.Write(Path.Combine(folderName, $"cod{codeunit.ID}.txt"));
public static bool Restore(List<Parameter> parms) { Install(parms, false); File.Delete("NAVY.success"); FileStream fs = new FileStream(GetParameter("Name", parms) + ".NAVY", FileMode.Open); ZipArchive za = new ZipArchive(fs, ZipArchiveMode.Read); ZipArchiveEntry manifest = za.GetEntry("manifest.xml"); Package p = PackageFile.Load(manifest.Open()); try { Directory.Delete("DELTA", true); } catch { }; Directory.CreateDirectory("DELTA"); Console.WriteLine("Restoring {0} in database ...", p.App.Name); // Save data in fields Codeunit cu = new Codeunit(CodeunitMode.Restore); foreach (var delta in p.Payload.Deltas) { if (delta.Type == "Table") { string FileName = delta.DeltaFile.Split('.')[0]; // Extract the delta from the ZIP ZipArchiveEntry deltazip = za.GetEntry(delta.DeltaFile); deltazip.ExtractToFile("DELTA\\" + delta.DeltaFile); string DeltaTxt = File.ReadAllText("DELTA\\" + delta.DeltaFile); if (DeltaTxt.IndexOf("ChangedElements=FieldCollection") != -1) { // Fields added, we are interested foreach (var line in File.ReadAllLines("DELTA\\" + delta.DeltaFile)) { int x = 0; for (int i = 0; i < line.Length; i++) if (line[i] == ';') x++; if (line.IndexOf(" { ") != -1 && x >= 4) { Match m = Regex.Match(line, @"(?<=\{.)\d{1,100}(?=\;)"); if (m.Success) cu.AddOperation(int.Parse(delta.ID), int.Parse(m.Groups[0].Value)); } } } } } var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); string code = cu.ExportCode(configFile.AppSettings.Settings["ObjectNoForBackup"].Value); File.WriteAllText("BackupCodeunit.txt", code); using (PowerShell psi = PowerShell.Create()) { psi.AddScript("Set-ExecutionPolicy -ExecutionPolicy RemoteSigned"); psi.AddScript(NAVTools); psi.AddScript(@"Import-NAVApplicationObject -Confirm:$false BackupCodeunit.txt" + " -DatabaseName " + GetParameter("DatabaseName", parms)); ExecutePowerShell(psi, true); } // Compiling using (PowerShell psi2 = PowerShell.Create()) { psi2.AddScript("Set-ExecutionPolicy -ExecutionPolicy RemoteSigned"); psi2.AddScript(NAVTools); Console.WriteLine("Preparing restore objects ..."); psi2.AddScript("Compile-NAVApplicationObject " + GetParameter("DatabaseName", parms)); ExecutePowerShell(psi2, true); } // - Execute codeunit Process.Start(configFile.AppSettings.Settings["ClientInstance"].Value + "/RunCodeunit?Codeunit=50000"); Console.WriteLine("Awaiting restore codeunit completion..."); while (!File.Exists("NAVY.success")) { Thread.Sleep(1000); Console.Write("."); }; File.Delete("NAVY.success"); Console.WriteLine("{0} is restored and ready for use again.", p.App.Name); return true; }