/**
* @access private
*
* Maps a supplied object procedure to an equivalent relational procedure.
*
* @param Object\IProcedure $ObjectProcedure The object procedure
* @return Relational\Procedure The equivalent relational procedure
*/
public final function MapProcedure(Object\IProcedure $ObjectProcedure)
{
$EntityRelationalMap = $this->VerifyEntityTypeIsMapped($ObjectProcedure->GetEntityType());
$RelationalProcedure = new Relational\Procedure($EntityRelationalMap->GetMappedPersistTables(), $EntityRelationalMap->GetCriterion());
$this->MapCriterion($EntityRelationalMap, $ObjectProcedure->GetCriterion(), $RelationalProcedure->GetCriterion());
foreach ($this->MapExpressions($EntityRelationalMap, $ObjectProcedure->GetExpressions()) as $MappedExpression) {
$RelationalProcedure->AddExpression($MappedExpression);
}
return $RelationalProcedure;
}