4require_once
'Modules/Test/classes/class.ilObjTest.php';
5require_once
'Modules/Test/classes/class.ilTestRandomQuestionSetSourcePoolDefinitionFactory.php';
6require_once
'Modules/Test/classes/class.ilTestRandomQuestionSetSourcePoolDefinitionList.php';
7require_once
'Modules/Test/classes/class.ilTestRandomQuestionSetQuestionCollection.php';
8require_once
'Modules/Test/classes/class.ilTestRandomQuestionCollectionSubsetApplicationList.php';
9require_once
'Modules/Test/classes/class.ilTestRandomQuestionsSrcPoolDefinitionQuantitiesCalculation.php';
96 $nonRequiredDb =
$DIC[
'ilDB'];
132 $this->questRelatedSrcPoolDefRegister = array();
141 if (!$this->questRelatedSrcPoolDefRegister[$questionId]) {
145 $this->questRelatedSrcPoolDefRegister[$questionId]->addDefinition($definition);
154 if (isset($this->questRelatedSrcPoolDefRegister[$questionId])) {
155 return $this->questRelatedSrcPoolDefRegister[$questionId];
166 $this->srcPoolDefRelatedQuestRegister = array();
175 if (!isset($this->srcPoolDefRelatedQuestRegister[$definitionId])) {
179 $this->srcPoolDefRelatedQuestRegister[$definitionId]->addQuestion($randomSetQuestion);
188 if (isset($this->srcPoolDefRelatedQuestRegister[$definitionId])) {
189 return $this->srcPoolDefRelatedQuestRegister[$definitionId];
204 $randomQuestion->getSourcePoolDefinitionId()
208 $randomQuestion->getSourcePoolDefinitionId(),
213 $randomQuestion->getQuestionId(),
214 $sourcePoolDefinition
238 $defQstCombinationCollection = $qstCollectionProvider->getSrcPoolDefListRelatedQuestCombinationCollection(
239 $srcPoolDefinitionList
242 return $defQstCombinationCollection;
258 $exclusiveQstCollection->addQuestion($question);
261 return $exclusiveQstCollection;
272 return $srcPoolDefRelatedQstCollection->getRelativeComplementCollection($exclusiveQstCollection);
285 $intersectionQstCollection = $thisDefRelatedSharedQstCollection->getIntersectionCollection(
286 $thatDefRelatedSharedQstCollection
289 return $intersectionQstCollection;
298 $intersectionQstCollectionsByDefId = array();
301 foreach ($sharedQuestionCollection as $sharedQuestion) {
303 foreach ($relatedSrcPoolDefList as $otherDefinition) {
304 if ($otherDefinition->getId() == $definition->
getId()) {
308 if (isset($intersectionQstCollectionsByDefId[$otherDefinition->getId()])) {
313 $definition->
getId(),
314 $otherDefinition->getId()
317 $intersectionQstCollectionsByDefId[$otherDefinition->getId()] = $intersectionQuestionCollection;
321 return $intersectionQstCollectionsByDefId;
333 foreach ($intersectionQstCollectionByDefIdMap as $otherDefinitionId => $intersectionCollection) {
337 $qstCollectionSubsetApplication->setQuestions($intersectionCollection->getQuestions());
338 $qstCollectionSubsetApplication->setApplicantId($otherDefinitionId);
340 #$qstCollectionSubsetApplication->setRequiredAmount($this->getRequiredSharedQuestionAmount(
341 # $this->getSourcePoolDefinitionList()->getDefinition($otherDefinitionId)
344 $qstCollectionSubsetApplication->setRequiredAmount(
348 $qstCollectionSubsetApplicationList->addCollectionSubsetApplication($qstCollectionSubsetApplication);
351 return $qstCollectionSubsetApplicationList;
365 foreach ($sharedQuestionCollection as $sharedQuestion) {
367 foreach ($relatedSrcPoolDefList as $otherDefinition) {
368 if ($otherDefinition->getId() == $definition->
getId()) {
372 if ($intersectionSharingDefinitionList->hasDefinition($otherDefinition->getId())) {
376 $intersectionSharingDefinitionList->addDefinition($otherDefinition);
380 return $intersectionSharingDefinitionList;
390 $qstRelatedSrcPoolDefList = $this->questRelatedSrcPoolDefRegister[$question->
getQuestionId()];
391 return $qstRelatedSrcPoolDefList->getDefinitionCount() > 1;
420 $intersectionSubsetApplicationList->handleQuestionRequest($sharedQuestion);
423 return $intersectionSubsetApplicationList->getNonReservedQuestionAmount();
433 $missingExclsuiveQstCount = $exclusiveQstCollection->getMissingCount($definition->
getQuestionAmount());
434 return $missingExclsuiveQstCount;
472 $quantityCalculation->setIntersectionQuantitySharingDefinitionList(
476 return $quantityCalculation;
An exception for terminatinating execution or to throw for unit testing.
getIntersectionQstCollectionByDefinitionMap(ilTestRandomQuestionSetSourcePoolDefinition $definition)
setQuestionCollectionProvider(ilTestRandomSourcePoolDefinitionQuestionCollectionProvider $questionCollectionProvider)
getQuestionCollectionProvider()
resetSrcPoolDefRelatedQuestRegister()
re-setter the srcPoolDefRelatedQuestRegister
getQuestRelatedSrcPoolDefinitionList($questionId)
getSrcPoolDefQuestionCombinationCollection()
getSharedQuestionCollection($definitionId)
getAvailableSharedQuestionAmount(ilTestRandomQuestionSetSourcePoolDefinition $definition)
getRequiredSharedQuestionAmount(ilTestRandomQuestionSetSourcePoolDefinition $definition)
getSrcPoolDefRelatedQuestionCollection($definitionId)
getSourcePoolDefinitionList()
$srcPoolDefRelatedQuestRegister
registerQuestRelatedSrcPoolDef($questionId, ilTestRandomQuestionSetSourcePoolDefinition $definition)
isQuestionUsedByMultipleSrcPoolDefinitions(ilTestRandomQuestionSetQuestion $question)
__construct(ilTestRandomSourcePoolDefinitionQuestionCollectionProvider $questionCollectionProvider)
buildSourcePoolDefinitionListInstance()
getExclusiveQuestionAmount(ilTestRandomQuestionSetSourcePoolDefinition $definition)
registerSrcPoolDefRelatedQuest($definitionId, ilTestRandomQuestionSetQuestion $randomSetQuestion)
buildRandomQuestionCollectionInstance()
$sourcePoolDefinitionList
getSrcPoolDefRelatedQuestionAmount(ilTestRandomQuestionSetSourcePoolDefinition $definition)
requiresSharedQuestions(ilTestRandomQuestionSetSourcePoolDefinition $definition)
getExclusiveQuestionCollection($definitionId)
$questionCollectionProvider
resetRegisters()
reset internal registers
initialiseRegisters()
initialise the src-pool-def/question registers
$questRelatedSrcPoolDefRegister
getIntersectionQuestionCollectionSubsetApplicationList(ilTestRandomQuestionSetSourcePoolDefinition $definition)
getIntersectionSharingDefinitionList(ilTestRandomQuestionSetSourcePoolDefinition $definition)
getIntersectionQuestionCollection($thisDefinitionId, $thatDefinitionId)
buildQuestionCollectionSubsetApplicationListInstance()
setSourcePoolDefinitionList($sourcePoolDefinitionList)
calculateQuantities(ilTestRandomQuestionSetSourcePoolDefinition $definition)
buildQuestionCollectionSubsetApplicationInstance()
resetQuestRelatedSrcPoolDefRegister()
re-setter for questRelatedSrcPoolDefRegister