]> jspc29.x-matter.uni-frankfurt.de Git - mvdsensorcontrol.git/commitdiff
now able to generate an ancestry list recursively, not yet merging with ancestor...
authorMichael Wiebusch <stratomaster@gmx.net>
Thu, 27 Jun 2013 15:17:21 +0000 (17:17 +0200)
committerMichael Wiebusch <stratomaster@gmx.net>
Thu, 27 Jun 2013 15:17:21 +0000 (17:17 +0200)
xml_spielwiese/cgitest.pl

index 3752713556b9329502c90bd944fa9fcf13481104..8b99312cdec4003a12e79eb1790d942ff68a3e53 100755 (executable)
@@ -54,9 +54,9 @@ if ( !keys %cgiHash )
        exit;
 }
 
-my $parser   = XML::LibXML->new();
-my $specfile = "";
-my $setfile  = "";
+my $parser       = XML::LibXML->new();
+my $specfile     = "";
+my $setfile      = "";
 my $specfileName = "";
 my $setfileName  = "";
 my $spectree;
@@ -70,22 +70,25 @@ my $specDir = '../specs';
 
 if ( $cgiHash{'print'} eq 'fileSelection' ) {
        print "<div class='header'>File Selection</div>";
-       print_fileSelection($cgiHash{'configFile'});
+       print_fileSelection( $cgiHash{'configFile'} );
 
 }
 
 if ( $cgiHash{'print'} eq 'spectree' ) {
        print "<div class='header'>Available Settings</div>\n";
        parseSetAndSpec( $cgiHash{'configFile'} );
-       print "<div class='ancestorInfo' align='center'>specifications loaded from $specfileName</div>";
+       print
+"<div class='ancestorInfo' align='center'>specifications loaded from $specfileName</div>";
        print_registers($specfile);
 }
 
 if ( $cgiHash{'print'} eq 'settree' ) {
        print "<div class='header'>Selected Settings</div>\n";
        parseSetAndSpec( $cgiHash{'configFile'} );
+       buildAncestry($setfileName);
        print "<div class='ancestorInfo' align='center'>";
-       print "inherit settings from";
+       print "inherit settings from:<br>";
+       print join("<br>",@ancestryList);
        print "</div>";
        print_registers($setfile);
 }
@@ -125,22 +128,42 @@ sub prepare_text {
 }
 
 sub parseSetAndSpec {
-       parseSet($_[0]);
+       parseSet( $_[0] );
        $specfileName = $settree->findvalue("/MAPS/\@specDbFile");
-       $specfile = $specDir . "/" . $specfileName;
-       $spectree = $parser->parse_file($specfile);
+       $specfile     = $specDir . "/" . $specfileName;
+       $spectree     = $parser->parse_file($specfile);
 }
 
 sub parseSet {
        $setfileName = $_[0];
-       $setfile = $confDir . "/" . $_[0];
-       $settree = $parser->parse_file($setfile);
+       $setfile     = $confDir . "/" . $_[0];
+       $settree     = $parser->parse_file($setfile);
 }
 
-sub buildAncestry { # recursive
+sub buildAncestry {    # recursive
+       my $xmlfileName = $_[0];
+       if ( $xmlfileName eq "" ) {
+               return;
+       }
+       my $xmlfile = $confDir . "/" . $xmlfileName;
+       my $xmltree;
+       if ( $xmlfile eq $setfile ) {
+               $xmltree = $settree;
+       }
+       else {
+               $xmltree = $parser->parse_file($xmlfile);
+       }
+       
+       my $ancestorFileName = $xmltree->findvalue("/MAPS/\@inheritSettingsFrom") || "";
+       unless ($ancestorFileName eq ""){
+               buildAncestry($ancestorFileName);
+               push(@ancestryList,$ancestorFileName);
+       }
        
 }
 
+
+
 sub del {
 
        my $registerName = $_[0];
@@ -180,10 +203,9 @@ sub del {
        close SCHREIBEN;
 }
 
-
 sub print_fileSelection {
-       
-       my $configFile= $_[0];
+
+       my $configFile = $_[0];
 
        print "<table>";
        print "<tr>";
@@ -213,7 +235,8 @@ sub print_fileSelection {
        print "</td>";
 
        print "<td>";
-       print "<input type='button' onclick='loadFile()' value='load file' class='stdbutton'>";
+       print
+"<input type='button' onclick='loadFile()' value='load file' class='stdbutton'>";
        print "</td>";
 
        print "</tr>";
@@ -229,16 +252,16 @@ sub print_fileSelection {
 
 sub changeAncestor {
        my $ancestorFileName = $_[0];
-       my $xmltree=$settree;
-       my $maps    = $xmltree->findnodes("/MAPS")->shift();
-       
-       $maps->setAttribute("inheritSettingsFrom",$ancestorFileName);
+       my $xmltree          = $settree;
+       my $maps             = $xmltree->findnodes("/MAPS")->shift();
+
+       $maps->setAttribute( "inheritSettingsFrom", $ancestorFileName );
 
 }
 
 sub getAncestor {
-       my $xmltree=$settree;
-       return ($xmltree->findvalue("/MAPS/\@inheritSettingsFrom")||"");
+       my $xmltree = $settree;
+       return ( $xmltree->findvalue("/MAPS/\@inheritSettingsFrom") || "" );
 }
 
 sub save {