Exemple #1
0
        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));
        }
Exemple #2
0
        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);
                }
            }
        }