Introduced initWebOutputInstance() which will initialize a web output instance.
[core.git] / inc / classes / main / class_BaseFrameworkSystem.php
index a3774fc4be4361bccfe3c709fefb6bde8054d959..c3bb447f2bf4f1128259572e845f114645c5a5cf 100644 (file)
@@ -5,7 +5,7 @@
  *
  * @author             Roland Haeder <webmaster@shipsimu.org>
  * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2014 Core Developer Team
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 Core Developer Team
  * @license            GNU GPL 3.0 or any newer version
  * @link               http://www.shipsimu.org
  *
@@ -148,6 +148,11 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
         */
        private $sourceInstance = NULL;
 
+       /**
+        * An instance of a UrlSource class
+        */
+       private $urlSourceInstance = NULL;
+
        /**
         * An instance of a InputStream class
         */
@@ -223,6 +228,11 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
         */
        private $socketResource = FALSE;
 
+       /**
+        * Regular expression to use for validation
+        */
+       private $regularExpression = '';
+
        /**
         * Package data
         */
@@ -1028,7 +1038,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
         * @param       $protocolInstance       An instance of an HandleableProtocol
         * @return      void
         */
-       public final function setProtocolInstance (HandleableProtocol $protocolInstance = NULL) {
+       public final function setProtocolInstance (HandleableProtocol $protocolInstance) {
                $this->protocolInstance = $protocolInstance;
        }
 
@@ -1081,6 +1091,27 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                return $this->socketResource;
        }
 
+       /**
+        * Setter for regular expression
+        *
+        * @param       $regularExpression      A valid regular expression
+        * @return      void
+        */
+       public final function setRegularExpression ($regularExpression) {
+               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput($this->__toString() . '::' . __FUNCTION__ . ': regularExpression=' . $regularExpression . ',previous[' . gettype($this->regularExpression) . ']=' . $this->regularExpression);
+               $this->regularExpression = $regularExpression;
+       }
+
+       /**
+        * Getter for regular expression
+        *
+        * @return      $regularExpression      A valid regular expression
+        */
+       public final function getRegularExpression () {
+               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput($this->__toString() . '::' . __FUNCTION__ . ': regularExpression[' . gettype($this->regularExpression) . ']=' . $this->regularExpression);
+               return $this->regularExpression;
+       }
+
        /**
         * Setter for helper instance
         *
@@ -1103,7 +1134,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        /**
         * Setter for a Sourceable instance
         *
-        * @param       $sourceInstance The Sourceable instance
+        * @param       $sourceInstance         An instance of a Sourceable class
         * @return      void
         */
        protected final function setSourceInstance (Sourceable $sourceInstance) {
@@ -1113,12 +1144,31 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        /**
         * Getter for a Sourceable instance
         *
-        * @return      $sourceInstance The Sourceable instance
+        * @return      $sourceInstance         An instance of a Sourceable class
         */
        protected final function getSourceInstance () {
                return $this->sourceInstance;
        }
 
+       /**
+        * Setter for a UrlSource instance
+        *
+        * @param       $sourceInstance         An instance of a UrlSource class
+        * @return      void
+        */
+       protected final function setUrlSourceInstance (UrlSource $urlSourceInstance) {
+               $this->urlSourceInstance = $urlSourceInstance;
+       }
+
+       /**
+        * Getter for a UrlSource instance
+        *
+        * @return      $urlSourceInstance              An instance of a UrlSource class
+        */
+       protected final function getUrlSourceInstance () {
+               return $this->urlSourceInstance;
+       }
+
        /**
         * Getter for a InputStream instance
         *
@@ -1254,24 +1304,40 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        }
 
        /**
-        * Setter for InputOutputPointer instance
+        * Setter for FilePointer instance
         *
-        * @param       $pointerInstance        An instance of an InputOutputPointer class
+        * @param       $pointerInstance        An instance of an FilePointer class
         * @return      void
         */
-       protected final function setPointerInstance (InputOutputPointer $pointerInstance) {
+       protected final function setPointerInstance (FilePointer $pointerInstance) {
                $this->pointerInstance = $pointerInstance;
        }
 
        /**
-        * Getter for InputOutputPointer instance
+        * Getter for FilePointer instance
         *
-        * @return      $pointerInstance        An instance of an InputOutputPointer class
+        * @return      $pointerInstance        An instance of an FilePointer class
         */
        public final function getPointerInstance () {
                return $this->pointerInstance;
        }
 
+       /**
+        * Unsets pointer instance which triggers a call of __destruct() if the
+        * instance is still there. This is surely not fatal on already "closed"
+        * file pointer instances.
+        *
+        * I don't want to mess around with above setter by giving it a default
+        * value NULL as setter should always explicitly only set (existing) object
+        * instances and NULL is NULL.
+        *
+        * @return      void
+        */
+       protected final function unsetPointerInstance () {
+               // Simply it to NULL
+               $this->pointerInstance = NULL;
+       }
+
        /**
         * Setter for Indexable instance
         *
@@ -1844,7 +1910,8 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
 
                // Do we have an entry?
                if ($this->getResultInstance()->valid() === FALSE) {
-                       throw new InvalidDatabaseResultException(array($this, $this->getResultInstance()), DatabaseResult::EXCEPTION_INVALID_DATABASE_RESULT);
+                       // @TODO Move the constant to e.g. BaseDatabaseResult when there is a non-cached database result available
+                       throw new InvalidDatabaseResultException(array($this, $this->getResultInstance()), CachedDatabaseResult::EXCEPTION_INVALID_DATABASE_RESULT);
                } // END - if
 
                // Get next entry
@@ -2882,6 +2949,28 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                return $isValid;
        }
 
+       /**
+        * Initializes the web output instance
+        *
+        * @return      void
+        */
+       protected function initWebOutputInstance () {
+               // Get application instance
+               $applicationInstance = Registry::getRegistry()->getInstance('app');
+
+               // Is this a response instance?
+               if ($this instanceof Responseable) {
+                       // Then set it in application instance
+                       $applicationInstance->setResponseInstance($this);
+               } // END - if
+
+               // Init web output instance
+               $outputInstance = ObjectFactory::createObjectByConfiguredName('output_class', array($applicationInstance));
+
+               // Set it locally
+               $this->setWebOutputInstance($outputInstance);
+       }
+
        /**
         * Translates boolean TRUE to 'Y' and FALSE to 'N'
         *