public static IProject getProject(string fileName, ReturnAttributeValue gav) { if (_instance == null) { _instance = new AvailableAssemblies(LibraryDir); } //XmlReader reader; string projectClassName = String.Empty; Stream stream = null; try { XmlReader reader = ProjectBase.getXmlReader(fileName, out stream); reader.ReadToFollowing("project"); if (reader.MoveToFirstAttribute()) { do { switch (reader.Name) { case "class": projectClassName = reader.Value; break; //case "spectraCount": break; } if (gav != null) { gav(reader.Name, reader.Value); } } while (reader.MoveToNextAttribute()); } if (projectClassName == String.Empty) { throw new SpectrumLoadException("This is not valid LT10 project"); } } catch (Exception) { throw new SpectrumLoadException("Project file is damaged, it is not a valid LT10 project file or file is in use by another process."); } finally { if (stream != null) { stream.Close(); } } object[] args = new object[] { fileName }; for (int i = 0; i < _instance._availableProjects.Count; i++) { //if (String.Equals(modelName, Path.GetFileNameWithoutExtension(_instance._availableModels[i].plugin.assemblyPath), string[] pluginClassNameSubs = _instance._availableProjects[i].plugin.className.Split(classSeparators); string[] projectClassNameSubs = projectClassName.Split(classSeparators); string pluginClassName = pluginClassNameSubs[pluginClassNameSubs.Length - 1]; projectClassName = projectClassNameSubs[projectClassNameSubs.Length - 1]; if (String.Equals(projectClassName, pluginClassName, StringComparison.CurrentCultureIgnoreCase)) { return((IProject)PluginServices.getPluginInstance(_instance._availableProjects[i].plugin, args)); } } throw new SpectrumLoadException(String.Format("Couldn't find project \"{0}\"!", projectClassName)); }
static void Main(string[] args) { Console.WriteLine("Program for testing NEED capabilities. (31 May 2011)"); CultureInfo culture = new CultureInfo(CultureInfo.CurrentCulture.LCID); culture.NumberFormat.NumberDecimalSeparator = "."; Thread.CurrentThread.CurrentCulture = culture; AvailableAssemblies.LibraryDir = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory); ReturnAttributeValue rav = null; try { if (args.Length == 1) { project = AvailableAssemblies.getProject(args[0], rav); } } catch (Exception) { Console.WriteLine("Project not found"); } string command = ""; string[] commandArgs; int docId = 0; while ((command = GetCommand(out commandArgs)) != "exit") { try { switch (command) { case "commands": Console.WriteLine("load\nunload\ntest1\nIntsChange\ndocuments\nprompt\nfsearch\nssearch\nspecdb"); break; case "load": project = AvailableAssemblies.getProject(commandArgs[1], rav); break; case "unload": project = null; break; case "test1": Test.Run <Test1>(commandArgs, project); break; case "IntsChange": Test.Run <IntsChangeTest>(commandArgs, project); break; case "prompt": Test.Run <PromptTest>(commandArgs, project); break; case "fsearch": Test.Run <SearchTest>(commandArgs, project); break; case "ssearch": Test.Run <SeriesSearchTest>(commandArgs, project); break; case "specdb": Test.Run <ParametersDBTest>(commandArgs, project); break; case "documents": if (project != null) { foreach (ISpectraContainer container in project.Containers) { Console.WriteLine("\t{0}: {1}\t{2}\n\t\t{3}\n\t\tSpectra: {4}", docId++, container.Name, (container.Enabled) ? "" : "Disabled", container.Model.Name, container.Spectra[0].Name + " (" + (container.Spectra.Count - 1).ToString() + " more)"); } } else { Console.WriteLine("No project is loaded!"); } break; default: Console.WriteLine("Unknown command"); break; } } catch (IndexOutOfRangeException) { Console.WriteLine("This command requires arguments!"); //System.Diagnostics.Debug.WriteLine(String.Format("{0}\n{1}", e.Message, e.StackTrace)); } catch (TestException e) { Console.WriteLine("Test has thrown exception:\n{0}\n{1}", e.InnerException.Message, e.InnerException.StackTrace); } catch (Exception e) { Console.WriteLine(e.Message); } } }