r8490@llin: dpavlin | 2005-10-12 16:03:29 +0200
authordpavlin <dpavlin@8392b6e1-25fa-0310-8288-cc32f8e212ea>
Wed, 12 Oct 2005 16:49:02 +0000 (16:49 +0000)
committerdpavlin <dpavlin@8392b6e1-25fa-0310-8288-cc32f8e212ea>
Wed, 12 Oct 2005 16:49:02 +0000 (16:49 +0000)
 generate XML description in ISO image

git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/BackupPC/trunk@188 8392b6e1-25fa-0310-8288-cc32f8e212ea

bin/BackupPC_burnArchiveCLI
lib/BackupPC/SearchLib.pm

index fc4f99e..b5aa82e 100755 (executable)
@@ -55,6 +55,89 @@ sub curr_time {
        return strftime($t_fmt,localtime());
 }
 
+sub dumpArchive2XML($$$)
+{
+       my ($dbh, $dvd_nr, $filename) = @_;
+       my %archive;    
+       my $output = new IO::File(">$filename");
+       my $writer = new XML::Writer(OUTPUT=>$output, NEWLINES => 1);
+
+       my $files_sql = q{
+               SELECT 
+                       files.path AS path,
+                       files.date AS date,
+                       files.type AS type,
+                       files.size AS size
+               FROM files, backups, shares
+               WHERE files.backupnum=backups.num AND
+                       files.shareid=shares.id AND
+                       shares.hostid=backups.hostid AND
+                       backups.id=?
+       };
+
+       my $backups_sql = q{
+               SELECT
+                       backups.id   AS backup_id,
+                       hosts.name   AS host,
+                       backups.num  AS num,
+                       backups.date AS date,
+                       shares.name  AS share,
+                       backups.size AS backup_size,
+                       backups.inc_size AS compress_size
+               FROM backups, archive_backup, hosts, shares
+               WHERE archive_backup.backup_id = backups.id
+                       AND hosts.id=backups.hostid
+                       AND shares.id=backups.shareid
+                       AND archive_backup.archive_id = ?
+       };
+
+       my $sth = $dbh->prepare("SELECT dvd_nr, total_size, note, username, date,id FROM archive WHERE dvd_nr=?");
+       $sth->execute($dvd_nr);
+       my $row = $sth->fetchrow_hashref();
+
+       my $row_h;
+       foreach my $hide (qw/id note/) {
+               $row_h->{$hide} = $row->{$hide} || die "no $hide";
+               delete $row->{$hide};
+       }
+
+       $writer->startTag("archive", %{$row});
+
+       $writer->startTag("note");
+       $writer->characters( $row_h->{'note'} );
+       $writer->endTag("note");
+
+       my $sth_backups = $dbh->prepare( $backups_sql );
+       $sth_backups->execute( $row_h->{'id'} );
+
+       while (my $row = $sth_backups->fetchrow_hashref()) {
+
+               my $sth_files = $dbh->prepare( $files_sql);
+               $sth_files->execute($row->{'backup_id'});
+
+               delete($row->{'backup_id'});
+
+               $writer->startTag( "backup", %{$row} );
+
+               while (my $row = $sth_files->fetchrow_hashref()) {
+                       # convert filetype to string
+                       $row->{'type'} = BackupPC::Attrib::fileType2Text(undef, $row->{'type'});
+                       my $path = $row->{'path'}; delete $row->{'path'};
+
+                       $writer->startTag("file", %{$row});
+                       $writer->characters( $path );
+                       $writer->endTag("file");
+               }
+               $writer->endTag("backup");
+       }       
+                        
+       $writer->endTag("archive");
+       $writer->end(); 
+       
+}
+
+
+
 #----- main
 
 my $sth = $dbh->prepare( qq{
@@ -162,9 +245,10 @@ foreach my $arc (@archives_to_burn) {
 
        print "Working on DVD #$dvd_nr in $tmp_dir\n";
 
-       my $list_file = my $iso_file = "${iso_dir}/${dvd_nr}";
+       my $list_file = my $iso_file = my $xml_file = "${iso_dir}/${dvd_nr}";
        $list_file .= '.list';
        $iso_file .= '.iso';
+       $xml_file .= '.xml';
 
        if (-e $iso_file) {
                print "ISO $iso_file allready exists\n";
@@ -187,6 +271,9 @@ foreach my $arc (@archives_to_burn) {
 
        # FIXME add file list in xml and txt and note file
 
+       dumpArchive2XML($dbh, $dvd_nr, $xml_file);
+       print $list "$xml_file\n";
+
        close($list);
 
        print "Running mkisofs now for $inc increments...\n";
index 0b01ebd..1d89790 100644 (file)
@@ -897,110 +897,4 @@ sub displayGrid($) {
        return $retHTML;
 }
 
-sub dumpArchive2XML($$)
-{
-       my ($arcID, $filename) = @_;
-       my $dbh;
-       my $sth;
-       my $sth_backups;
-       my $sth_files;
-       my $row;
-       my $row_backups;
-       my $row_files;
-       my %archive;    
-       my $output = new IO::File(">$filename");
-       my $writer = new XML::Writer(OUTPUT=>$output, NEWLINES => 1);
-
-
-       $dbh = get_dbh();
-#      my $bpc = BackupPC::Lib->new(undef, undef, 1) || die;
-#      my %Conf = $bpc->Conf();
-
-#      my $dsn = $Conf{SearchDSN} || die "Need SearchDSN in config.pl\n";
-#      my $user = $Conf{SearchUser} || '';
-
-       my $files_sql = q{
-                                                       SELECT 
-                                                               files.name AS filename,
-                                                               files.path AS filepath,
-                                                               files.date AS filedate,
-                                                               files.type AS filetype,
-                                                               files.size AS filesize
-                                                       FROM files, backups, shares
-                                                       WHERE files.backupnum=backups.num AND
-                                                                 files.shareid=shares.id AND
-                                                                 shares.hostid=backups.hostid AND
-                                                                 backups.id=?                                                            
-                                                };
-
-       my $backups_sql = q{
-                                                       SELECT backups.id   AS backupid,
-                                                                       hosts.name   AS hostname,
-                                                              backups.num  AS backupnum,
-                                                              backups.date AS backupdate,
-                                                              backups.type AS backuptype,
-                                                              shares.name  AS sharename,
-                                                              backups.size AS backupsize,
-                                                              backups.inc_size AS inc_size,
-                                                              backups.inc_deleted AS inc_deleted
-                                                       FROM backups, archive_backup, hosts, shares
-                                                       WHERE archive_backup.backup_id = backups.id
-                                                              AND hosts.id=backups.hostid
-                                                              AND shares.id=backups.shareid
-                                                              AND archive_backup.archive_id = ?
-                                             };
-       
-       $dbh = DBI->connect($dsn, $user, "", { RaiseError => 1, AutoCommit => 1 });
-
-       $sth = $dbh->prepare("SELECT dvd_nr, total_size, note, username, date FROM archive WHERE ID=?");
-       $sth->execute($arcID);
-       $row = $sth->fetchrow_hashref();
-       $writer->startTag("archive", "dvd_nr"     => $row->{'dvd_nr'},
-                                    "total_size" => $row->{'total_size'},
-                                    "username"   => $row->{'username'},
-                                    "date"       => $row->{'date'}
-                        );
-
-
-       $writer->startTag("note");
-       $writer->characters( $row->{'note'});
-       $writer->endTag("note");
-       $sth_backups = $dbh->prepare( $backups_sql );
-       $sth_backups->execute($arcID);
-       while ($row_backups = $sth_backups->fetchrow_hashref())
-       {
-               $writer->startTag("backup", 
-                                       "host" => $row_backups->{'hostname'},
-                                                   "num"  => $row_backups->{'backupnum'},
-                                                   "date" => $row_backups->{'backupdate'},
-                                                   "type" => $row_backups->{'backuptype'},
-                                                   "share"=> $row_backups->{'sharename'},
-                                                   "size" => $row_backups->{'backupsize'},
-                                                   "inc_size" => $row_backups->{'inc_size'},
-                                                   "inc_deleted" => $row_backups->{'inc_deleted'}
-                                );
-                                
-               $sth_files = $dbh->prepare(
-                                                       $files_sql
-                                        );
-               $sth_files->execute($row_backups->{'backupid'});
-               while ($row_files = $sth_files->fetchrow_hashref())
-               {
-                       $writer->startTag("file", 
-                                                                "path" => $row_files->{'filepath'},
-                                                                "date" => $row_files->{'filedate'},
-                                                                "type" => $row_files->{'filetype'},
-                                                                "size" => $row_files->{'filesize'}
-                                                       );
-                       $writer->characters( $row_files->{'filename'});
-                       $writer->endTag("file");
-               }
-               $writer->endTag("backup");
-       }       
-                        
-       $writer->endTag("archive");
-       $writer->end(); 
-       
-}
-
 1;