ePages 6.17.39 - DE_EPAGES/Installer/API/CartridgesXMLFilePatcher.pm

Package DE_EPAGES::Installer::API::CartridgesXMLFilePatcher

patch Cartridges.xml file use a delete and a import file.

@EXPORT_OK
ReadCartridgesXmlFile
ReadCartridgesXmlStruct
SortCartridgesXmlStruct
GetCartridgeDependencies
GetCartridgePositions
SetCartridgePositions
CartridgeDependencyError

Functions

CartridgeDependencyError
GetCartridgeDependencies
GetCartridgePositions
ReadCartridgesXmlFile
ReadCartridgesXmlStruct
SetCartridgePositions
SortCartridgesXmlStruct
deleteElements
importElements
new

CartridgeDependencyError

dies because Cartridges.xml/Dependencies.xml is corrupt

Syntax
CartridgeDependencyError($DependentCartridges);
Input
$DependentCartridges (ref.hash)
hash w/ key cartridge and value hash of dependent cartridges

GetCartridgeDependencies

finds dependencies for cartridges in $hCartridgesXml according to $ENV{EPAGES_CARTRIDGES}/<Cartridge>/Database/XML/Dependencies.xml

Syntax
my ($DependentCartridges, $IndependentCartridges) = GetCartridgeDependencies($hCartridgesXml);
Input
$hCartridgesXml (ref.hash)
hash representing Cartridges.xml
Return
$DependentCartridges (ref.hash)
hash w/ key cartridge and value hash of dependent cartridges
$IndependentCartridges (ref.arrray)
arrray of cartridge w/o dependencies

GetCartridgePositions

finds cartidge positions for sorting

Syntax
my $hCartridgePosition = GetCartridgePositions($DependentCartridges, $IndependentCartridges, $hFlags);
Input
$DependentCartridges (ref.hash)
hash w/ key cartridge and value hash of dependent cartridges
$IndependentCartridges (ref.arrray)
arrray of cartridge w/o dependencies
$hFlags (hash ref)
flags to modify the behaviour of GetCartridgePositions.
The following flag can be used:
  • check_dependencies - dies if dependencies are missing
    in Cartridges.xml

Return
$hCartridgePosition (ref.hash)
hash w/ key cartridge and value position

ReadCartridgesXmlFile

writes info from Cartridges.xml into $hCartridgesXml

Syntax
$hCartridgesXml = ReadCartridgesXmlFile($CartridgesXmlFile);
Input
$CartridgesXmlFile (string)
path to Cartridges.xml
Return
$hCartridgesXml (ref.hash)
hash representing Cartridges.xml

ReadCartridgesXmlStruct

writes info from $CartridgesXMLStruct into $hCartridgesXml

Syntax
$hCartridgesXml = ReadCartridgesXmlStruct($CartridgesXMLStruct);
Input
$CartridgesXMLStruct (object)
structure representing Cartridges.xml
Return
$hCartridgesXml (ref.hash)
hash representing Cartridges.xml

SetCartridgePositions

returns reordered cartridges in $hCartridgesXml according to $hCartridgePosition and hash with database type positions

Syntax
my ($hReorderedCartridgesXml, $hDatabaseTypePosition) = SetCartridgePositions($hCartridgesXml, $hCartridgePosition);
Input
$hCartridgesXml (ref.hash)
hash representing Cartridges.xml
$hCartridgePosition (ref.hash)
hash w/ key cartridge and value position
Return
$hReorderedCartridgesXml (ref.hash)
sorted hash representing Cartridges.xml
$hDatabaseTypePosition (ref.hash)
hash w/ key db type and value position

SortCartridgesXmlStruct

sorts <DatabaseType/> and <Cartridge/> elements in $CartridgesXMLStruct

Syntax
SortCartridgesXmlStruct($CartridgesXMLStruct, $hFlags);
Example
my $ImportHandler = DE_EPAGES::Object::API::XMLStructureImportHandler->new();
my $CartridgesXml = "$ENV{EPAGES_CARTRIDGES}/Cartridges.xml";
my $CartridgesXMLStruct = $ImportHandler->getXMLStructure($CartridgesXml,
              {'XML-Type' => 'epages_cartridges_xml'});
SortCartridgesXmlStruct($CartridgesXMLStruct);
my $ExportDriver = DE_EPAGES::Object::API::XMLStructureExportDriver->new();
$ExportDriver->exportXML($CartridgesXml, $CartridgesXMLStruct);
Input
$CartridgesXMLStruct (object)
structure representing Cartridges.xml
$hFlags (hash ref)
flags to modify the behaviour of SortCartridgesXmlStruct,
The following flag can be used:
  • check_dependencies - dies if dependencies are missing
    in Cartridges.xml

deleteElements

delete all elements from delete file that have the attribute delete="1"

Syntax
deleteElements($DeleteFile);
Example
$CartridgesXMLFilePatcher->deleteElements('del_Cartridges.xml');
Input
$DeleteFile (string)
delete cartridges xml file name

importElements

Adds all elements from import file if not exists or update elements. If no import file is given it just reorders Cartridges.xml.

Syntax
importElements($ImportFile, $hFlags);
Example
$CartridgesXMLFilePatcher->importElements('imp_Cartridges.xml');
$CartridgesXMLFilePatcher->importElements(undef, {check_dependencies => 1});
Input
$ImportFile (string)
import cartridges xml file name
$hFlags (hash ref)
flags to modify the behaviour of importElements.
The following flag can be used:
  • check_dependencies - dies if dependencies are missing
    in Cartridges.xml

new

creates a new CartridgesXMLFilePatcher object

Syntax
my $CartridgesXMLFilePatcher = DE_EPAGES::Installer::API::CartridgesXMLFilePatcher->new($CartridgesXMLFile);
Example
my $CartridgesXMLFilePatcher = DE_EPAGES::Installer::API::CartridgesXMLFilePatcher->new('Cartridges.xml');
Input
$CartridgesXMLFile (string)
path to Cartridges.xml
Return
$CartridgesXMLFilePatcher (object)
CartridgesXMLFilePatcher object