/// <summary> /// Modifies experiment to add reference to new package. /// </summary> /// <param name="pPkg">The package being created.</param> /// <param name="pExperimentFile">The experiment file.</param> /// <returns>True is there was no error during the operation, false otherwise.</returns> private static bool AddPkgRefToExperiment(TraceLab.Core.PackageSystem.Package pPkg, string pExperimentFile) { bool noError = true; if (System.IO.File.Exists(pExperimentFile)) { try { XmlDocument xmlExperiment = new XmlDocument(); xmlExperiment.Load(pExperimentFile); XmlNode nodeReferences = xmlExperiment.SelectSingleNode("//References"); XmlElement newPkgReference = xmlExperiment.CreateElement("PackageReference"); newPkgReference.SetAttribute("ID", pPkg.ID); newPkgReference.SetAttribute("Name", pPkg.Name); nodeReferences.AppendChild(newPkgReference); xmlExperiment.Save(pExperimentFile); } catch (Exception) { noError = false; throw new TraceLab.Core.Exceptions.PackageCreationFailureException("Unable to modify experiment - reference to new package could not be added."); } } else { noError = false; } return(noError); }
/// <summary> /// Adds item and its content (file or folder) to package. /// </summary> /// <param name="pPkg">Package being created.</param> /// <param name="item">Item to be added.</param> /// <returns>True is there was no error during the operation, false otherwise.</returns> public static bool AddItemToPackage(TraceLab.Core.PackageSystem.Package pkg, PackageFileSourceInfo item, bool isExperimentPackage) { bool noError = true; string targetPath = System.IO.Path.Combine(pkg.Location, item.GetPath()); PackageHeirarchyItem dir = item as PackageHeirarchyItem; if (dir != null) { if (item.Parent != null) { System.IO.Directory.CreateDirectory(targetPath); } foreach (PackageFileSourceInfo child in dir.Children) { noError = noError && AddItemToPackage(pkg, child, isExperimentPackage); } if (dir.HasComponents) { pkg.SetDirectoryHasComponents(dir.GetPath(), true); } if (dir.HasTypes) { pkg.SetDirectoryHasTypes(dir.GetPath(), true); } } else { System.IO.File.Copy(item.SourceFilePath, targetPath); //Add reference to this created package to all experiments and composite components if (isExperimentPackage && targetPath.EndsWith(".teml") || targetPath.EndsWith(".tcml")) { noError = noError && AddPkgRefToExperiment(pkg, targetPath); } System.IO.File.SetAttributes(targetPath, System.IO.File.GetAttributes(targetPath) & ~System.IO.FileAttributes.ReadOnly); pkg.AddFile(targetPath); } return(noError); }
protected void buildButtonClicked(object sender, EventArgs e) { PackageSourceInfo info = m_viewModel.PackageSourceInfo; bool noError = true; TraceLab.Core.PackageSystem.Package pkg = null; string pkgFilePath = GetFilePath(info.Name); if (pkgFilePath != null) { string pkgFileName = System.IO.Path.GetFileNameWithoutExtension(pkgFilePath); string pkgTempDirectory = pkgFilePath + "~temp"; try { System.IO.Directory.CreateDirectory(pkgTempDirectory); // HERZUM SPRINT 4.2: TLAB-215 if (info.Name.Contains(" ")) { ShowMessageDialog("Package name:" +info.Name+ ", can not contain space characters: ", "Package Creation Error", Gtk.ButtonsType.Ok, Gtk.MessageType.Error); noError = false; } // END HERZUM SPRINT 4.2: TLAB-215 try { pkg = new TraceLab.Core.PackageSystem.Package(info.Name, pkgTempDirectory, false); } catch (TraceLab.Core.PackageSystem.PackageAlreadyExistsException) { ShowMessageDialog("Package already exists in: " + pkgTempDirectory, "Package Creation Error", Gtk.ButtonsType.Ok, Gtk.MessageType.Error); noError = false; } catch (TraceLab.Core.PackageSystem.PackageException ex) { ShowMessageDialog("Error creating package: " + ex.Message, "Package Creation Error", Gtk.ButtonsType.Ok, Gtk.MessageType.Error); noError = false; } if (pkg != null && noError) { foreach (PackageFileSourceInfo item in info.Files) { try { noError = noError && PackageCreator.AddItemToPackage(pkg, item, m_viewModel.IsExperimentPackage); } catch (TraceLab.Core.Exceptions.PackageCreationFailureException ex) { ShowMessageDialog("Error creating package: " + ex.Message, "Package Creation Error", Gtk.ButtonsType.Ok, Gtk.MessageType.Error); noError = false; } } pkg.SaveManifest(); using (System.IO.FileStream stream = new System.IO.FileStream(pkgFilePath, System.IO.FileMode.Create)) { pkg.Pack(stream); } } } catch (System.IO.IOException error) { ShowMessageDialog("Unable to create package. Error: " + error.Message, "Package Creation Error", Gtk.ButtonsType.Ok, Gtk.MessageType.Error); noError = false; } catch (System.UnauthorizedAccessException error) { ShowMessageDialog("Unable to create package - Unauthorized access: " + error.Message, "Package Creation Error", Gtk.ButtonsType.Ok, Gtk.MessageType.Error); noError = false; } try { if (System.IO.Directory.Exists(pkgTempDirectory)) { System.IO.Directory.Delete(pkgTempDirectory, true); } } catch (System.IO.IOException error) { ShowMessageDialog("Unable to cleanup after package creation. Error: " + error.Message, "After Package Cleanup Failure", Gtk.ButtonsType.Ok, Gtk.MessageType.Warning); } catch (System.UnauthorizedAccessException error) { ShowMessageDialog("Unable to cleanup after package creation. Unauthorized access: " + error.Message, "After Package Cleanup Failure", Gtk.ButtonsType.Ok, Gtk.MessageType.Warning); } } if (noError && pkg != null) { ShowMessageDialog("Package \"" + info.Name + "\" was built successfully.", "Package Created", Gtk.ButtonsType.Ok, Gtk.MessageType.Info); } }
public void Build(String filePath) { m_viewModel.GeneratePackageContent(); //it sets the root package source info m_viewModel.CurrentState = PackageBuilderWizardPage.FileViewer; PackageSourceInfo info = m_viewModel.PackageSourceInfo; bool noError = true; TraceLab.Core.PackageSystem.Package pkg = null; // string pkgFilePath = GetFilePath(info.Name); string pkgFilePath = filePath; // HERZUM SPRINT 3: TLAB-206 string pkgFileName = System.IO.Path.GetFileNameWithoutExtension(pkgFilePath); // END HERZUM SPRINT 3: TLAB-206 if (pkgFilePath != null) { // string pkgFileName = System.IO.Path.GetFileNameWithoutExtension(pkgFilePath); string pkgTempDirectory = pkgFilePath + "~temp"; try { System.IO.Directory.CreateDirectory(pkgTempDirectory); try { // HERZUM SPRINT 3: TLAB-206 // pkg = new TraceLab.Core.PackageSystem.Package(info.Name, pkgTempDirectory, false); pkg = new TraceLab.Core.PackageSystem.Package(pkgFileName, pkgTempDirectory, false); // END HERZUM SPRINT 3: TLAB-206 } catch (TraceLab.Core.PackageSystem.PackageAlreadyExistsException) { ShowMessageDialog("Package already exists in: " + pkgTempDirectory, "Package Creation Error", Gtk.ButtonsType.Ok, Gtk.MessageType.Error); noError = false; } catch (TraceLab.Core.PackageSystem.PackageException ex) { ShowMessageDialog("Error creating package: " + ex.Message, "Package Creation Error", Gtk.ButtonsType.Ok, Gtk.MessageType.Error); noError = false; } if (pkg != null && noError) { foreach (PackageFileSourceInfo item in info.Files) { try { noError = noError && PackageCreator.AddItemToPackage(pkg, item, m_viewModel.IsExperimentPackage); } catch (TraceLab.Core.Exceptions.PackageCreationFailureException ex) { ShowMessageDialog("Error creating package: " + ex.Message, "Package Creation Error", Gtk.ButtonsType.Ok, Gtk.MessageType.Error); noError = false; } } pkg.SaveManifest(); using (System.IO.FileStream stream = new System.IO.FileStream(pkgFilePath, System.IO.FileMode.Create)) { pkg.Pack(stream); } } } catch (System.IO.IOException error) { ShowMessageDialog("Unable to create package. Error: " + error.Message, "Package Creation Error", Gtk.ButtonsType.Ok, Gtk.MessageType.Error); noError = false; } catch (System.UnauthorizedAccessException error) { ShowMessageDialog("Unable to create package - Unauthorized access: " + error.Message, "Package Creation Error", Gtk.ButtonsType.Ok, Gtk.MessageType.Error); noError = false; } try { if (System.IO.Directory.Exists(pkgTempDirectory)) { System.IO.Directory.Delete(pkgTempDirectory, true); } } catch (System.IO.IOException error) { ShowMessageDialog("Unable to cleanup after package creation. Error: " + error.Message, "After Package Cleanup Failure", Gtk.ButtonsType.Ok, Gtk.MessageType.Warning); } catch (System.UnauthorizedAccessException error) { ShowMessageDialog("Unable to cleanup after package creation. Unauthorized access: " + error.Message, "After Package Cleanup Failure", Gtk.ButtonsType.Ok, Gtk.MessageType.Warning); } } if (noError && pkg != null) { // HERZUM SPRINT 3: TLAB-206 // ShowMessageDialog("Package \"" + info.Name + "\" was built successfully.", "Package Created", ShowMessageDialog("Package \"" + pkgFileName + "\" was built successfully.", "Package Created", // END HERZUM SPRINT 3: TLAB-206 Gtk.ButtonsType.Ok, Gtk.MessageType.Info); } }
protected void buildButtonClicked(object sender, EventArgs e) { PackageSourceInfo info = m_viewModel.PackageSourceInfo; bool noError = true; TraceLab.Core.PackageSystem.Package pkg = null; string pkgFilePath = GetFilePath(info.Name); if (pkgFilePath != null) { string pkgFileName = System.IO.Path.GetFileNameWithoutExtension(pkgFilePath); string pkgTempDirectory = pkgFilePath + "~temp"; try { System.IO.Directory.CreateDirectory(pkgTempDirectory); // HERZUM SPRINT 4.2: TLAB-215 if (info.Name.Contains(" ")) { ShowMessageDialog("Package name:" + info.Name + ", can not contain space characters: ", "Package Creation Error", Gtk.ButtonsType.Ok, Gtk.MessageType.Error); noError = false; } // END HERZUM SPRINT 4.2: TLAB-215 try { pkg = new TraceLab.Core.PackageSystem.Package(info.Name, pkgTempDirectory, false); } catch (TraceLab.Core.PackageSystem.PackageAlreadyExistsException) { ShowMessageDialog("Package already exists in: " + pkgTempDirectory, "Package Creation Error", Gtk.ButtonsType.Ok, Gtk.MessageType.Error); noError = false; } catch (TraceLab.Core.PackageSystem.PackageException ex) { ShowMessageDialog("Error creating package: " + ex.Message, "Package Creation Error", Gtk.ButtonsType.Ok, Gtk.MessageType.Error); noError = false; } if (pkg != null && noError) { foreach (PackageFileSourceInfo item in info.Files) { try { noError = noError && PackageCreator.AddItemToPackage(pkg, item, m_viewModel.IsExperimentPackage); } catch (TraceLab.Core.Exceptions.PackageCreationFailureException ex) { ShowMessageDialog("Error creating package: " + ex.Message, "Package Creation Error", Gtk.ButtonsType.Ok, Gtk.MessageType.Error); noError = false; } } pkg.SaveManifest(); using (System.IO.FileStream stream = new System.IO.FileStream(pkgFilePath, System.IO.FileMode.Create)) { pkg.Pack(stream); } } } catch (System.IO.IOException error) { ShowMessageDialog("Unable to create package. Error: " + error.Message, "Package Creation Error", Gtk.ButtonsType.Ok, Gtk.MessageType.Error); noError = false; } catch (System.UnauthorizedAccessException error) { ShowMessageDialog("Unable to create package - Unauthorized access: " + error.Message, "Package Creation Error", Gtk.ButtonsType.Ok, Gtk.MessageType.Error); noError = false; } try { if (System.IO.Directory.Exists(pkgTempDirectory)) { System.IO.Directory.Delete(pkgTempDirectory, true); } } catch (System.IO.IOException error) { ShowMessageDialog("Unable to cleanup after package creation. Error: " + error.Message, "After Package Cleanup Failure", Gtk.ButtonsType.Ok, Gtk.MessageType.Warning); } catch (System.UnauthorizedAccessException error) { ShowMessageDialog("Unable to cleanup after package creation. Unauthorized access: " + error.Message, "After Package Cleanup Failure", Gtk.ButtonsType.Ok, Gtk.MessageType.Warning); } } if (noError && pkg != null) { ShowMessageDialog("Package \"" + info.Name + "\" was built successfully.", "Package Created", Gtk.ButtonsType.Ok, Gtk.MessageType.Info); } }