2024-09-09 22:24:02 +02:00

274 lines
9.9 KiB
Perl
Raw Blame History

my $env=0;
if ($ENV{TC_ROOT} eq "") {
print "Initialiser TC_ROOT avant de lancer le script\n";
$env = 1;
}
if ($ENV{TC_DATA} eq "") {
print "Initialiser TC_DATA avant de lancer le script\n";
$env = 1;
}
if ($env == 1) {
exit 1;
}
my $myversion="${project.version}";
my $to_soa = $ENV{TC_DATA}."/soa/";
my $to_bin = $ENV{TC_ROOT}."/bin/";
my $args=0;
my $usr="";
my $pwd="";
my $grp="";
$numArgs = $#ARGV + 1;
foreach $argnum (0 .. $#ARGV) {
$arg = $ARGV[$argnum];
if ($arg =~ m/^-u=/) {
$args = $args + 1;
$usr = $arg;
$usr =~ s/^-u=//;
}
if ($arg =~ m/^-p=/) {
$args = $args + 1;
$pwd = $arg;
$pwd =~ s/^-p=//;
}
if ($arg =~ m/^-g=/) {
$args = $args + 1;
$grp = $arg;
$grp =~ s/^-g=//;
}
}
if ($args != 3 || $usr eq "" || $pwd eq "" || $grp eq "") {
print "Utilisation 'perl report_install.pl -u=<usr> -p=<pwd> -g=<grp>'\n";
print " -u : login utilisateur dba\n";
print " -p : mot de passe\n";
print " -g : groupe dba\n";
exit 1;
}
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
my $datedujour = $mday."/".($mon+1)."/".(1900+$year)."-".$hour.":".$min.":".$sec;
my $suffixe = (1900+$year).($mon+1).$mday.$hour.$min.$sec;
system "echo '------- INSTALLATION REPORT v" .$myversion. " -------'";
system "echo ' Import des reports'";
my $repertoireReports = "./data/reports";
opendir fh_rep, $repertoireReports or die "impossible d'ouvrir le r<>pertoire ".$repertoireReports."\n";
my $reportId = "";
system "echo 'Import de la definition des rapports'";
while( ($filename = readdir(fh_rep))){
next if ($filename eq "." or $filename eq "..");
$reportId = $filename;
system "echo ' + Import de ".$reportId."'";
system "import_export_reports -import -u=".$usr." -p=".$pwd." -g=".$grp." -v -overwrite -stageDir=./data/reports -reportId=\"".$reportId."\"";
}
closedir fh_rep or die "Impossible de fermer le r<>pertoire ".$repertoireReports."\n";
system "echo 'Import des queries'";
my $repertoireQueries = "./data/queries";
opendir fh_rep, $repertoireQueries or die "impossible d'ouvrir le r<>pertoire ".$repertoireQueries."\n";
my @fic_rep_list = grep { !/^\.\.?$/ } readdir fh_rep;
closedir fh_rep or die "Impossible de fermer le r<>pertoire ".$repertoireQueries."\n";
concat_query_files($repertoireQueries);
system "echo ' Import des requetes en une fois'";
$target=$repertoireQueries."/all_queries.xml";
if (-e $target){
system "plmxml_import -u=".$usr." -p=".$pwd." -g=".$grp." -import_mode=overwrite -xml_file=".$target;
}
else {
print "File ".$target." cannot be found\n";
}
system "echo ' Import des policies'";
copy_policy_files("./data/policies");
system "echo ' Import du binaire d encryptage";
system "cp ./data/bin/encrypt ".$to_bin;
system "chmod 755 ".$to_bin."encrypt";
system "echo 'Import de la pr<70>f<EFBFBD>rence report'";
system "preferences_manager -u=".$usr." -p=".$pwd." -g=".$grp." -mode=import -scope=SITE -file=./data/report_prefs.xml -action=OVERRIDE";
system "preferences_manager -u=" .$usr. " -p=" .$pwd. " -g=" .$grp. " -mode=import -preference=\"PV SNECMA Reports deployment date\" -scope=SITE -values=" .$datedujour. " -action=OVERRIDE";
system "preferences_manager -u=" .$usr. " -p=" .$pwd. " -g=" .$grp. " -mode=import -preference=\"PV SNECMA Reports version\" -scope=SITE -values=" .$myversion. " -action=OVERRIDE";
system "echo ' Import des Regles de Revision'";
system "plmxml_import -u=" .$usr. " -p=" .$pwd. " -g=" .$grp. " -xml_file=./data/revision_rule/revisionrule.xml -import_mode=overwrite";
system "echo '----- FIN INSTALLATION REPORT v" .$myversion. " -------'";
sub promptUser {
#-------------------------------------------------------------------#
# two possible input arguments - $promptString, and $defaultValue #
# make the input arguments local variables. #
#-------------------------------------------------------------------#
local($promptString,$defaultValue) = @_;
#-------------------------------------------------------------------#
# if there is a default value, use the first print statement; if #
# no default is provided, print the second string. #
#-------------------------------------------------------------------#
if ($defaultValue) {
print $promptString, "[", $defaultValue, "]: ";
} else {
print $promptString, ": ";
}
$| = 1; # force a flush after our print
$_ = <STDIN>; # get the input from STDIN (presumably the keyboard)
#------------------------------------------------------------------#
# remove the newline character from the end of the input the user #
# gave us. #
#------------------------------------------------------------------#
chomp;
#-----------------------------------------------------------------#
# if we had a $default value, and the user gave us input, then #
# return the input; if we had a default, and they gave us no #
# no input, return the $defaultValue. #
# #
# if we did not have a default value, then just return whatever #
# the user gave us. if they just hit the <enter> key, #
# the calling routine will have to deal with that. #
#-----------------------------------------------------------------#
if ("$defaultValue") {
return $_ ? $_ : $defaultValue; # return $_ if it has a value
} else {
return $_;
}
}
sub copy_policy_files{
#
# Copie toutes les policies dans tous les sous-dossiers vers le dossier SOA, *a plat*
# system "cp -Rf ./data/policies/reports/SOME_FOLDER/SOME_FILE.xml " . $to_soa;
my $source_dir = $_[0];
print "Import de la policy: dossier = ".$source_dir."\n";
# entete du fichier genere
opendir fh_rep, $source_dir or die "impossible d'ouvrir le r<>pertoire ".$source_dir."\n";
my @fic_rep_list = grep { !/^\.\.?$/ } readdir fh_rep;
closedir fh_rep or die "Impossible de fermer le r<>pertoire ".$source_dir."\n";
# Browse all the folder"s content
foreach my $elem ( @fic_rep_list) {
# Skipping files begginning whith . or .svn
my $absoluteElem = $source_dir . '/'.$elem;
if ($elem!~/^\./ and $elem!~/.svn/) {
# If the file is a directory
if (-d $absoluteElem) {
# Here is where we recurse.
# This makes a new call to process_files()
# using a new directory we just found.
copy_policy_files ($absoluteElem);
} else {
# If it isn't a directory, lets just do some
# processing on it.
print " Import de la policy: ".$elem."\n";
system "cp -Rf ".$absoluteElem." ".$to_soa."/policies";
}
}else{
print " Element ".$absoluteElem." ignor<6F>\n";
}
}
}
sub concat_query_files{
#
# all-queries.pl
#
# concat<61>ne toutes les queries en 1 seul fichier
my $source_dir = $_[0];
#printf("$ARGV[0]");
#print("--------------------------");
# entete du fichier genere
opendir fh_rep, $source_dir or die "impossible d'ouvrir le r<>pertoire ".$source_dir."\n";
my @fic_rep_list = grep { !/^\.\.?$/ } readdir fh_rep;
closedir fh_rep or die "Impossible de fermer le r<>pertoire ".$source_dir."\n";
open (OUTPUTFILE, "> ".$source_dir."/all_queries.xml") || die "Can't write in ".$outputFile." : $!";
print OUTPUTFILE "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
print OUTPUTFILE "<plmxml_bus:PLMXMLBusinessTypes xmlns=\"http://www.plmxml.org/Schemas/PLMXMLSchema\"\n";
print OUTPUTFILE " xmlns:plmxml_bus=\"http://www.plmxml.org/Schemas/PLMXMLBusinessSchema\"\n";
print OUTPUTFILE " schemaVersion=\"6\" language=\"fr-fr\" date=\"2014-07-04\" languages=\"en-us fr-fr de-de it-it es-es pt-br\" time=\"14:20:53\" author=\"unset\">\n";
for $j (0..((scalar @fic_rep_list) -1) )
{
if ( $fic_rep_list[$j] eq "delete_queries.xml" || $fic_rep_list[$j] eq "all_queries.xml" || $fic_rep_list[$j] eq ".svn")
{
print "skipping query no ".($j+1)."/".scalar @fic_rep_list." : ".$fic_rep_list[$j]."\n";
}
if ($fic_rep_list[$j]!~/^\./ and $fic_rep_list[$j]!~/delete_queries.xml/ and $fic_rep_list[$j]!~/all_queries.xml/ and $fic_rep_list[$j]!~/.svn/)
{
print "Concat query no ".($j+1)."/".scalar @fic_rep_list." : ".$fic_rep_list[$j]."\n";
open(F, $source_dir."/".$fic_rep_list[$j]);# || die "Probl<62>me <20> l\'ouverture : $!";
$i = 0;
while($line = <F>)
{
# doit contenir : plmxml_bus:SavedQueryDef
# doit contenir : plmxml_bus:QueryClause
# remplacer : <plmxml_bus:SavedQueryDef id="id1" par <plmxml_bus:SavedQueryDef id="id$i"
# recopier le reste
if ($line =~ m/\<plmxml_bus:SavedQueryDef/)
{
$line =~ s/\"id1"+/\"id$j\"/;
$line =~ s/nameRef=\"#id.\" //;
$line =~ s/descriptionTextRef=\"#id.\" //;
print OUTPUTFILE $line; #On <20>crit la ligne dans le fichier r<>sultat
}
if ($line =~ m/\<Description\>/ )
{
print OUTPUTFILE $line; #On <20>crit la ligne dans le fichier r<>sultat
}
if ($line =~ m/\<\/Description\>/ )
{
print OUTPUTFILE $line; #On <20>crit la ligne dans le fichier r<>sultat
}
if ($line =~ m/plmxml_bus:QueryClause/ )
{
$k=$j+1000;
$line =~ s/\"id."+/\"id$k\"/;
print OUTPUTFILE $line; #On <20>crit la ligne dans le fichier r<>sultat
}
# if ($line =~ m/plmxml_bus:Text/ )
# {
# $l=$i+2000;
# $line =~ s/\"id."+/\"id$l\"/;
# $line =~ s/\<\/plmxml_bus:PLMXMLBusinessTypes\>//;
# print OUTPUTFILE $line; #On <20>crit la ligne dans le fichier r<>sultat
# }
$i ++;
}
$j ++;
#print "\nNombre de lignes : $fic_rep_list[$j] $i\n";
close F ;#|| die "Probl<62>me <20> la fermeture : $!";
}
}
print OUTPUTFILE "</plmxml_bus:PLMXMLBusinessTypes>\n";
close OUTPUTFILE;
}