*
* @param $resultInstance An instance of a Updateable database result
* @return void
+ * @throws NullPointerException If $updateInstance or $searchInstance is null
*/
public function doUpdateByResult (UpdateableResult $resultInstance) {
+ // Get the search instance from result
+ $searchInstance = $resultInstance->getSearchInstance();
+
+ // Is this null?
+ if (is_null($searchInstance)) {
+ // Get the update instance
+ $updateInstance = $resultInstance->getUpdateInstance();
+
+ // Is this null?
+ if (is_null($updateInstance)) {
+ // Throw an exception here
+ throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER);
+ } // END - if
+
+ // Get search instance from update instance
+ $searchInstance = $updateInstance->getSearchInstance();
+
+ // Is it still null?
+ if (is_null($searchInstance)) {
+ // Throw an exception here
+ throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER);
+ } // END - if
+ } // END - if
+
// Generate a data set object
$dataSetInstance = ObjectFactory::createObjectByConfiguredName('dataset_criteria_class', array(self::DB_TABLE_USER));
- // Add all update criteria to the database set
- $resultInstance->addElementsToDataSet($dataSetInstance);
-
// Add seach criteria
- $dataSetInstance->setSearchInstance($resultInstance->getSearchInstance());
+ $dataSetInstance->setSearchInstance($searchInstance);
// Set the primary key
$dataSetInstance->setUniqueKey(self::DB_COLUMN_USERNAME);
+ // Add all update criteria to the database set
+ $resultInstance->addElementsToDataSet($dataSetInstance);
+
// "Update" this request with the database
$this->getDatabaseInstance()->queryUpdateDataSet($dataSetInstance);
}