Change in form of storage Connection Record for export and import of cases with connections to external databases.

This commit is contained in:
Hector Cortez
2011-01-24 14:20:59 +00:00
parent 1137eb1f18
commit 5f136a681e
8 changed files with 74 additions and 69 deletions

View File

@@ -1379,7 +1379,7 @@ class Processes {
$map = array (); $map = array ();
$aSqlConnections = array(); $aSqlConnections = array();
foreach ( $oData->dbconnections as $key => $val ) { foreach ( $oData->dbconnections as $key => $val ) {
$newGuid = $this->getUnusedDBSourceGUID(); $newGuid = $val['DBS_UID']; ///-- $this->getUnusedDBSourceGUID();
$map[ $val['DBS_UID'] ] = $newGuid; $map[ $val['DBS_UID'] ] = $newGuid;
$oData->dbconnections[$key]['DBS_UID'] = $newGuid; $oData->dbconnections[$key]['DBS_UID'] = $newGuid;
} }
@@ -1848,7 +1848,7 @@ class Processes {
$oDataset->next(); $oDataset->next();
while ($aRow = $oDataset->getRow()) { while ($aRow = $oDataset->getRow()) {
$oConnection = new DbSource(); $oConnection = new DbSource();
$aConnections[] = $oConnection->Load($aRow['DBS_UID']); $aConnections[] = $oConnection->Load($aRow['DBS_UID'], $aRow['PRO_UID']);
$oDataset->next(); $oDataset->next();
} }
return $aConnections; return $aConnections;
@@ -2016,8 +2016,8 @@ class Processes {
function createDBConnectionsRows ($aConnections ) { function createDBConnectionsRows ($aConnections ) {
foreach ( $aConnections as $sKey => $aRow ) { foreach ( $aConnections as $sKey => $aRow ) {
$oConnection = new DbSource(); $oConnection = new DbSource();
if( $oConnection->Exists($aRow['DBS_UID']) ) { if( $oConnection->Exists($aRow['DBS_UID'], $aRow['PRO_UID']) ) {
$oConnection->remove($aRow['DBS_UID']); $oConnection->remove($aRow['DBS_UID'], $aRow['PRO_UID']);
} }
$oConnection->create($aRow); $oConnection->create($aRow);
@@ -2882,8 +2882,8 @@ class Processes {
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next(); $oDataset->next();
while ($aRow = $oDataset->getRow()) { while ($aRow = $oDataset->getRow()) {
if ($oConnection->Exists($aRow['DBS_UID'])) if ($oConnection->Exists($aRow['DBS_UID'], $aRow['PRO_UID']))
$oConnection->remove($aRow['DBS_UID']); $oConnection->remove($aRow['DBS_UID'], $aRow['PRO_UID']);
$oDataset->next(); $oDataset->next();
} }

View File

@@ -83,10 +83,10 @@ class DbSource extends BaseDbSource
return $oCriteria; return $oCriteria;
} }
public function load($Uid) public function load($Uid, $ProUID)
{ {
try { try {
$oRow = DbSourcePeer::retrieveByPK($Uid); $oRow = DbSourcePeer::retrieveByPK($Uid, $ProUID);
if (!is_null($oRow)) { if (!is_null($oRow)) {
$aFields = $oRow->toArray(BasePeer::TYPE_FIELDNAME); $aFields = $oRow->toArray(BasePeer::TYPE_FIELDNAME);
$this->fromArray($aFields, BasePeer::TYPE_FIELDNAME); $this->fromArray($aFields, BasePeer::TYPE_FIELDNAME);
@@ -94,7 +94,7 @@ class DbSource extends BaseDbSource
$this->setNew(false); $this->setNew(false);
return $aFields; return $aFields;
} else { } else {
throw(new Exception( "The row '$Uid' in table DbSource doesn't exist!" )); throw(new Exception( "The row '$Uid'/'$ProUID' in table DbSource doesn't exist!" ));
} }
} }
catch (exception $oError) { catch (exception $oError) {
@@ -102,9 +102,9 @@ class DbSource extends BaseDbSource
} }
} }
function Exists ( $Uid ) { function Exists ( $Uid, $ProUID ) {
try { try {
$oPro = DbSourcePeer::retrieveByPk( $Uid ); $oPro = DbSourcePeer::retrieveByPk( $Uid, $ProUID );
if (is_object($oPro) && get_class ($oPro) == 'DbSource' ) { if (is_object($oPro) && get_class ($oPro) == 'DbSource' ) {
return true; return true;
} }
@@ -125,7 +125,7 @@ class DbSource extends BaseDbSource
$con = Propel::getConnection(DbSourcePeer::DATABASE_NAME); $con = Propel::getConnection(DbSourcePeer::DATABASE_NAME);
try { try {
$con->begin(); $con->begin();
$this->load($fields['DBS_UID']); $this->load($fields['DBS_UID'], $fields['PRO_UID']);
$this->fromArray($fields, BasePeer::TYPE_FIELDNAME); $this->fromArray($fields, BasePeer::TYPE_FIELDNAME);
if ($this->validate()) { if ($this->validate()) {
$result = $this->save(); $result = $this->save();
@@ -142,16 +142,17 @@ class DbSource extends BaseDbSource
} }
} }
function remove($DbsUid) function remove($DbsUid, $ProUID )
{ {
$con = Propel::getConnection(DbSourcePeer::DATABASE_NAME); $con = Propel::getConnection(DbSourcePeer::DATABASE_NAME);
try { try {
$con->begin(); $con->begin();
$this->setDbsUid($DbsUid); $this->setDbsUid($DbsUid);
$this->setProUid($ProUID);
// note added by gustavo cruz gustavo-at-colosa-dot-com // note added by gustavo cruz gustavo-at-colosa-dot-com
// we assure that the _delete attribute must be set to false // we assure that the _delete attribute must be set to false
// if a record exists in the database with that uid. // if a record exists in the database with that uid.
if ($this->Exists($DbsUid)){ if ($this->Exists($DbsUid, $ProUID)){
$this->setDeleted(false); $this->setDeleted(false);
} }
$result = $this->delete(); $result = $this->delete();

View File

@@ -66,7 +66,7 @@ class DbSourceMapBuilder {
$tMap->addPrimaryKey('DBS_UID', 'DbsUid', 'string', CreoleTypes::VARCHAR, true, 32); $tMap->addPrimaryKey('DBS_UID', 'DbsUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addColumn('PRO_UID', 'ProUid', 'string', CreoleTypes::VARCHAR, true, 32); $tMap->addPrimaryKey('PRO_UID', 'ProUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addColumn('DBS_TYPE', 'DbsType', 'string', CreoleTypes::VARCHAR, true, 8); $tMap->addColumn('DBS_TYPE', 'DbsType', 'string', CreoleTypes::VARCHAR, true, 8);

View File

@@ -827,28 +827,40 @@ abstract class BaseDbSource extends BaseObject implements Persistent {
$criteria = new Criteria(DbSourcePeer::DATABASE_NAME); $criteria = new Criteria(DbSourcePeer::DATABASE_NAME);
$criteria->add(DbSourcePeer::DBS_UID, $this->dbs_uid); $criteria->add(DbSourcePeer::DBS_UID, $this->dbs_uid);
$criteria->add(DbSourcePeer::PRO_UID, $this->pro_uid);
return $criteria; return $criteria;
} }
/** /**
* Returns the primary key for this object (row). * Returns the composite primary key for this object.
* @return string * The array elements will be in same order as specified in XML.
* @return array
*/ */
public function getPrimaryKey() public function getPrimaryKey()
{ {
return $this->getDbsUid(); $pks = array();
$pks[0] = $this->getDbsUid();
$pks[1] = $this->getProUid();
return $pks;
} }
/** /**
* Generic method to set the primary key (dbs_uid column). * Set the [composite] primary key.
* *
* @param string $key Primary key. * @param array $keys The elements of the composite key (order must match the order in XML file).
* @return void * @return void
*/ */
public function setPrimaryKey($key) public function setPrimaryKey($keys)
{ {
$this->setDbsUid($key);
$this->setDbsUid($keys[0]);
$this->setProUid($keys[1]);
} }
/** /**
@@ -864,8 +876,6 @@ abstract class BaseDbSource extends BaseObject implements Persistent {
public function copyInto($copyObj, $deepCopy = false) public function copyInto($copyObj, $deepCopy = false)
{ {
$copyObj->setProUid($this->pro_uid);
$copyObj->setDbsType($this->dbs_type); $copyObj->setDbsType($this->dbs_type);
$copyObj->setDbsServer($this->dbs_server); $copyObj->setDbsServer($this->dbs_server);
@@ -885,6 +895,8 @@ abstract class BaseDbSource extends BaseObject implements Persistent {
$copyObj->setDbsUid(''); // this is a pkey column, so set to default value $copyObj->setDbsUid(''); // this is a pkey column, so set to default value
$copyObj->setProUid('0'); // this is a pkey column, so set to default value
} }
/** /**

View File

@@ -419,6 +419,9 @@ abstract class BaseDbSourcePeer {
$comparison = $criteria->getComparison(DbSourcePeer::DBS_UID); $comparison = $criteria->getComparison(DbSourcePeer::DBS_UID);
$selectCriteria->add(DbSourcePeer::DBS_UID, $criteria->remove(DbSourcePeer::DBS_UID), $comparison); $selectCriteria->add(DbSourcePeer::DBS_UID, $criteria->remove(DbSourcePeer::DBS_UID), $comparison);
$comparison = $criteria->getComparison(DbSourcePeer::PRO_UID);
$selectCriteria->add(DbSourcePeer::PRO_UID, $criteria->remove(DbSourcePeer::PRO_UID), $comparison);
} else { // $values is DbSource object } else { // $values is DbSource object
$criteria = $values->buildCriteria(); // gets full criteria $criteria = $values->buildCriteria(); // gets full criteria
$selectCriteria = $values->buildPkeyCriteria(); // gets criteria w/ primary key(s) $selectCriteria = $values->buildPkeyCriteria(); // gets criteria w/ primary key(s)
@@ -479,7 +482,24 @@ abstract class BaseDbSourcePeer {
} else { } else {
// it must be the primary key // it must be the primary key
$criteria = new Criteria(self::DATABASE_NAME); $criteria = new Criteria(self::DATABASE_NAME);
$criteria->add(DbSourcePeer::DBS_UID, (array) $values, Criteria::IN); // primary key is composite; we therefore, expect
// the primary key passed to be an array of pkey
// values
if(count($values) == count($values, COUNT_RECURSIVE))
{
// array is not multi-dimensional
$values = array($values);
}
$vals = array();
foreach($values as $value)
{
$vals[0][] = $value[0];
$vals[1][] = $value[1];
}
$criteria->add(DbSourcePeer::DBS_UID, $vals[0], Criteria::IN);
$criteria->add(DbSourcePeer::PRO_UID, $vals[1], Criteria::IN);
} }
// Set the correct dbName // Set the correct dbName
@@ -539,53 +559,24 @@ abstract class BaseDbSourcePeer {
} }
/** /**
* Retrieve a single object by pkey. * Retrieve object using using composite pkey values.
* * @param string $dbs_uid
* @param mixed $pk the primary key. @param string $pro_uid
* @param Connection $con the connection to use
* @param Connection $con
* @return DbSource * @return DbSource
*/ */
public static function retrieveByPK($pk, $con = null) public static function retrieveByPK( $dbs_uid, $pro_uid, $con = null) {
{
if ($con === null) { if ($con === null) {
$con = Propel::getConnection(self::DATABASE_NAME); $con = Propel::getConnection(self::DATABASE_NAME);
} }
$criteria = new Criteria();
$criteria = new Criteria(DbSourcePeer::DATABASE_NAME); $criteria->add(DbSourcePeer::DBS_UID, $dbs_uid);
$criteria->add(DbSourcePeer::PRO_UID, $pro_uid);
$criteria->add(DbSourcePeer::DBS_UID, $pk);
$v = DbSourcePeer::doSelect($criteria, $con); $v = DbSourcePeer::doSelect($criteria, $con);
return !empty($v) > 0 ? $v[0] : null; return !empty($v) ? $v[0] : null;
} }
/**
* Retrieve multiple objects by pkey.
*
* @param array $pks List of primary keys
* @param Connection $con the connection to use
* @throws PropelException Any exceptions caught during processing will be
* rethrown wrapped into a PropelException.
*/
public static function retrieveByPKs($pks, $con = null)
{
if ($con === null) {
$con = Propel::getConnection(self::DATABASE_NAME);
}
$objs = null;
if (empty($pks)) {
$objs = array();
} else {
$criteria = new Criteria();
$criteria->add(DbSourcePeer::DBS_UID, $pks, Criteria::IN);
$objs = DbSourcePeer::doSelect($criteria, $con);
}
return $objs;
}
} // BaseDbSourcePeer } // BaseDbSourcePeer
// static code to register the map builder for this Peer with the main Propel class // static code to register the map builder for this Peer with the main Propel class

View File

@@ -4532,12 +4532,12 @@
<parameter name="Extra" value=""/> <parameter name="Extra" value=""/>
</vendor> </vendor>
</column> </column>
<column name="PRO_UID" type="VARCHAR" size="32" required="true" default="0"> <column name="PRO_UID" type="VARCHAR" size="32" required="true" primaryKey="true" default="0">
<vendor type="mysql"> <vendor type="mysql">
<parameter name="Field" value="PRO_UID"/> <parameter name="Field" value="PRO_UID"/>
<parameter name="Type" value="varchar(32)"/> <parameter name="Type" value="varchar(32)"/>
<parameter name="Null" value="NO"/> <parameter name="Null" value="NO"/>
<parameter name="Key" value=""/> <parameter name="Key" value="PRI"/>
<parameter name="Default" value=""/> <parameter name="Default" value=""/>
<parameter name="Extra" value=""/> <parameter name="Extra" value=""/>
</vendor> </vendor>

View File

@@ -752,7 +752,7 @@ CREATE TABLE `DB_SOURCE`
`DBS_PASSWORD` VARCHAR(32) default '', `DBS_PASSWORD` VARCHAR(32) default '',
`DBS_PORT` INTEGER default 0, `DBS_PORT` INTEGER default 0,
`DBS_ENCODE` VARCHAR(32) default '', `DBS_ENCODE` VARCHAR(32) default '',
PRIMARY KEY (`DBS_UID`), PRIMARY KEY (`DBS_UID`,`PRO_UID`),
KEY `indexDBSource`(`PRO_UID`) KEY `indexDBSource`(`PRO_UID`)
)Type=MyISAM ; )Type=MyISAM ;
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------

View File

@@ -122,7 +122,7 @@ switch ( $action ){
$_SESSION['_DBArray'] = $_DBArray; $_SESSION['_DBArray'] = $_DBArray;
$o = new DbSource(); $o = new DbSource();
$aFields = $o->load($_POST['DBS_UID']); $aFields = $o->load($_POST['DBS_UID'], $_SESSION['PROCESS']);
if ($aFields['DBS_PORT'] == '0') { if ($aFields['DBS_PORT'] == '0') {
$aFields['DBS_PORT'] = ''; $aFields['DBS_PORT'] = '';
} }
@@ -178,7 +178,8 @@ switch ( $action ){
$oContent = new Content(); $oContent = new Content();
$DBS_UID = $_POST['dbs_uid']; $DBS_UID = $_POST['dbs_uid'];
$oDBSource->remove($DBS_UID); $PRO_UID = $_SESSION['PROCESS'];
$oDBSource->remove($DBS_UID, $PRO_UID);
$oContent->removeContent('DBS_DESCRIPTION', "", $DBS_UID); $oContent->removeContent('DBS_DESCRIPTION', "", $DBS_UID);
break; break;