From a8e2cab9f7bb49302446d869c9af5a4003e53565 Mon Sep 17 00:00:00 2001 From: Michael Wiebusch Date: Mon, 15 Jul 2013 20:00:50 +0200 Subject: [PATCH] lot of outsourcing done --- tools/jtageditor.pl | 76 +++++------------------------------------- tools/xmlOperations.pm | 71 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 67 deletions(-) diff --git a/tools/jtageditor.pl b/tools/jtageditor.pl index 0b78c20..3e63c3a 100755 --- a/tools/jtageditor.pl +++ b/tools/jtageditor.pl @@ -51,7 +51,7 @@ if ( !keys %cgiHash ) # some global variables -our $parser = XML::LibXML->new(); + our $specFile = ""; our $configFile = ""; our $specFileName = ""; @@ -60,10 +60,7 @@ our $specTree; our $configTree; our $configMapsType; -our %fileLevelHash; -our $ancestryTree; -our @ancestryList; our $confDir = '../config'; our $specDir = '../specs'; @@ -377,7 +374,7 @@ sub print_fields { $readOnlyFlag = 1; } - print ""; + print ""; print "$fieldName"; print "  = "; @@ -433,23 +430,23 @@ sub print_ancestorInfo { print "
"; #print "
"; - if (@ancestryList) + if (getAncestryList()) { # if ancestry is not empty, print current ancestry as a nested table # and also a button that can unlink the heritage - my $tableNestingDepth = @ancestryList; - for my $ancestor ( reverse(@ancestryList) ) { - print ""; + my $tableNestingDepth = getAncestryList(); + for my $ancestor ( reverse(getAncestryList()) ) { + print "
"; print ""; - if ( $fileLevelHash{$ancestor} eq "1" ) { + . getFileLevel($ancestor) . "\",this.checked)'>"; + if ( getFileLevel($ancestor) eq "1" ) { print < X  EOF @@ -508,62 +505,7 @@ EOF } -############################### -## general xml tools -############################### - - -sub mergeTrees { # give me two trees, tree1 overwrites everything in tree0 and will consequently be integrated in tree0 - my $tree0 = $_[0]; - my $tree1 = $_[1]; - - my $maps0 = $tree0->findnodes("/MAPS")->shift(); - my $maps1 = $tree1->findnodes("/MAPS")->shift(); - - my @registers0 = $tree0->findnodes("/MAPS/register"); - my @registers1 = $tree1->findnodes("/MAPS/register"); - - for my $register1 (@registers1) { - my $registerName = $register1->findvalue("./\@name"); - if ( $registerName eq "" ) { - die "registerName in tree1 undefined!"; - } - - # if current register does not exist in tree0, create it - my $register0 = - $maps0->findnodes( "./register[\@name='" . $registerName . "']" ) - ->shift(); - if ( $register0 eq "" ) { - $register0 = $maps0->addNewChild( "", "register" ); - $register0->setAttribute( "name", $registerName ); - } - - my @fields1 = $register1->findnodes("./field"); - for my $field1 (@fields1) { - my $fieldName = $field1->findvalue("./\@name"); - # if field with same name exists in tree0/register0 delete it! - my $field0 = - $register0->findnodes( "./field[\@name='" . $fieldName . "']" ) - ->shift(); - unless ( $field0 eq "" ) { - $register0->removeChild($field0); - } - - # copy current field from tree1/register1 to tree0/register0 - - $register0->addChild($field1); - } - - } -} - - - -sub getAncestor { - my $xmltree = $configTree; - return ( $xmltree->findvalue("/MAPS/\@inheritSettingsFrom") || "" ); -} diff --git a/tools/xmlOperations.pm b/tools/xmlOperations.pm index 54d6deb..176509c 100644 --- a/tools/xmlOperations.pm +++ b/tools/xmlOperations.pm @@ -1,6 +1,19 @@ #!/usr/bin/perl -w +my $parser = XML::LibXML->new(); +my %fileLevelHash; + +my $ancestryTree; +my @ancestryList; + +sub getFileLevel{ + return $fileLevelHash{$_[0]}; +} + +sub getAncestryList{ + return @ancestryList; +} ############################### ## xml file operations @@ -374,6 +387,64 @@ sub writeConfigFile(){ # description: writes the current $configTree to $configFile +############################### +## general xml tools +############################### + + +sub mergeTrees { # give me two trees, tree1 overwrites everything in tree0 and will consequently be integrated in tree0 + my $tree0 = $_[0]; + my $tree1 = $_[1]; + + my $maps0 = $tree0->findnodes("/MAPS")->shift(); + my $maps1 = $tree1->findnodes("/MAPS")->shift(); + + my @registers0 = $tree0->findnodes("/MAPS/register"); + my @registers1 = $tree1->findnodes("/MAPS/register"); + + for my $register1 (@registers1) { + my $registerName = $register1->findvalue("./\@name"); + if ( $registerName eq "" ) { + die "registerName in tree1 undefined!"; + } + + # if current register does not exist in tree0, create it + my $register0 = + $maps0->findnodes( "./register[\@name='" . $registerName . "']" ) + ->shift(); + if ( $register0 eq "" ) { + $register0 = $maps0->addNewChild( "", "register" ); + $register0->setAttribute( "name", $registerName ); + } + + my @fields1 = $register1->findnodes("./field"); + for my $field1 (@fields1) { + my $fieldName = $field1->findvalue("./\@name"); + + # if field with same name exists in tree0/register0 delete it! + my $field0 = + $register0->findnodes( "./field[\@name='" . $fieldName . "']" ) + ->shift(); + unless ( $field0 eq "" ) { + $register0->removeChild($field0); + } + + # copy current field from tree1/register1 to tree0/register0 + + $register0->addChild($field1); + } + + } +} + + + +# sub getAncestor { +# my $xmltree = $configTree; +# return ( $xmltree->findvalue("/MAPS/\@inheritSettingsFrom") || "" ); +# } + + 1; __END__ -- 2.43.0
"; } - for my $ancestor (@ancestryList) { + for my $ancestor (getAncestryList()) { print "
$ancestor "; print ""; print "