/**
  * Generate a delivery from test uri
  * Test uri has to be set and existing
  */
 public function generate()
 {
     try {
         if (!$this->hasRequestParameter(self::REST_DELIVERY_TEST_ID)) {
             throw new \common_exception_MissingParameter(self::REST_DELIVERY_TEST_ID, $this->getRequestURI());
         }
         $test = new \core_kernel_classes_Resource($this->getRequestParameter(self::REST_DELIVERY_TEST_ID));
         if (!$test->exists()) {
             throw new \common_exception_NotFound('Unable to find a test associated to the given uri.');
         }
         $label = 'Delivery of ' . $test->getLabel();
         $deliveryClass = new \core_kernel_classes_Class(CLASS_COMPILEDDELIVERY);
         /** @var \common_report_Report $report */
         $report = SimpleDeliveryFactory::create($deliveryClass, $test, $label);
         if ($report->getType() == \common_report_Report::TYPE_ERROR) {
             \common_Logger::i('Unable to generate delivery execution ' . 'into taoDeliveryRdf::RestDelivery for test uri ' . $test->getUri());
             throw new \common_Exception('Unable to generate delivery execution.');
         }
         $delivery = $report->getData();
         $this->returnSuccess(array('delivery' => $delivery->getUri()));
     } catch (\Exception $e) {
         $this->returnFailure($e);
     }
 }
 public function wizard()
 {
     try {
         $formContainer = new WizardForm(array('class' => $this->getCurrentClass()));
         $myForm = $formContainer->getForm();
         if ($myForm->isValid() && $myForm->isSubmited()) {
             $label = $myForm->getValue('label');
             $test = new core_kernel_classes_Resource($myForm->getValue('test'));
             $label = __("Delivery of %s", $test->getLabel());
             $deliveryClass = new \core_kernel_classes_Class($myForm->getValue('classUri'));
             $report = SimpleDeliveryFactory::create($deliveryClass, $test, $label);
             $this->returnReport($report);
         } else {
             $this->setData('myForm', $myForm->render());
             $this->setData('formTitle', __('Create a new delivery'));
             $this->setView('form.tpl', 'tao');
         }
     } catch (NoTestsException $e) {
         $this->setView('DeliveryMgmt/wizard_error.tpl');
     }
 }
$userClass = new \core_kernel_classes_Class(CLASS_TAO_USER);
//create delivery
$tests = [];
$testClazz = new core_kernel_classes_Class(TAO_TEST_CLASS);
foreach ($testClazz->getInstances(true) as $instance) {
    $tests[$instance->getUri()] = $instance->getLabel();
}
$testUris = array_keys($tests);
if (!empty($testUris)) {
    $i = 0;
    $delivery = null;
    $deliveryClass = new \core_kernel_classes_Class('http://www.tao.lu/Ontologies/TAODelivery.rdf#AssembledDelivery');
    while (is_null($delivery) && $i < count($testUris)) {
        $test = new core_kernel_classes_Resource($testUris[$i]);
        $label = __("Delivery of %s", $test->getLabel());
        $report = \oat\taoDeliveryRdf\model\SimpleDeliveryFactory::create($deliveryClass, $test, $label);
        /** @var \core_kernel_classes_Resource $delivery */
        $delivery = $report->getData();
        $i++;
    }
    if (is_null($delivery)) {
        echo 'No test compilable';
        die;
    }
} else {
    echo 'No test found';
    die;
}
$i = 0;
$proctorNum = 1;
$ttNum = 1;
 /**
  * @param \core_kernel_classes_Resource $delivery
  * @throws \common_Exception
  * @return \core_kernel_classes_Resource new delivery resource
  */
 private function compileDelivery(\core_kernel_classes_Resource $delivery)
 {
     $testProperty = new \core_kernel_classes_Property('http://www.tao.lu/Ontologies/TAODelivery.rdf#AssembledDeliveryOrigin');
     $classProperty = new \core_kernel_classes_Property(RDF_TYPE);
     $test = $delivery->getOnePropertyValue($testProperty);
     $destinationClass = new \core_kernel_classes_Class($delivery->getOnePropertyValue($classProperty)->getUri());
     $deliveryCreationReport = SimpleDeliveryFactory::create($destinationClass, $test, $delivery->getLabel());
     if ($deliveryCreationReport->getType() == \common_report_Report::TYPE_ERROR) {
         \common_Logger::i('Unable to recompile delivery execution' . $delivery->getUri());
         throw new \common_Exception($deliveryCreationReport->getMessage());
     }
     /** @var \core_kernel_classes_Resource $newDelivery */
     $newDelivery = $deliveryCreationReport->getData();
     foreach (self::$propertiesToCopy as $propertyToCopy) {
         $propertyToCopy = new \core_kernel_classes_Property($propertyToCopy);
         $val = $delivery->getOnePropertyValue($propertyToCopy);
         if ($val) {
             $newDelivery->setPropertyValue($propertyToCopy, $val);
         }
     }
     $this->addPrefixToLabel($delivery);
     return $newDelivery;
 }