]> git.mxchange.org Git - hub.git/blobdiff - application/hub/main/tags/package/class_PackageTags.php
Continued with hub:
[hub.git] / application / hub / main / tags / package / class_PackageTags.php
index 510c59b57a8baacec227118c7076e20c559b132d..7cfbed0abaad075fad71669f05bb984d5bf22502 100644 (file)
@@ -2,11 +2,11 @@
 /**
  * A Package tags class
  *
- * @author             Roland Haeder <webmaster@ship-simu.org>
+ * @author             Roland Haeder <webmaster@shipsimu.org>
  * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009, 2010 Hub Developer Team
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2014 Hub Developer Team
  * @license            GNU GPL 3.0 or any newer version
- * @link               http://www.ship-simu.org
+ * @link               http://www.shipsimu.org
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -26,9 +26,9 @@ class PackageTags extends BaseTags implements Tagable {
        const EXCEPTION_INVALID_TAG = 0x160;
 
        /**
-        * Last found protocol
+        * Last found protocol instance
         */
-       private $lastProtocol = 'invalid';
+       private $lastProtocol = NULL;
 
        /**
         * Last found recipient type
@@ -53,7 +53,7 @@ class PackageTags extends BaseTags implements Tagable {
         *
         * @return      $tagsInstance   An instance of a Tagable class
         */
-       public final static function createPackageTags () {
+       public static final function createPackageTags () {
                // Get new instance
                $tagsInstance = new PackageTags();
 
@@ -62,40 +62,32 @@ class PackageTags extends BaseTags implements Tagable {
        }
 
        /**
-        * Loads the XML file (our "object registry") and saves an instance for faster re-use
+        * Loads the XML file (our "object registry") and saves an instance for
+        * faster re-use.
         *
         * @return      void
         */
        private function initObjectRegistry () {
                // Output debug message
-               $this->debugOutput('TAGS: Initializing object registry - START');
+               self::createDebugInstance(__CLASS__)->debugOutput('TAGS[' . __METHOD__ . ':' . __LINE__ . ']: Initializing object registry - START');
 
                // Get the application instance
-               $appInstance = Registry::getRegistry()->getInstance('app');
+               $applicationInstance = Registry::getRegistry()->getInstance('app');
 
                // Get a XML template instance
-               $templateInstance = ObjectFactory::createObjectByConfiguredName('object_registry_template_class', array($appInstance));
-
-               // Disable language support
-               $templateInstance->enableLanguageSupport(false);
-
-               /*
-                * Enable compacting/rewriting of the  XML to save bandwidth from XML
-                * comments. This is expensive and should be avoided in general.
-                */
-               $templateInstance->enableXmlCompacting();
+               $templateInstance = XmlTemplateEngineFactory::createXmlTemplateEngineInstance('node_object_registry_template_class');
 
                // Set it for later use
                $this->setTemplateInstance($templateInstance);
 
                // Read the XML file
-               $this->getTemplateInstance()->loadObjectRegistryTemplate('object_registry');
+               $this->getTemplateInstance()->loadXmlTemplate();
 
                // Render the XML content
                $this->getTemplateInstance()->renderXmlContent();
 
                // Output debug message
-               $this->debugOutput('TAGS: Initializing object registry - FINISHED');
+               self::createDebugInstance(__CLASS__)->debugOutput('TAGS[' . __METHOD__ . ':' . __LINE__ . ']: Initializing object registry - FINISHED');
        }
 
        /**
@@ -109,10 +101,10 @@ class PackageTags extends BaseTags implements Tagable {
                 * We take a look at the tags (in most cases only one is needed) so
                 * first we need the content data splitted up into all it's parts.
                 */
-               $contentData = explode(NetworkPackage::PACKAGE_MASK_SEPERATOR, $packageData['content']);
+               $contentData = explode(NetworkPackage::PACKAGE_MASK_SEPARATOR, $packageData[NetworkPackage::PACKAGE_DATA_CONTENT]);
 
                // Get the tags and store them locally
-               $this->setTags(explode(NetworkPackage::PACKAGE_TAGS_SEPERATOR, $contentData[NetworkPackage::INDEX_TAGS]));
+               $this->setTags(explode(NetworkPackage::PACKAGE_TAGS_SEPARATOR, $contentData[NetworkPackage::INDEX_TAGS]));
        }
 
        /**
@@ -126,25 +118,25 @@ class PackageTags extends BaseTags implements Tagable {
         */
        private function verifyAllTags () {
                // Get the registry
-               $objectRegistryInstance = ObjectFactory::createObjectByConfiguredName('object_type_registry_class');
+               $objectRegistryInstance = ObjectTypeRegistryFactory::createObjectTypeRegistryInstance();
 
                // "Walk" over all tags
                foreach ($this->getTags() as $tag) {
                        // Debug output
-                       $this->debugOutput('TAGS: Validating tag ' . $tag . ' ...');
+                       self::createDebugInstance(__CLASS__)->debugOutput('TAGS[' . __METHOD__ . ':' . __LINE__ . ']: Validating tag ' . $tag . ' ...');
 
                        // Get an array from this tag
-                       $entry = $objectRegistryInstance->getArrayFromKey($tag);
+                       $entry = $objectRegistryInstance->getArrayFromKey(XmlObjectRegistryTemplateEngine::OBJECT_TYPE_DATA_NAME, $tag);
 
                        // If the array is empty, the entry is invalid!
-                       if (count($entry) == 0) {
+                       if ((count($entry) == 0) || (!isset($entry[XmlObjectRegistryTemplateEngine::OBJECT_TYPE_DATA_PROTOCOL])) || (!isset($entry[XmlObjectRegistryTemplateEngine::OBJECT_TYPE_DATA_RECIPIENT_TYPE]))) {
                                // Invalid entry found
                                throw new InvalidTagException(array($this, $tag), self::EXCEPTION_INVALID_TAG);
                        } // END - if
 
                        // Now save the last discovered protocol/recipient type
-                       $this->lastProtocol      = $entry['object-protocol'];
-                       $this->lastRecipientType = $entry['object-recipient-type'];
+                       $this->lastProtocol      = ProtocolHandlerFactory::createProtocolHandlerFromArray($entry);
+                       $this->lastRecipientType = $entry[XmlObjectRegistryTemplateEngine::OBJECT_TYPE_DATA_RECIPIENT_TYPE];
                } // END - foreach
        }
 
@@ -152,7 +144,7 @@ class PackageTags extends BaseTags implements Tagable {
         * Chooses the right protocol from given package data
         *
         * @param       $packageData    Raw package data
-        * @return      $protocolName   Name of the choosen procotol
+        * @return      $lastProtocol   An instance of the last used ProtocolHandler class
         */
        public function chooseProtocolFromPackageData (array $packageData) {
                // Extract the tags
@@ -161,19 +153,16 @@ class PackageTags extends BaseTags implements Tagable {
                // Now we need to verify every single tag
                $this->verifyAllTags();
 
-               // Use the last found protocol for transmission
-               $protocolName = $this->lastProtocol;
-
                // Return it
-               return $protocolName;
+               return $this->lastProtocol;
        }
 
        /**
-        * Checks wether the given package data is accepted by the listener
+        * Checks whether the given package data is accepted by the listener
         *
         * @param       $packageData            Raw package data
         * @param       $listenerInstance       A Listenable instance
-        * @return      $accepts                        Wether it is accepted
+        * @return      $accepts                        Whether it is accepted
         */
        public function ifPackageDataIsAcceptedByListener (array $packageData, Listenable $listenerInstance) {
                // Extract the tags