Data Exchange - Implemented reconciliation on external keys

SVN:trunk[1101]
This commit is contained in:
Romain Quetiez
2011-03-01 13:47:09 +00:00
parent f3f2eb5c79
commit 67f8ddf5a8
6 changed files with 255 additions and 67 deletions

View File

@@ -3730,6 +3730,31 @@ abstract class MetaModel
return $oObj;
}
static protected $m_aCacheObjectByColumn = array();
public static function GetObjectByColumn($sClass, $sAttCode, $value, $bMustBeFoundUnique = true)
{
if (!isset(self::$m_aCacheObjectByColumn[$sClass][$sAttCode][$value]))
{
self::_check_subclass($sClass);
$oObjSearch = new DBObjectSearch($sClass);
$oObjSearch->AddCondition($sAttCode, $value, '=');
$oSet = new DBObjectSet($oObjSearch);
if ($oSet->Count() == 1)
{
self::$m_aCacheObjectByColumn[$sClass][$sAttCode][$value] = $oSet->fetch();
}
else
{
if ($bMustBeFoundUnique) throw new CoreException('Failed to get an object by column', array('class'=>$sClass, 'attcode'=>$sAttCode, 'value'=>$value, 'matches' => $oSet->Count()));
self::$m_aCacheObjectByColumn[$sClass][$sAttCode][$value] = null;
}
}
return self::$m_aCacheObjectByColumn[$sClass][$sAttCode][$value];
}
public static function GetObjectFromOQL($sQuery, $aParams = null, $bAllowAllData = false)
{
$oFilter = DBObjectSearch::FromOQL($sQuery, $aParams);