Artefact:Template/org/ooem/templates/wiml-1.0-ooem-multipart-1.0

Caution! This is a 98% copy of wiml-1.0-ooem-package-1.0 (todo: wiki subtemplates)

Code
 G-2.0-java_jpp-1.0 -*- coding: utf-8; -*- ▼… import org.oomodels.wiml.*; ▼… ⊏ signature(String wiml_code) ⊐… « WIMLClass wc; try { wc = WIMLClass.parseWIML(wiml_code); object = wc; boolean has_associations = false; if (wc == null) { throw new org.oomodels.OOMStatusCode(204); } else { »… MIME-Version: 1.0 Content-type: multipart/mixed; charset=utf-8; boundary="mimeboundery"

«   ∀(‖"Ⓟ/Attributes"){ if (‖"Ⓟ/Association"!=null) { has_associations = true; } }/∀ »… --mimeboundery Content-type: text/plain; charset=utf-8 Content-Disposition: attachment; filename=◂‖"Ⓟ/Name"▸.model

 « ⇾(⊙,WIMLStateMachine) {»«}∨{»« }/⇾ » ⋮⊏ ➜ this.Imports(wc) ⊐… ◂‖"Ⓟ/Name"▸ ⋮«∀(‖"Ⓟ/ModelTemplateArguments"){»…  ⋮«}/∀»… ⋮«∀(‖"Ⓟ/CodeGeneratorTemplateArguments"){»…  ⋮«}/∀»… ⋮«∀(‖"Ⓟ/ImplementationLanguageTemplateArguments"){»…  ⋮«}/∀»… ⋮«∀(‖"Ⓟ/Bases"){»…  ⋮«}/∀»… ⋮«¬∅(‖"Ⓟ/Stereotypes"){»«∀(⊙){»… ◂⊙▸ ⋮«}/∀»«}/¬∅»… ⋮« ⇾(⊙,WIMLStateMachine) {»… ⋮«¬∅(‖"Ⓟ/States"){»«∀(⊙){»…  ⋮«}/∀»«}/¬∅»… ⋮« }/⇾ »…  ⋮«∀(‖"Ⓟ/Attributes"){if(‖"Ⓟ/Association" == null){»… <Attribute Name="◂‖"Ⓟ/Name"▸" Type="◂((String)(‖"Ⓟ/Type")).replace("/",".")▸"«∀(‖"Ⓟ/Stereotypes"){» Stereotype-◂Ⓘ▸="◂⊙▸"«}/∀»… ⋮⊏ ➜ this.Extensions(object, "Attribute") ⊐… ⋮«}}/∀»… ⋮«∀(‖"Ⓟ/Operations"){»… ⋮« String op_type; ⇾(⊙,WIMLTransition) { op_type = "Transition"; }∨{ op_type = "Operation"; }/⇾ »… <◂op_type▸ Name="◂‖"Ⓟ/Name"▸" ReturnType="◂‖"Ⓟ/ReturnType"▸"«∀(‖"Ⓟ/Stereotypes"){» Stereotype-◂Ⓘ▸="◂⊙▸"«}/∀»… ⋮« ⇾(⊙,WIMLTransition) {»«¬∅(‖"Ⓟ/BeforeStateExpression"){» BeforeStates="◂⊙▸"«}/¬∅»« }/⇾ »… ⋮⊏ ➜ this.Extensions(object, op_type) ⊐… ⋮«}/∀»… ⋮«∀(‖"Ⓟ/Views"){»…  ◂‖[wc]"Ⓟ/Name"▸ ⋮⊏ ➜ this.Extensions(object, null) ⊐… ⋮«∀(‖"Ⓟ/SlotSpecifications"){»… <SlotSpecification Name="◂‖"Ⓟ/Name"▸" Visibility="◂‖"Ⓟ/Visibility"▸" Attributes="◂‖"Ⓟ/Attributes"▸" Associations="◂‖"Ⓟ/Associations"▸" Operations="◂‖"Ⓟ/Operations"▸" Expand="◂‖"Ⓟ/Expand"▸"> <EntryIncludeRegExp>◂‖"Ⓟ/EntryIncludeRegExp"▸</EntryIncludeRegExp> <EntryExcludeRegExp>◂‖"Ⓟ/EntryExcludeRegExp"▸</EntryExcludeRegExp> <FeatureIncludeRegExp>◂‖"Ⓟ/FeatureIncludeRegExp"▸</FeatureIncludeRegExp> <FeatureExcludeRegExp>◂‖"Ⓟ/FeatureExcludeRegExp"▸</FeatureExcludeRegExp> </SlotSpecification> ⋮«}/∀»… </View> ⋮«}/∀»… ⋮⊏ ➜ this.Extensions(object, null) ⊐… « ⇾(⊙,WIMLStateMachine) {»</StateMachine>«}∨{»</Class>« }/⇾ » « if (has_associations) { »… ⋮«∀(‖"Ⓟ/Attributes"){if(‖"Ⓟ/Association" != null){»… --mimeboundery Content-type: text/plain; charset=utf-8 Content-Disposition: attachment; filename=◂‖[wc]"Ⓟ/Name"▸Association◂‖"Ⓟ/Name"▸.model

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Association> ⋮⊏ ➜ this.Imports(wc) ⊐… <Ends> <End> ⋮«¬∅(‖"Ⓟ/Stereotypes"){»«∀(⊙){»… ◂⊙▸</Stereotype> ⋮«}/∀»«}/¬∅»…     ⋮«∃(‖"Ⓟ/OtherName"){»… <Role>◂⊙▸</Role> ⋮«}/∃»…     <Type>◂‖[wc]"Ⓟ/Name"▸</Type> ⋮«∃(‖"Ⓟ/OtherMultiplicity"){»… <Multiplicity>◂⊙▸</Multiplicity> <IsNavigable>true</IsNavigable> ⋮«}∨{»…     <Multiplicity>1</Multiplicity> <IsNavigable>false</IsNavigable> ⋮«}/∃»…     ⋮«●(‖"Ⓟ/Ends/0"){»⊏ ➜ this.Extensions(object, null) ⊐«}/●»… </End> <End> <Role>◂‖"Ⓟ/Name"▸</Role> <Type>◂((String)(‖"Ⓟ/Type")).replace("/",".")▸</Type> <Multiplicity>◂‖"Ⓟ/Multiplicity"▸</Multiplicity> <IsNavigable>true</IsNavigable> ⋮«●(‖"Ⓟ/Ends/1"){»⊏ ➜ this.Extensions(object, null) ⊐«}/●»… </End> </Ends> ⋮⊏ ➜ this.Extensions(object, null) ⊐… </Association> ⋮«}}/∀»… « } »… « } »… « } catch (org.oomodels.OOMStatusCode osc) { throw osc; } catch (Throwable t) { org.oomodels.OOMStatusCode osc = new org.oomodels.OOMStatusCode(500); //osc.setCause(t); throw osc; } »… ⊏ Ⓣ Extensions(Object object, String element) ⊐… ⋮«➀:(e)»… ⋮«➀:(x)»… ⋮«¬∅(‖"Ⓟ/Extensions"){»… ⋮«∀(⊙){»…     ⋮«if(((String)(‖"Ⓟ/Name")).equals("UML")){»… ⋮«➀(e){if(element!=null){»> ⋮«}}/➀»…       ⋮«∀(‖"Ⓟ/Properties"){»… ◂((WIMLProperty)(⊙)).dumpToXML("     ",null).toString▸ ⋮«}/∀»…     ⋮«}»…    ⋮«}/∀»…  ⋮«}/¬∅»…  ⋮«¬∅(‖"Ⓟ/Extensions"){»… ⋮«∀(⊙){»…     ⋮«if(((String)(‖"Ⓟ/Name")).equals("UML") == false){»… ⋮«➀(e){if(element!=null){»> ⋮«}}/➀»…       ⋮«➀(x){» <Extensions> ⋮«}/➀»…       ⋮«if(((String)(‖"Ⓟ/Name")).matches("^org/xmodel/[^/]*")){»… <◂((String)(‖"Ⓟ/Name")).replaceFirst("org/xmodel/","")▸> ⋮«}else{»… <Extension CLASS="◂‖"Ⓟ/Name"▸"> ⋮«}»…         ⋮«∀(‖"Ⓟ/Properties"){»… ◂((WIMLProperty)(⊙)).dumpToXML("       ",null).toString▸ ⋮«}/∀»…       ⋮«if(((String)(‖"Ⓟ/Name")).matches("^org/xmodel/[^/]*")){»… </◂((String)(‖"Ⓟ/Name")).replaceFirst("org/xmodel/","")▸> ⋮«}else{»… </Extension> ⋮«}»…     ⋮«}»…    ⋮«}/∀»…  ⋮«}/¬∅»…  ⋮«¬➀(x){»… </Extensions> ⋮«}/¬➀»… ⋮«if(element!=null){»… ⋮«¬➀(e){»… </◂element▸> ⋮«}∨{»/>   ⋮«}/¬➀»…  ⋮«}»… ⊏ /Ⓣ ⊐… ⊏ Ⓣ Imports(Object object) ⊐… <StereotypeModelImport>org.uml.stereotypes.*</StereotypeModelImport> ⋮«∀(‖"Ⓟ/ModelImports"){»… <ModelImport>◂⊙▸</ModelImport> ⋮«}/∀»… ⋮«¬∅(‖"Ⓟ/ExternalImports"){»… ⋮«∀(⊙){»…     ⋮«if(((String)⊙).indexOf('.') != -1){»… <ExternalImport>◂⊙▸</ExternalImport> ⋮«}else{»… <PrimitiveImport>◂⊙▸</PrimitiveImport> ⋮«}»…   ⋮«}/∀»…  ⋮«}∨{»…  <ExternalImport>java.lang.Boolean</ExternalImport> <ExternalImport>java.lang.Byte</ExternalImport> <ExternalImport>java.lang.Short</ExternalImport> <ExternalImport>java.lang.Integer</ExternalImport> <ExternalImport>java.lang.Long</ExternalImport> <ExternalImport>java.lang.Float</ExternalImport> <ExternalImport>java.lang.Double</ExternalImport> <ExternalImport>java.lang.Character</ExternalImport> <ExternalImport>java.lang.String</ExternalImport> <ExternalImport>java.util.Date</ExternalImport> <ExternalImport>java.lang.Object</ExternalImport> <PrimitiveImport>boolean</PrimitiveImport> <PrimitiveImport>byte</PrimitiveImport> <PrimitiveImport>short</PrimitiveImport> <PrimitiveImport>int</PrimitiveImport> <PrimitiveImport>long</PrimitiveImport> <PrimitiveImport>float</PrimitiveImport> <PrimitiveImport>double</PrimitiveImport> <PrimitiveImport>char</PrimitiveImport> ⋮«}/¬∅»… ⊏ /Ⓣ ⊐… </OOMCode>