public IEnumerable <ExtensionInfo> GetExtensions()
        {
            var result = new List <ExtensionInfo>();

            JToken token;

            if (_jsonObject.TryGetValue("extensions", out token) && token.HasValues)
            {
                var extensionsArray = (JArray)token;
                var extensions      =
                    extensionsArray.Select(
                        x =>
                {
                    var jsonConfig = (JObject)x["configuration"];
                    ICustomConfiguration config = jsonConfig == null ? null : new JsonCustomConfiguration(jsonConfig);

                    return(new ExtensionInfo(Id, x.Value <string>("class"),
                                             x.Value <string>("extensibilityPointId"),
                                             x.Value <string>("id"), config));
                });

                result.AddRange(extensions);
            }

            return(result);
        }
        public IEnumerable <ExtensibilityPointInfo> GetExtensibilityPoints()
        {
            var result = new List <ExtensibilityPointInfo>();

            JToken token;

            if (_jsonObject.TryGetValue("extensibilityPoints", out token) && token.HasValues)
            {
                var extArray  = (JArray)token;
                var extPoints =
                    extArray.Select(
                        x =>
                {
                    var jsonConfig = (JObject)x["configuration"];
                    ICustomConfiguration config = jsonConfig == null ? null : new JsonCustomConfiguration(jsonConfig);

                    var activationMode    = EntityActivationMode.Immediate;
                    var activationSetting = x.Value <string>("activation");
                    if (!string.IsNullOrWhiteSpace(activationSetting))
                    {
                        Enum.TryParse(activationSetting, true, out activationMode);
                    }

                    return(new ExtensibilityPointInfo(Id, x.Value <string>("class"),
                                                      x.Value <string>("id"), activationMode, config));
                });

                result.AddRange(extPoints);
            }

            return(result);
        }
        public void SaveConfiguration(ICustomConfiguration configuration)
        {
            // 1. Build 2 XML files (with attributes and with rpd meters)
            // 1.1 Build attributes
            var atrDoc = new XDocument(
                new XDeclaration("1.0", "utf-8", "no"),
                new XElement(
                    "Attributes",
                    new XElement("Locomotive", new XAttribute("value", configuration.LocomotiveName)),
                    new XElement("Section", new XAttribute("value", configuration.SectionNumber))));

            // 1.2 Build RPD config
            var rpdDoc = new XDocument(
                new XDeclaration("1.0", "utf-8", "no"),
                new XElement("Configuration",
                             new XElement("Meters",
                                          configuration.RpdMetersCustomInfos.Select(
                                              ci => new XElement("Meter",
                                                                 new XAttribute("address", ci.Address),
                                                                 new XAttribute("name", ci.Name),
                                                                 new XAttribute("type", ci.MeterType.ToXmlString()))))));


            byte[] gzippedAtrDocument;
            using (var atrMs = new MemoryStream()) {
                using (var atrGz = new GZipStream(atrMs, CompressionMode.Compress)) {
                    atrDoc.Save(atrGz);
                }
                gzippedAtrDocument = atrMs.ToArray();
            }

            byte[] gzippedRpdDocument;
            using (var rpdMs = new MemoryStream()) {
                using (var rpdGz = new GZipStream(rpdMs, CompressionMode.Compress)) {
                    rpdDoc.Save(rpdGz);
                }
                gzippedRpdDocument = rpdMs.ToArray();
            }


            using (var sw = new BinaryWriter(new FileStream(_fileName, FileMode.OpenOrCreate, FileAccess.Write))) {
                // Clearing or creating file
                for (int i = 0; i < FileSize; ++i)
                {
                    sw.Write((byte)0);
                }
                sw.Seek(0, SeekOrigin.Begin);

                // 2. Save XML To GZIP (len1-xml1-len2-xml2)
                sw.Write((byte)configuration.PsnVersion);
                sw.Write(gzippedAtrDocument.Length);
                sw.Write(gzippedAtrDocument);

                sw.Write(gzippedRpdDocument.Length);
                sw.Write(gzippedRpdDocument);
            }
            // TODO: using and disposing streams
        }
Example #4
0
 // Dependency injection
 public InMemoryData(IFileGenerator fileGenerator,
                     ICustomConfiguration customConfiguration,
                     ITreeBuildService treeBuildService
                     )
 {
     _fileGenerator       = fileGenerator;
     _customConfiguration = customConfiguration;
     _treeBuildService    = treeBuildService;
 }
 public ExtensibilityPointInfo(PackageId packageInfo, string className, string id,
                               EntityActivationMode activationMode, ICustomConfiguration customConfiguration)
 {
     PackageInfo         = packageInfo;
     ClassName           = className;
     Id                  = id;
     ActivationMode      = activationMode;
     CustomConfiguration = customConfiguration;
 }
Example #6
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="packageId">Package ID</param>
 /// <param name="className">Extension class</param>
 /// <param name="extensibilityPointId">Extensibility point ID</param>
 /// <param name="id">Extension ID</param>
 /// <param name="customConfiguration">Extension configuration</param>
 public ExtensionInfo(PackageId packageId, string className, string extensibilityPointId,
                      string id, ICustomConfiguration customConfiguration)
 {
     PackageId            = packageId;
     ClassName            = className;
     ExtensibilityPointId = extensibilityPointId;
     Id = id;
     CustomConfiguration = customConfiguration;
 }
Example #7
0
        }                                                                      // Предполагается, что работа с коллекцией будет производиться из потока пользователя

        public DeviceConfiguration(IWorker <Action> backWorker, IThreadNotifier uiNotifier)
        {
            _backWorker = backWorker;
            _uiNotifier = uiNotifier;
            _flasher    = new DeviceFlasher(_backWorker, _uiNotifier);

            _customConfig  = new CustomConfigurationBuilderDefault().BuildConfiguration();
            _systemConfig  = new SystemConfigurationBuilderDefault().BuildConfiguration();
            _commandConfig = new CommandConfigurationBuilderDefault().BuildConfiguration();

            RpdMeters = new ObservableCollection <IRpdMeter>();

            Comment = string.Empty;

            _cycledPsnCmdPartInfos = new List <ICyclePsnCmdPartInfo>();
            _psnChannelInfos       = new List <IPsnChannelInfo>();
            PsnMeters = new ObservableCollection <IPsnMeter>();
        }
 public SessionFactory(ICustomConfiguration configuration)
 {
     _factory = configuration.Configuration.BuildSessionFactory();
 }
 public CambioTodayService(ICustomConfiguration configuration)
 {
     _configuration = configuration;
 }
 public DirectFileSystemAccess(ICustomConfiguration config, HashAlgorithm hashingSystem)
 {
     Config        = config;
     HashingSystem = hashingSystem;
 }