]> git.mxchange.org Git - core.git/blobdiff - framework/main/classes/stacker/file/class_BaseFileStack.php
Continued:
[core.git] / framework / main / classes / stacker / file / class_BaseFileStack.php
index badedcb7c0032ba1dd6962bc5609788a9343b4ca..59aac997e63e6925c4233c9e0dd48d33d9f47325 100644 (file)
@@ -11,7 +11,8 @@ use Org\Mxchange\CoreFramework\Generic\UnsupportedOperationException;
 use Org\Mxchange\CoreFramework\Stack\BaseStacker;
 use Org\Mxchange\CoreFramework\Traits\Index\IndexableTrait;
 use Org\Mxchange\CoreFramework\Traits\Iterator\IteratorTrait;
-use Org\Mxchange\CoreFramework\Utils\String\StringUtils;
+use Org\Mxchange\CoreFramework\Utils\Strings\StringUtils;
+use Org\Mxchange\CoreFramework\Utils\Arrays\ArrayUtils;
 
 // Import SPL stuff
 use \InvalidArgumentException;
@@ -125,39 +126,50 @@ abstract class BaseFileStack extends BaseStacker {
                 */
                $header = explode(chr(BinaryFile::SEPARATOR_HEADER_DATA), $data);
 
+               // Map numeric indexes to associative indexes
+               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('BASE-FILE-STACK: header()=%d', count($header)));
+               $header = ArrayUtils::mapNumericKeysToAssociative($header, [
+                       BinaryFile::HEADER_NAME_MAGIC,
+                       BinaryFile::HEADER_NAME_TOTAL_ENTRIES,
+                       BinaryFile::HEADER_NAME_SEEK_POSITION,
+               ]);
+
                // Check if the array has only 3 elements
-               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('BASE-FILE-STACK: header(%d)=%s', count($header), print_r($header, true)));
-               if (count($header) != 3) {
+               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('BASE-FILE-STACK: HEADER_ELEMENT_COUNT=%d,header(%d)=%s', BinaryFile::HEADER_ELEMENT_COUNT, count($header), print_r($header, true)));
+               if (count($header) != BinaryFile::HEADER_ELEMENT_COUNT) {
                        // Header array count is not expected
-                       throw new UnexpectedValueException(sprintf('data=%s has %d elements, expected 3',
+                       throw new UnexpectedValueException(sprintf('data=%s has %d elements, but expected is %d',
                                $data,
-                               count($header)
+                               count($header),
+                               BinaryFile::HEADER_ELEMENT_COUNT
                        ));
-               } elseif ($header[0] != StackableFile::STACK_MAGIC) {
+               } elseif ($header[BinaryFile::HEADER_NAME_MAGIC] != StackableFile::STACK_MAGIC) {
                        // Bad magic
                        throw new InvalidMagicException($data, self::EXCEPTION_BAD_MAGIC);
                }
 
                // Check length of count and seek position
-               if (strlen($header[1]) != BinaryFile::LENGTH_COUNT) {
+               if (strlen($header[BinaryFile::HEADER_NAME_TOTAL_ENTRIES]) != BinaryFile::LENGTH_COUNT) {
                        // Count length not valid
-                       throw new UnexpectedValueException(sprintf('header[1](%d)=%s is not expected %d length',
-                               strlen($header[1]),
-                               $header[1],
+                       throw new UnexpectedValueException(sprintf('header[%s](%d)=%s is not expected %d length',
+                               BinaryFile::HEADER_NAME_TOTAL_ENTRIES,
+                               strlen($header[BinaryFile::HEADER_NAME_TOTAL_ENTRIES]),
+                               $header[BinaryFile::HEADER_NAME_TOTAL_ENTRIES],
                                BinaryFile::LENGTH_COUNT
                        ));
-               } elseif (strlen($header[1]) != BinaryFile::LENGTH_POSITION) {
+               } elseif (strlen($header[BinaryFile::HEADER_NAME_SEEK_POSITION]) != BinaryFile::LENGTH_POSITION) {
                        // Position length not valid
-                       throw new UnexpectedValueException(sprintf('header[2](%d)=%s is not expected %d length',
-                               strlen($header[1]),
-                               $header[1],
+                       throw new UnexpectedValueException(sprintf('header[%s](%d)=%s is not expected %d length',
+                               BinaryFile::HEADER_NAME_SEEK_POSITION,
+                               strlen($header[BinaryFile::HEADER_NAME_SEEK_POSITION]),
+                               $header[BinaryFile::HEADER_NAME_SEEK_POSITION],
                                BinaryFile::LENGTH_POSITION
                        ));
                }
 
                // Decode count and seek position
-               $header[1] = hex2bin($header[1]);
-               $header[2] = hex2bin($header[2]);
+               $header[BinaryFile::HEADER_NAME_TOTAL_ENTRIES] = hex2bin($header[BinaryFile::HEADER_NAME_TOTAL_ENTRIES]);
+               $header[BinaryFile::HEADER_NAME_SEEK_POSITION] = hex2bin($header[BinaryFile::HEADER_NAME_SEEK_POSITION]);
 
                // Set header here
                $this->getIteratorInstance()->getBinaryFileInstance()->setHeader($header);