From: longinus Date: Fri, 10 Aug 2012 02:41:27 +0000 (+0000) Subject: first implementation of restore X-Git-Url: http://git.osdn.net/view?p=rec10%2Frec10-git.git;a=commitdiff_plain;h=1e7c7fe757608764919473b550d8328a742c69c0;ds=sidebyside first implementation of restore git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/rec10@948 4e526526-5e11-4fc0-8910-f8fd03428081 --- diff --git a/rectool/trunk/rectool.pl b/rectool/trunk/rectool.pl index 95a3dec..93f7e8b 100755 --- a/rectool/trunk/rectool.pl +++ b/rectool/trunk/rectool.pl @@ -34,6 +34,7 @@ use XML::Atom::Feed; use XML::Atom::Entry; use XML::Generator::DBI; use XML::SAX::Writer; +use XML::TreePP; #%DB::packages = ( 'main' => 1 ); @@ -1735,7 +1736,7 @@ if ( $mode eq 'expert' ) { goto end; } - if ( $mode_sub eq 'dump' ) { + if ( $params{ 'dump' } ) { # id、epgXXを除外して出力 my $sth = $dbh->prepare( "SELECT type, chtxt, title, btime, etime, deltatime, deltaday, opt, counter @@ -1750,11 +1751,39 @@ if ( $mode eq 'expert' ) { ); $gen->execute($sth); # $HTML .= join "\n", @{$yaw->{Strings}}; - print "Content-Type: text/xml\n\n"; + utf8::encode($output); + my $len = length $output; + print "Content-Type: text/xml\n"; + print "Content-Length: $len\n"; + print "Content-Disposition: attachment; filename=\"rec10-reserve-dump.xml\"\n\n"; print $output; exit; } + if ( $params{ 'restore' } ) { + my $fh = $q->upload('upfile'); + my $xml = read_file( $fh ); + my $tpp = XML::TreePP->new; + my $tree = $tpp->parse( $xml ); + my @rows = @{ $tree->{database}->{select}->{row} }; + + # 高速化のためVALUESを連結 + # INSERT INTO timeline ( ... ) VALUES ( aa, bb, cc ), ( kk, ll, mm ), ( xx, yy, zz ) + my @keys = qw/type chtxt title btime etime deltatime deltaday opt counter/; + my $keys = join ', ', @keys; + my @values; + + foreach my $row ( @rows ) { + my $values = join ', ', map { "'".$row->{'-'.$_}."'" } @keys; + utf8::decode( $values ); + push @values, "( $values )"; + } + my $sql = "INSERT INTO timeline ( $keys ) VALUES " . join ', ', @values; + $dbh->do( "TRUNCATE TABLE timeline" ); + $dbh->do( $sql ); + goto end; + } + my @ary = $dbh->selectrow_array( "SELECT auto_jbk, auto_bayes, auto_del_tmp, auto_opt FROM in_settings " ); @@ -1829,6 +1858,17 @@ if ( $mode eq 'expert' ) { } + $HTML .= qq {
\n予約の保存・復元
\n}; + $HTML .= qq {
\n}; + $HTML .= qq {
\n}; + $HTML .= qq {\n}; + $HTML .= qq {\n}; + $HTML .= qq {\n}; + $HTML .= qq {\n}; + $HTML .= qq {
\n}; + $HTML .= qq {
\n}; + + $ary_ref = $dbh->selectall_arrayref( "SELECT chname, chtxt, bctype, ch, csch, tsid, updatetime, status, visible FROM epg_ch diff --git a/rectool/trunk/rectool.spec b/rectool/trunk/rectool.spec index 7fd51fe..1d6c95f 100644 --- a/rectool/trunk/rectool.spec +++ b/rectool/trunk/rectool.spec @@ -14,7 +14,7 @@ BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) BuildRequires: make Requires: perl-Algorithm-Diff perl-Archive-Zip perl-CGI perl-Config-Simple perl-Data-Dumper-Concise Requires: perl-Date-Simple perl-DateTime perl-DBI perl-File-Slurp perl-Sort-Naturally perl-SVG -Requires: perl-Time-Piece perl-Tie-IxHash perl-List-Compare perl-XML-Atom perl-XML-Generator-DBI XML-SAX-Writer +Requires: perl-Time-Piece perl-Tie-IxHash perl-List-Compare perl-XML-Atom perl-XML-Generator-DBI perl-XML-SAX-Writer perl-XML-TreePP %description rectool-0.0.1