Example #1
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            // Allow plugin manager to configure options for all plugins
            PluginManagerService.Configure(app, env);

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseCookiePolicy();
            app.UseSession();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Account}/{action=Index}/{id?}");
            });
        }
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // Allow plugin manager to configure all services in each plugin
            PluginManagerService.ConfigureServices(services);

            SessionHelper.InitSessionHelper();

            services.Configure <CookiePolicyOptions>(options =>
            {
                options.CheckConsentNeeded    = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            services.AddDistributedMemoryCache();

            services.AddSession(options =>
            {
                // Set a short timeout for easy testing.
                //options.IdleTimeout = TimeSpan.FromSeconds(10);
                //options.Cookie.HttpOnly = false;
            });

            services.AddLogging();
            services.AddMvc(
                option => option.EnableEndpointRouting = false
                ).ConfigurePluginManager().AddRazorRuntimeCompilation();
        }
Example #3
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // Allow plugin manager to configure all services in each plugin
            PluginManagerService.ConfigureServices(services);

            services.Configure <CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded    = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            services.AddDistributedMemoryCache();

            services.AddSession(options =>
            {
                // Set a short timeout for easy testing.
                options.IdleTimeout     = TimeSpan.FromSeconds(10);
                options.Cookie.HttpOnly = false;
            });


            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
            .ConfigurePluginManager();
        }
Example #4
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // Allow plugin manager to configure all services in each plugin
            PluginManagerService.ConfigureServices(services);

            //services.Configure<CookiePolicyOptions>(options =>
            //{
            //    // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            //    options.CheckConsentNeeded = context => true;
            //    options.MinimumSameSitePolicy = SameSiteMode.None;
            //});

            services.AddDistributedMemoryCache();

            //services.AddSession(options =>
            //{
            //    // Set a short timeout for easy testing.
            //    options.IdleTimeout = TimeSpan.FromSeconds(10);
            //    options.Cookie.HttpOnly = false;
            //});


            services.AddMvc(
#if NET_CORE_3_0
                option => option.EnableEndpointRouting = false
#endif
                )
            .ConfigurePluginManager();
        }
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            PluginManagerService.ConfigureServices(services);

            services.AddMvc()
            .AddSessionStateTempDataProvider()
            .ConfigurePluginManager();
        }
        public void InitialiseWithCustomILogger()
        {
            TestLogger testLogger = new TestLogger();
            PluginManagerConfiguration configuration = new PluginManagerConfiguration(testLogger);

            PluginManagerService.Initialise(configuration);

            ILogger pluginManagerLogger = PluginManagerService.GetLogger();

            Assert.AreNotEqual(pluginManagerLogger.GetType().TypeHandle.Value, testLogger.GetType().TypeHandle.Value);
        }
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // Allow plugin manager to configure all services in each plugin
            PluginManagerService.ConfigureServices(services);


            services.AddMvc(
#if NET_CORE_3_0
                option => option.EnableEndpointRouting = false
#endif
                )
            .ConfigurePluginManager();
        }
Example #8
0
        public override string Data()
        {
            Dictionary <string, IPluginModule> plugins = PluginManagerService.GetPluginManager().GetLoadedPlugins();

            string Result = "Module|Plugin Version|FileVersion";

            foreach (KeyValuePair <string, IPluginModule> keyValuePair in plugins)
            {
                Result += $"\r{keyValuePair.Value.Module}|{keyValuePair.Value.Version.ToString()}|" +
                          $"{keyValuePair.Value.FileVersion}";
            }

            return(Result);
        }
        public override string Data()
        {
            Dictionary <string, IPluginModule> plugins = PluginManagerService.GetPluginManager().GetLoadedPlugins();

            string Result = "Module|FileVersion";
            Dictionary <string, string> files = new Dictionary <string, string>();

            foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
            {
                string fileVersion = String.Empty;
                string file        = String.Empty;
                try
                {
                    string path = String.IsNullOrEmpty(assembly.Location) ? assembly.CodeBase : assembly.Location;

                    if (path.StartsWith("file:///"))
                    {
                        path = path.Substring(8);
                    }

                    file = Path.GetFullPath(path);

                    if (File.Exists(file))
                    {
                        fileVersion = System.Diagnostics.FileVersionInfo.GetVersionInfo(file).FileVersion;
                    }

                    file = Path.GetFileName(file);
                }
                catch (NotSupportedException)
                {
                }


                if (!files.ContainsKey(file))
                {
                    files.Add(file, fileVersion);
                }
            }

            foreach (KeyValuePair <string, string> valuePair in files.OrderBy(key => key.Value.ToLower()))
            {
                Result += $"\r{valuePair.Key}|{valuePair.Value}";
            }

            return(Result);
        }
Example #10
0
        public static void Main(string[] args)
        {
            // add plugins which need to be loaded first
            PluginManagerService.UsePlugin(typeof(ErrorManager.Plugin.PluginInitialisation));
            PluginManagerService.UsePlugin(typeof(BadEgg.Plugin.PluginInitialisation));
            PluginManagerService.UsePlugin(typeof(RestrictIp.Plugin.PluginInitialisation));
            PluginManagerService.UsePlugin(typeof(UserSessionMiddleware.Plugin.PluginInitialisation));
            PluginManagerService.UsePlugin(typeof(CacheControl.Plugin.PluginInitialisation));
            PluginManagerService.UsePlugin(typeof(MemoryCache.Plugin.PluginInitialisation));
            PluginManagerService.UsePlugin(typeof(Spider.Plugin.PluginInitialisation));
            PluginManagerService.UsePlugin(typeof(SeoPlugin.PluginInitialisation));
            PluginManagerService.UsePlugin(typeof(Localization.Plugin.PluginInitialisation));
            PluginManagerService.UsePlugin(typeof(Breadcrumb.Plugin.PluginInitialisation));
            PluginManagerService.UsePlugin(typeof(WebSmokeTest.Plugin.PluginInitialisation));
            PluginManagerService.UsePlugin(typeof(GeoIp.Plugin.PluginInitialisation));

            PluginManagerConfiguration configuration = new PluginManagerConfiguration();

            configuration.ServiceConfigurator = new ServiceConfigurator();

            // Initialise the plugin manager service
            PluginManagerService.Initialise(configuration);
            try
            {
                // Add generic plugins where load order does not matter
                PluginManagerService.UsePlugin(typeof(DocumentationPlugin.PluginInitialisation));
                PluginManagerService.UsePlugin(typeof(ProductPlugin.PluginInitialisation));
                PluginManagerService.UsePlugin(typeof(ShoppingCartPlugin.PluginInitialisation));
                PluginManagerService.UsePlugin(typeof(HelpdeskPlugin.PluginInitialisation));
                PluginManagerService.UsePlugin(typeof(UserAccount.Plugin.PluginInitialisation));
                PluginManagerService.UsePlugin(typeof(LoginPlugin.PluginInitialisation));
                PluginManagerService.UsePlugin(typeof(Sitemap.Plugin.PluginInitialisation));
                PluginManagerService.UsePlugin(typeof(SystemAdmin.Plugin.PluginInitialisation));
                PluginManagerService.UsePlugin(typeof(DownloadPlugin.PluginInitialisation));
                PluginManagerService.UsePlugin(typeof(Company.Plugin.PluginInitialisation));
                PluginManagerService.UsePlugin(typeof(Blog.Plugin.PluginInitialisation));
                PluginManagerService.UsePlugin(typeof(DemoWebsitePlugin.Plugin.PluginInitialisation));
                PluginManagerService.UsePlugin(typeof(DemoApiPlugin.PluginInitialisation));

                CreateWebHostBuilder(args).Build().Run();
            }
            finally
            {
                PluginManagerService.Finalise();
            }
        }
Example #11
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app)
        {
            // Allow plugin manager to configure options for all plugins
            PluginManagerService.Configure(app);

            app.UseStaticFiles();

            app.UseHsts();

            app.UseHttpsRedirection();
            app.UseCookiePolicy();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            }).UsePluginManager();
        }
        public static Location LoadOrCreate(string locationName, string overlayFile, string databaseDirectory, string pluginDirectory, out IMasterDatabaseService databaseService, out EnvironmentalCacheService cacheService, out PluginManagerService pluginService)
        {
            Console.WriteLine("Creating database service...");
            databaseService = new MasterDatabaseService {MasterDatabaseDirectory = databaseDirectory};
            Console.WriteLine("Loading plugins...");
            pluginService = new PluginManagerService {PluginDirectory = pluginDirectory};
            cacheService = new EnvironmentalCacheService(pluginService, databaseService);
            Console.WriteLine(string.Format("Looking for test location '{0}'...", locationName));
            var location = databaseService.FindLocation(locationName);
            if (location != null)
            {
                Console.WriteLine(string.Format("Test location '{0}' already exists.  Deleting the existing location.", locationName));
                databaseService.DeleteLocation(location);
            }
            Console.WriteLine(string.Format("Creating test location '{0}'...", locationName));
            location = databaseService.ImportLocationFromOverlayFile(overlayFile, locationName);
            foreach (var month in NAVOConfiguration.AllMonths)
            {
                // SoundSpeed dataset for each month
                Console.WriteLine(string.Format("Importing soundspeed for {0}", month));
                cacheService.ImportDatasetTest(databaseService.LoadOrCreateEnvironmentalDataSet(location, 15, month, pluginService[PluginType.EnvironmentalDataSource, PluginSubtype.SoundSpeed].PluginIdentifier));

                // Wind dataset for each month
                Console.WriteLine(string.Format("Importing wind for {0}", month));
                cacheService.ImportDatasetTest(databaseService.LoadOrCreateEnvironmentalDataSet(location, 60, month, pluginService[PluginType.EnvironmentalDataSource, PluginSubtype.Wind].PluginIdentifier));
            }
            // Sediment dataset
            Console.WriteLine("Importing sediment");
            cacheService.ImportDatasetTest(databaseService.LoadOrCreateEnvironmentalDataSet(location, 5f, TimePeriod.Invalid, pluginService[PluginType.EnvironmentalDataSource, PluginSubtype.Sediment].PluginIdentifier));

            // Bathymetry dataset at 2min resolution
            Console.WriteLine("Importing 2min bathymetry");
            cacheService.ImportDatasetTest(databaseService.LoadOrCreateEnvironmentalDataSet(location, 2f, TimePeriod.Invalid, pluginService[PluginType.EnvironmentalDataSource, PluginSubtype.Bathymetry].PluginIdentifier));
            // Bathymetry dataset at 1min resolution
            Console.WriteLine("Importing 1min bathymetry");
            cacheService.ImportDatasetTest(databaseService.LoadOrCreateEnvironmentalDataSet(location, 1f, TimePeriod.Invalid, pluginService[PluginType.EnvironmentalDataSource, PluginSubtype.Bathymetry].PluginIdentifier));
            // Bathymetry dataset at 0.5min resolution
            Console.WriteLine("Importing 0.5min bathymetry");
            cacheService.ImportDatasetTest(databaseService.LoadOrCreateEnvironmentalDataSet(location, 0.5f, TimePeriod.Invalid, pluginService[PluginType.EnvironmentalDataSource, PluginSubtype.Bathymetry].PluginIdentifier));
            return location;
        }
Example #13
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app)
        {
            PluginManagerService.Configure(app);

#if DEBUG
            app.UseDeveloperExceptionPage();
#else
            app.UseExceptionHandler("/Home/Error");
#endif


#if !NET_CORE_3_X
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Product}/{action=Index}/{id?}");
            })
            .UsePluginManager();
#endif
        }
        public void PopulateFeature(IEnumerable <ApplicationPart> parts, MetadataReferenceFeature feature)
        {
            var libraryPaths = new HashSet <string>(StringComparer.OrdinalIgnoreCase);

            foreach (var assemblyPart in parts.OfType <AssemblyPart>())
            {
                var dependencyContext = DependencyContext.Load(assemblyPart.Assembly);
                if (dependencyContext != null)
                {
                    foreach (var library in dependencyContext.CompileLibraries)
                    {
                        if (string.Equals("reference", library.Type, StringComparison.OrdinalIgnoreCase))
                        {
                            foreach (var libraryAssembly in library.Assemblies)
                            {
                                libraryPaths.Add(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, libraryAssembly));
                            }
                        }
                        else
                        {
                            try
                            {
                                foreach (var path in library.ResolveReferencePaths())
                                {
                                    libraryPaths.Add(path);
                                }
                            }
                            catch (InvalidOperationException)
                            {
                                if (PluginManagerService.GetPluginManager().PluginLoaded(library.Name + ".dll",
                                                                                         out int version, out string module))
                                {
                                    libraryPaths.Add(module);
                                }
                                else
                                {
                                    throw;
                                }
                            }
                        }
Example #15
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // Allow plugin manager to configure all services in each plugin
            PluginManagerService.ConfigureServices(services);

            SessionHelper.InitSessionHelper();

            services.AddAuthentication("DefaultAuthSchemeName")
            .AddCookie("DefaultAuthSchemeName", options =>
            {
                options.AccessDeniedPath = "/Error/AccessDenied";
                options.LoginPath        = "/Login/";
#if NET_CORE_2_2 || NET_CORE_2_1 || NET_CORE_2_0 || NET461
                options.SlidingExpiration = true;
                options.Cookie.Expiration = new TimeSpan(7, 0, 0, 0);
#endif
            });

            services.Configure <CookiePolicyOptions>(options =>
            {
                options.CheckConsentNeeded    = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            services.AddDistributedMemoryCache();

            services.AddSession(options =>
            {
                // Set a short timeout for easy testing.
                //options.IdleTimeout = TimeSpan.FromSeconds(10);
                //options.Cookie.HttpOnly = false;
            });

            services.AddLogging();
            services.AddMvc(
                option => option.EnableEndpointRouting = false
                )
            .ConfigurePluginManager()
            .AddRazorRuntimeCompilation();
        }
 public void PluginManager()
 {
     const string debugDirectory = @"C:\Projects\ESME Deliverables\Libraries\ESME.Tests\bin\Debug";
     const string pluginDirectory = debugDirectory + @"\Plugins";
     if (Directory.Exists(pluginDirectory)) Directory.Delete(pluginDirectory, true);
     Assert.IsFalse(Directory.Exists(pluginDirectory));
     Directory.CreateDirectory(pluginDirectory);
     Assert.IsTrue(Directory.Exists(pluginDirectory));
     File.Copy(Path.Combine(debugDirectory, "InstallableNAVOPlugin.dll"), Path.Combine(pluginDirectory, "InstallableNAVOPlugin.dll"));
     File.Copy(Path.Combine(debugDirectory, "NAVODatabaseAdapter.dll"), Path.Combine(pluginDirectory, "NAVODatabaseAdapter.dll"));
     var pluginManager = new PluginManagerService();
     Assert.IsNull(pluginManager[PluginType.EnvironmentalDataSource]);
     pluginManager.PluginDirectory = pluginDirectory;
     Assert.IsNotNull(pluginManager[PluginType.EnvironmentalDataSource]);
     var pluginIdentifier = new PluginIdentifier
     {
         PluginType = PluginType.EnvironmentalDataSource,
         PluginSubtype = PluginSubtype.SoundSpeed,
         Type = typeof(GDEM3ForESME).ToString(),
     };
     Assert.IsTrue(pluginManager[pluginIdentifier] is GDEM3ForESME);
 }
Example #17
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // Allow plugin manager to configure all services in each plugin
            PluginManagerService.ConfigureServices(services);

            SessionHelper.InitSessionHelper();

            services.Configure <CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded    = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            services.AddDistributedMemoryCache();

            services.AddSession(options =>
            {
                // Set a short timeout for easy testing.
                options.IdleTimeout     = TimeSpan.FromSeconds(10);
                options.Cookie.HttpOnly = false;
            });

            services.AddLogging();


            // register internal types so we can load them or DI them into other classes later
            services.AddSingleton <ISharedPluginHelper, SharedPluginHelper>();
            services.AddSingleton <IErrorManager, ErrorManager>();

            // grab an instance of the service provider so we can dynamically generate
            // objects from the service provider
            GetServiceProvider = services.BuildServiceProvider();

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
            .ConfigurePluginManager();
        }
 public void InitialiseWithoutParametersAndFinalise()
 {
     PluginManagerService.Initialise();
     PluginManagerService.Finalise();
 }
        public void CreateScenario(string locationName, string scenarioName, double north, double south, double east, double west)
        {
            Console.WriteLine("Creating database service...");
            var database = new MasterDatabaseService { MasterDatabaseDirectory = _databaseDirectory };
            Console.WriteLine("Loading plugins...");
            var plugins = new PluginManagerService { PluginDirectory = PluginDirectory };
            var cache = new EnvironmentalCacheService(plugins, database);
            Console.WriteLine(string.Format("Looking for test location '{0}'...", locationName));
            var location = database.FindLocation(locationName);
            if (location != null)
            {
                Console.WriteLine(string.Format("Test location '{0}' already exists.  Deleting the existing location.", locationName));
                database.DeleteLocation(location);
            }
            Console.WriteLine(string.Format("Creating test location '{0}'...", locationName));
            var geoRect = new GeoRect(north, south, east, west);
            location = new Location
            {
                Name = locationName,
                Comments = null,
                GeoRect = geoRect
            };
            location.LayerSettings.IsChecked = true;
            database.Add(location);

            foreach (var month in NAVOConfiguration.AllMonths)
            {
                // SoundSpeed dataset for each month
                Console.WriteLine(string.Format("Importing soundspeed for {0}", month));
                cache.ImportDatasetTest(database.LoadOrCreateEnvironmentalDataSet(location, 15, month, plugins[PluginType.EnvironmentalDataSource, PluginSubtype.SoundSpeed].PluginIdentifier));

                // Wind dataset for each month
                Console.WriteLine(string.Format("Importing wind for {0}", month));
                cache.ImportDatasetTest(database.LoadOrCreateEnvironmentalDataSet(location, 60, month, plugins[PluginType.EnvironmentalDataSource, PluginSubtype.Wind].PluginIdentifier));
            }
            
            // Sediment dataset
            Console.WriteLine("Importing 5min sediment");
            cache.ImportDatasetTest(database.LoadOrCreateEnvironmentalDataSet(location, 5f, TimePeriod.Invalid, plugins[PluginType.EnvironmentalDataSource, PluginSubtype.Sediment].PluginIdentifier));
            Console.WriteLine("Importing 0.1min sediment");
            cache.ImportDatasetTest(database.LoadOrCreateEnvironmentalDataSet(location, 0.1f, TimePeriod.Invalid, plugins[PluginType.EnvironmentalDataSource, PluginSubtype.Sediment].PluginIdentifier));

            // Bathymetry dataset at 2min resolution
            Console.WriteLine("Importing 2min bathymetry");
            cache.ImportDatasetTest(database.LoadOrCreateEnvironmentalDataSet(location, 2f, TimePeriod.Invalid, plugins[PluginType.EnvironmentalDataSource, PluginSubtype.Bathymetry].PluginIdentifier));
            // Bathymetry dataset at 1min resolution
            Console.WriteLine("Importing 1min bathymetry");
            cache.ImportDatasetTest(database.LoadOrCreateEnvironmentalDataSet(location, 1f, TimePeriod.Invalid, plugins[PluginType.EnvironmentalDataSource, PluginSubtype.Bathymetry].PluginIdentifier));
            // Bathymetry dataset at 0.5min resolution
            Console.WriteLine("Importing 0.5min bathymetry");
            cache.ImportDatasetTest(database.LoadOrCreateEnvironmentalDataSet(location, 0.5f, TimePeriod.Invalid, plugins[PluginType.EnvironmentalDataSource, PluginSubtype.Bathymetry].PluginIdentifier));
            Scenario scenario;
            database.Add(scenario = new Scenario
            {
                Location = location,
                Name = scenarioName,
                Comments = string.Format("Some comments for {0}", scenarioName),
                StartTime = new DbTimeSpan(new TimeSpan(0, 12, 0, 0)),
                Duration = new DbTimeSpan(new TimeSpan(0, 1, 0, 0)),
                TimePeriod = TimePeriod.April,
            });
            location.Scenarios.Add(scenario);
            Platform platform;
            database.Add(platform = new Platform
            {
                Description = "Platform description",
                PlatformName = "PlatformName",
                PlatformType = "PlatformType",
                RepeatCount = 0,
                Scenario = scenario,
                Course = 45,
                Depth = 0,
                Geo = geoRect.Center,
                Speed = 0,
                IsRandom = false,
                TrackType = TrackType.Stationary,
                Perimeter = null,
            });
            Source source;
            database.Add(source = new Source
            {
                Platform = platform,
                SourceName = "SourceName",
                SourceType = "SourceType",
            });
            database.Add(new Mode
            {
                ActiveTime = 500,
                DepressionElevationAngle = 0,
                Depth = 5,
                HighFrequency = 3000,
                HorizontalBeamWidth = 360,
                LowFrequency = 3000,
                MaxPropagationRadius = 25000,
                ModeName = "ModeName",
                ModeType = "ModeType",
                //PSMModeGuid = 
                PulseInterval = new TimeSpan(0, 0, 0, 30),
                PulseLength = new TimeSpan(0, 0, 0, 0, 500),
                RelativeBeamAngle = 0,
                Source = source,
                SourceLevel = 200,
                VerticalBeamWidth = 180,
            });
            database.SetEnvironmentalData(scenario,
                                          (from data in location.EnvironmentalDataSets
                                           where data.SourcePlugin.PluginSubtype == PluginSubtype.Wind && ((TimePeriod)scenario.TimePeriod == (TimePeriod)data.TimePeriod)
                                           select data).FirstOrDefault());

            database.SetEnvironmentalData(scenario,
                                          (from data in location.EnvironmentalDataSets
                                           where data.SourcePlugin.PluginSubtype == PluginSubtype.SoundSpeed && ((TimePeriod)scenario.TimePeriod == (TimePeriod)data.TimePeriod)
                                           select data).FirstOrDefault());

            database.SetEnvironmentalData(scenario,
                                          (from data in location.EnvironmentalDataSets
                                           where data.SourcePlugin.PluginSubtype == PluginSubtype.Sediment
                                           orderby data.Resolution
                                           select data).FirstOrDefault());

            database.SetEnvironmentalData(scenario,
                                          (from data in location.EnvironmentalDataSets
                                           where data.SourcePlugin.PluginSubtype == PluginSubtype.Bathymetry
                                           orderby data.Resolution
                                           select data).FirstOrDefault());
            database.SaveChanges();
        }
 public void TestInitialise()
 {
     PluginManagerService.Initialise();
 }
Example #21
0
        public static void Main(string[] args)
        {
            PluginManagerService.Initialise();

            CreateWebHostBuilder(args).Build().Run();
        }
        public void CreateNewSimulation()
        {
            Console.WriteLine("Creating database service...");
            var database = new MasterDatabaseService { MasterDatabaseDirectory = _databaseDirectory };
            Console.WriteLine("Loading plugins...");
            var plugins = new PluginManagerService { PluginDirectory = PluginDirectory };
            Console.WriteLine("Looking for test location 'Jacksonville'...");
            var location = database.FindLocation("Jacksonville");
            if (location == null)
            {
                Console.WriteLine("Creating test location 'Jacksonville'...");
                location = database.ImportLocationFromOverlayFile(@"C:\Users\Dave Anderson\Desktop\NAEMO demos\BU Test Sample\Sim Areas\Jacksonville\Areas\Jax_Ops_Area.ovr", "Jacksonville");
                foreach (var month in NAVOConfiguration.AllMonths)
                {
                    // SoundSpeed dataset for each month
                    database.LoadOrCreateEnvironmentalDataSet(location, 15, month, plugins[PluginType.EnvironmentalDataSource, PluginSubtype.SoundSpeed].PluginIdentifier);
                    // Wind dataset for each month
                    database.LoadOrCreateEnvironmentalDataSet(location, 60, month, plugins[PluginType.EnvironmentalDataSource, PluginSubtype.Wind].PluginIdentifier);
                }
                // Sediment dataset
                database.LoadOrCreateEnvironmentalDataSet(location, 5f, TimePeriod.Invalid, plugins[PluginType.EnvironmentalDataSource, PluginSubtype.Sediment].PluginIdentifier);
                // Bathymetry dataset at 2min resolution
                database.LoadOrCreateEnvironmentalDataSet(location, 2f, TimePeriod.Invalid, plugins[PluginType.EnvironmentalDataSource, PluginSubtype.Bathymetry].PluginIdentifier);
                // Bathymetry dataset at 1min resolution
                database.LoadOrCreateEnvironmentalDataSet(location, 1f, TimePeriod.Invalid, plugins[PluginType.EnvironmentalDataSource, PluginSubtype.Bathymetry].PluginIdentifier);
                // Bathymetry dataset at 0.5min resolution
                database.LoadOrCreateEnvironmentalDataSet(location, 0.5f, TimePeriod.Invalid, plugins[PluginType.EnvironmentalDataSource, PluginSubtype.Bathymetry].PluginIdentifier);
            }
            Console.WriteLine("Looking for test scenario 'BU Test Sample'...");
            var scenario = database.FindScenario("BU Test Sample");
            if (scenario == null)
            {
                Console.WriteLine("Importing test scenario 'BU Test Sample'...");
                scenario = Scenario.FromNemoFile(database, location,
                                                 @"C:\Users\Dave Anderson\Desktop\NAEMO demos\BU Test Sample\Jacksonville\BU Test Sample.nemo",
                                                 @"C:\Users\Dave Anderson\Desktop\NAEMO demos\BU Test Sample\Sim Areas");

                database.SetEnvironmentalData(scenario, (from data in location.EnvironmentalDataSets
                                                            where data.SourcePlugin.PluginSubtype == PluginSubtype.Wind
                                                            select data).FirstOrDefault());
                var sourceFile = Path.Combine(database.MasterDatabaseDirectory, location.StorageDirectory, scenario.Wind.FileName);
                var destFile = Path.Combine(_databaseDirectory, scenario.Wind.FileName);
                if (File.Exists(sourceFile)) File.Copy(sourceFile, destFile);
                
                database.SetEnvironmentalData(scenario, (from data in location.EnvironmentalDataSets
                                                            where data.SourcePlugin.PluginSubtype == PluginSubtype.SoundSpeed
                                                            select data).FirstOrDefault());
                sourceFile = Path.Combine(database.MasterDatabaseDirectory, location.StorageDirectory, scenario.SoundSpeed.FileName);
                destFile = Path.Combine(_databaseDirectory, scenario.SoundSpeed.FileName);
                if (File.Exists(sourceFile)) File.Copy(sourceFile, destFile);
                
                database.SetEnvironmentalData(scenario, (from data in location.EnvironmentalDataSets
                                                            where data.SourcePlugin.PluginSubtype == PluginSubtype.Sediment
                                                            select data).FirstOrDefault());
                sourceFile = Path.Combine(database.MasterDatabaseDirectory, location.StorageDirectory, scenario.Sediment.FileName);
                destFile = Path.Combine(_databaseDirectory, scenario.Sediment.FileName);
                if (File.Exists(sourceFile)) File.Copy(sourceFile, destFile);

                database.SetEnvironmentalData(scenario, (from data in location.EnvironmentalDataSets
                                                            where data.SourcePlugin.PluginSubtype == PluginSubtype.Bathymetry
                                                            select data).FirstOrDefault());
                sourceFile = Path.Combine(database.MasterDatabaseDirectory, location.StorageDirectory, scenario.Bathymetry.FileName);
                destFile = Path.Combine(_databaseDirectory, scenario.Bathymetry.FileName);
                if (File.Exists(sourceFile)) File.Copy(sourceFile, destFile);
            }
            Console.WriteLine("Deleting existing simulation directory...");
            if (Directory.Exists(_simulationDirectory)) Directory.Delete(_simulationDirectory, true);
            for (var i = 0; i < 10; i++) if (Directory.Exists(_simulationDirectory)) Thread.Sleep(100); else break;
            Assert.IsFalse(Directory.Exists(_simulationDirectory));

            Console.WriteLine("Creating simulation...");
            var simulation = Simulation.Create(scenario, _simulationDirectory);
            Console.WriteLine("Starting simulation...");
            simulation.Start(1000, new TimeSpan(0, 0, 0, 1));
            Console.WriteLine("Test complete");
        }
 public PluginManagerController(PluginManagerService pluginManagerService)
 {
     this.pluginManagerService = pluginManagerService;
 }
 public void InitialiseWithDefaultParameters()
 {
     PluginManagerService.Initialise(new PluginManagerConfiguration());
 }
 public void InitialiseWithNullParametersRaiseException()
 {
     PluginManagerService.Initialise(null);
 }
 public void ConfigureServicesInvalidParam()
 {
     PluginManagerService.ConfigureServices(null);
 }
 public void FinaliseWithoutInitialiseFailWithException()
 {
     PluginManagerService.Finalise();
 }