From: Michael Wiebusch Date: Fri, 12 Jul 2013 12:57:57 +0000 (+0200) Subject: cleaned up a lot of xml functions without breaking them X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=028aa172e3bb90a86cc89271f93cf900a8c5f199;p=mvdsensorcontrol.git cleaned up a lot of xml functions without breaking them --- diff --git a/tools/jtageditor.pl b/tools/jtageditor.pl index ddf7beb..c569aa6 100755 --- a/tools/jtageditor.pl +++ b/tools/jtageditor.pl @@ -43,8 +43,8 @@ my %cgiHash = &read_input; if ( !keys %cgiHash ) { # if script is called without arguments: initialize the html structure - initPage(); - exit; + initPage(); + exit; } @@ -70,81 +70,86 @@ our $specDir = '../specs'; # end of global variables if ( $cgiHash{'print'} eq 'fileSelection' ) { - print "
File Selection
"; - print_fileSelection( $cgiHash{'configFile'} ); + print "
File Selection
"; + print_fileSelection( $cgiHash{'configFile'} ); } if ( $cgiHash{'print'} eq 'spectree' ) { - print "
Available Settings
\n"; - unless ( -e $confDir . "/" . $cgiHash{'configFile'} ) { - print "

config file does not exist

"; - exit; - } - parseConfigAndSpec( $cgiHash{'configFile'} ); - print + print "
Available Settings
\n"; + unless ( -e $confDir . "/" . $cgiHash{'configFile'} ) { + print "

config file does not exist

"; + exit; + } + parseConfigAndSpec( $cgiHash{'configFile'} ); + print "
specifications loaded from $specFileName
"; - print_registers($specFile); + print_registers($specFile); } if ( $cgiHash{'print'} eq 'settree' ) { - print "
Selected Settings
\n"; - unless ( -e $confDir . "/" . $cgiHash{'configFile'} ) { - print "

config file does not exist

"; - exit; - } - parseConfigAndSpec( $cgiHash{'configFile'} ); - - - + print "
Selected Settings
\n"; + unless ( -e $confDir . "/" . $cgiHash{'configFile'} ) { + print "

config file does not exist

"; + exit; + } + parseConfigAndSpec( $cgiHash{'configFile'} ); + + + ## obsolete -# buildAncestry( $configFileName, "" ) -# ; #arg1: target file, # arg2: recursion parent target file +# buildAncestry( $configFileName, "" ) +# ; #arg1: target file, # arg2: recursion parent target file # -# $configTree = $ancestryTree; # not so elegant +# $configTree = $ancestryTree; # not so elegant ## now use: integrateAncestry(); - - print_ancestorInfo(); + + print_ancestorInfo(); - print_registers($configFile); + print_registers($configFile); } if ( defined $cgiHash{'debuginput'} ) { - print $cgiHash{'debuginput'}; + print $cgiHash{'debuginput'}; } if ( defined $cgiHash{'action'} ) { - printHash( \%cgiHash ); - if ( $cgiHash{'action'} eq 'save' ) { - parseConfig( $cgiHash{'configFile'} ); - save( $cgiHash{'register'}, $cgiHash{'field'}, $cgiHash{'value'} ); - } - if ( $cgiHash{'action'} eq 'delete' ) { - parseConfig( $cgiHash{'configFile'} ); - del( $cgiHash{'register'}, $cgiHash{'field'} ); - } - if ( $cgiHash{'action'} eq 'copyDefaultRegister' ) { - parseConfigAndSpec( $cgiHash{'configFile'} ); - del( $cgiHash{'register'}, "" ); # delete existing register from setfile - copyDefaultRegister( $cgiHash{'register'} ); - } - if ( $cgiHash{'action'} eq 'createFile' ) { - createFile( $cgiHash{'configFile'}, $cgiHash{'specFile'} ); - } - - if ( $cgiHash{'action'} eq 'deleteFile' ) { - deleteFile( $cgiHash{'configFile'} ); - } - - if ( $cgiHash{'action'} eq 'changeAncestor' ) { - parseConfig( $cgiHash{'configFile'} ); - changeAncestor( $cgiHash{'newAncestor'} ); - } + printHash( \%cgiHash ); + if ( $cgiHash{'action'} eq 'save' ) { + parseConfigFile( $cgiHash{'configFile'} ); + save( $cgiHash{'register'}, $cgiHash{'field'}, $cgiHash{'value'} ); + writeConfigFile(); + } + if ( $cgiHash{'action'} eq 'delete' ) { + parseConfigFile( $cgiHash{'configFile'} ); + del( $cgiHash{'register'}, $cgiHash{'field'} ); + writeConfigFile(); + } + if ( $cgiHash{'action'} eq 'copyDefaultRegister' ) { + parseConfigAndSpec( $cgiHash{'configFile'} ); + del( $cgiHash{'register'}, "" ); # delete existing register from setfile + copyDefaultRegister( $cgiHash{'register'} ); + writeConfigFile(); + } + if ( $cgiHash{'action'} eq 'createFile' ) { + createConfigFile( $cgiHash{'configFile'}, $cgiHash{'specFile'} ); + writeConfigFile(); + } + + if ( $cgiHash{'action'} eq 'deleteFile' ) { + deleteFile( $cgiHash{'configFile'} ); + } + + if ( $cgiHash{'action'} eq 'changeAncestor' ) { + parseConfigFile( $cgiHash{'configFile'} ); + changeAncestor( $cgiHash{'newAncestor'} ); + writeConfigFile(); + } } @@ -167,15 +172,15 @@ sub deleteFile { } #args:configFileName #globs:$confDir -sub createFile { - my $configFileName = $_[0]; +sub createConfigFile { + $configFileName = $_[0]; - my $specFileName = $_[1]; #config file is based on this specification! - my $configFile = $confDir . "/" . $configFileName; - my $specFile = $specDir . "/" . $specFileName; + $specFileName = $_[1]; #config file is based on this specification! + $configFile = $confDir . "/" . $configFileName; + $specFile = $specDir . "/" . $specFileName; - my $configTree = XML::LibXML->createDocument; - my $specTree = $parser->parse_file($specFile); + $configTree = XML::LibXML->createDocument; + $specTree = $parser->parse_file($specFile); my $configMaps = $configTree->createElementNS( "", "MAPS" ); $configTree->setDocumentElement($configMaps); @@ -187,17 +192,13 @@ sub createFile { $configMaps->setAttribute( "type", $mapsType ); $configMaps->setAttribute( "specDbFile", $specFileName ); - open( SCHREIBEN, "> $configFile" ) - or print "could not open file $configFile for writing: $!\n"; - - print SCHREIBEN $configTree->toString(); - close SCHREIBEN; - } -#args: configFileName,specFileName #globs:$confDir,$specDir,$parser +# args: configFileName,specFileName +# globs:$confDir,$specDir,$parser,$configFile,$specFile,$configFileName,$specFileName +# description: create new configFileTree sub parseConfigAndSpec { - parseConfig( $_[0] ); + parseConfigFile( $_[0] ); $specFileName = $configTree->findvalue("/MAPS/\@specDbFile"); $specFile = $specDir . "/" . $specFileName; unless ( -e $specFile ) { @@ -207,9 +208,9 @@ sub parseConfigAndSpec { } $specTree = $parser->parse_file($specFile); } -#args: configFileName #globs: $specFileName,$configTree,$specFile,$specDir,$specTree,$parser #calls: parseConfig() +#args: configFileName #globs: $specFileName,$configTree,$specFile,$specDir,$specTree,$parser #calls: parseConfigFile() -sub parseConfig { +sub parseConfigFile { $configFileName = $_[0]; $configFile = $confDir . "/" . $_[0]; $configTree = $parser->parse_file($configFile); @@ -235,6 +236,7 @@ sub buildAncestry { print "

The faulty include directive was removed.

"; print "

"; changeAncestor(""); # break the evil circle where it was closed! + writeConfigFile(); exit; } @@ -252,6 +254,7 @@ sub buildAncestry { print "

"; changeAncestor(""); # break the evil circle where it was closed! + writeConfigFile(); exit; #die "no circular includes please! $!"; @@ -275,6 +278,7 @@ sub buildAncestry { print "

The faulty include directive was removed.

"; print "

"; changeAncestor(""); # break the evil circle where it was closed! + writeConfigFile(); exit; return; } @@ -307,6 +311,7 @@ sub buildAncestry { print "

The faulty include directive was removed.

"; print "

"; changeAncestor(""); # break the evil circle where it was closed! + writeConfigFile(); exit; } @@ -317,6 +322,7 @@ sub buildAncestry { print "

The faulty include directive was removed.

"; print "

"; changeAncestor(""); # break the evil circle where it was closed! + writeConfigFile(); exit; } unless ( $ancestorFileName eq "" ) { @@ -370,6 +376,26 @@ sub integrateAncestry { # description: this function extends $configTree to include all information that is held # by its ancestor (and ancestor's ancestor ... and so on) +sub changeAncestor { + my $ancestorFileName = $_[0]; + my $xmltree = $configTree; + my $xmlfile = $configFile; + my $maps = $xmltree->findnodes("/MAPS")->shift(); + + $maps->setAttribute( "inheritSettingsFrom", $ancestorFileName ); + +# open( SCHREIBEN, "> $xmlfile" ) +# or print "could not open file $xmlfile for writing: $!\n"; +# +# print SCHREIBEN $xmltree->toString(); +# close SCHREIBEN; + +} +# args: ancestorFileName +# globs: $configTree,$configFile +# description: change the "inheritSettingsFrom" tag in the current configTree to "ancestorFileName" +# make change permanent by calling writeConfigFile() hereafter. + sub del { my $registerName = $_[0]; @@ -402,15 +428,16 @@ sub del { print "deleted register as well
"; } } - open( SCHREIBEN, "> $xmlfile" ) - or print "could not open file $xmlfile for writing: $!\n"; - - print SCHREIBEN $xmltree->toString(); - close SCHREIBEN; +# open( SCHREIBEN, "> $xmlfile" ) +# or print "could not open file $xmlfile for writing: $!\n"; +# +# print SCHREIBEN $xmltree->toString(); +# close SCHREIBEN; } # args: registerName,fieldName, # globs: $configFile,$configTree -# description: deletes field "fieldName" in register "registerName" in $configFile +# description: deletes field "fieldName" in register "registerName" in $configTree +# make change permanent by calling writeConfigFile() hereafter. sub save { @@ -446,16 +473,17 @@ sub save { $field->setAttribute( "value", $newValue ); print $field->findvalue("./\@value"); - open( SCHREIBEN, "> $xmlfile" ) - or print "could not open file $xmlfile for writing: $!\n"; - - print SCHREIBEN $xmltree->toString(); - close SCHREIBEN; +# open( SCHREIBEN, "> $xmlfile" ) +# or print "could not open file $xmlfile for writing: $!\n"; +# +# print SCHREIBEN $xmltree->toString(); +# close SCHREIBEN; } # args: registerName,fieldName,newValue # globs: $configFile,$configTree, -# description: saves value "newValue" in field "fieldName" in register "registerName" (in the $configFile) +# description: saves value "newValue" in field "fieldName" in register "registerName" (in the $configTree) # if field or register does not exist yet, it is created. +# make change permanent by calling writeConfigFile() hereafter. sub copyDefaultRegister { my $registerName = $_[0]; @@ -481,15 +509,23 @@ sub copyDefaultRegister { $configField->setAttribute( "value", $fieldValue ); print $configField->findvalue("./\@value"); } + + #writeConfigFile(); +} +# args: registerName +# globs: $configTree,$specTree,$configFile +# description: copys register "registerName" from $specTree to $configTree +# make change permanent by calling writeConfigFile() hereafter. + +sub writeConfigFile(){ open( SCHREIBEN, "> $configFile" ) or print "could not open file $configFile for writing: $!\n"; print SCHREIBEN $configTree->toString(); close SCHREIBEN; } -# args: registerName -# globs: $config - +# globs: $configFile,$configTree +# description: writes the current $configTree to $configFile ############################### ## subs generating html output @@ -591,52 +627,7 @@ sub print_fileSelection { print "

"; -# print ""; -# print ""; -# -# print ""; -# -# print ""; -# print "
"; -# print ""; -# print ""; -# print ""; -# -# print ""; -# -# print ""; -# -# print ""; -# -# print ""; -# -# print "
selected config file:"; -# print "
"; -# print_fileSelector( $configFile, "fileSelector", "loadFile()" ); -# print ""; -# print -#""; -# print -#""; -# print "
"; -# -# print "

"; -# print ""; -# print ""; -# -# print ""; -# -# print "
"; -# print "create new config file:"; -# print "
"; -# print ""; -# print ""; -# print_specSelector(); -# print ""; -# print -#""; -# print "
"; -# print "
"; + } sub print_registers { @@ -936,21 +927,7 @@ sub mergeTrees { # give me two trees, tree1 overwrites everything in tree0 and w } } -sub changeAncestor { - my $ancestorFileName = $_[0]; - my $xmltree = $configTree; - my $xmlfile = $configFile; - my $maps = $xmltree->findnodes("/MAPS")->shift(); - $maps->setAttribute( "inheritSettingsFrom", $ancestorFileName ); - - open( SCHREIBEN, "> $xmlfile" ) - or print "could not open file $xmlfile for writing: $!\n"; - - print SCHREIBEN $xmltree->toString(); - close SCHREIBEN; - -} sub getAncestor { my $xmltree = $configTree; @@ -965,56 +942,56 @@ sub getAncestor { sub prepare_text { - my $t = $_[0]; - chomp $t; - $t = encode_entities($t); - $t =~ s/^\s//; - $t =~ s/^\n//; - $t =~ s/\t//; - return $t; + my $t = $_[0]; + chomp $t; + $t = encode_entities($t); + $t =~ s/^\s//; + $t =~ s/^\n//; + $t =~ s/\t//; + return $t; } # a sorting directive for fields and registers sub by_name { - my $a_name = $a->findvalue("./\@name"); - my $b_name = $b->findvalue("./\@name"); + my $a_name = $a->findvalue("./\@name"); + my $b_name = $b->findvalue("./\@name"); - return $a_name cmp $b_name; + return $a_name cmp $b_name; } sub printHash { - my $hashref = $_[0]; - for my $element ( keys %{$hashref} ) { - print $element. "=" . $hashref->{$element} . "
\n"; - } + my $hashref = $_[0]; + for my $element ( keys %{$hashref} ) { + print $element. "=" . $hashref->{$element} . "
\n"; + } } sub read_input { - my $buffer; - my @pairs; - my $pair; - my $name; - my $value; - my %FORM; - - # Read in text - $ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/; - if ( $ENV{'REQUEST_METHOD'} eq "POST" ) { - read( STDIN, $buffer, $ENV{'CONTENT_LENGTH'} ); - } - else { - $buffer = $ENV{'QUERY_STRING'}; - } - - # Split information into name/value pairs - @pairs = split( /&/, $buffer ); - foreach $pair (@pairs) { - ( $name, $value ) = split( /=/, $pair ); - $value =~ tr/+/ /; - $value =~ s/%(..)/pack("C", hex($1))/eg; - $FORM{$name} = $value; - } - %FORM; + my $buffer; + my @pairs; + my $pair; + my $name; + my $value; + my %FORM; + + # Read in text + $ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/; + if ( $ENV{'REQUEST_METHOD'} eq "POST" ) { + read( STDIN, $buffer, $ENV{'CONTENT_LENGTH'} ); + } + else { + $buffer = $ENV{'QUERY_STRING'}; + } + + # Split information into name/value pairs + @pairs = split( /&/, $buffer ); + foreach $pair (@pairs) { + ( $name, $value ) = split( /=/, $pair ); + $value =~ tr/+/ /; + $value =~ s/%(..)/pack("C", hex($1))/eg; + $FORM{$name} = $value; + } + %FORM; } @@ -1022,37 +999,37 @@ sub read_input { # sub any2dec { # converts numeric expressions 0x, 0b or decimal to decimal # -# my $argument = $_[0]; +# my $argument = $_[0]; # -# #print "any2dec input argument $argument\n"; +# #print "any2dec input argument $argument\n"; # -# if ( $argument =~ m/0[bxBX]/ ) { -# return oct $argument; -# } -# else { -# return $argument; -# } +# if ( $argument =~ m/0[bxBX]/ ) { +# return oct $argument; +# } +# else { +# return $argument; +# } # } sub printJavaScripts { ####### javascript function land ################ - print < function changeAncestor(newAncestor){ - var file_ = encodeURIComponent(selectedConfigFile()); - var newAncestor_ = encodeURIComponent(newAncestor); - getdata('$me?action=changeAncestor&configFile='+file_+'&newAncestor='+newAncestor_,false); - reloadSetTree(); + var file_ = encodeURIComponent(selectedConfigFile()); + var newAncestor_ = encodeURIComponent(newAncestor); + getdata('$me?action=changeAncestor&configFile='+file_+'&newAncestor='+newAncestor_,false); + reloadSetTree(); } function deleteFile(){ - var file_ = encodeURIComponent(selectedConfigFile()); - getdata('$me?action=deleteFile&configFile='+file_,false); - loadFile(); + var file_ = encodeURIComponent(selectedConfigFile()); + getdata('$me?action=deleteFile&configFile='+file_,false); + loadFile(); } @@ -1062,7 +1039,7 @@ var e = document.getElementById("fileSelector"); return e.options[e.selectedIndex].text; } else { - return ""; + return ""; } } @@ -1071,21 +1048,21 @@ if(document.getElementById("specSelector")){ var e = document.getElementById("specSelector"); return e.options[e.selectedIndex].text;} else { - return ""; + return ""; } } function newFileName(){ if(document.getElementById("newFileName")){ - var fileName = document.getElementById("newFileName").value; - var patt = /\.xml/i; - if(patt.test(fileName)){ - return fileName; - } else { - return fileName+".xml"; - } + var fileName = document.getElementById("newFileName").value; + var patt = /\.xml/i; + if(patt.test(fileName)){ + return fileName; + } else { + return fileName+".xml"; + } } else { - return ""; + return ""; } } @@ -1120,16 +1097,16 @@ visHash = new Object(); reloadSpecTree(); reloadSetTree(); reloadFileSelection(); - + } function createFile(){ - debugOutput("NewFileName: "+newFileName()); - var configFile_ = encodeURIComponent(newFileName()); - var specFile_ = encodeURIComponent(selectedSpecFile()); - getdata("$me?action=createFile&configFile="+configFile_+"&specFile="+specFile_,"debug",false); - getdata('$me?print=fileSelection&configFile='+configFile_,'fileSelection',false); - loadFile(); + debugOutput("NewFileName: "+newFileName()); + var configFile_ = encodeURIComponent(newFileName()); + var specFile_ = encodeURIComponent(selectedSpecFile()); + getdata("$me?action=createFile&configFile="+configFile_+"&specFile="+specFile_,"debug",false); + getdata('$me?print=fileSelection&configFile='+configFile_,'fileSelection',false); + loadFile(); } @@ -1174,9 +1151,9 @@ getdata("$me?debuginput="+encodeURIComponent(input),"debug",true); } function writeToElementId(input,destId){ - if(document.getElementById(destId).innerHTML){ - document.getElementById(destId).innerHTML = input; - } + if(document.getElementById(destId).innerHTML){ + document.getElementById(destId).innerHTML = input; + } } @@ -1184,33 +1161,33 @@ function writeToElementId(input,destId){ function toggleVis(elementId,t) { if(document.getElementById(elementId)){ if( document.getElementById(elementId).style.visibility == "visible") { - document.getElementById(elementId).style.visibility = "collapse"; - visHash[elementId]=false; - t.innerHTML = " + "; + document.getElementById(elementId).style.visibility = "collapse"; + visHash[elementId]=false; + t.innerHTML = " + "; } else { - document.getElementById(elementId).style.visibility = "visible" ; - visHash[elementId]=true; + document.getElementById(elementId).style.visibility = "visible" ; + visHash[elementId]=true; t.innerHTML = " − "; } } } function showElement(elementId) { - if(document.getElementById(elementId)){ - document.getElementById(elementId).style.visibility = "visible" ; - visHash[elementId]=true; - } + if(document.getElementById(elementId)){ + document.getElementById(elementId).style.visibility = "visible" ; + visHash[elementId]=true; + } } function hideElement(elementId) { - if(document.getElementById(elementId)){ - document.getElementById(elementId).style.visibility = "hidden" ; - visHash[elementId]=false; - } + if(document.getElementById(elementId)){ + document.getElementById(elementId).style.visibility = "hidden" ; + visHash[elementId]=false; + } } function collapseElement(elementId) { - if(document.getElementById(elementId)){ - document.getElementById(elementId).style.visibility = "collapse" ; - visHash[elementId]=false; - } + if(document.getElementById(elementId)){ + document.getElementById(elementId).style.visibility = "collapse" ; + visHash[elementId]=false; + } } function hideThisFileLevel(classname,checked){ @@ -1221,9 +1198,9 @@ for(var i = 0; i < array.length; i++) { if(checked){ array[i].style.visibility = 'visible'; - + }else{ - + array[i].style.visibility = 'collapse'; } @@ -1241,16 +1218,16 @@ function getdata(command,dId,async) { //var cb = null; xmlhttp=new XMLHttpRequest(); //cb = callback; - var destId = dId; + var destId = dId; xmlhttp.onreadystatechange = function() { if(xmlhttp.readyState == 4 && xmlhttp.status==200) { //if(cb) - if(document.getElementById(destId).innerHTML){ - document.getElementById(destId).innerHTML = xmlhttp.responseText; - } + if(document.getElementById(destId).innerHTML){ + document.getElementById(destId).innerHTML = xmlhttp.responseText; + } //cb(xmlhttp.responseText); - //document.getElementById(destId).innerHTML = xmlhttp.responseText; + //document.getElementById(destId).innerHTML = xmlhttp.responseText; } }