Ejemplo n.º 1
0
        /// <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;
            }
        }
Ejemplo n.º 2
0
        /// <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;
            }
        }
Ejemplo n.º 3
0
        /// <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());
        }
Ejemplo n.º 4
0
        /// <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);
        }
Ejemplo n.º 5
0
 /// <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();
 }
Ejemplo n.º 6
0
 /// <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;
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Save user configuration
 /// </summary>
 public abstract void SaveUserConfiguration(String userId, OpenIZConfiguration config);
Ejemplo n.º 8
0
 /// <summary>
 /// Save the specified configruation
 /// </summary>
 public void Save(OpenIZConfiguration config)
 {
 }
Ejemplo n.º 9
0
        /// <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)
                });
            }
        }
Ejemplo n.º 10
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;
 }