/**
	 * <p>Liefert ein gespeichertes Entity zurück.</p>
	 * <p>Wurde ein Entity übergeben und es war noch kein Entity gespeichert,
	 * so wird dieses Entity gespeichert und zurückgegeben.</p>
	 * @param Dkplus_Model_Domain_Entity_IEntity|string|int $soiEntity
	 * @return Dkplus_Model_Domain_Entity_IEntity|null <p>Wurde kein Entity
	 * gefunden, so wird null zurückgegeben.</p>
	 */
	public function getEntity($soiEntity)
	{
		//Ein Entity-Objekt wurde übergeben
		if ($soiEntity instanceOf Dkplus_Model_Domain_Entity_IEntity) {
			$siEntity = $soiEntity->getUniqueIdentifier();
			if (!isset($this->_aEntities[$siEntity])) {
				$this->_aEntities[$siEntity] = $soiEntity;
			}
			return $this->_aEntities[$siEntity];
		}

		if ((is_int($soiEntity))
			|| (is_string($soiEntity))
		) {
			return isset($this->_aEntities[$soiEntity])
				? $this->_aEntities[$soiEntity]
				: null;
		}

		throw new Dkplus_Model_Exception(
				sprintf('First Parameter has an invalid type "%s", must be an '
						. 'Dkplus_Model_Domain_Entity_IEntity, integer or string.',
    				getType($iOffset)));
	}
 /**
  * <p>Entfernt ein Entity aus der Collection.</p>
  * @param Dkplus_Model_Domain_Entity_IEntity|int $mEntity
  * @return Dkplus_Model_Domain_Collection_CollectionAbstract
  */
 protected function _removeEntity($mEntity)
 {
     //Suchen des Indexes, wenn eine Instance gegeben wurde.
     if ($mEntity instanceof Dkplus_Model_Domain_Entity_IEntity) {
         for ($i = 0; $i < count($this->_aEntities); ++$i) {
             if ($mEntity->equals($this->_aEntities[$i])) {
                 $mEntity = $i;
                 break;
             }
         }
     }
     //Index nicht gefunden oder kein Integer übergeben.
     if (!is_int($mEntity)) {
         throw new Dkplus_Model_Exception(sprintf('First parameter has an invalid type "%s", must be an ' . 'integer or an instance of ' . 'Dkplus_Model_Domain_Entity_IEntity that is already ' . 'in the collection.', getType($iOffset)));
     }
     //Falscher Index übergeben.
     if (!isset($this->_aEntities[$mEntity])) {
         throw new Dkplus_Model_Exception('There is no Entity with offset ' . $mEntity . '.');
     }
     //Soll die Entfernung gemeldet werden?
     if ($this->_bIsChangeMarked) {
         $this->_aRemovedEntities[] = $this->_aEntities[$mEntity];
     }
     //Entfernen und neu-ordnen.
     unset($this->_aEntities[$mEntity]);
     $this->_aEntities = array_values($this->_aEntities);
     return $this;
 }