Exemple #1
0
 public QualityProblemService(
     IAuthInfoProvider authInfoProvider,
     IAppRepositoryBase <QualityProblem> problemRepository,
     IAppRepositoryBase <QualityProblemRectification> rectificationRepository,
     // IAppRepositoryBase<Project> projectRepository,
     IAppDbContextProvider dbContextProvider,
     IDbOperator op,
     IEventBus eventBus,
     IWfEngine wfEngine,
     IProjectHelper projectHelper
     )
 {
     _projectHelper           = projectHelper;
     _authInfoProvider        = authInfoProvider;
     _problemRepository       = problemRepository;
     _rectificationRepository = rectificationRepository;
     //_projectRepository = projectRepository;
     _dbContextProvider = dbContextProvider;
     _eventBus          = eventBus;
     _op = op;
     _runtimeProvider   = wfEngine.GetRuntimeProvider();
     _taskProvider      = wfEngine.GetTaskProvider();
     _definitionProvder = wfEngine.GetDefinitionProvider();
     _historyProvider   = wfEngine.GetHistoryProvider();
 }
Exemple #2
0
 public ProjectService(
     IAppRepositoryBase <Project> projectRepository,
     IAppRepositoryBase <ProjectUnit> projectUnitRepository,
     IAuthInfoProvider authInfoProvider,
     IWfEngine wfEngine,
     IAuthorizationRepositoryBase <User> userRepository,
     IAuthorizationRepositoryBase <UserUnit> userUnitRepository,
     IAppDbContextProvider dbContextProvider,
     IMessagingProvider messagingProvider,
     IProjectHelper projectHelper
     )
 {
     _projectHelper         = projectHelper;
     _messagingProvider     = messagingProvider;
     _authInfoProvider      = authInfoProvider;
     _userRepository        = userRepository;
     _userUnitRepository    = userUnitRepository;
     _runtimeProvider       = wfEngine.GetRuntimeProvider();
     _taskProvider          = wfEngine.GetTaskProvider();
     _definitionProvder     = wfEngine.GetDefinitionProvider();
     _historyProvider       = wfEngine.GetHistoryProvider();
     _dbContextProvider     = dbContextProvider;
     _projectRepository     = projectRepository;
     _projectUnitRepository = projectUnitRepository;
 }
 public FragmentGenerators(
     IDefinitionProvider definitionProvider,
     IDataProvider dataProvider)
 {
     _definitionProvider = definitionProvider;
     _dataProvider       = dataProvider;
 }
Exemple #4
0
 public QualityAccidentService(
     IAuthInfoProvider authInfoProvider,
     IAppRepositoryBase <QualityAccident> accidentRepository,
     IAppRepositoryBase <QualityAccidentDisposal> disposalRepository,
     //  IAppRepositoryBase<Project> projectRepository,
     IAppDbContextProvider dbContextProvider,
     IDbOperator op,
     IEventBus eventBus,
     IWfEngine wfEngine,
     IProjectHelper projectHelper
     )
 {
     _projectHelper      = projectHelper;
     _authInfoProvider   = authInfoProvider;
     _accidentRepository = accidentRepository;
     _disposalRepository = disposalRepository;
     // _projectRepository = projectRepository;
     _dbContextProvider = dbContextProvider;
     _eventBus          = eventBus;
     _op = op;
     _runtimeProvider   = wfEngine.GetRuntimeProvider();
     _taskProvider      = wfEngine.GetTaskProvider();
     _definitionProvder = wfEngine.GetDefinitionProvider();
     _historyProvider   = wfEngine.GetHistoryProvider();
 }
Exemple #5
0
 public void TestInitialize()
 {
     _definitionProvider = new TestDefinitionProvider();
     _dataProvider       = new TestDataProvider();
     _generator          = new FragmentGenerators(_definitionProvider, _dataProvider);
     _macroVariables     = new TestMacroVariables();
 }
        public void TestInitialize()
        {
            _definitionProvider = new TestDefinitionProvider();
            _dataProvider       = new TestDataProvider();
            _generator          = new FragmentGenerators(_definitionProvider, _dataProvider);
            _macroVariables     = new TestMacroVariables();
            var direction = new Direction(TestSynonyms.GetSynonyms());

            _renderer = new Basic10KRenderer(_macroVariables, _definitionProvider.Templates, direction);
        }
Exemple #7
0
        public static IDefinitionProvider[] SetupDefinitionProviders(DefinitionMap map, params Type[] itemTypes)
        {
            IDefinitionProvider[] definitionProviders;
            ITypeFinder           typeFinder = new Fakes.FakeTypeFinder(itemTypes.Select(t => t.Assembly).FirstOrDefault() ?? Assembly.GetExecutingAssembly(), itemTypes);

            var definitionBuilder = new DefinitionBuilder(map, typeFinder, new TransformerBase <IUniquelyNamed> [0], SetupEngineSection());

            definitionProviders = new IDefinitionProvider[] { new DefinitionProvider(definitionBuilder) };
            return(definitionProviders);
        }
Exemple #8
0
        public static void Setup(out IDefinitionProvider[] definitionProviders, out IDefinitionManager definitions, out ContentActivator activator, out IItemNotifier notifier, out InterceptingProxyFactory proxyFactory, params Type[] itemTypes)
        {
            ITypeFinder typeFinder = new Fakes.FakeTypeFinder(itemTypes[0].Assembly, itemTypes);

            DefinitionBuilder definitionBuilder = new DefinitionBuilder(new DefinitionMap(), typeFinder, new TransformerBase <IUniquelyNamed> [0], SetupEngineSection());

            notifier            = new ItemNotifier();
            proxyFactory        = new InterceptingProxyFactory();
            activator           = new ContentActivator(new N2.Edit.Workflow.StateChanger(), notifier, proxyFactory);
            definitionProviders = new IDefinitionProvider[] { new DefinitionProvider(definitionBuilder) };
            definitions         = new DefinitionManager(definitionProviders, new ITemplateProvider[0], activator, new StateChanger());
            ((DefinitionManager)definitions).Start();
        }
Exemple #9
0
 public ProcessDefinitionService(IWfEngine wfEngine,
                                 IAppDbContextProvider dbContextProvider,
                                 IAppRepositoryBase <RoleProcessDefinition> roleProcessDefinitionRepository,
                                 IWorkflowRepositoryBase <Wf_Re_ProcessDefinition> processDefinitionRepository,
                                 IAuthorizationRepositoryBase <User> userRepository,
                                 IAuthInfoProvider authInfoProvider
                                 )
 {
     _userRepository     = userRepository;
     _authInfoProvider   = authInfoProvider;
     _definitionProvider = wfEngine.GetDefinitionProvider();
     _dbContextProvider  = dbContextProvider;
     _roleProcessDefinitionRepository = roleProcessDefinitionRepository;
     _processDefinitionRepository     = processDefinitionRepository;
 }
Exemple #10
0
 public ContractPaymentService(
     IAuthInfoProvider authInfoProvider,
     IAppRepositoryBase <ContractPayment> contractPaymentRepository,
     IAppDbContextProvider dbContextProvider,
     IWfEngine wfEngine
     )
 {
     _authInfoProvider          = authInfoProvider;
     _contractPaymentRepository = contractPaymentRepository;
     _dbContextProvider         = dbContextProvider;
     _runtimeProvider           = wfEngine.GetRuntimeProvider();
     _taskProvider      = wfEngine.GetTaskProvider();
     _definitionProvder = wfEngine.GetDefinitionProvider();
     _historyProvider   = wfEngine.GetHistoryProvider();
 }
Exemple #11
0
        /// <summary>Creates a new instance of the <see cref="ConfigurationBuilder"/>.</summary>
        public ConfigurationBuilder(IDefinitionProvider[] definitionProviders, ClassMappingGenerator generator, IWebContext webContext, ConfigurationBuilderParticipator[] participators, DatabaseSection config, ConnectionStringsSection connectionStrings)
        {
            this.definitionProviders = definitionProviders;
            this.generator = generator;
            this.webContext = webContext;
            this.participators = participators;

            if (config == null) config = new DatabaseSection();
            TryLocatingHbmResources = config.TryLocatingHbmResources;
            tablePrefix = config.TablePrefix;
            batchSize = config.BatchSize;
            childrenLaziness = config.ChildrenLaziness;

            SetupProperties(config, connectionStrings);
            SetupMappings(config);
        }
Exemple #12
0
 public EarlyStageService(
     IAuthInfoProvider authInfoProvider,
     IAppRepositoryBase <EarlyStage> earlyStageRepository,
     IAppDbContextProvider dbContextProvider,
     IEventBus eventBus,
     IWfEngine wfEngine
     )
 {
     _authInfoProvider     = authInfoProvider;
     _earlyStageRepository = earlyStageRepository;
     _dbContextProvider    = dbContextProvider;
     _eventBus             = eventBus;
     _runtimeProvider      = wfEngine.GetRuntimeProvider();
     _taskProvider         = wfEngine.GetTaskProvider();
     _definitionProvder    = wfEngine.GetDefinitionProvider();
     _historyProvider      = wfEngine.GetHistoryProvider();
 }
Exemple #13
0
 public RecordService(
     IAppRepositoryBase <Record> recordRepository,
     IAuthInfoProvider authInfoProvider,
     IWfEngine wfEngine,
     IAuthorizationRepositoryBase <User> userRepository,
     IAppDbContextProvider dbContextProvider,
     IMessagingProvider messagingProvider)
 {
     _recordRepository  = recordRepository;
     _messagingProvider = messagingProvider;
     _authInfoProvider  = authInfoProvider;
     _userRepository    = userRepository;
     _runtimeProvider   = wfEngine.GetRuntimeProvider();
     _taskProvider      = wfEngine.GetTaskProvider();
     _definitionProvder = wfEngine.GetDefinitionProvider();
     _historyProvider   = wfEngine.GetHistoryProvider();
     _dbContextProvider = dbContextProvider;
 }
 public BungieClient(
     ILogger logger,
     IBungieApiAccess apiAccess,
     IAuthorizationHandler authorizationHandler,
     IDestiny2DefinitionRepository repository,
     IDefinitionProvider definitionProvider,
     IDestiny2ResetService destiny2ResetService,
     BungieClientConfiguration configuration,
     IServiceProvider serviceProvider)
 {
     _logger            = logger;
     ResetService       = destiny2ResetService;
     _configuration     = configuration;
     Authentication     = authorizationHandler;
     Repository         = repository;
     ApiAccess          = apiAccess;
     DefinitionProvider = definitionProvider;
     ServiceProviderInstance.Instance = serviceProvider;
 }
Exemple #15
0
 public ProjectTaskService(
     IAppRepositoryBase <ProjectTask> taskRepository,
     IAppRepositoryBase <ProjectGantt> ganttRepository,
     IAuthInfoProvider authInfoProvider,
     IWfEngine wfEngine,
     IAuthorizationRepositoryBase <User> userRepository,
     IAppDbContextProvider dbContextProvider,
     IProjectHelper projectHelper
     )
 {
     _ganttRepository       = ganttRepository;
     _projectHelper         = projectHelper;
     _authInfoProvider      = authInfoProvider;
     _userRepository        = userRepository;
     _runtimeProvider       = wfEngine.GetRuntimeProvider();
     _taskProvider          = wfEngine.GetTaskProvider();
     _definitionProvder     = wfEngine.GetDefinitionProvider();
     _historyProvider       = wfEngine.GetHistoryProvider();
     _dbContextProvider     = dbContextProvider;
     _projectTaskRepository = taskRepository;
 }
Exemple #16
0
        public MemorabiliaRecordService(
            IAuthInfoProvider authInfoProvider,
            IWfEngine wfEngine,
            IAppRepositoryBase <MemorabiliaRecord> recordRepository,
            //IAppRepositoryBase<Project> projectRepository,
            IAppDbContextProvider dbContextProvider,
            IProjectHelper projectHelper


            )
        {
            _projectHelper    = projectHelper;
            _authInfoProvider = authInfoProvider;
            _recordRepository = recordRepository;
            // _projectRepository = projectRepository;
            _dbContextProvider = dbContextProvider;
            _runtimeProvider   = wfEngine.GetRuntimeProvider();
            _taskProvider      = wfEngine.GetTaskProvider();
            _definitionProvder = wfEngine.GetDefinitionProvider();
            _historyProvider   = wfEngine.GetHistoryProvider();
        }
Exemple #17
0
        public static void Main(string[] args)
        {
            var  mode        = Mode.Unknown;
            bool multiExport = true;
            bool showHelp    = false;
            bool quiet       = false;

            var options = new OptionSet()
            {
                {
                    "fcb",
                    "convert XML to FCB",
                    v => mode = v != null ? Mode.ToFCB : mode
                },
                {
                    "xml",
                    "convert FCB to XML",
                    v => mode = v != null ? Mode.ToXML : mode
                },
                {
                    "m|multi-export",
                    "when converting FCB to XML, export to many files when possible",
                    v => multiExport = v != null
                },
                {
                    "q|quiet",
                    "be quiet",
                    v => quiet = v != null
                },
                {
                    "h|help",
                    "show this message and exit",
                    v => showHelp = v != null
                },
            };

            List <string> extras;

            try
            {
                extras = options.Parse(args);
            }
            catch (OptionException e)
            {
                Console.Write("{0}: ", GetExecutableName());
                Console.WriteLine(e.Message);
                Console.WriteLine("Try `{0} --help' for more information.", GetExecutableName());
                return;
            }

            if (mode == Mode.Unknown &&
                extras.Count >= 1)
            {
                var extension = Path.GetExtension(extras[0]);

                if (extension == ".fcb")
                {
                    mode = Mode.ToXML;
                }
                else if (extension == ".xml")
                {
                    mode = Mode.ToFCB;
                }
            }

            if (showHelp == true ||
                mode == Mode.Unknown ||
                extras.Count < 1 ||
                extras.Count > 2)
            {
                Console.WriteLine("Usage: {0} [OPTIONS]+ input [output]", GetExecutableName());
                Console.WriteLine();
                Console.WriteLine("Options:");
                options.WriteOptionDescriptions(Console.Out);
                return;
            }

            if (quiet == false)
            {
                Console.WriteLine("Loading project...");
            }

            var manager = ProjectData.Manager.Load();
            IDefinitionProvider defs = null;

            if (manager.ActiveProject == null)
            {
                Console.WriteLine("Warning: no active project loaded.");
                return;
            }
            else
            {
                defs = Definitions.Load(Path.Combine(manager.ActiveProject.ListsPath, "binary_classes.xml"));
            }

            if (mode == Mode.ToFCB)
            {
                string inputPath = extras[0];
                string outputPath;
                string basePath;

                if (extras.Count > 1)
                {
                    outputPath = extras[1];
                }
                else
                {
                    outputPath  = Path.ChangeExtension(inputPath, null);
                    outputPath += "_converted.fcb";
                }

                basePath = Path.ChangeExtension(inputPath, null);

                inputPath  = Path.GetFullPath(inputPath);
                outputPath = Path.GetFullPath(outputPath);
                basePath   = Path.GetFullPath(basePath);

                var bf = new BinaryResourceFile();

                using (var input = File.OpenRead(inputPath))
                {
                    if (quiet == false)
                    {
                        Console.WriteLine("Loading XML...");
                    }

                    var doc = new XPathDocument(input);
                    var nav = doc.CreateNavigator();

                    var root = nav.SelectSingleNode("/object");
                    if (root == null)
                    {
                        throw new FormatException();
                    }

                    if (quiet == false)
                    {
                        Console.WriteLine("Reading XML...");
                    }

                    bf.Root = ReadNode(basePath, root);
                }

                if (quiet == false)
                {
                    Console.WriteLine("Writing FCB...");
                }

                using (var output = File.Create(outputPath))
                {
                    bf.Serialize(output);
                }
            }
            else if (mode == Mode.ToXML)
            {
                string inputPath = extras[0];
                string outputPath;
                string basePath;
                if (extras.Count > 1)
                {
                    outputPath = extras[1];
                    basePath   = Path.ChangeExtension(outputPath, null);
                }
                else
                {
                    outputPath  = Path.ChangeExtension(inputPath, null);
                    outputPath += "_converted";
                    basePath    = outputPath;
                    outputPath += ".xml";
                }

                inputPath  = Path.GetFullPath(inputPath);
                outputPath = Path.GetFullPath(outputPath);
                basePath   = Path.GetFullPath(basePath);

                if (quiet == false)
                {
                    Console.WriteLine("Reading binary...");
                }

                var bf = new BinaryResourceFile();
                using (var input = File.OpenRead(inputPath))
                {
                    bf.Deserialize(input);
                }

                var settings = new XmlWriterSettings();
                settings.Encoding           = Encoding.UTF8;
                settings.Indent             = true;
                settings.CheckCharacters    = false;
                settings.OmitXmlDeclaration = true;

                if (quiet == false)
                {
                    Console.WriteLine("Writing XML...");
                }

                if (multiExport == true &&
                    bf.Root.Values.Count == 0 &&
                    bf.Root.TypeHash == 0xBCDD10B4 &&
                    bf.Root.Children.Where(c => c.TypeHash != 0xE0BDB3DB).Count() == 0)
                {
                    using (var writer = XmlWriter.Create(outputPath, settings))
                    {
                        writer.WriteStartDocument();

                        var root = bf.Root;
                        {
                            writer.WriteStartElement("object");

                            var def = defs.GetClassDefinition(root.TypeHash);

                            if (def.Name != null)
                            {
                                writer.WriteAttributeString("type", def.Name);
                            }

                            writer.WriteAttributeString("hash", root.TypeHash.ToString("X8"));

                            int counter   = 0;
                            int padLength = root.Children.Count.ToString().Length;
                            foreach (var child in root.Children)
                            {
                                counter++;

                                string childName = counter.ToString().PadLeft(padLength, '0');

                                // name
                                if (child.Values.ContainsKey(0xFE11D138) == true)
                                {
                                    var value = child.Values[0xFE11D138];
                                    childName += "_" + Encoding.UTF8.GetString(value, 0, value.Length - 1);
                                }

                                Directory.CreateDirectory(basePath);

                                var childPath = Path.Combine(basePath, childName + ".xml");
                                using (var childWriter = XmlWriter.Create(childPath, settings))
                                {
                                    childWriter.WriteStartDocument();
                                    WriteNode(childWriter, child, defs);
                                    childWriter.WriteEndDocument();
                                }

                                writer.WriteStartElement("object");
                                writer.WriteAttributeString("external", Path.GetFileName(childPath));
                                writer.WriteEndElement();
                            }

                            writer.WriteEndElement();
                        }

                        writer.WriteEndDocument();
                    }
                }
                else
                {
                    using (var writer = XmlWriter.Create(outputPath, settings))
                    {
                        writer.WriteStartDocument();
                        WriteNode(writer, bf.Root, defs);
                        writer.WriteEndDocument();
                    }
                }
            }
            else
            {
                throw new InvalidOperationException();
            }
        }
Exemple #18
0
 public ProcessDefinitionController(IWfEngine wfEngine, IProcessDefinitionService processDefinitionService)
 {
     _processProvider          = wfEngine.GetDefinitionProvider();
     _processDefinitionService = processDefinitionService;
 }
Exemple #19
0
        private static void WriteNode(
            XmlWriter writer,
            BinaryResourceFile.Object node,
            IDefinitionProvider provider)
        {
            var def = provider.GetClassDefinition(node.TypeHash);

            writer.WriteStartElement("object");

            if (def.Name != null)
            {
                writer.WriteAttributeString("type", def.Name);
            }
            else
            {
                writer.WriteAttributeString("hash", node.TypeHash.ToString("X8"));
            }

            if (node.Values != null &&
                node.Values.Count > 0)
            {
                foreach (var kv in node.Values)
                {
                    writer.WriteStartElement("value");

                    var member = def.GetMemberDefinition(kv.Key);

                    if (member != null && member.Name != null)
                    {
                        writer.WriteAttributeString("name", member.Name);
                    }
                    else
                    {
                        writer.WriteAttributeString("hash", kv.Key.ToString("X8"));
                    }

                    if (member == null)
                    {
                        writer.WriteAttributeString("type", MemberType.BinHex.ToString());
                        writer.WriteBinHex(kv.Value, 0, kv.Value.Length);
                    }
                    else
                    {
                        writer.WriteAttributeString("type", member.Type.ToString());

                        switch (member.Type)
                        {
                        case MemberType.BinHex:
                        {
                            writer.WriteBinHex(kv.Value, 0, kv.Value.Length);
                            break;
                        }

                        case MemberType.Hash:
                        {
                            if (kv.Value.Length != 4)
                            {
                                throw new FormatException();
                            }

                            writer.WriteString(BitConverter.ToUInt32(kv.Value, 0).ToString("X8", CultureInfo.InvariantCulture));
                            break;
                        }

                        case MemberType.String:
                        {
                            if (kv.Value.Length < 1)
                            {
                                throw new FormatException();
                            }
                            else if (kv.Value[kv.Value.Length - 1] != 0)
                            {
                                throw new FormatException();
                            }

                            writer.WriteString(Encoding.UTF8.GetString(kv.Value, 0, kv.Value.Length - 1));
                            break;
                        }

                        case MemberType.Enum:
                        {
                            if (kv.Value.Length != 4)
                            {
                                throw new FormatException();
                            }

                            writer.WriteString(BitConverter.ToUInt32(kv.Value, 0).ToString(CultureInfo.InvariantCulture));
                            break;
                        }

                        case MemberType.Bool:
                        {
                            if (kv.Value.Length != 1)
                            {
                                throw new FormatException();
                            }

                            writer.WriteString((kv.Value[0] != 0 ? true : false).ToString());
                            break;
                        }

                        case MemberType.Float:
                        {
                            if (kv.Value.Length != 4)
                            {
                                throw new FormatException();
                            }

                            writer.WriteString(BitConverter.ToSingle(kv.Value, 0).ToString(CultureInfo.InvariantCulture));
                            break;
                        }

                        case MemberType.Int32:
                        {
                            if (kv.Value.Length != 4)
                            {
                                throw new FormatException();
                            }

                            writer.WriteString(BitConverter.ToInt32(kv.Value, 0).ToString(CultureInfo.InvariantCulture));
                            break;
                        }

                        case MemberType.UInt32:
                        {
                            if (kv.Value.Length != 4)
                            {
                                throw new FormatException();
                            }

                            writer.WriteString(BitConverter.ToUInt32(kv.Value, 0).ToString(CultureInfo.InvariantCulture));
                            break;
                        }

                        case MemberType.Int64:
                        {
                            if (kv.Value.Length != 8)
                            {
                                throw new FormatException();
                            }

                            writer.WriteString(BitConverter.ToInt64(kv.Value, 0).ToString(CultureInfo.InvariantCulture));
                            break;
                        }

                        case MemberType.UInt64:
                        {
                            if (kv.Value.Length != 8)
                            {
                                throw new FormatException();
                            }

                            writer.WriteString(BitConverter.ToUInt64(kv.Value, 0).ToString(CultureInfo.InvariantCulture));
                            break;
                        }

                        case MemberType.Vector2:
                        {
                            if (kv.Value.Length != 4 * 2)
                            {
                                throw new FormatException();
                            }

                            writer.WriteElementString("x", BitConverter.ToSingle(kv.Value, 0).ToString(CultureInfo.InvariantCulture));
                            writer.WriteElementString("y", BitConverter.ToSingle(kv.Value, 4).ToString(CultureInfo.InvariantCulture));
                            break;
                        }

                        case MemberType.Vector3:
                        {
                            if (kv.Value.Length != 4 * 3)
                            {
                                throw new FormatException();
                            }

                            writer.WriteElementString("x", BitConverter.ToSingle(kv.Value, 0).ToString(CultureInfo.InvariantCulture));
                            writer.WriteElementString("y", BitConverter.ToSingle(kv.Value, 4).ToString(CultureInfo.InvariantCulture));
                            writer.WriteElementString("z", BitConverter.ToSingle(kv.Value, 8).ToString(CultureInfo.InvariantCulture));
                            break;
                        }

                        case MemberType.Vector4:
                        {
                            if (kv.Value.Length != 4 * 4)
                            {
                                throw new FormatException();
                            }

                            writer.WriteElementString("x", BitConverter.ToSingle(kv.Value, 0).ToString(CultureInfo.InvariantCulture));
                            writer.WriteElementString("y", BitConverter.ToSingle(kv.Value, 4).ToString(CultureInfo.InvariantCulture));
                            writer.WriteElementString("z", BitConverter.ToSingle(kv.Value, 8).ToString(CultureInfo.InvariantCulture));
                            writer.WriteElementString("w", BitConverter.ToSingle(kv.Value, 12).ToString(CultureInfo.InvariantCulture));
                            break;
                        }

                        case MemberType.UInt32Array:
                        {
                            if (kv.Value.Length < 4)
                            {
                                throw new FormatException();
                            }

                            var count = BitConverter.ToInt32(kv.Value, 0);
                            if (kv.Value.Length != 4 + (count * 4))
                            {
                                throw new FormatException();
                            }

                            for (int i = 0, offset = 4; i < count; i++, offset += 4)
                            {
                                writer.WriteElementString("item", BitConverter.ToUInt32(kv.Value, offset).ToString(CultureInfo.InvariantCulture));
                            }

                            break;
                        }

                        case MemberType.HashArray:
                        {
                            if (kv.Value.Length < 4)
                            {
                                throw new FormatException();
                            }

                            var count = BitConverter.ToInt32(kv.Value, 0);
                            if (kv.Value.Length != 4 + (count * 4))
                            {
                                throw new FormatException();
                            }

                            for (int i = 0, offset = 4; i < count; i++, offset += 4)
                            {
                                writer.WriteElementString("item", BitConverter.ToUInt32(kv.Value, offset).ToString("X8"));
                            }

                            break;
                        }

                        case MemberType.Rml:
                        {
                            var rez = new XmlResourceFile();
                            using (var input = new MemoryStream(kv.Value))
                            {
                                rez.Deserialize(input);
                            }

                            writer.WriteStartElement("rml");
                            ConvertXml.Program.WriteNode(writer, rez.Root);
                            writer.WriteEndElement();
                            break;
                        }

                        default:
                        {
                            throw new NotSupportedException();
                        }
                        }
                    }

                    writer.WriteEndElement();
                }
            }

            if (node.Children != null &&
                node.Children.Count > 0)
            {
                foreach (var child in node.Children)
                {
                    WriteNode(writer, child, def);
                }
            }

            writer.WriteEndElement();
        }