* Added machine model, and new database relations
* Added first centralized database config and added machine self-registration into db * Fix database migration with new database * Refactor
This commit is contained in:
@@ -0,0 +1,140 @@
|
||||
using System;
|
||||
using System.Xml.Schema;
|
||||
using System.Xml.Linq;
|
||||
using System.Linq;
|
||||
using static Step.Config.ServerConfig;
|
||||
using Step.Model.ConfigModels;
|
||||
using static Step.Utils.Constants;
|
||||
using Step.Utils;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Step.Config
|
||||
{
|
||||
public static class ServerConfigController
|
||||
{
|
||||
public static void ReadStartupConfig()
|
||||
{
|
||||
// Read validation file
|
||||
XmlSchemaSet readerSettings = new XmlSchemaSet();
|
||||
|
||||
try
|
||||
{
|
||||
// Add Schema
|
||||
readerSettings.Add(null, BASE_PATH + "\\" + STARTUP_CONFIG_SCHEMA_PATH);
|
||||
// Open file reader
|
||||
XDocument xmlConfigFile = XDocument.Load(BASE_PATH + "\\" + STARTUP_CONFIG_PATH);
|
||||
// Validate file
|
||||
xmlConfigFile.Validate(readerSettings, ValidationHandler);
|
||||
|
||||
// Read nc Config with LINQ
|
||||
NcConfig = xmlConfigFile
|
||||
.Descendants(NC_CONFIG_KEY)
|
||||
.Select(x => new NcConfigModel()
|
||||
{
|
||||
NcVendor = x.Element("ncVendor").Value,
|
||||
showNcHMI = Convert.ToBoolean(x.Element("showNcHMI").Value),
|
||||
NcIpAddress = x.Element("ncIpAddress").Value,
|
||||
NcPort = Convert.ToUInt16(x.Element("ncPort").Value),
|
||||
NcName = x.Element("ncName").Value
|
||||
}).FirstOrDefault();
|
||||
|
||||
// Read server config with LINQ and save into static config
|
||||
ServerConfig.ServerStartupConfig = xmlConfigFile
|
||||
.Descendants(SERVER_CONFIG_KEY)
|
||||
.Select(x => new ServerConfigModel()
|
||||
{ // Set server config model data
|
||||
Language = x.Element("language").Value,
|
||||
ServerPort = Convert.ToInt32(x.Element("serverPort").Value),
|
||||
EnableDirectoryBrowsing = Convert.ToBoolean(x.Element("enableDirectoryBrowsing").Value)
|
||||
}).FirstOrDefault();
|
||||
|
||||
// Read areas config with LINQ
|
||||
xmlConfigFile
|
||||
.Descendants(AREAS_CONFIG_KEY) // Get areas config node
|
||||
.Elements()
|
||||
.ToList()
|
||||
.ForEach(x => SetAreaValueByName(x)); // Loop through elements
|
||||
|
||||
} catch (Exception ex)
|
||||
{
|
||||
ExceptionManager.Manage(ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static void SetAreaValueByName(XElement element)
|
||||
{
|
||||
// Choose which area to be set
|
||||
switch (element.Name.ToString())
|
||||
{
|
||||
case AREAS.PRODUCTION_KEY:
|
||||
SetAreaValue(ref ProductionConfig, element);
|
||||
break;
|
||||
case AREAS.TOOLING_KEY:
|
||||
SetAreaValue(ref ToolingConfig, element);
|
||||
break;
|
||||
case AREAS.REPORT_KEY:
|
||||
SetAreaValue(ref ReportConfig, element);
|
||||
break;
|
||||
case AREAS.ALARMS_KEY:
|
||||
SetAreaValue(ref AlarmsConfig, element);
|
||||
break;
|
||||
case AREAS.MAINTENANCE_KEY:
|
||||
SetAreaValue(ref MaintenanceConfig, element);
|
||||
break;
|
||||
case AREAS.UTILITIES_KEY:
|
||||
SetAreaValue(ref UtilitiesConfig, element);
|
||||
break;
|
||||
case AREAS.SCADA_KEY:
|
||||
SetAreaValue(ref ScadaConfig, element);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private static void SetAreaValue (ref AreasConfigModel areasConfig, XElement element)
|
||||
{
|
||||
// Set area model with xml data
|
||||
areasConfig = new AreasConfigModel()
|
||||
{
|
||||
Name = element.Name.ToString(),
|
||||
Enabled = Convert.ToBoolean(element.Element("enabled").Value),
|
||||
AllowExternalBrowser = Convert.ToBoolean(element.Element("allowExternalBrowser").Value)
|
||||
};
|
||||
}
|
||||
|
||||
private static void ValidationHandler(object sender, ValidationEventArgs e)
|
||||
{
|
||||
if (e.Severity == XmlSeverityType.Warning)
|
||||
{
|
||||
ExceptionManager.Manage(ERROR_LEVEL.WARNING, e.Message);
|
||||
}
|
||||
else if (e.Severity == XmlSeverityType.Error)
|
||||
{
|
||||
ExceptionManager.Manage(ERROR_LEVEL.FATAL, e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static bool CheckAreaStatus(string areaName)
|
||||
{ // Get Area status ( enabled field) by name
|
||||
switch (areaName)
|
||||
{
|
||||
case AREAS.PRODUCTION_KEY:
|
||||
return ProductionConfig.Enabled;
|
||||
case AREAS.TOOLING_KEY:
|
||||
return ToolingConfig.Enabled;
|
||||
case AREAS.REPORT_KEY:
|
||||
return ProductionConfig.Enabled;
|
||||
case AREAS.ALARMS_KEY:
|
||||
return AlarmsConfig.Enabled;
|
||||
case AREAS.MAINTENANCE_KEY:
|
||||
return MaintenanceConfig.Enabled;
|
||||
case AREAS.UTILITIES_KEY:
|
||||
return UtilitiesConfig.Enabled;
|
||||
case AREAS.SCADA_KEY:
|
||||
return ScadaConfig.Enabled;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user