Пример #1
0
 /**
  * @param XSDMap $XSDMap
  * @param XSDMap\XSDMapEntry $mapEntry
  * @return ClassTemplate
  */
 public static function buildFHIRElementClassTemplate(XSDMap $XSDMap, XSDMap\XSDMapEntry $mapEntry)
 {
     $classTemplate = new ClassTemplate($mapEntry->fhirElementName, $mapEntry->className, $mapEntry->namespace, ClassTypeUtils::getComplexClassType($mapEntry->sxe));
     foreach ($mapEntry->sxe->children('xs', true) as $_element) {
         /** @var \SimpleXMLElement $_element */
         switch (strtolower($_element->getName())) {
             case ElementTypeEnum::ATTRIBUTE:
             case ElementTypeEnum::CHOICE:
             case ElementTypeEnum::SEQUENCE:
             case ElementTypeEnum::UNION:
                 PropertyGenerator::implementProperty($XSDMap, $classTemplate, $_element);
                 break;
             case ElementTypeEnum::ANNOTATION:
                 $classTemplate->setDocumentation(XMLUtils::getDocumentation($_element));
                 break;
             case ElementTypeEnum::COMPLEX_TYPE:
                 self::parseComplexType($XSDMap, $_element, $classTemplate);
                 break;
             case ElementTypeEnum::COMPLEX_CONTENT:
                 self::parseComplexContent($XSDMap, $_element, $classTemplate);
                 break;
             case ElementTypeEnum::SIMPLE_TYPE:
                 self::parseSimpleType($XSDMap, $_element, $classTemplate);
                 break;
             case ElementTypeEnum::SIMPLE_CONTENT:
                 self::parseSimpleContent($XSDMap, $_element, $classTemplate);
                 break;
             case ElementTypeEnum::RESTRICTION:
                 self::parseRestriction($XSDMap, $_element, $classTemplate);
                 break;
             case ElementTypeEnum::EXTENSION:
                 self::parseExtension($XSDMap, $_element, $classTemplate);
                 break;
         }
     }
     self::addBaseClassProperties($classTemplate, $mapEntry);
     foreach ($classTemplate->getProperties() as $propertyTemplate) {
         MethodGenerator::implementMethodsForProperty($classTemplate, $propertyTemplate);
     }
     self::addBaseClassInterfaces($classTemplate);
     self::addBaseClassMethods($classTemplate);
     return $classTemplate;
 }
Пример #2
0
 /**
  * @param XSDMap $XSDMap
  * @param ClassTemplate $classTemplate
  * @param \SimpleXMLElement $choice
  */
 public static function implementChoiceProperty(XSDMap $XSDMap, ClassTemplate $classTemplate, \SimpleXMLElement $choice)
 {
     $attributes = $choice->attributes();
     //        $minOccurs = (int)$attributes['minOccurs'];
     $maxOccurs = $attributes['maxOccurs'];
     $documentation = XMLUtils::getDocumentation($choice);
     foreach ($choice->xpath('xs:element') as $_element) {
         $propertyTemplate = self::buildProperty($XSDMap, $classTemplate, $_element, $documentation, $maxOccurs);
         if ($propertyTemplate) {
             $classTemplate->addProperty($propertyTemplate);
         }
     }
 }