package Metadata::Dumper::XML;

use lib '/app/tools/common/lib';
use Common::Assert;
use Data::Dumper;

use lib '/app/tools/distribution/lib';
use Distribution::Util;

use lib '/app/tools/metadata/lib';
use Metadata::Dumper;

use base 'Metadata::Dumper';

use XML::LibXML;
use XML::LibXSLT;

use constant TRANSFORM => '/app/tools/metadata/templates/metadataExport_v1.xsl';

sub _getTransformFile { TRANSFORM }

sub _transform {
    my $self          = shift;
    my $xmlSource     = shift;
    my $transformFile = shift;

    assert($xmlSource);
    assert( -f $transformFile );

    my $xml_parser  = new XML::LibXML();
    my $xslt_parser = new XML::LibXSLT();

    my $xsl_source = $xml_parser->parse_file($transformFile);
    assert($xsl_source);

    my $xml_source = $xml_parser->parse_string($xmlSource);
    assert($xml_source);

    my $stylesheet = $xslt_parser->parse_stylesheet($xsl_source);
    die "no stylesheet produced: file = " . $transformFile if !$stylesheet;

    $result = $stylesheet->transform($xml_source);
    return Distribution::Util::xml_pp( $stylesheet->output_string($result) );
}

1;
