Artefact:Template/org/ooem/templates/wiml-1.0-xmi-2.0

From OOModels
< Artefact:Template‎ | org‎ | ooem‎ | templates
Revision as of 14:03, 17 May 2013 by AndreasLeue (talk | contribs) (first draft)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search
Classification
Type Type:org/oogenerator/Template/2.0
Domain Domain:it/development/formatting
Category Type:org/oomodels/wiki/Template
Maturity final
More
Download Code
Namespace (more)

OOEM main package

create new pages

Code[edit]


G-2.0-java_jppi-1.0 -*- coding: utf-8; -*-

import org.oomodels.wiml.*;
import java.util.Map;
import java.util.Vector;
▼

    public Vector<String> getStatesInRegion(String expression, String region) {
        Vector<String> result = new Vector<String>();
        for (String term : expression.split("\\\u007C\\\u007C")) {
            String[] t = term.split("=");
            if (t.length > 1) {
                if (t[0].equals(region)) { result.add(t[1]); }
            } else {
                if ("main".equals(region)) { result.add(t[0]); }
            }
        }
        return result;
    }
▲
⊏ signature(String wiml_code, Map<String,String> page_properties,
                              Map<String,String> predefined_arguments,
                              Map<String,String> conversion_arguments,
                              Map<String,String> request_arguments) ⊐
« WIMLClass wc; try { wc = WIMLClass.parseWIML(wiml_code); object = wc; 
  boolean has_associations = false;
  if (wc == null) {
    throw new org.oomodels.OOMStatusCode(204);
  } else {
      boolean complete_xml = "true".equals(predefined_arguments.get("CompleteXMLDocument"));
      String xmlns = complete_xml ? " xmlns=\"http://xmlns.sphenon.com/org/ooem\"" : "";
      String indent = complete_xml ? "" : "  ";
»
«if(complete_xml) {»
  ⋮<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
«}»
«¶(indent)»
<eClassifiers
«if(complete_xml) {»
            ⋮ xmi:version="2.0"
              xmlns:xmi="http://www.omg.org/XMI"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
             
«}»
            ⋮ xsi:type="ecore:EClass"
              name="◂conversion_arguments.get("page").replaceFirst("Artefact:Model/","").replace("/",".")▸"
                  ⋮«∀(‖"Ⓟ/Bases"){»
              eSuperTypes="#//◂((String)(⊙)).replace("/",".")▸"
                  ⋮«}/∀»
              >
  ⋮«∀(‖"Ⓟ/ModelTemplateArguments"){»
  <!-- <TemplateParameter Name="‖"Ⓟ/Name"" «∃(‖"Ⓟ/DefaultValue"){»DefaultValue="◂((String)(⊙)).replace("/",".")▸" «}/∃»GenericLevel="MODEL_TEMPLATE"/> -->
  ⋮«}/∀»«∀(‖"Ⓟ/CodeGeneratorTemplateArguments"){»
  <!-- <TemplateParameter Name="‖"Ⓟ/Name"" «∃(‖"Ⓟ/DefaultValue"){»DefaultValue="◂((String)(⊙)).replace("/",".")▸" «}/∃»GenericLevel="CODE_GENERATOR_TEMPLATE"/> -->
  ⋮«}/∀»«∀(‖"Ⓟ/ImplementationLanguageTemplateArguments"){»
  <!-- <TemplateParameter Name="‖"Ⓟ/Name"" «∃(‖"Ⓟ/DefaultValue"){»DefaultValue="◂((String)(⊙)).replace("/",".")▸" «}/∃»GenericLevel="IMPLEMENTATION_LANGUAGE_TEMPLATE"/> -->
  ⋮«}/∀»«¬∅(‖"Ⓟ/Stereotypes"){»«∀(⊙){»
  <!-- <StereotypeName>◂((String)⊙).replaceFirst("org/ooem/stereotypes/.*/","")▸</StereotypeName> -->
    ⋮«}/∀»«}/¬∅»« ⇾(⊙,WIMLStateMachine) {»
  <!-- <StateMachine Name="TopLevel" PASS="2" TypeName="TopLevel">
  ⋮«¬∅(‖"Ⓟ/States"){»«java.util.HashSet names = new java.util.HashSet(); ∀(⊙){ String name = ‖<String>"Ⓟ/1"; names.add(name); }/∀ »«∀(-name:names){»
    <Region Name="◂name▸">
      ⋮«∀(⊙){»«if(name.equals((String) (‖"Ⓟ/1"))){»
      <State Name="‖"Ⓟ/0"" OID="S_◂name▸_‖"Ⓟ/0"" TypeName="«∃(‖"Ⓟ/2"){»◂⊙▸«}∨{»None«}/∃»"/>
        ⋮«}»«}/∀»«∀(-o:‖[wc]"Ⓟ/Operations"){»« ⇾(o,WIMLTransition) { »«➀:(state_in_region)»«∀(-sir:getStatesInRegion(((String)(‖[o]"Ⓟ/BeforeStateExpression")), (String) name)){»«➀(state_in_region){»
      <Transition>
        <Operation IDREF="O_‖[o]"Ⓟ/Name""/>
        <SourceStates>
              ⋮«}/➀»
          <State IDREF="S_◂name▸_◂sir▸"/>
          ⋮«}/∀»«¬➀(state_in_region){»
        </SourceStates>
        <TargetStates/>
      </Transition>
          ⋮«}/¬➀»« }/⇾ »«}/∀»
    </Region>
    ⋮«}/∀»«}/¬∅»
  </StateMachine> -->
  ⋮« }/⇾ »«∀(‖"Ⓟ/Attributes"){if(‖"Ⓟ/Association" == null){»
  <!-- ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject
       ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString
       #//Xxx -->
  <eStructuralFeatures xsi:type="ecore:EAttribute"
                       name="‖"Ⓟ/Name""
                       eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//E◂((String)(‖"Ⓟ/Type")).replace("/",".")▸"/>
    ⋮«∀(‖"Ⓟ/Stereotypes"){»
    <!-- StereotypeName-◂Ⓘ▸="◂((String)⊙).replaceFirst("org/ooem/stereotypes/.*/","")▸" -->
    ⋮«}/∀»⊏ ➜ this.Extensions(object, "Attribute", "Extensions") ⊐«}else{»


    <eStructuralFeatures xsi:type="ecore:EReference" name="notebook" eType="#//Notebook"


  <eStructuralFeatures xsi:type="ecore:EReference"
                       name="‖"Ⓟ/Name""
                       upperBound="-1"
                       eType="#//◂((String)(‖"Ⓟ/Type")).replace("/",".")▸"
                       >
      ⋮«¬∅(‖"Ⓟ/Stereotypes"){»«∀(⊙){»
    <!-- <StereotypeName>◂((String)⊙).replaceFirst("org/ooem/stereotypes/.*/","")▸</StereotypeName> -->
      ⋮«}/∀»«}/¬∅»«∃(‖"Ⓟ/OtherMultiplicity"){»
    <!-- <Multiplicity>◂⊙▸</Multiplicity> -->
    <!-- <Navigability>true</Navigability> -->
      ⋮«}∨{»
    <!-- <Multiplicity>1</Multiplicity> -->
    <!-- <Navigability>false</Navigability> -->
      ⋮«}/∃»«∃(‖"Ⓟ/OtherName"){»
    <!-- <MyRole>◂⊙▸</MyRole> -->
      ⋮«}/∃»
    <!-- <OtherMultiplicity>‖"Ⓟ/Multiplicity"</OtherMultiplicity> -->
    <!-- <OtherNavigability>true</OtherNavigability> -->
    ⋮«●(‖"Ⓟ/Ends/1"){»⊏ ➜ this.Extensions(object, null, "Extensions") ⊐«}/●»«●(‖"Ⓟ/Ends/0"){»⊏ ➜ this.Extensions(object, null, "OtherExtensions") ⊐«}/●»⊏ ➜ this.Extensions(object, null, "Extensions") ⊐«}}/∀»«∀(‖"Ⓟ/Operations"){»« ⇾(⊙,WIMLTransition) { }/⇾ »
  <!--
  <Operation Name="‖"Ⓟ/Name"" OID="O_‖"Ⓟ/Name"" ReturnType="‖"Ⓟ/ReturnType""«∀(‖"Ⓟ/Stereotypes"){» StereotypeName-◂Ⓘ▸="◂((String)⊙).replaceFirst("org/ooem/stereotypes/.*/","")▸"«}/∀»« ⇾(⊙,WIMLTransition) {»«¬∅(‖"Ⓟ/BeforeStateExpression"){» BeforeStates="◂⊙▸"«}/¬∅»« }/⇾ »⊏ ➜ this.Extensions(object, "Operation", "Extensions") ⊐
    -->
  ⋮«}/∀»«∀(‖"Ⓟ/Views"){»
  <!--
  <View Name="‖"Ⓟ/Name"" «¬∅(‖"Ⓟ/Stereotypes"){» StereotypeName="«∀(⊙){»◂((String)⊙).replaceFirst("org/ooem/stereotypes/.*/","")▸«}/∀»"«}/¬∅» CLASS="UMLView_SlotSpecification">
    <ClassOfView>‖[wc]"Ⓟ/Name"</ClassOfView>
    ⋮⊏ ➜ this.Extensions(object, null, "Extensions") ⊐«∀(‖"Ⓟ/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, "Extensions") ⊐
</eClassifiers>
«/¶»
« } »
« } catch (org.oomodels.OOMStatusCode osc) {
    throw osc;
  } catch (Throwable t) {
    org.oomodels.OOMStatusCode osc = new org.oomodels.OOMStatusCode(204);
    //osc.setCause(t);
    throw osc;
  } »
⊏ Ⓣ Extensions(Object object, String element, String tag) ⊐«¬∅(‖"Ⓟ/Extensions"){»«∀(⊙){»«}/∀»«}/¬∅»«¬∅(‖"Ⓟ/Extensions"){»«∀(⊙){»«if(((String)(‖"Ⓟ/Name")).equals("UML")){»«∀(‖"Ⓟ/Properties"){»
        <!--
◂((WIMLProperty)(⊙)).dumpToXML("      ",null).toString()▸
          -->
        ⋮«}/∀»«}»«if(((String)(‖"Ⓟ/Name")).matches("UML\u007CWIML") == false){»
      <!--
      <Extension CLASS="OOEMExtension_OCP_XML">
        <XOCP CLASS="String" CONTENT="XML/Text">
            ⋮«if(((String)(‖"Ⓟ/Name")).matches("^org/xmodel/[^/]*")){»
          <◂((String)(‖"Ⓟ/Name")).replaceFirst("org/xmodel/","")▸ CLASS="UMLExtension">
            ⋮«}else{»
          <‖"Ⓟ/Name" CLASS="UMLExtension">
            ⋮«}»«∀(‖"Ⓟ/Properties"){»
◂((WIMLProperty)(⊙)).dumpToXML("          ",null).toString()▸«}/∀»«if(((String)(‖"Ⓟ/Name")).matches("^org/xmodel/[^/]*")){»
          </◂((String)(‖"Ⓟ/Name")).replaceFirst("org/xmodel/","")▸>
            ⋮«}else{»
          </‖"Ⓟ/Name">
            ⋮«}»
        </XOCP>
      </Extension>
      -->
      ⋮«}»«}/∀»«}/¬∅»
⊏ /Ⓣ ⊐