+ /**
+ * Getter for table information file contents or an empty if the info file was not created
+ *
+ * @param $dataSetInstance An instance of a database set class
+ * @return $infoArray An array with all table informations
+ */
+ private function getContentsFromTableInfoFile (StoreableCriteria $dataSetInstance) {
+ // Default content is no data
+ $infoArray = array();
+
+ // Create FQFN for getting the table information file
+ $fqfn = $this->getSavePath() . $dataSetInstance->getTableName() . '/info.' . $this->getFileExtension();
+
+ // Get the file contents
+ try {
+ $infoArray = $this->getDataArrayFromFile($fqfn);
+ } catch (FileNotFoundException $e) {
+ // Not found, so ignore it here
+ }
+
+ // ... and return it
+ return $infoArray;
+ }
+
+ /**
+ * Creates the table info file from given dataset instance
+ *
+ * @param $dataSetInstance An instance of a database set class
+ * @return void
+ */
+ private function createTableInfoFile (StoreableCriteria $dataSetInstance) {
+ // Create FQFN for creating the table information file
+ $fqfn = $this->getSavePath() . $dataSetInstance->getTableName() . '/info.' . $this->getFileExtension();
+
+ // Get the data out from dataset in a local array
+ $this->tableInfo[$dataSetInstance->getTableName()] = array(
+ 'primary' => $dataSetInstance->getPrimaryKey(),
+ 'created' => time(),
+ 'last_updated' => time()
+ );
+
+ // Write the data to the file
+ $this->writeDataArrayToFqfn($fqfn, $this->tableInfo[$dataSetInstance->getTableName()]);
+ }
+
+ /**
+ * Updates the primary key information or creates the table info file if not found
+ *
+ * @param $dataSetInstance An instance of a database set class
+ * @return void
+ */
+ private function updatePrimaryKey (StoreableCriteria $dataSetInstance) {
+ // Get the information array from lower method
+ $infoArray = $this->getContentsFromTableInfoFile($dataSetInstance);
+
+ // Is the primary key there?
+ if (!isset($this->tableInfo['primary'])) {
+ // Then create the info file
+ $this->createTableInfoFile($dataSetInstance);
+ } elseif (($this->getConfigInstance()->readConfig('db_update_primary_forced') === "Y") && ($dataSetInstance->getPrimaryKey() != $this->tableInfo['primary'])) {
+ // Set the array element
+ $this->tableInfo[$dataSetInstance->getTableName()]['primary'] = $dataSetInstance->getPrimaryKey();
+
+ // Update the entry
+ $this->updateTableInfoFile($dataSetInstance);
+ }
+ }
+