public void ShouldTransformFromNoarkihToAddml()
        {
            string noark4Xml = TestUtil.ReadFromFileInTestDataDir("noark4\\NOARKIH.XML");

            string noark3Xml = NoarkihToAddmlTransformer.Transform(noark4Xml);

            addml addml = AddmlUtil.ReadFromString(noark3Xml);

            addml.Should().NotBeNull();

            addml.dataset[0].flatFiles.flatFile.Length.Should().Be(67);
            addml.dataset[0].flatFiles.flatFileDefinitions.Length.Should().Be(67);
        }
Exemplo n.º 2
0
        private void ConvertNoarkihToAddmlIfNoark4(Archive archive)
        {
            if (archive.ArchiveType != ArchiveType.Noark4)
            {
                return;
            }

            FileInfo addmlFileInContentFolder = archive.WorkingDirectory.Content().WithFile(ArkadeConstants.AddmlXmlFileName);

            if (addmlFileInContentFolder.Exists)
            {
                _log.Information("{0} already exists. XSLT transformation of {1} skipped.",
                                 ArkadeConstants.AddmlXmlFileName, ArkadeConstants.NoarkihXmlFileName);
                return;
            }

            FileInfo noarkihFile = archive.WorkingDirectory.Content().WithFile(ArkadeConstants.NoarkihXmlFileName);

            if (!noarkihFile.Exists)
            {
                Log.Warning("Expected file not found: " + noarkihFile.FullName);

                return;
            }

            string noarkihString = File.ReadAllText(noarkihFile.FullName);

            try
            {
                // TODO: Use stream instead of strings
                string addmlString = NoarkihToAddmlTransformer.Transform(noarkihString);

                // Verify correct ADDML file
                AddmlUtil.ReadFromString(addmlString);

                FileInfo addmlFileToWrite = archive.WorkingDirectory.AdministrativeMetadata().WithFile(ArkadeConstants.AddmlXmlFileName);

                File.WriteAllText(addmlFileToWrite.FullName, addmlString);
                _log.Information("Successfully transformed {0} to {1}.", ArkadeConstants.NoarkihXmlFileName,
                                 ArkadeConstants.AddmlXmlFileName);
            }
            catch (Exception e)
            {
                string message = string.Format(Resources.Messages.Noark4ConvertNoarkihFileError,
                                               ArkadeConstants.NoarkihXmlFileName,
                                               ArkadeConstants.AddmlXmlFileName);

                throw new ArkadeException(message, e);
            }
        }