--- trunk/lib/WebPAC/Output/SWISH.pm 2009/04/24 16:58:09 1149 +++ trunk/lib/WebPAC/Output/SWISH.pm 2009/04/29 18:14:17 1179 @@ -8,15 +8,17 @@ use base qw/WebPAC::Common Class::Accessor/; __PACKAGE__->mk_accessors(qw( database + input type index_path )); -use File::Path qw/make_path/; +use File::Path qw/mkpath/; use Data::Dump qw/dump/; use YAML; use JSON; +use Encode qw/encode/; =head1 NAME @@ -63,7 +65,7 @@ my $database = $self->database || $log->logdie("need database"); - make_path $dir if ! -e $dir; + mkpath $dir if ! -e $dir; my $path = "$dir/$database.conf"; @@ -129,12 +131,14 @@ sub add { my ($self,$id,$ds) = @_; + die "need input" unless $self->input; + my $log = $self->_get_logger; $log->debug("id: $id ds = ",sub { dump($ds) }); my $database = $self->database || $log->logconfess('no database in $self'); - my $uri = $self->database . "/$id"; + my $uri = $self->database . '/' . $self->input . "/$id"; $log->debug("creating $uri"); # filter all tags which have type defined @@ -147,10 +151,14 @@ return unless (@tags); - my $xml = qq{}; - + my $xml = qq{}; my $data; + foreach ( 'database', 'input' ) { + $xml .= "<$_>" . $self->$_ . ""; + $data->{$_} = $self->$_; + } + foreach my $tag (@tags) { my $r = ref $ds->{$tag}->{$type}; @@ -161,9 +169,11 @@ next if ! $vals; $vals =~ s/($escape_re)/$escape{$1}/gs; - $xml .= qq{<$tag>}; + # BW & EW are our markers for tag boundry + $xml .= qq{<$tag>}; $self->{stats}->{attr}->{$tag}++; + $self->{stats}->{input}->{ $self->input }->{$tag}++; $data->{$tag} = $vals; } @@ -172,7 +182,9 @@ $data = to_json($data); $xml .= qq{}; - $xml .= qq{\n}; + $xml .= qq{\n}; + + $xml = encode('utf-8', $xml); my $len = length($xml); @@ -181,7 +193,7 @@ print $fh "Path-Name: $uri\nContent-Length: $len\nDocument-Type: XML\n\n$xml" or die "can't add $uri: $@\n$xml"; - warn "$xml\n"; + $log->debug( $xml ); return 1; }