/// <summary> /// Save the specified configuration /// </summary> /// <param name="config">Config.</param> public void Save(OpenIZConfiguration config) { try { this.m_tracer?.TraceInfo("Saving configuration to {0}...", this.m_configPath); if (!Directory.Exists(Path.GetDirectoryName(this.m_configPath))) { Directory.CreateDirectory(Path.GetDirectoryName(this.m_configPath)); } using (FileStream fs = File.Create(this.m_configPath)) { config.Save(fs); fs.Flush(); } } catch (Exception e) { this.m_tracer?.TraceError(e.ToString()); throw; } }
/// <summary> /// Loads the user configuration for the specified user key /// </summary> public override OpenIZConfiguration GetUserConfiguration(string userId) { try { var userPrefDir = this.Configuration.GetSection <ApplicationConfigurationSection>().UserPrefDir; if (!Directory.Exists(userPrefDir)) { Directory.CreateDirectory(userPrefDir); } // Now we want to load String configFile = Path.ChangeExtension(Path.Combine(userPrefDir, userId), "userpref"); if (!File.Exists(configFile)) { return new OpenIZConfiguration() { Sections = new System.Collections.Generic.List <object>() { new AppletConfigurationSection(), new ApplicationConfigurationSection() } } } ; else { using (var fs = File.OpenRead(configFile)) return(OpenIZConfiguration.Load(fs)); } } catch (Exception ex) { this.m_tracer.TraceError("Error getting user configuration data {0}: {1}", userId, ex); throw; } }
/// <summary> /// Gets the service description. /// </summary> /// <returns>The service description.</returns> /// <param name="me">Me.</param> public static ServiceClientDescription GetServiceDescription(this OpenIZConfiguration me, String clientName) { var configSection = me.GetSection <ServiceClientConfigurationSection>(); return(configSection.Client.Find(o => clientName == o.Name)?.Clone()); }
/// <summary> /// Get a bare bones configuration /// </summary> public static OpenIZConfiguration GetDefaultConfiguration() { // TODO: Bring up initial settings dialog and utility var retVal = new OpenIZConfiguration(); // Inital data source DataConfigurationSection dataSection = new DataConfigurationSection() { MainDataSourceConnectionStringName = "openIzData", MessageQueueConnectionStringName = "openIzQueue", ConnectionString = new System.Collections.Generic.List <ConnectionString>() { new ConnectionString() { Name = "openIzData", Value = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MINIMS", "OpenIZ.sqlite") }, new ConnectionString() { Name = "openIzSearch", Value = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MINIMS", "OpenIZ.ftsearch.sqlite") }, new ConnectionString() { Name = "openIzQueue", Value = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MINIMS", "MessageQueue.sqlite") }, new ConnectionString() { Name = "openIzWarehouse", Value = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MINIMS", "OpenIZ.warehouse.sqlite") }, new ConnectionString() { Name = "openIzAudit", Value = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MINIMS", "OpenIZ.audit.sqlite") } } }; // Initial Applet configuration AppletConfigurationSection appletSection = new AppletConfigurationSection() { AppletDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MINIMS", "applets"), AppletGroupOrder = new System.Collections.Generic.List <string>() { "Patient Management", "Encounter Management", "Stock Management", "Administration" }, StartupAsset = "org.openiz.core", Security = new AppletSecurityConfiguration() { TrustedPublishers = new List <string>() { "84BD51F0584A1F708D604CF0B8074A68D3BEB973" } } }; // Initial applet style ApplicationConfigurationSection appSection = new ApplicationConfigurationSection() { Style = StyleSchemeType.Dark, UserPrefDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MINIMS", "userpref"), ServiceTypes = new List <string>() { typeof(LocalPolicyDecisionService).AssemblyQualifiedName, typeof(LocalPolicyInformationService).AssemblyQualifiedName, typeof(LocalPatientService).AssemblyQualifiedName, typeof(LocalPlaceService).AssemblyQualifiedName, typeof(LocalAlertService).AssemblyQualifiedName, typeof(LocalConceptService).AssemblyQualifiedName, typeof(LocalEntityRepositoryService).AssemblyQualifiedName, typeof(LocalOrganizationService).AssemblyQualifiedName, typeof(LocalRoleProviderService).AssemblyQualifiedName, typeof(LocalSecurityService).AssemblyQualifiedName, typeof(LocalMaterialService).AssemblyQualifiedName, typeof(LocalBatchService).AssemblyQualifiedName, typeof(LocalActService).AssemblyQualifiedName, typeof(SQLiteDatawarehouse).AssemblyQualifiedName, typeof(LocalProviderService).AssemblyQualifiedName, typeof(NetworkInformationService).AssemblyQualifiedName, typeof(CarePlanManagerService).AssemblyQualifiedName, typeof(BusinessRulesDaemonService).AssemblyQualifiedName, typeof(LocalEntitySource).AssemblyQualifiedName, typeof(MiniImsServer).AssemblyQualifiedName, typeof(MemoryCacheService).AssemblyQualifiedName, typeof(OpenIZThreadPool).AssemblyQualifiedName, typeof(SimpleCarePlanService).AssemblyQualifiedName, typeof(MemorySessionManagerService).AssemblyQualifiedName, typeof(AmiUpdateManager).AssemblyQualifiedName, typeof(AppletClinicalProtocolRepository).AssemblyQualifiedName, typeof(MemoryQueryPersistenceService).AssemblyQualifiedName, typeof(SimpleQueueFileProvider).AssemblyQualifiedName, typeof(SimplePatchService).AssemblyQualifiedName, typeof(SQLite.Net.Platform.Generic.SQLitePlatformGeneric).AssemblyQualifiedName, typeof(SearchIndexService).AssemblyQualifiedName, typeof(MiniAppletManagerService).AssemblyQualifiedName, typeof(MemoryTickleService).AssemblyQualifiedName, typeof(LocalTagPersistenceService).AssemblyQualifiedName, typeof(SQLiteReportDatasource).AssemblyQualifiedName, typeof(ReportExecutor).AssemblyQualifiedName, typeof(XamarinBackupService).AssemblyQualifiedName, typeof(AppletReportRepository).AssemblyQualifiedName }, Cache = new CacheConfiguration() { MaxAge = new TimeSpan(0, 5, 0).Ticks, MaxSize = 1000, MaxDirtyAge = new TimeSpan(0, 20, 0).Ticks, MaxPressureAge = new TimeSpan(0, 2, 0).Ticks } }; // Security configuration var wlan = NetworkInterface.GetAllNetworkInterfaces().FirstOrDefault(o => o.NetworkInterfaceType == NetworkInterfaceType.Ethernet && o.Description.StartsWith("wlan")); String macAddress = Guid.NewGuid().ToString(); if (wlan != null) { macAddress = wlan.GetPhysicalAddress().ToString(); } //else SecurityConfigurationSection secSection = new SecurityConfigurationSection() { DeviceName = String.Format("MINI-IMS-{0}", macAddress).Replace(" ", ""), AuditRetention = new TimeSpan(30, 0, 0, 0, 0) }; // Device key var certificate = X509CertificateUtils.FindCertificate(X509FindType.FindBySubjectName, StoreLocation.LocalMachine, StoreName.My, String.Format("DN={0}.mobile.openiz.org", macAddress)); secSection.DeviceSecret = certificate?.Thumbprint; // Rest Client Configuration ServiceClientConfigurationSection serviceSection = new ServiceClientConfigurationSection() { RestClientType = typeof(RestClient) }; // Trace writer #if DEBUG DiagnosticsConfigurationSection diagSection = new DiagnosticsConfigurationSection() { TraceWriter = new System.Collections.Generic.List <TraceWriterConfiguration>() { new TraceWriterConfiguration() { Filter = System.Diagnostics.Tracing.EventLevel.LogAlways, InitializationData = "OpenIZ", TraceWriter = new LogTraceWriter(System.Diagnostics.Tracing.EventLevel.LogAlways, "OpenIZ") }, new TraceWriterConfiguration() { Filter = System.Diagnostics.Tracing.EventLevel.LogAlways, InitializationData = "OpenIZ", TraceWriter = new FileTraceWriter(System.Diagnostics.Tracing.EventLevel.LogAlways, "OpenIZ") }, new TraceWriterConfiguration() { Filter = System.Diagnostics.Tracing.EventLevel.LogAlways, InitializationData = "OpenIZ", TraceWriter = new ConsoleTraceWriter(System.Diagnostics.Tracing.EventLevel.LogAlways, "OpenIZ") } } }; #else DiagnosticsConfigurationSection diagSection = new DiagnosticsConfigurationSection() { TraceWriter = new List <TraceWriterConfiguration>() { new TraceWriterConfiguration() { Filter = System.Diagnostics.Tracing.EventLevel.LogAlways, InitializationData = "OpenIZ", TraceWriter = new FileTraceWriter(System.Diagnostics.Tracing.EventLevel.LogAlways, "OpenIZ") } } }; #endif retVal.Sections.Add(appletSection); retVal.Sections.Add(dataSection); retVal.Sections.Add(diagSection); retVal.Sections.Add(appSection); retVal.Sections.Add(secSection); retVal.Sections.Add(serviceSection); retVal.Sections.Add(new SynchronizationConfigurationSection() { PollInterval = new TimeSpan(0, 5, 0) }); return(retVal); }
/// <summary> /// Restore the configuration /// </summary> public void Restore() { using (var lzs = new LZipStream(File.OpenRead(Path.ChangeExtension(this.m_configPath, "bak.7z")), SharpCompress.Compressors.CompressionMode.Decompress)) this.m_configuration = OpenIZConfiguration.Load(lzs); this.Save(); }
/// <summary> /// Initializes a new instance of the <see cref="OpenIZ.Mobile.Core.Android.Configuration.ConfigurationManager"/> class. /// </summary> /// <param name="config">Config.</param> public MiniConfigurationManager(OpenIZConfiguration config) { this.m_configuration = config; }
/// <summary> /// Save user configuration /// </summary> public abstract void SaveUserConfiguration(String userId, OpenIZConfiguration config);
/// <summary> /// Save the specified configruation /// </summary> public void Save(OpenIZConfiguration config) { }
/// <summary> /// Load the configuration file /// </summary> public void Load() { if (!String.IsNullOrEmpty(this.m_configPath)) { using (var fs = File.OpenRead(this.m_configPath)) { this.m_configuration = OpenIZConfiguration.Load(fs); } } else { this.m_configuration = new OpenIZConfiguration(); // Inital data source DataConfigurationSection dataSection = new DataConfigurationSection() { MainDataSourceConnectionStringName = "openIzData", MessageQueueConnectionStringName = "openIzData", ConnectionString = new System.Collections.Generic.List <ConnectionString>() { new ConnectionString() { Name = "openIzData", Value = String.IsNullOrEmpty(this.m_dataPath) ? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Minims", "OpenIZ.sqlite") : this.m_dataPath } } }; // Initial Applet configuration AppletConfigurationSection appletSection = new AppletConfigurationSection() { Security = new AppletSecurityConfiguration() { AllowUnsignedApplets = true, TrustedPublishers = new List <string>() { "84BD51F0584A1F708D604CF0B8074A68D3BEB973" } } }; // Initial applet style ApplicationConfigurationSection appSection = new ApplicationConfigurationSection() { Style = StyleSchemeType.Dark, UserPrefDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "OizDebug", "userpref"), ServiceTypes = new List <string>() { typeof(LocalPolicyDecisionService).AssemblyQualifiedName, typeof(LocalPolicyInformationService).AssemblyQualifiedName, typeof(LocalPatientService).AssemblyQualifiedName, typeof(LocalPlaceService).AssemblyQualifiedName, //typeof(LocalAlertService).AssemblyQualifiedName, typeof(LocalConceptService).AssemblyQualifiedName, typeof(LocalEntityRepositoryService).AssemblyQualifiedName, typeof(LocalOrganizationService).AssemblyQualifiedName, typeof(LocalRoleProviderService).AssemblyQualifiedName, typeof(LocalSecurityService).AssemblyQualifiedName, typeof(LocalMaterialService).AssemblyQualifiedName, typeof(LocalBatchService).AssemblyQualifiedName, typeof(LocalActService).AssemblyQualifiedName, typeof(LocalProviderService).AssemblyQualifiedName, typeof(LocalTagPersistenceService).AssemblyQualifiedName, typeof(NetworkInformationService).AssemblyQualifiedName, typeof(BusinessRulesDaemonService).AssemblyQualifiedName, typeof(LocalEntitySource).AssemblyQualifiedName, typeof(MemoryCacheService).AssemblyQualifiedName, typeof(OpenIZThreadPool).AssemblyQualifiedName, typeof(MemorySessionManagerService).AssemblyQualifiedName, typeof(AmiUpdateManager).AssemblyQualifiedName, typeof(AppletClinicalProtocolRepository).AssemblyQualifiedName, typeof(MemoryQueryPersistenceService).AssemblyQualifiedName, typeof(SimpleQueueFileProvider).AssemblyQualifiedName, typeof(SimpleCarePlanService).AssemblyQualifiedName, typeof(SimplePatchService).AssemblyQualifiedName, typeof(DebugAppletManagerService).AssemblyQualifiedName, typeof(SQLiteConnectionManager).AssemblyQualifiedName, typeof(LocalPersistenceService).AssemblyQualifiedName }, Cache = new CacheConfiguration() { MaxAge = new TimeSpan(0, 5, 0).Ticks, MaxSize = 1000, MaxDirtyAge = new TimeSpan(0, 20, 0).Ticks, MaxPressureAge = new TimeSpan(0, 2, 0).Ticks } }; appSection.ServiceTypes.Add(typeof(SQLite.Net.Platform.Generic.SQLitePlatformGeneric).AssemblyQualifiedName); // Security configuration SecurityConfigurationSection secSection = new SecurityConfigurationSection() { DeviceName = Environment.MachineName, AuditRetention = new TimeSpan(30, 0, 0, 0, 0) }; // Device key //var certificate = X509CertificateUtils.FindCertificate(X509FindType.FindBySubjectName, StoreLocation.LocalMachine, StoreName.My, String.Format("DN={0}.mobile.openiz.org", macAddress)); //secSection.DeviceSecret = certificate?.Thumbprint; // Rest Client Configuration ServiceClientConfigurationSection serviceSection = new ServiceClientConfigurationSection() { RestClientType = typeof(RestClient) }; // Trace writer DiagnosticsConfigurationSection diagSection = new DiagnosticsConfigurationSection() { TraceWriter = new System.Collections.Generic.List <TraceWriterConfiguration>() { new TraceWriterConfiguration() { Filter = System.Diagnostics.Tracing.EventLevel.Error, InitializationData = "OpenIZ", TraceWriter = new ConsoleTraceWriter(System.Diagnostics.Tracing.EventLevel.Warning, "OpenIZ") }, new TraceWriterConfiguration() { Filter = System.Diagnostics.Tracing.EventLevel.LogAlways, InitializationData = "OpenIZ", TraceWriter = new FileTraceWriter(System.Diagnostics.Tracing.EventLevel.Warning, "OpenIZ") } } }; this.m_configuration.Sections.Add(appletSection); this.m_configuration.Sections.Add(dataSection); this.m_configuration.Sections.Add(diagSection); this.m_configuration.Sections.Add(appSection); this.m_configuration.Sections.Add(secSection); this.m_configuration.Sections.Add(serviceSection); this.m_configuration.Sections.Add(new SynchronizationConfigurationSection() { PollInterval = new TimeSpan(0, 5, 0) }); } }
/// <summary> /// Initializes a new instance of the <see cref="OpenIZ.Mobile.Core.Android.Configuration.ConfigurationManager"/> class. /// </summary> /// <param name="config">Config.</param> public DcConfigurationManager(OpenIZConfiguration config, string appContextName) : this(appContextName) { this.m_configuration = config; }