/** * Create the application document registry * * @param array $aData * @return string * */ public function create ($aData) { $oConnection = Propel::getConnection( AppDocumentPeer::DATABASE_NAME ); try { $oAppDocument = new AppDocument(); if (! isset( $aData['APP_DOC_UID'] )) { $sUID = G::generateUniqueID(); $docVersion = 1; } else { $sUID = $aData['APP_DOC_UID']; $docVersion = $this->getLastAppDocVersion( $aData['APP_DOC_UID'], $oAppDocument->getAppUid() ); $oAppDocument->load( $aData['APP_DOC_UID'], $docVersion ); switch ($oAppDocument->getAppDocType()) { case "OUTPUT": //Output versioning $o = new OutputDocument(); $oOutputDocument = $o->load( $oAppDocument->getDocUid() ); if (! $oOutputDocument['OUT_DOC_VERSIONING']) { throw (new Exception( 'The Output document has not versioning enabled!' )); } break; case "INPUT": // Input versioning $o = new InputDocument(); $oInputDocument = $o->load( $oAppDocument->getDocUid() ); if (! $oInputDocument['INP_DOC_VERSIONING']) { throw (new Exception( 'This Input document does not have the versioning enabled, for this reason this operation cannot be completed' )); } break; default: //Not a valid type throw (new Exception( 'The document is not of a valid Type' )); break; } $docVersion ++; } $oAppDocument->fromArray( $aData, BasePeer::TYPE_FIELDNAME ); $oAppDocument->setDocVersion( $docVersion ); $oAppDocument->setAppDocUid( $sUID ); $oAppDocument->setAppDocIndex( $this->getLastIndex( $oAppDocument->getAppUid() ) + 1 ); if ($oAppDocument->validate()) { $oConnection->begin(); if (isset( $aData['APP_DOC_TITLE'] )) { $oAppDocument->setAppDocTitle( $aData['APP_DOC_TITLE'] ); } if (isset( $aData['APP_DOC_COMMENT'] )) { $oAppDocument->setAppDocComment( $aData['APP_DOC_COMMENT'] ); } if (isset( $aData['APP_DOC_FILENAME'] )) { $oAppDocument->setAppDocFilename( $aData['APP_DOC_FILENAME'] ); } $iResult = $oAppDocument->save(); $oConnection->commit(); $this->fromArray( $oAppDocument->toArray( BasePeer::TYPE_FIELDNAME ), BasePeer::TYPE_FIELDNAME ); return $sUID; } else { $sMessage = ''; $aValidationFailures = $oAppDocument->getValidationFailures(); foreach ($aValidationFailures as $oValidationFailure) { $sMessage .= $oValidationFailure->getMessage() . '<br />'; } throw (new Exception( 'The registry cannot be created!<br />' . $sMessage )); } } catch (Exception $oError) { $oConnection->rollback(); throw ($oError); } }
/** * Validates all modified columns of given AppDocument object. * If parameter $columns is either a single column name or an array of column names * than only those columns are validated. * * NOTICE: This does not apply to primary or foreign keys for now. * * @param AppDocument $obj The object to validate. * @param mixed $cols Column name or array of column names. * * @return mixed TRUE if all columns are valid or the error message of the first invalid column. */ public static function doValidate(AppDocument $obj, $cols = null) { $columns = array(); if ($cols) { $dbMap = Propel::getDatabaseMap(AppDocumentPeer::DATABASE_NAME); $tableMap = $dbMap->getTable(AppDocumentPeer::TABLE_NAME); if (!is_array($cols)) { $cols = array($cols); } foreach ($cols as $colName) { if ($tableMap->containsColumn($colName)) { $get = 'get' . $tableMap->getColumn($colName)->getPhpName(); $columns[$colName] = $obj->{$get}(); } } } else { if ($obj->isNew() || $obj->isColumnModified(AppDocumentPeer::APP_DOC_UID)) { $columns[AppDocumentPeer::APP_DOC_UID] = $obj->getAppDocUid(); } if ($obj->isNew() || $obj->isColumnModified(AppDocumentPeer::APP_UID)) { $columns[AppDocumentPeer::APP_UID] = $obj->getAppUid(); } if ($obj->isNew() || $obj->isColumnModified(AppDocumentPeer::DEL_INDEX)) { $columns[AppDocumentPeer::DEL_INDEX] = $obj->getDelIndex(); } if ($obj->isNew() || $obj->isColumnModified(AppDocumentPeer::DOC_UID)) { $columns[AppDocumentPeer::DOC_UID] = $obj->getDocUid(); } if ($obj->isNew() || $obj->isColumnModified(AppDocumentPeer::USR_UID)) { $columns[AppDocumentPeer::USR_UID] = $obj->getUsrUid(); } if ($obj->isNew() || $obj->isColumnModified(AppDocumentPeer::APP_DOC_TYPE)) { $columns[AppDocumentPeer::APP_DOC_TYPE] = $obj->getAppDocType(); } if ($obj->isNew() || $obj->isColumnModified(AppDocumentPeer::APP_DOC_CREATE_DATE)) { $columns[AppDocumentPeer::APP_DOC_CREATE_DATE] = $obj->getAppDocCreateDate(); } if ($obj->isNew() || $obj->isColumnModified(AppDocumentPeer::APP_DOC_STATUS)) { $columns[AppDocumentPeer::APP_DOC_STATUS] = $obj->getAppDocStatus(); } } return BasePeer::doValidate(AppDocumentPeer::DATABASE_NAME, AppDocumentPeer::TABLE_NAME, $columns); }