diff options
Diffstat (limited to 'solenv/bin/modules/par2script/check.pm')
-rw-r--r-- | solenv/bin/modules/par2script/check.pm | 347 |
1 files changed, 0 insertions, 347 deletions
diff --git a/solenv/bin/modules/par2script/check.pm b/solenv/bin/modules/par2script/check.pm deleted file mode 100644 index bd84c147e..000000000 --- a/solenv/bin/modules/par2script/check.pm +++ /dev/null @@ -1,347 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# <http://www.openoffice.org/license.html> -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -package par2script::check; - -use par2script::globals; - -################################ -# Checks of the setup script -################################ - -######################################################## -# Checking if all defined directories are needed -######################################################## - -sub check_needed_directories -{ - my $allfiles = $par2script::globals::definitions{'File'}; - my $alldirs = $par2script::globals::definitions{'Directory'}; - - # checking if all defined directories are needed - - my $dir; - foreach $dir ( keys %{$alldirs} ) - { - # I. directory has create flag - if (( exists($alldirs->{$dir}->{'Styles'}) ) && ( $alldirs->{$dir}->{'Styles'} =~ /\bCREATE\b/ )) { next; } - - # II. there is at least one file in the directory - my $fileinside = 0; - my $file; - foreach $file ( keys %{$allfiles} ) - { - if (( $allfiles->{$file}->{'Dir'} eq $dir ) || ( $allfiles->{$file}->{'NetDir'} eq $dir )) - { - $fileinside = 1; - last; - } - } - if ( $fileinside ) { next; } - - # III. the directory is parent for another directory - my $isparent = 0; - my $onedir; - foreach $onedir ( keys %{$alldirs} ) - { - if ( $alldirs->{$onedir}->{'ParentID'} eq $dir ) - { - $isparent = 1; - last; - } - } - if ( $isparent ) { next; } - - # no condition is true -> directory definition is superfluous - my $infoline = "\tINFO: Directory definition $dir is superfluous\n"; - # print $infoline; - push(@par2script::globals::logfileinfo, $infoline); - } -} - -################################################## -# Checking if the directories in the item -# definitions are defined. -################################################## - -sub check_directories_in_item_definitions -{ - my $item; - foreach $item ( @par2script::globals::items_with_directories ) - { - my $allitems = $par2script::globals::definitions{$item}; - - my $onegid; - foreach $onegid ( keys %{$allitems} ) - { - if ( ! exists($allitems->{$onegid}->{'Dir'}) ) { die "\nERROR: No directory defined for item: $onegid!\n\n"; } - my $dir = $allitems->{$onegid}->{'Dir'}; - if (( $dir eq "PD_PROGDIR" ) || ( $dir =~ /PREDEFINED_/ )) { next; } - - # checking if this directoryid is defined - if ( ! exists($par2script::globals::definitions{'Directory'}->{$dir}) ) - { - die "\nERROR: Directory $dir in item $onegid not defined!\n\n"; - } - } - } -} - -######################################################## -# Checking for all Items, that know their modules, -# whether these modules exist. -######################################################## - -sub check_module_existence -{ - my $item; - foreach $item ( @par2script::globals::items_with_moduleid ) - { - my $allitems = $par2script::globals::definitions{$item}; - - my $onegid; - foreach $onegid ( keys %{$allitems} ) - { - if ( ! exists($allitems->{$onegid}->{'ModuleID'}) ) { die "\nERROR: No ModuleID defined for item: $onegid!\n\n"; } - my $moduleid = $allitems->{$onegid}->{'ModuleID'}; - - # checking if this directoryid is defined - if ( ! exists($par2script::globals::definitions{'Module'}->{$moduleid}) ) - { - die "\nERROR: ModuleID $moduleid in item $onegid not defined!\n\n"; - } - } - } -} - -######################################################## -# Every script has to contain exactly one root module. -# This module has no ParentID or an empty ParentID. -######################################################## - -sub check_rootmodule -{ - my $rootgid = ""; - my $foundroot = 0; - - my $allmodules = $par2script::globals::definitions{'Module'}; - - my $modulegid = ""; - foreach $modulegid (keys %{$allmodules} ) - { - if (( ! exists($allmodules->{$modulegid}->{'ParentID'}) ) || ( $allmodules->{$modulegid}->{'ParentID'} eq "" )) - { - if ( $foundroot ) - { - die "\nERROR: More than one Root module. Only one module without ParentID or with empty ParentID allowed ($rootgid and $modulegid).\n"; - } - $rootgid = $modulegid; - $foundroot = 1; - } - } - - if ( ! $foundroot ) - { - die "\nERROR: Could not find Root module. Did not find module without ParentID or with empty ParentID.\n"; - } - - print " $rootgid\n"; - -} - -######################################################## -# File, Shortcut, Directory, Unixlink must not -# contain a ModuleID -######################################################## - -sub check_moduleid_at_items -{ - my $item; - foreach $item ( @par2script::globals::items_without_moduleid ) - { - my $allitems = $par2script::globals::definitions{$item}; - - my $onegid; - foreach $onegid ( keys %{$allitems} ) - { - if ( exists($allitems->{$onegid}->{'ModuleID'}) ) - { - die "\nERROR: ModuleID assigned to $onegid! No module assignment to $item!\n\n"; - } - } - } -} - -######################################################## -# Controlling existence of multi assignments -######################################################## - -sub check_multiple_assignments -{ - my @multiassignments = (); - my $error; - - my $topitem; - foreach $topitem ( keys %par2script::globals::assignedgids ) - { - my $item; - foreach $item ( keys %{$par2script::globals::assignedgids{$topitem}} ) - { - if ( $par2script::globals::assignedgids{$topitem}->{$item} > 1 ) - { - $error = 1; - my $string = "\tGID: $item Assignments: $par2script::globals::assignedgids{$topitem}->{$item}"; - push(@multiassignments, $string); - } - } - } - - if ( $error ) { par2script::exiter::multiassignmenterror(\@multiassignments); } -} - -######################################################## -# Check, if a defined directory has a flag CREATE -######################################################## - -sub contains_create_flag -{ - my ($gid) = @_; - - my $createflag = 0; - - if (( exists($par2script::globals::definitions{'Directory'}->{$gid}->{'Styles'}) ) && - ( $par2script::globals::definitions{'Directory'}->{$gid}->{'Styles'} =~ /\bCREATE\b/ )) - { - $createflag = 1; - } - - return $createflag; -} - -######################################################## -# Controlling existence of definitions without -# any assignment -######################################################## - -sub check_missing_assignments -{ - # If defined gids for "File", "Directory" or "Unixlink" are not assigned, - # this causes an error. - # Directories only have to be assigned, if they have the flag "CREATE". - - my @missingassignments = (); - $error = 0; - - my $item; - foreach $item ( @par2script::globals::items_assigned_at_modules ) - { - my $assignedgids = $par2script::globals::assignedgids{$item}; - my $definedgids = $par2script::globals::definitions{$item}; - - my $gid; - foreach $gid ( keys %{$definedgids} ) - { - if ( $item eq "Directory" ) { if ( ! contains_create_flag($gid) ) { next; } } - - if ( ! exists( $assignedgids->{$gid} )) - { - $error = 1; - push(@missingassignments, $gid); - } - } - } - - if ( $error ) { par2script::exiter::missingassignmenterror(\@missingassignments); } -} - -############################################################# -# Controlling if for all shortcuts with file assignment -# the file is defined. And for all shortcuts with -# shortcut assignment the shortcut has to be defined. -############################################################# - -sub check_shortcut_assignments -{ - my $allshortcuts = $par2script::globals::definitions{'Shortcut'}; - my $allfiles = $par2script::globals::definitions{'File'}; - - my $shortcut; - foreach $shortcut ( keys %{$allshortcuts} ) - { - if (( exists($allshortcuts->{$shortcut}->{'FileID'}) ) && - ( ! exists($allfiles->{$allshortcuts->{$shortcut}->{'FileID'}}) )) - { - # die "\nERROR: FileID $allshortcuts->{$shortcut}->{'FileID'} has no definition at shortcut $shortcut !\n"; - print "\n\tWARNING: FileID $allshortcuts->{$shortcut}->{'FileID'} has no definition at shortcut $shortcut !\n"; - } - - if (( exists($allshortcuts->{$shortcut}->{'ShortcutID'}) ) && - ( ! exists($allshortcuts->{$allshortcuts->{$shortcut}->{'ShortcutID'}}) )) - { - die "\nERROR: ShortcutID $allshortcuts->{$shortcut}->{'ShortcutID'} has no definition at shortcut $shortcut !\n"; - } - - if (( ! exists($allshortcuts->{$shortcut}->{'ShortcutID'}) ) && - ( ! exists($allshortcuts->{$shortcut}->{'FileID'}) )) - { - die "\nERROR: Shortcut requires assignment to \"ShortcutID\" or \"FileID\". Missing at shortcut $shortcut !\n"; - } - } -} - -############################################################# -# Controlling if for Modules and Directories, the parents -# are defined. If not, this can lead to a problem during -# script creation, because only recursively added -# Modules or Directories are added to the script. -############################################################# - -sub check_missing_parents -{ - my @parentitems = ("Module", "Directory"); - my %rootparents = ("PREDEFINED_PROGDIR" => "1"); - - my $oneitem; - foreach $oneitem ( @parentitems ) - { - my $alldefinitions = $par2script::globals::definitions{$oneitem}; - - my $onegid; - foreach $onegid ( keys %{$alldefinitions} ) - { - # If there is a ParentID used, it must be defined - if (( exists($alldefinitions->{$onegid}->{'ParentID'}) ) && - ( ! exists($alldefinitions->{$alldefinitions->{$onegid}->{'ParentID'}}) ) && - ( ! exists($rootparents{$alldefinitions->{$onegid}->{'ParentID'}}) )) - { - die "\nERROR: Parent \"$alldefinitions->{$onegid}->{'ParentID'}\" at $oneitem \"$onegid\" is not defined!\n"; - } - } - } -} - -1; |