r262@brr: dpavlin | 2007-11-25 14:33:40 +0100
[perl-cwmp.git] / lib / CWMP / Store / YAML.pm
index 6b5ea15..a523443 100644 (file)
@@ -4,110 +4,43 @@ package CWMP::Store::YAML;
 use strict;
 use warnings;
 
-use Data::Dump qw/dump/;
+use CWMP::Store::HASH;
+use base qw/CWMP::Store::HASH/;
+
 use YAML::Syck;
-use Hash::Merge qw/merge/;
-use Carp qw/confess/;
 
 =head1 NAME
 
 CWMP::Store::YAML - use YAML as storage
 
-=head1 METHODS
-
-=head2 open
-
-  $store->open({
-       path => 'var/',
-       debug => 1,
-       clean => 1,
-  });
-
-=cut
-
-my $path;
-
-my $debug = 0;
-
-sub open {
-       my $self = shift;
-
-       my $args = shift;
-
-       $debug = $args->{debug};
-       $path = $args->{path} || confess "no path?";
-
-       warn "open ",dump( $args ) if $debug;
-
-       $path = "$path/yaml";
-
-       if ( ! -e $path ) {
-               mkdir $path || die "can't create $path: $!";
-               warn "created $path directory\n" if $debug;
-       } elsif ( $args->{clean} ) {
-               warn "removed old $path\n" if $debug;
-               foreach my $uid ( $self->all_uids ) {
-                       my $file = "$path/$uid.yml";
-                       unlink $file || die "can't remove $file: $!";
-               }
-       }
-
-
-}
-
-=head2 update_uid_state
-
-  $store->update_uid_state( $uid, $state );
-
 =cut
 
-sub update_uid_state {
-       my ( $self, $uid, $state ) = @_;
-
-       my $file = "$path/$uid.yml";
-
-       my $old_state = $self->get_state( $uid );
-
-       my $combined = merge( $state, $old_state );
-
-#      warn "## ",dump( $old_state, $state, $combined );
-
-       DumpFile( $file, $combined ) || die "can't write $file: $!";
+my $full_path;
 
+sub full_path {
+       my ( $self, $path ) = @_;
+       $full_path = "$path/yaml";
+       warn "## full_path: $full_path";
+       return $full_path;
 }
 
-=head2 get_state
-
-  $store->get_state( $uid );
-
-=cut
-
-sub get_state {
+sub file {
        my ( $self, $uid ) = @_;
-
-       my $file = "$path/$uid.yml";
-
-       if ( -e $file ) {
-               return LoadFile( $file );
-       }
-
-       return;
+       my $file = "$full_path/$uid" . $self->extension;
+       warn "## file -> $file";
+       return $file;
 }
 
-=head2 all_uids
-
-  my @uids = $store->all_uids;
-
-=cut
-
-sub all_uids {
-       my $self = shift;
-
-       opendir(my $d, $path) || die "can't opendir $path: $!";
-       my @uids = grep { /\.yml$/ && -f "$path/$_" } readdir($d);
-       closedir $d;
+sub save_hash {
+       my ( $self, $file, $hash ) = @_;
+       DumpFile( $file, $hash );
+}
 
-       return map { my $l = $_; $l =~ s/\.yml$//; $l } @uids;
+sub load_hash {
+       my ( $self, $file ) = @_;
+       LoadFile( $file );
 }
 
+sub extension { '.yml' };
+
 1;