<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:UMLLabProfile="http:///schemas/UMLLabProfile/NS/0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http:///schemas/UMLLabProfile/NS/0 pathmap://UMLLAB_PROFILES/UMLLab.profile.uml#UMLLabProfile-Annotation_2-UMLLabProfile">
  <uml:Model xmi:id="_pGd1MDCHEeWlMpF-4bareg" name="kronos">
    <eAnnotations xmi:id="_pMNQ0DCHEeWlMpF-4bareg" source="http://ns.yatta.de/umllab">
      <contents xmi:type="ecore:EAnnotation" xmi:id="_pMN34DCHEeWlMpF-4bareg" source="codegen">
        <details xmi:id="_pMN34TCHEeWlMpF-4bareg" key="codegenDirectory" value="/kronos/src"/>
        <details xmi:id="_pwH2MDCHEeWlMpF-4bareg" key="AssociatedSourceCode" value="/kronos/src/kronos/Main.java;1721979661/1;/kronos/src/kronos/db/DB.java;3888517842/1;/kronos/src/kronos/db/LogDB.java;3789338002/1;/kronos/src/kronos/fsm/PartStates.java;1088498863/1;/kronos/src/kronos/fsm/StateMachineHandler.java;1506088137/1;/kronos/src/kronos/fsm/Triggers.java;2413224943/1;/kronos/src/kronos/model/ERPData.java;3846462868/1;/kronos/src/kronos/model/OPCDataItem.java;412662225/1;/kronos/src/kronos/model/Product.java;561511312/1;/kronos/src/kronos/model/SAData.java;655925559/1;/kronos/src/kronos/model/SimData.java;3764672082/1;/kronos/src/kronos/model/SimDataFactory.java;2072716190/1;/kronos/src/kronos/server/http/HTTPServer.java;481488506/1;/kronos/src/kronos/server/http/HTTPServlet.java;3904568759/1;/kronos/src/kronos/server/http/rest/Route.java;2457705041/1;/kronos/src/kronos/server/http/rest/RouteHandler.java;2695264752/1;/kronos/src/kronos/server/ws/WSMessage.java;1365586364/1;/kronos/src/kronos/server/ws/WSServer.java;2483627964/1;/kronos/src/kronos/sim/CEventProcessor.java;1242904174/1;/kronos/src/kronos/sim/ConnectionHandler.java;735222428/1;/kronos/src/kronos/sim/MessageHandler.java;2520007411/1;/kronos/src/kronos/sim/MessageObject.java;747111193/1;/kronos/src/kronos/sim/MessageWorker.java;449136939/1;/kronos/src/kronos/sim/ProductHandler.java;1902776212/1;/kronos/src/kronos/sim/Simulation.java;613358796/1;/kronos/src/kronos/sim/source/MessageListener.java;1177428747/1;/kronos/src/kronos/sim/source/SAReader.java;3432679822/1;/kronos/src/kronos/sim/source/SimSource.java;297731142/1;/kronos/src/kronos/sim/source/SimSourceType.java;3450125512/1;/kronos/src/kronos/test/TestCEventProcessor.java;1078408719/1;/kronos/src/kronos/test/TestDB.java;3064088641/1;/kronos/src/kronos/test/TestServerRestAPI.java;3662644791/1;/kronos/src/kronos/test/TestServerStart.java;1478407831/1;/kronos/src/kronos/test/TestSimConnect.java;1117119872/1;/kronos/src/kronos/test/TestSimTopics.java;3999669697/1;/kronos/src/kronos/test/TestStateMachine.java;1806902742/1;/kronos/src/kronos/test/TestSuiteDataSources.java;257043430/1;/kronos/src/kronos/test/TestUsesSim.java;913548604/1;/kronos/src/kronos/util/Log.java;186096182/1;"/>
      </contents>
    </eAnnotations>
    <elementImport xmi:id="_phOekDCHEeWlMpF-4bareg">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
    </elementImport>
    <elementImport xmi:id="_phOekTCHEeWlMpF-4bareg">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#byte"/>
    </elementImport>
    <elementImport xmi:id="_phPFoDCHEeWlMpF-4bareg">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#char"/>
    </elementImport>
    <elementImport xmi:id="_phPFoTCHEeWlMpF-4bareg">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
    </elementImport>
    <elementImport xmi:id="_phPFojCHEeWlMpF-4bareg">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#float"/>
    </elementImport>
    <elementImport xmi:id="_phPFozCHEeWlMpF-4bareg">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
    </elementImport>
    <elementImport xmi:id="_phPFpDCHEeWlMpF-4bareg">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#long"/>
    </elementImport>
    <elementImport xmi:id="_phPFpTCHEeWlMpF-4bareg">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#short"/>
    </elementImport>
    <elementImport xmi:id="_phPFpjCHEeWlMpF-4bareg">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
    </elementImport>
    <packagedElement xmi:type="uml:Package" xmi:id="_phPssDCHEeWlMpF-4bareg" name="kronos">
      <packagedElement xmi:type="uml:Class" xmi:id="_pi22QDCHEeWlMpF-4bareg" name="Main">
        <ownedComment xmi:id="_pp_ZADCHEeWlMpF-4bareg">
          <body>This class serves as the entrance point for starting the sim, &#xD;
the connections to the sim, the WebSocket server and the HTTP&#xD;
server.&#xD;
@author D059373&#xD;
 *</body>
        </ownedComment>
        <ownedAttribute xmi:id="_t9ixgDCKEeWKod2uCAN30Q" name="simulation" type="_pkCiADCHEeWlMpF-4bareg" association="_t9gVQDCKEeWKod2uCAN30Q">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_t9ixgTCKEeWKod2uCAN30Q" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_t9ixgjCKEeWKod2uCAN30Q" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_d-tg1DCLEeWKod2uCAN30Q" name="connectionHandler" type="_pjz4gDCHEeWlMpF-4bareg" association="_d-tg0DCLEeWKod2uCAN30Q">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_d-tg1TCLEeWKod2uCAN30Q"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_d-tg1jCLEeWKod2uCAN30Q" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_vQgYwjCLEeWKod2uCAN30Q" name="wSServer" type="_pjvAADCHEeWlMpF-4bareg" association="_vQfKoDCLEeWKod2uCAN30Q">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vQg_0DCLEeWKod2uCAN30Q"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vQg_0TCLEeWKod2uCAN30Q" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_bu4IAzCSEeWKod2uCAN30Q" name="hTTPServer" type="_pjkn8DCHEeWlMpF-4bareg" association="_bu3g8DCSEeWKod2uCAN30Q">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bu4vEDCSEeWKod2uCAN30Q"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bu4vETCSEeWKod2uCAN30Q" value="*"/>
        </ownedAttribute>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pptsMDCHEeWlMpF-4bareg" name="main" specification="_pi4EYDCHEeWlMpF-4bareg">
          <ownedParameter xmi:id="_pptsMTCHEeWlMpF-4bareg" name="args">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pptsMjCHEeWlMpF-4bareg" value="*"/>
          </ownedParameter>
          <language>java</language>
          <body>Simulation sim = new Simulation();&#xD;
		sim.start();&#xD;
		&#xD;
		ConnectionHandler connectionHandler = new ConnectionHandler();&#xD;
		connectionHandler.start();&#xD;
		&#xD;
		WSServer wsServer = new WSServer();&#xD;
		wsServer.start();&#xD;
		&#xD;
		ProductHandler.getProductHandler().setWSListener(wsServer);&#xD;
		&#xD;
		HTTPServer httpServer = new HTTPServer();&#xD;
		httpServer.run();&#xD;
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_pi4EYDCHEeWlMpF-4bareg" name="main" isStatic="true" method="_pptsMDCHEeWlMpF-4bareg">
          <ownedParameter xmi:id="_pi4EYTCHEeWlMpF-4bareg" name="args">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pi4EYjCHEeWlMpF-4bareg" value="*"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_phPssTCHEeWlMpF-4bareg" name="server">
        <packagedElement xmi:type="uml:Package" xmi:id="_phPssjCHEeWlMpF-4bareg" name="http">
          <packagedElement xmi:type="uml:Class" xmi:id="_pjkn8DCHEeWlMpF-4bareg" name="HTTPServer">
            <generalization xmi:id="_pjl2EjCHEeWlMpF-4bareg" general="_pjl2EDCHEeWlMpF-4bareg"/>
            <ownedAttribute xmi:id="_ppfpwTCHEeWlMpF-4bareg" name="port" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
              <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppfpwjCHEeWlMpF-4bareg" value="9002"/>
            </ownedAttribute>
            <ownedAttribute xmi:id="_QYEn0zCSEeWKod2uCAN30Q" name="routeHandler" type="_pjqHgDCHEeWlMpF-4bareg" association="_QYEAwDCSEeWKod2uCAN30Q">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QYFO4DCSEeWKod2uCAN30Q"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QYFO4TCSEeWKod2uCAN30Q" value="*"/>
            </ownedAttribute>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppzy0DCHEeWlMpF-4bareg" name="HTTPServer" specification="_pjkn8TCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_ppzy0TCHEeWlMpF-4bareg" type="_pjkn8DCHEeWlMpF-4bareg" direction="return"/>
              <language>java</language>
              <body>super(port, 100, new HTTPServlet());&#xD;
	</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppzy0jCHEeWlMpF-4bareg" name="run" specification="_pjlPATCHEeWlMpF-4bareg">
              <language>java</language>
              <body>Log.info(&quot;HTTPServer: Starting http server on &quot; + port + &quot;...&quot;);&#xD;
		super.run();&#xD;
	</body>
            </ownedBehavior>
            <ownedOperation xmi:id="_pjkn8TCHEeWlMpF-4bareg" name="HTTPServer" method="_ppzy0DCHEeWlMpF-4bareg">
              <eAnnotations xmi:id="_pjkn8jCHEeWlMpF-4bareg" source="http://www.eclipse.org/uml2/2.0.0/UML">
                <details xmi:id="_pjkn8zCHEeWlMpF-4bareg" key="create"/>
              </eAnnotations>
              <ownedParameter xmi:id="_pjlPADCHEeWlMpF-4bareg" type="_pjkn8DCHEeWlMpF-4bareg" direction="return"/>
            </ownedOperation>
            <ownedOperation xmi:id="_pjlPATCHEeWlMpF-4bareg" name="run" method="_ppzy0jCHEeWlMpF-4bareg"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="_phrxkTCHEeWlMpF-4bareg" name="rest">
            <packagedElement xmi:type="uml:Class" xmi:id="_pjqHgDCHEeWlMpF-4bareg" name="RouteHandler">
              <ownedAttribute xmi:id="_ppgQ0jCHEeWlMpF-4bareg" name="routes" visibility="private" type="_poMCMDCHEeWlMpF-4bareg" association="_pqOpkTCHEeWlMpF-4bareg"/>
              <ownedAttribute xmi:id="_ppg34TCHEeWlMpF-4bareg" name="db" visibility="private" type="_pi4rcDCHEeWlMpF-4bareg" association="_pqOplDCHEeWlMpF-4bareg"/>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp0Z5DCHEeWlMpF-4bareg" name="RouteHandler" specification="_pjqukDCHEeWlMpF-4bareg">
                <ownedParameter xmi:id="_pp0Z5TCHEeWlMpF-4bareg" type="_pjqHgDCHEeWlMpF-4bareg" direction="return"/>
                <language>java</language>
                <body>try {&#xD;
			db = DB.getDB();&#xD;
			&#xD;
			routes = new ArrayList&lt;Route>();&#xD;
			routes.add(new Route(&quot;data/getLastProducts&quot;, new Route.Callback() {&#xD;
				public String onCallback() {&#xD;
					return db.getLastProducts();&#xD;
				}&#xD;
			}));&#xD;
			routes.add(new Route(&quot;data/getDataByAnalysisResult&quot;, new Route.Callback() {&#xD;
				public String onCallback() {&#xD;
					return db.getDataByAnalysisResult();&#xD;
				}&#xD;
			}));&#xD;
			routes.add(new Route(&quot;data/getDataByMat&quot;, new Route.Callback() {&#xD;
				public String onCallback() {&#xD;
					return db.getDataByMat();				&#xD;
				}&#xD;
			}));&#xD;
			routes.add(new Route(&quot;data/getDataByMatGrp&quot;, new Route.Callback() {&#xD;
				public String onCallback() {&#xD;
					return db.getDataByMatGrp();&#xD;
				}&#xD;
			}));&#xD;
			&#xD;
			&#xD;
		}&#xD;
		catch (Exception e) {&#xD;
			Log.error(&quot;RouteHandler: Error getting DB&quot;);&#xD;
		}&#xD;
	</body>
              </ownedBehavior>
              <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp0Z5jCHEeWlMpF-4bareg" name="handleRoute" specification="_pjrVoTCHEeWlMpF-4bareg">
                <ownedParameter xmi:id="_pp0Z5zCHEeWlMpF-4bareg" name="path">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_pp0Z6DCHEeWlMpF-4bareg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <language>java</language>
                <body>for (Route route : routes) {&#xD;
			if (route.getPath().equals(path)) {&#xD;
				return route.getCallback().onCallback();&#xD;
			}&#xD;
		}&#xD;
		return null;&#xD;
	</body>
              </ownedBehavior>
              <ownedOperation xmi:id="_pjqukDCHEeWlMpF-4bareg" name="RouteHandler" method="_pp0Z5DCHEeWlMpF-4bareg">
                <eAnnotations xmi:id="_pjqukTCHEeWlMpF-4bareg" source="http://www.eclipse.org/uml2/2.0.0/UML">
                  <details xmi:id="_pjqukjCHEeWlMpF-4bareg" key="create"/>
                </eAnnotations>
                <ownedParameter xmi:id="_pjrVoDCHEeWlMpF-4bareg" type="_pjqHgDCHEeWlMpF-4bareg" direction="return"/>
              </ownedOperation>
              <ownedOperation xmi:id="_pjrVoTCHEeWlMpF-4bareg" name="handleRoute" method="_pp0Z5jCHEeWlMpF-4bareg">
                <ownedParameter xmi:id="_pjrVojCHEeWlMpF-4bareg" name="path">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
                <ownedParameter xmi:id="_pjrVozCHEeWlMpF-4bareg" direction="return">
                  <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                </ownedParameter>
              </ownedOperation>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_pqOpkTCHEeWlMpF-4bareg" name="" memberEnd="_pqOpkjCHEeWlMpF-4bareg _ppgQ0jCHEeWlMpF-4bareg">
              <ownedEnd xmi:id="_pqOpkjCHEeWlMpF-4bareg" name="" type="_pjqHgDCHEeWlMpF-4bareg" association="_pqOpkTCHEeWlMpF-4bareg"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Association" xmi:id="_pqOplDCHEeWlMpF-4bareg" name="" memberEnd="_pqOplTCHEeWlMpF-4bareg _ppg34TCHEeWlMpF-4bareg">
              <ownedEnd xmi:id="_pqOplTCHEeWlMpF-4bareg" name="" type="_pjqHgDCHEeWlMpF-4bareg" association="_pqOplDCHEeWlMpF-4bareg"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_QYEAwDCSEeWKod2uCAN30Q" name="" memberEnd="_QYEn0DCSEeWKod2uCAN30Q _QYEn0zCSEeWKod2uCAN30Q">
            <ownedEnd xmi:id="_QYEn0DCSEeWKod2uCAN30Q" name="hTTPServer" type="_pjkn8DCHEeWlMpF-4bareg" association="_QYEAwDCSEeWKod2uCAN30Q">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QYEn0TCSEeWKod2uCAN30Q"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QYEn0jCSEeWKod2uCAN30Q" value="*"/>
            </ownedEnd>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="_phPsszCHEeWlMpF-4bareg" name="ws">
          <packagedElement xmi:type="uml:Class" xmi:id="_pjsjwDCHEeWlMpF-4bareg" name="WSMessage">
            <ownedAttribute xmi:id="_ppg34zCHEeWlMpF-4bareg" name="orderNumber">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedAttribute>
            <ownedAttribute xmi:id="_ppg35TCHEeWlMpF-4bareg" name="type" type="_pkP9YTCHEeWlMpF-4bareg"/>
            <ownedAttribute xmi:id="_pphe8TCHEeWlMpF-4bareg" name="state" type="_pjIjETCHEeWlMpF-4bareg"/>
            <ownedAttribute xmi:id="_pphe8zCHEeWlMpF-4bareg" name="simData" type="_pjiLsDCHEeWlMpF-4bareg" association="_pqOplzCHEeWlMpF-4bareg"/>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp0Z6TCHEeWlMpF-4bareg" name="WSMessage" specification="_poeWEDCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_pp0Z6jCHEeWlMpF-4bareg" name="orderNumber">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedParameter>
              <ownedParameter xmi:id="_pp0Z6zCHEeWlMpF-4bareg" name="type" type="_pkP9YTCHEeWlMpF-4bareg"/>
              <ownedParameter xmi:id="_pp0Z7DCHEeWlMpF-4bareg" name="state" type="_pjIjETCHEeWlMpF-4bareg"/>
              <ownedParameter xmi:id="_pp0Z7TCHEeWlMpF-4bareg" name="simData" type="_pjiLsDCHEeWlMpF-4bareg"/>
              <ownedParameter xmi:id="_pp0Z7jCHEeWlMpF-4bareg" type="_pjsjwDCHEeWlMpF-4bareg" direction="return"/>
              <language>java</language>
              <body>this.orderNumber = orderNumber;&#xD;
		this.type = type;&#xD;
		this.state = state;&#xD;
		this.simData = simData;&#xD;
	</body>
            </ownedBehavior>
            <ownedOperation xmi:id="_poeWEDCHEeWlMpF-4bareg" name="WSMessage" method="_pp0Z6TCHEeWlMpF-4bareg">
              <eAnnotations xmi:id="_poe9ITCHEeWlMpF-4bareg" source="http://www.eclipse.org/uml2/2.0.0/UML">
                <details xmi:id="_poe9IjCHEeWlMpF-4bareg" key="create"/>
              </eAnnotations>
              <ownedParameter xmi:id="_poeWETCHEeWlMpF-4bareg" name="orderNumber">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedParameter>
              <ownedParameter xmi:id="_poeWEjCHEeWlMpF-4bareg" name="type" type="_pkP9YTCHEeWlMpF-4bareg"/>
              <ownedParameter xmi:id="_poeWEzCHEeWlMpF-4bareg" name="state" type="_pjIjETCHEeWlMpF-4bareg"/>
              <ownedParameter xmi:id="_poe9IDCHEeWlMpF-4bareg" name="simData" type="_pjiLsDCHEeWlMpF-4bareg"/>
              <ownedParameter xmi:id="_poe9IzCHEeWlMpF-4bareg" type="_pjsjwDCHEeWlMpF-4bareg" direction="return"/>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_pjvAADCHEeWlMpF-4bareg" name="WSServer">
            <generalization xmi:id="_ppK5ozCHEeWlMpF-4bareg" general="_pogLQjCHEeWlMpF-4bareg"/>
            <ownedAttribute xmi:id="_pphe9TCHEeWlMpF-4bareg" name="port" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
              <defaultValue xmi:type="uml:LiteralString" xmi:id="_pphe9jCHEeWlMpF-4bareg" value="9003"/>
            </ownedAttribute>
            <ownedAttribute xmi:id="_pphe9zCHEeWlMpF-4bareg" name="address" visibility="private" isStatic="true" type="_poe9JDCHEeWlMpF-4bareg" association="_pqPQoTCHEeWlMpF-4bareg">
              <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppiGADCHEeWlMpF-4bareg" value="new InetSocketAddress(&quot;127.0.0.1&quot;, port)"/>
            </ownedAttribute>
            <ownedAttribute xmi:id="_ppiGAjCHEeWlMpF-4bareg" name="connectedWS" visibility="private" type="_poMCMDCHEeWlMpF-4bareg" association="_pqPQpDCHEeWlMpF-4bareg"/>
            <ownedAttribute xmi:id="_TvvrEjCOEeWKod2uCAN30Q" name="wSMessage" type="_pjsjwDCHEeWlMpF-4bareg" association="_Tvuc8DCOEeWKod2uCAN30Q">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TvvrEzCOEeWKod2uCAN30Q"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TvwSIDCOEeWKod2uCAN30Q" value="*"/>
            </ownedAttribute>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp1A8DCHEeWlMpF-4bareg" name="WSServer" specification="_pjvnEDCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_pp1A8TCHEeWlMpF-4bareg" type="_pjvAADCHEeWlMpF-4bareg" direction="return"/>
              <language>java</language>
              <body>super(address);&#xD;
		connectedWS = new ArrayList&lt;WebSocket>();&#xD;
	</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp1A8jCHEeWlMpF-4bareg" name="run" specification="_pjvnFDCHEeWlMpF-4bareg">
              <language>java</language>
              <body>Log.info(&quot;WSServer: Starting WS server on &quot; + port + &quot;...&quot;);&#xD;
		super.run();&#xD;
	</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp1A8zCHEeWlMpF-4bareg" name="onClose" specification="_ppIdYDCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_pp1A9DCHEeWlMpF-4bareg" name="arg0" type="_pofkMTCHEeWlMpF-4bareg"/>
              <ownedParameter xmi:id="_pp1A9TCHEeWlMpF-4bareg" name="arg1">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
              </ownedParameter>
              <ownedParameter xmi:id="_pp1A9jCHEeWlMpF-4bareg" name="arg2">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedParameter>
              <ownedParameter xmi:id="_pp1A9zCHEeWlMpF-4bareg" name="arg3">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
              </ownedParameter>
              <language>java</language>
              <body>Log.info(&quot;WSServer: Connection closed.&quot;);&#xD;
		connectedWS.remove(arg0);&#xD;
	</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp1A-DCHEeWlMpF-4bareg" name="onError" specification="_ppJEdDCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_pp1A-TCHEeWlMpF-4bareg" name="arg0" type="_pofkMTCHEeWlMpF-4bareg"/>
              <ownedParameter xmi:id="_pp1A-jCHEeWlMpF-4bareg" name="arg1"/>
              <language>java</language>
              <body>Log.error(&quot;WSServer error: &quot; + arg1.getMessage());&#xD;
	</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp1A-zCHEeWlMpF-4bareg" name="onOpen" specification="_ppKSkjCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_pp1A_DCHEeWlMpF-4bareg" name="arg0" type="_pofkMTCHEeWlMpF-4bareg"/>
              <ownedParameter xmi:id="_pp1A_TCHEeWlMpF-4bareg" name="arg1" type="_pogLQDCHEeWlMpF-4bareg"/>
              <language>java</language>
              <body>Log.info(&quot;WSServer: Connection opened.&quot;);&#xD;
		connectedWS.add(arg0);&#xD;
	</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp1oADCHEeWlMpF-4bareg" name="onSimData" specification="_pogyUDCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_pp1oATCHEeWlMpF-4bareg" name="p" type="_pjaP4DCHEeWlMpF-4bareg"/>
              <ownedParameter xmi:id="_pp1oAjCHEeWlMpF-4bareg" name="simData" type="_pjiLsDCHEeWlMpF-4bareg"/>
              <language>java</language>
              <body>SimSourceType type = SimData.getType(simData);&#xD;
		Gson gson = new Gson();&#xD;
		WSMessage message = new WSMessage(&#xD;
				p.erpData.getOrderNumber(), &#xD;
				type, &#xD;
				p.getState(),&#xD;
				simData);&#xD;
		String json = gson.toJson(message);&#xD;
		for (WebSocket ws : connectedWS) {&#xD;
			ws.send(json);&#xD;
		}&#xD;
	</body>
            </ownedBehavior>
            <ownedOperation xmi:id="_pjvnEDCHEeWlMpF-4bareg" name="WSServer" method="_pp1A8DCHEeWlMpF-4bareg">
              <eAnnotations xmi:id="_pjvnETCHEeWlMpF-4bareg" source="http://www.eclipse.org/uml2/2.0.0/UML">
                <details xmi:id="_pjvnEjCHEeWlMpF-4bareg" key="create"/>
              </eAnnotations>
              <ownedComment xmi:id="_pqB1RzCHEeWlMpF-4bareg">
                <body>Used for starting a WebSocket server on port 9003 to send events to a &#xD;
	 * frontend client in real time.</body>
              </ownedComment>
              <ownedParameter xmi:id="_pjvnEzCHEeWlMpF-4bareg" type="_pjvAADCHEeWlMpF-4bareg" direction="return"/>
            </ownedOperation>
            <ownedOperation xmi:id="_pjvnFDCHEeWlMpF-4bareg" name="run" method="_pp1A8jCHEeWlMpF-4bareg"/>
            <ownedOperation xmi:id="_pogyUDCHEeWlMpF-4bareg" name="onSimData" method="_pp1oADCHEeWlMpF-4bareg">
              <ownedComment xmi:id="_pqCcUDCHEeWlMpF-4bareg">
                <body>Call this when a new event is sent from the simulation. This method&#xD;
	 * will send the event to all connected clients in the form of a WSMessage.&#xD;
	 * @param p The product to send, so meta data can be sent with the event&#xD;
	 * @param simData The event</body>
              </ownedComment>
              <ownedParameter xmi:id="_pogyUTCHEeWlMpF-4bareg" name="p" type="_pjaP4DCHEeWlMpF-4bareg"/>
              <ownedParameter xmi:id="_pogyUjCHEeWlMpF-4bareg" name="simData" type="_pjiLsDCHEeWlMpF-4bareg"/>
            </ownedOperation>
            <ownedOperation xmi:id="_ppIdYDCHEeWlMpF-4bareg" name="onClose" method="_pp1A8zCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_ppIdYTCHEeWlMpF-4bareg" name="arg0" type="_pofkMTCHEeWlMpF-4bareg"/>
              <ownedParameter xmi:id="_ppIdYjCHEeWlMpF-4bareg" name="arg1">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
              </ownedParameter>
              <ownedParameter xmi:id="_ppIdYzCHEeWlMpF-4bareg" name="arg2">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedParameter>
              <ownedParameter xmi:id="_ppJEcDCHEeWlMpF-4bareg" name="arg3">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:id="_ppJEdDCHEeWlMpF-4bareg" name="onError" method="_pp1A-DCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_ppJEdTCHEeWlMpF-4bareg" name="arg0" type="_pofkMTCHEeWlMpF-4bareg"/>
              <ownedParameter xmi:id="_ppJEdjCHEeWlMpF-4bareg" name="arg1"/>
            </ownedOperation>
            <ownedOperation xmi:id="_ppJrgzCHEeWlMpF-4bareg" name="onMessage">
              <ownedParameter xmi:id="_ppJrhDCHEeWlMpF-4bareg" name="arg0" type="_pofkMTCHEeWlMpF-4bareg"/>
              <ownedParameter xmi:id="_ppJrhTCHEeWlMpF-4bareg" name="arg1">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:id="_ppKSkjCHEeWlMpF-4bareg" name="onOpen" method="_pp1A-zCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_ppKSkzCHEeWlMpF-4bareg" name="arg0" type="_pofkMTCHEeWlMpF-4bareg"/>
              <ownedParameter xmi:id="_ppKSlDCHEeWlMpF-4bareg" name="arg1" type="_pogLQDCHEeWlMpF-4bareg"/>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_pqOplzCHEeWlMpF-4bareg" name="" memberEnd="_pqOpmDCHEeWlMpF-4bareg _pphe8zCHEeWlMpF-4bareg">
            <ownedEnd xmi:id="_pqOpmDCHEeWlMpF-4bareg" name="" type="_pjsjwDCHEeWlMpF-4bareg" association="_pqOplzCHEeWlMpF-4bareg"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_pqPQoTCHEeWlMpF-4bareg" name="" memberEnd="_pqPQojCHEeWlMpF-4bareg _pphe9zCHEeWlMpF-4bareg">
            <ownedEnd xmi:id="_pqPQojCHEeWlMpF-4bareg" name="" type="_pjvAADCHEeWlMpF-4bareg" association="_pqPQoTCHEeWlMpF-4bareg"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_pqPQpDCHEeWlMpF-4bareg" name="" memberEnd="_pqPQpTCHEeWlMpF-4bareg _ppiGAjCHEeWlMpF-4bareg">
            <ownedEnd xmi:id="_pqPQpTCHEeWlMpF-4bareg" name="" type="_pjvAADCHEeWlMpF-4bareg" association="_pqPQpDCHEeWlMpF-4bareg"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_Tvuc8DCOEeWKod2uCAN30Q" name="" memberEnd="_TvvEADCOEeWKod2uCAN30Q _TvvrEjCOEeWKod2uCAN30Q">
            <ownedEnd xmi:id="_TvvEADCOEeWKod2uCAN30Q" name="wSServer" type="_pjvAADCHEeWlMpF-4bareg" association="_Tvuc8DCOEeWKod2uCAN30Q">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TvvrEDCOEeWKod2uCAN30Q" value="1"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TvvrETCOEeWKod2uCAN30Q" value="1"/>
            </ownedEnd>
          </packagedElement>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_phPstDCHEeWlMpF-4bareg" name="sim">
        <packagedElement xmi:type="uml:Package" xmi:id="_phouQDCHEeWlMpF-4bareg" name="source">
          <packagedElement xmi:type="uml:Class" xmi:id="_pkGMYDCHEeWlMpF-4bareg" name="MessageListener">
            <generalization xmi:id="_ppRARjCHEeWlMpF-4bareg" general="_poouIDCHEeWlMpF-4bareg"/>
            <ownedAttribute xmi:id="_ppozsTCHEeWlMpF-4bareg" name="messageConsumer" visibility="private" type="_pou0wzCHEeWlMpF-4bareg" association="_pqS7AzCHEeWlMpF-4bareg"/>
            <ownedAttribute xmi:id="_ppozszCHEeWlMpF-4bareg" name="delay" visibility="private">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
              <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppoztDCHEeWlMpF-4bareg" value="15000"/>
            </ownedAttribute>
            <ownedAttribute xmi:id="_pppawDCHEeWlMpF-4bareg" name="topic" isReadOnly="true">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedAttribute>
            <ownedAttribute xmi:id="_VZtH8TCNEeWKod2uCAN30Q" name="Observer" type="_pj5YEDCHEeWlMpF-4bareg" association="_VZtH8DCNEeWKod2uCAN30Q">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VZtvADCNEeWKod2uCAN30Q"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VZtvATCNEeWKod2uCAN30Q" value="*"/>
            </ownedAttribute>
            <interfaceRealization xmi:id="_ppQZMzCHEeWlMpF-4bareg" client="_pkGMYDCHEeWlMpF-4bareg" supplier="_ppQZMTCHEeWlMpF-4bareg" contract="_ppQZMTCHEeWlMpF-4bareg"/>
            <interfaceRealization xmi:id="_povb0TCHEeWlMpF-4bareg" client="_pkGMYDCHEeWlMpF-4bareg" supplier="_pkPWUDCHEeWlMpF-4bareg" contract="_pkPWUDCHEeWlMpF-4bareg"/>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp6ggDCHEeWlMpF-4bareg" name="MessageListener" specification="_ppRAQDCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_pp6ggTCHEeWlMpF-4bareg" name="session" type="_polq0TCHEeWlMpF-4bareg"/>
              <ownedParameter xmi:id="_pp6ggjCHEeWlMpF-4bareg" name="topic">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedParameter>
              <ownedParameter xmi:id="_pp6ggzCHEeWlMpF-4bareg" type="_pkGMYDCHEeWlMpF-4bareg" direction="return"/>
              <language>java</language>
              <body>Log.info(&quot;MessageListener: Constructor on &quot; + topic);&#xD;
		this.topic = topic;&#xD;
		&#xD;
		//Create destination from topic and messageconumser&#xD;
		Destination destination = session.createTopic(topic);&#xD;
		this.messageConsumer = session.createConsumer(destination);&#xD;
	</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp6ghDCHEeWlMpF-4bareg" name="run" specification="_pkIBkDCHEeWlMpF-4bareg">
              <language>java</language>
              <body>while (ConnectionHandler.getKeepListening() == true) {&#xD;
			try {&#xD;
				//Log.info(&quot;MessageListener: Starting listen &quot; + topic);&#xD;
				&#xD;
				// Wait for next message to arrive&#xD;
				Message message = this.messageConsumer.receive(delay);&#xD;
				&#xD;
				if (message != null)  {&#xD;
					TextMessage textMessage = (TextMessage) message;&#xD;
					String text = textMessage.getText();&#xD;
					//Log.info(&quot;MessageListener: &quot; + topic + &quot;: &quot; + text);&#xD;
					&#xD;
					// Send message to observers&#xD;
					this.setChanged();&#xD;
					this.notifyObservers(text);&#xD;
				}&#xD;
			} catch (JMSException e) {&#xD;
				Log.error(e.getMessage());&#xD;
				ConnectionHandler.setKeepListening(false);&#xD;
			}&#xD;
		}&#xD;
	</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp6ghTCHEeWlMpF-4bareg" name="getType" specification="_pkIBkTCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_pp6ghjCHEeWlMpF-4bareg" type="_pkP9YTCHEeWlMpF-4bareg" direction="return"/>
              <language>java</language>
              <body>return (topic.equals(ConnectionHandler.topicERP)) ? &#xD;
				SimSourceType.erpData :&#xD;
				SimSourceType.machineData;&#xD;
	</body>
            </ownedBehavior>
            <ownedOperation xmi:id="_pkIBkDCHEeWlMpF-4bareg" name="run" method="_pp6ghDCHEeWlMpF-4bareg"/>
            <ownedOperation xmi:id="_pkIBkTCHEeWlMpF-4bareg" name="getType" method="_pp6ghTCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_powC4DCHEeWlMpF-4bareg" type="_pkP9YTCHEeWlMpF-4bareg" direction="return"/>
            </ownedOperation>
            <ownedOperation xmi:id="_ppRAQDCHEeWlMpF-4bareg" name="MessageListener" method="_pp6ggDCHEeWlMpF-4bareg">
              <eAnnotations xmi:id="_ppRAQzCHEeWlMpF-4bareg" source="http://www.eclipse.org/uml2/2.0.0/UML">
                <details xmi:id="_ppRARDCHEeWlMpF-4bareg" key="create"/>
              </eAnnotations>
              <ownedComment xmi:id="_pqDDYDCHEeWlMpF-4bareg">
                <body>Listens to a certain topic in a separate thread&#xD;
	 * @param session&#xD;
	 * @param topic&#xD;
	 * @throws JMSException</body>
              </ownedComment>
              <ownedParameter xmi:id="_ppRAQTCHEeWlMpF-4bareg" name="session" type="_polq0TCHEeWlMpF-4bareg"/>
              <ownedParameter xmi:id="_ppRAQjCHEeWlMpF-4bareg" name="topic">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              </ownedParameter>
              <ownedParameter xmi:id="_ppRARTCHEeWlMpF-4bareg" type="_pkGMYDCHEeWlMpF-4bareg" direction="return"/>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_pkLE4DCHEeWlMpF-4bareg" name="SAReader">
            <generalization xmi:id="_ppSOYjCHEeWlMpF-4bareg" general="_poouIDCHEeWlMpF-4bareg"/>
            <ownedAttribute xmi:id="_pppawTCHEeWlMpF-4bareg" name="dirPath" visibility="private">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
              <defaultValue xmi:type="uml:LiteralString" xmi:id="_pppawjCHEeWlMpF-4bareg" value="&quot;sim/data/&quot;"/>
            </ownedAttribute>
            <ownedAttribute xmi:id="_ppqB0DCHEeWlMpF-4bareg" name="dir" visibility="private" type="_poI-4DCHEeWlMpF-4bareg" association="_pqS7BjCHEeWlMpF-4bareg"/>
            <ownedAttribute xmi:id="_lKKI8TCNEeWKod2uCAN30Q" name="Observer" type="_pj5YEDCHEeWlMpF-4bareg" association="_lKKI8DCNEeWKod2uCAN30Q">
              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lKKwADCNEeWKod2uCAN30Q"/>
              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lKKwATCNEeWKod2uCAN30Q" value="*"/>
            </ownedAttribute>
            <interfaceRealization xmi:id="_ppRnUDCHEeWlMpF-4bareg" client="_pkLE4DCHEeWlMpF-4bareg" supplier="_ppQZMTCHEeWlMpF-4bareg" contract="_ppQZMTCHEeWlMpF-4bareg"/>
            <interfaceRealization xmi:id="_pox4EzCHEeWlMpF-4bareg" client="_pkLE4DCHEeWlMpF-4bareg" supplier="_pkPWUDCHEeWlMpF-4bareg" contract="_pkPWUDCHEeWlMpF-4bareg"/>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp6ghzCHEeWlMpF-4bareg" name="SAReader" specification="_pkMTADCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_pp6giDCHEeWlMpF-4bareg" type="_pkLE4DCHEeWlMpF-4bareg" direction="return"/>
              <language>java</language>
              <body>dir = Paths.get(dirPath);&#xD;
		cleanDataDirectory();&#xD;
		Log.info(&quot;SAReader: Constructor, cleaned old files.&quot;);&#xD;
	</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp6giTCHEeWlMpF-4bareg" name="cleanDataDirectory" specification="_pkM6EDCHEeWlMpF-4bareg">
              <language>java</language>
              <body>File file = new File(dirPath);&#xD;
		File[] files = file.listFiles(); &#xD;
		for (File f:files) {&#xD;
			if (f.isFile() &amp;&amp; f.getName().endsWith(&quot;.erp&quot;)) { &#xD;
				f.delete();&#xD;
			}&#xD;
		}&#xD;
	</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp6gijCHEeWlMpF-4bareg" name="run" specification="_pkM6ETCHEeWlMpF-4bareg">
              <language>java</language>
              <body>while (ConnectionHandler.getKeepListening() == true) {&#xD;
			&#xD;
			try {&#xD;
				Log.info(&quot;SAReader: Starting to listen &quot; + dir.toAbsolutePath());&#xD;
				WatchService watcher = dir.getFileSystem().newWatchService();&#xD;
				&#xD;
				dir.register(watcher, StandardWatchEventKinds.ENTRY_CREATE);&#xD;
			    System.out.println();&#xD;
				&#xD;
			    // Wait for key to be signaled&#xD;
			    WatchKey key = watcher.take();&#xD;
			    &#xD;
			    Thread.sleep(100);&#xD;
			    &#xD;
			    onFileEvent(key);&#xD;
			    &#xD;
			    // Reset the key for future events&#xD;
			    boolean valid = key.reset();&#xD;
			    if (!valid) {&#xD;
			        break;&#xD;
			    }&#xD;
			    &#xD;
			} catch (Exception e) {&#xD;
				Log.error(&quot;SAReader run() error: &quot; + e.getMessage());&#xD;
			}&#xD;
		}&#xD;
		&#xD;
	</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp7HkDCHEeWlMpF-4bareg" name="onFileEvent" specification="_ppRnUTCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_pp7HkTCHEeWlMpF-4bareg" name="key" type="_poxRAjCHEeWlMpF-4bareg"/>
              <language>java</language>
              <body>for (WatchEvent&lt;?> event: key.pollEvents()) {&#xD;
	        WatchEvent.Kind&lt;?> kind = event.kind();&#xD;
	        &#xD;
	        // Only look for create events&#xD;
	        if (kind == OVERFLOW) {&#xD;
	            continue;&#xD;
	        }&#xD;
&#xD;
	        // The filename is the context of the event.&#xD;
	        @SuppressWarnings(&quot;unchecked&quot;)&#xD;
			WatchEvent&lt;Path> ev = (WatchEvent&lt;Path>)event;&#xD;
	        Path fileName = ev.context();&#xD;
	        if (!fileName.toString().endsWith(&quot;.erp&quot;)) {&#xD;
	        	continue;&#xD;
	        }&#xD;
	        Path completePath = dir.resolve(fileName);&#xD;
	        String path = completePath.toAbsolutePath().toString();&#xD;
	        Log.info(&quot;SAReader: Reading file &quot; + path + &quot;...&quot;);&#xD;
	        &#xD;
			File file = new File(path);&#xD;
			onSAFile(file);&#xD;
&#xD;
	    }&#xD;
	</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp7HkjCHEeWlMpF-4bareg" name="onSAFile" specification="_ppSOYDCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_pp7HkzCHEeWlMpF-4bareg" name="file" type="_poGioDCHEeWlMpF-4bareg"/>
              <language>java</language>
              <body>try {&#xD;
			FileInputStream fis = new FileInputStream(file);&#xD;
			byte[] data = new byte[(int) file.length()];&#xD;
			fis.read(data);&#xD;
			fis.close();&#xD;
&#xD;
			String result = new String(data, &quot;UTF-8&quot;);&#xD;
			Log.info(&quot;SAReader: File length: &quot; + file.length() + &quot;, result: &quot; + result);&#xD;
			this.setChanged();&#xD;
			this.notifyObservers(result);&#xD;
		}&#xD;
		catch (Exception e) {&#xD;
			Log.error(&quot;SAReader onSAFile() error: &quot; + e.getMessage());&#xD;
			e.printStackTrace();&#xD;
		}&#xD;
	</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp7HlDCHEeWlMpF-4bareg" name="main" specification="_pkM6EjCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_pp7HlTCHEeWlMpF-4bareg" name="args">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pp7HljCHEeWlMpF-4bareg" value="*"/>
              </ownedParameter>
              <language>java</language>
              <body>(new SAReader()).run();&#xD;
	</body>
            </ownedBehavior>
            <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp7HlzCHEeWlMpF-4bareg" name="getType" specification="_pkNhIjCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_pp7HmDCHEeWlMpF-4bareg" type="_pkP9YTCHEeWlMpF-4bareg" direction="return"/>
              <language>java</language>
              <body>return SimSourceType.saData;&#xD;
	</body>
            </ownedBehavior>
            <ownedOperation xmi:id="_pkMTADCHEeWlMpF-4bareg" name="SAReader" method="_pp6ghzCHEeWlMpF-4bareg">
              <eAnnotations xmi:id="_pkMTATCHEeWlMpF-4bareg" source="http://www.eclipse.org/uml2/2.0.0/UML">
                <details xmi:id="_pkMTAjCHEeWlMpF-4bareg" key="create"/>
              </eAnnotations>
              <ownedParameter xmi:id="_pkMTAzCHEeWlMpF-4bareg" type="_pkLE4DCHEeWlMpF-4bareg" direction="return"/>
            </ownedOperation>
            <ownedOperation xmi:id="_pkM6EDCHEeWlMpF-4bareg" name="cleanDataDirectory" method="_pp6giTCHEeWlMpF-4bareg">
              <ownedComment xmi:id="_pqDDYTCHEeWlMpF-4bareg">
                <body>Clean all old .erp files from data directory</body>
              </ownedComment>
            </ownedOperation>
            <ownedOperation xmi:id="_pkM6ETCHEeWlMpF-4bareg" name="run" method="_pp6gijCHEeWlMpF-4bareg"/>
            <ownedOperation xmi:id="_pkM6EjCHEeWlMpF-4bareg" name="main" isStatic="true" method="_pp7HlDCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_pkNhIDCHEeWlMpF-4bareg" name="args">
                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pkNhITCHEeWlMpF-4bareg" value="*"/>
              </ownedParameter>
            </ownedOperation>
            <ownedOperation xmi:id="_pkNhIjCHEeWlMpF-4bareg" name="getType" method="_pp7HlzCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_poyfIDCHEeWlMpF-4bareg" type="_pkP9YTCHEeWlMpF-4bareg" direction="return"/>
            </ownedOperation>
            <ownedOperation xmi:id="_ppRnUTCHEeWlMpF-4bareg" name="onFileEvent" visibility="private" method="_pp7HkDCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_ppRnUjCHEeWlMpF-4bareg" name="key" type="_poxRAjCHEeWlMpF-4bareg"/>
            </ownedOperation>
            <ownedOperation xmi:id="_ppSOYDCHEeWlMpF-4bareg" name="onSAFile" method="_pp7HkjCHEeWlMpF-4bareg">
              <ownedParameter xmi:id="_ppSOYTCHEeWlMpF-4bareg" name="file" type="_poGioDCHEeWlMpF-4bareg"/>
            </ownedOperation>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="_pkPWUDCHEeWlMpF-4bareg" name="SimSource">
            <ownedAttribute xmi:id="_pkP9YDCHEeWlMpF-4bareg" name="type" type="_pkP9YTCHEeWlMpF-4bareg" isReadOnly="true"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Enumeration" xmi:id="_pkP9YTCHEeWlMpF-4bareg" name="SimSourceType">
            <ownedLiteral xmi:id="_pkQkcTCHEeWlMpF-4bareg" name="erpData"/>
            <ownedLiteral xmi:id="_pkQkcjCHEeWlMpF-4bareg" name="machineData"/>
            <ownedLiteral xmi:id="_pkQkczCHEeWlMpF-4bareg" name="saData"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_pqS7AzCHEeWlMpF-4bareg" name="" memberEnd="_pqS7BDCHEeWlMpF-4bareg _ppozsTCHEeWlMpF-4bareg">
            <ownedEnd xmi:id="_pqS7BDCHEeWlMpF-4bareg" name="" type="_pkGMYDCHEeWlMpF-4bareg" association="_pqS7AzCHEeWlMpF-4bareg"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Association" xmi:id="_pqS7BjCHEeWlMpF-4bareg" name="" memberEnd="_pqS7BzCHEeWlMpF-4bareg _ppqB0DCHEeWlMpF-4bareg">
            <ownedEnd xmi:id="_pqS7BzCHEeWlMpF-4bareg" name="" type="_pkLE4DCHEeWlMpF-4bareg" association="_pqS7BjCHEeWlMpF-4bareg"/>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_pjz4gDCHEeWlMpF-4bareg" name="ConnectionHandler">
          <generalization xmi:id="_ppNV4zCHEeWlMpF-4bareg" general="_ppMHwTCHEeWlMpF-4bareg"/>
          <ownedAttribute xmi:id="_ppjUIzCHEeWlMpF-4bareg" name="simConnect" isLeaf="true" isReadOnly="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppjUJDCHEeWlMpF-4bareg" value="&quot;tcp://localhost:61616&quot;"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppj7MTCHEeWlMpF-4bareg" name="topicERP" isLeaf="true" isStatic="true" isReadOnly="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppj7MjCHEeWlMpF-4bareg" value="&quot;m_orders&quot;"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppj7MzCHEeWlMpF-4bareg" name="topicMachineData" isLeaf="true" isStatic="true" isReadOnly="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppj7NDCHEeWlMpF-4bareg" value="&quot;m_opcitems&quot;"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppj7NTCHEeWlMpF-4bareg" name="keepListening" isStatic="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppj7NzCHEeWlMpF-4bareg" value="true"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_pplJUjCHEeWlMpF-4bareg" name="listenerERP" type="_pkGMYDCHEeWlMpF-4bareg" isReadOnly="true" association="_pqP3tzCHEeWlMpF-4bareg"/>
          <ownedAttribute xmi:id="_pplJUzCHEeWlMpF-4bareg" name="listenerMachineData" type="_pkGMYDCHEeWlMpF-4bareg" isReadOnly="true" association="_pqQewTCHEeWlMpF-4bareg"/>
          <ownedAttribute xmi:id="_pplJVDCHEeWlMpF-4bareg" name="saReader" visibility="private" type="_pkLE4DCHEeWlMpF-4bareg" association="_pqQexDCHEeWlMpF-4bareg"/>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp2PGDCHEeWlMpF-4bareg" name="ConnectionHandler" specification="_pj1GoDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp2PGTCHEeWlMpF-4bareg" type="_pjz4gDCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>this.messageHandler = new MessageHandler();&#xD;
		MessageWorker worker = new MessageWorker(messageHandler);&#xD;
		worker.start();&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp2PGjCHEeWlMpF-4bareg" name="getMessageHandler" specification="_pj1GpDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp2PGzCHEeWlMpF-4bareg" type="_pj5YEDCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>return messageHandler;&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp22IDCHEeWlMpF-4bareg" name="getSAReader" specification="_pj1tsDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp22ITCHEeWlMpF-4bareg" type="_pkLE4DCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>return saReader;&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp22IjCHEeWlMpF-4bareg" name="doConnect" specification="_pj1tsTCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp22IzCHEeWlMpF-4bareg" type="_polDwDCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>Log.info(&quot;======= Connecting.... =======&quot;);&#xD;
		&#xD;
		ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(simConnect);&#xD;
		&#xD;
		Connection connection = connectionFactory.createConnection();&#xD;
		connection.start();&#xD;
		&#xD;
		return connection;&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp22JDCHEeWlMpF-4bareg" name="doSession" specification="_ppMu0TCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp22JTCHEeWlMpF-4bareg" name="connection" type="_polDwDCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_pp22JjCHEeWlMpF-4bareg" type="_polq0TCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>return connection.createSession(false, Session.AUTO_ACKNOWLEDGE);&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp22JzCHEeWlMpF-4bareg" name="createListeners" specification="_ppNV4TCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp22KDCHEeWlMpF-4bareg" name="session" type="_polq0TCHEeWlMpF-4bareg"/>
            <language>java</language>
            <body>listenerERP = new MessageListener(session, topicERP);&#xD;
		listenerERP.addObserver(messageHandler);&#xD;
		&#xD;
		listenerMachineData = new MessageListener(session, topicMachineData);&#xD;
		listenerMachineData.addObserver(messageHandler);&#xD;
		&#xD;
		saReader = new SAReader();&#xD;
		saReader.addObserver(messageHandler);&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp22KTCHEeWlMpF-4bareg" name="startListeners" specification="_pj2UwDCHEeWlMpF-4bareg">
            <language>java</language>
            <body>Thread thread1 = new Thread(listenerERP);&#xD;
		thread1.start();&#xD;
		&#xD;
		Thread thread2 = new Thread(listenerMachineData);&#xD;
		thread2.start();&#xD;
		&#xD;
		Thread thread3 = new Thread(saReader);&#xD;
		thread3.start();&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp22KjCHEeWlMpF-4bareg" name="run" specification="_pj2UwTCHEeWlMpF-4bareg">
            <language>java</language>
            <body>try {&#xD;
			// Create and start Connection&#xD;
			Connection connection = doConnect();&#xD;
			&#xD;
			// Create a Session&#xD;
			Session session = doSession(connection);&#xD;
			&#xD;
			// Create and start messagehandlers&#xD;
			createListeners(session);&#xD;
			startListeners();&#xD;
		}&#xD;
		catch (JMSException e) {&#xD;
			Log.error(e.getMessage());&#xD;
		}&#xD;
		&#xD;
	</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_pj1GoDCHEeWlMpF-4bareg" name="ConnectionHandler" method="_pp2PGDCHEeWlMpF-4bareg">
            <eAnnotations xmi:id="_pj1GoTCHEeWlMpF-4bareg" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_pj1GojCHEeWlMpF-4bareg" key="create"/>
            </eAnnotations>
            <ownedComment xmi:id="_pqCcUTCHEeWlMpF-4bareg">
              <body>Main handler for connecting to the sim server</body>
            </ownedComment>
            <ownedParameter xmi:id="_pj1GozCHEeWlMpF-4bareg" type="_pjz4gDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_pj1GpDCHEeWlMpF-4bareg" name="getMessageHandler" method="_pp2PGjCHEeWlMpF-4bareg">
            <ownedComment xmi:id="_pqCcUjCHEeWlMpF-4bareg">
              <body>Returns the observer for each sim data source&#xD;
	 * @return</body>
            </ownedComment>
            <ownedParameter xmi:id="_pom48DCHEeWlMpF-4bareg" type="_pj5YEDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_pj1tsDCHEeWlMpF-4bareg" name="getSAReader" method="_pp22IDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pom48TCHEeWlMpF-4bareg" type="_pkLE4DCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_pj1tsTCHEeWlMpF-4bareg" name="doConnect" method="_pp22IjCHEeWlMpF-4bareg">
            <ownedComment xmi:id="_pqCcUzCHEeWlMpF-4bareg">
              <body>Creates and starts a connection to the sim&#xD;
	 * @return&#xD;
	 * @throws JMSException</body>
            </ownedComment>
            <ownedParameter xmi:id="_ppMu0DCHEeWlMpF-4bareg" type="_polDwDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_pj2UwDCHEeWlMpF-4bareg" name="startListeners" method="_pp22KTCHEeWlMpF-4bareg">
            <ownedComment xmi:id="_pqCcVTCHEeWlMpF-4bareg">
              <body>Starts all three listeners</body>
            </ownedComment>
          </ownedOperation>
          <ownedOperation xmi:id="_pj2UwTCHEeWlMpF-4bareg" name="run" method="_pp22KjCHEeWlMpF-4bareg"/>
          <ownedOperation xmi:id="_ppMu0TCHEeWlMpF-4bareg" name="doSession" method="_pp22JDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppMu0jCHEeWlMpF-4bareg" name="connection" type="_polDwDCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_ppNV4DCHEeWlMpF-4bareg" type="_polq0TCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_ppNV4TCHEeWlMpF-4bareg" name="createListeners" method="_pp22JzCHEeWlMpF-4bareg">
            <ownedComment xmi:id="_pqCcVDCHEeWlMpF-4bareg">
              <body>Creates three listeners, one for each topic and one for the json&#xD;
	 * @param session&#xD;
	 * @throws JMSException</body>
            </ownedComment>
            <ownedParameter xmi:id="_ppNV4jCHEeWlMpF-4bareg" name="session" type="_polq0TCHEeWlMpF-4bareg"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_pj5YEDCHEeWlMpF-4bareg" name="MessageHandler">
          <ownedAttribute xmi:id="_pplwYTCHEeWlMpF-4bareg" name="messageQueue" visibility="private" type="_poMCMDCHEeWlMpF-4bareg" association="_pqQexzCHEeWlMpF-4bareg"/>
          <ownedAttribute xmi:id="_VZtvAjCNEeWKod2uCAN30Q" name="messageListener" type="_pkGMYDCHEeWlMpF-4bareg" association="_VZtH8DCNEeWKod2uCAN30Q">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VZtvAzCNEeWKod2uCAN30Q"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VZuWEDCNEeWKod2uCAN30Q" value="*"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_lKKwAjCNEeWKod2uCAN30Q" name="sAReader" type="_pkLE4DCHEeWlMpF-4bareg" association="_lKKI8DCNEeWKod2uCAN30Q">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lKLXEDCNEeWKod2uCAN30Q"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lKLXETCNEeWKod2uCAN30Q" value="*"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_s7EjsjCREeWKod2uCAN30Q" name="messageObject" type="_pj7NQDCHEeWlMpF-4bareg" association="_s7D8oDCREeWKod2uCAN30Q">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s7EjszCREeWKod2uCAN30Q"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s7EjtDCREeWKod2uCAN30Q" value="*"/>
          </ownedAttribute>
          <interfaceRealization xmi:id="_ppN88DCHEeWlMpF-4bareg" client="_pj5YEDCHEeWlMpF-4bareg" supplier="_popVMTCHEeWlMpF-4bareg" contract="_popVMTCHEeWlMpF-4bareg"/>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp3dMDCHEeWlMpF-4bareg" name="MessageHandler" specification="_pj5_IDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp3dMTCHEeWlMpF-4bareg" type="_pj5YEDCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>messageQueue = new ArrayList&lt;MessageObject>();&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp3dMjCHEeWlMpF-4bareg" name="update" specification="_ppN88TCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp3dMzCHEeWlMpF-4bareg" name="o" type="_poouIDCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_pp3dNDCHEeWlMpF-4bareg" name="arg" type="_ppEL8DCHEeWlMpF-4bareg"/>
            <language>java</language>
            <body>String text = (String) arg;&#xD;
		&#xD;
		// Add to queue&#xD;
		messageQueue.add(new MessageObject(text, ((SimSource) o).getType()));&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp3dNTCHEeWlMpF-4bareg" name="hasNextMessage" specification="_pj6mMDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp3dNjCHEeWlMpF-4bareg" direction="return">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
            </ownedParameter>
            <language>java</language>
            <body>return (messageQueue.size() > 0);&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp3dNzCHEeWlMpF-4bareg" name="getNextMessage" specification="_pj6mMjCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp3dODCHEeWlMpF-4bareg" type="_pj7NQDCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>MessageObject result = messageQueue.get(0);&#xD;
		messageQueue.remove(0);&#xD;
		return result;&#xD;
	</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_pj5_IDCHEeWlMpF-4bareg" name="MessageHandler" method="_pp3dMDCHEeWlMpF-4bareg">
            <eAnnotations xmi:id="_pj5_ITCHEeWlMpF-4bareg" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_pj5_IjCHEeWlMpF-4bareg" key="create"/>
            </eAnnotations>
            <ownedParameter xmi:id="_pj5_IzCHEeWlMpF-4bareg" type="_pj5YEDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_pj6mMDCHEeWlMpF-4bareg" name="hasNextMessage" method="_pp3dNTCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pj6mMTCHEeWlMpF-4bareg" direction="return">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_pj6mMjCHEeWlMpF-4bareg" name="getNextMessage" method="_pp3dNzCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pop8QDCHEeWlMpF-4bareg" type="_pj7NQDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_ppN88TCHEeWlMpF-4bareg" name="update" method="_pp3dMjCHEeWlMpF-4bareg">
            <eAnnotations xmi:id="_ppOkATCHEeWlMpF-4bareg" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_ppOkAjCHEeWlMpF-4bareg" key="synchronized"/>
            </eAnnotations>
            <ownedParameter xmi:id="_ppN88jCHEeWlMpF-4bareg" name="o" type="_poouIDCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_ppOkADCHEeWlMpF-4bareg" name="arg" type="_ppEL8DCHEeWlMpF-4bareg"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_pj7NQDCHEeWlMpF-4bareg" name="MessageObject">
          <ownedAttribute xmi:id="_ppmXcTCHEeWlMpF-4bareg" name="text">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppmXczCHEeWlMpF-4bareg" name="type" type="_pkP9YTCHEeWlMpF-4bareg"/>
          <ownedAttribute xmi:id="_uWpJ0zCREeWKod2uCAN30Q" name="simSource" type="_pkPWUDCHEeWlMpF-4bareg" association="_uWoiwDCREeWKod2uCAN30Q">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uWpJ1DCREeWKod2uCAN30Q"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uWpw4DCREeWKod2uCAN30Q" value="*"/>
          </ownedAttribute>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp4EQDCHEeWlMpF-4bareg" name="MessageObject" specification="_poqjUDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp4EQTCHEeWlMpF-4bareg" name="text">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_pp4EQjCHEeWlMpF-4bareg" name="type" type="_pkP9YTCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_pp4EQzCHEeWlMpF-4bareg" type="_pj7NQDCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>this.text = text;&#xD;
		this.type = type;&#xD;
	</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_poqjUDCHEeWlMpF-4bareg" name="MessageObject" method="_pp4EQDCHEeWlMpF-4bareg">
            <eAnnotations xmi:id="_poqjUzCHEeWlMpF-4bareg" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_poqjVDCHEeWlMpF-4bareg" key="create"/>
            </eAnnotations>
            <ownedParameter xmi:id="_poqjUTCHEeWlMpF-4bareg" name="text">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_poqjUjCHEeWlMpF-4bareg" name="type" type="_pkP9YTCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_poqjVTCHEeWlMpF-4bareg" type="_pj7NQDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_pj8bYDCHEeWlMpF-4bareg" name="MessageWorker">
          <generalization xmi:id="_ppPLEDCHEeWlMpF-4bareg" general="_ppMHwTCHEeWlMpF-4bareg"/>
          <ownedAttribute xmi:id="_ppmXdTCHEeWlMpF-4bareg" name="messageHandler" visibility="private" type="_pj5YEDCHEeWlMpF-4bareg" association="_pqRF0TCHEeWlMpF-4bareg"/>
          <ownedAttribute xmi:id="_ppm-gTCHEeWlMpF-4bareg" name="productHandler" visibility="private" type="_pj_esDCHEeWlMpF-4bareg" association="_pqRF1DCHEeWlMpF-4bareg"/>
          <ownedAttribute xmi:id="_SiwMJDCREeWKod2uCAN30Q" name="simDataFactory" type="_pjiywDCHEeWlMpF-4bareg" association="_SiwMIDCREeWKod2uCAN30Q">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SiwMJTCREeWKod2uCAN30Q" value="1"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SiwMJjCREeWKod2uCAN30Q" value="1"/>
          </ownedAttribute>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp4ERDCHEeWlMpF-4bareg" name="MessageWorker" specification="_porKYDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp4ERTCHEeWlMpF-4bareg" name="messageHandler" type="_pj5YEDCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_pp4ERjCHEeWlMpF-4bareg" type="_pj8bYDCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>productHandler = ProductHandler.getProductHandler();&#xD;
		this.messageHandler = messageHandler;&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp4ERzCHEeWlMpF-4bareg" name="run" specification="_pj9CcDCHEeWlMpF-4bareg">
            <language>java</language>
            <body>while (ConnectionHandler.getKeepListening()){&#xD;
			if (messageHandler.hasNextMessage()) {&#xD;
				MessageObject message = messageHandler.getNextMessage();&#xD;
				handleMessage(message.text, message.type);&#xD;
			}&#xD;
			try {&#xD;
				sleep(100);&#xD;
			} catch (InterruptedException e) {&#xD;
				Log.error(e.getMessage());&#xD;
				e.printStackTrace();&#xD;
			}&#xD;
		}&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp4ESDCHEeWlMpF-4bareg" name="handleMessage" specification="_porxcDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp4ESTCHEeWlMpF-4bareg" name="text">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_pp4ESjCHEeWlMpF-4bareg" name="type" type="_pkP9YTCHEeWlMpF-4bareg"/>
            <language>java</language>
            <body>switch (type) {&#xD;
		case erpData:&#xD;
			handleERP(text);&#xD;
			break;&#xD;
		case machineData:&#xD;
			handleOPC(text);&#xD;
			break;&#xD;
		case saData:&#xD;
			handleSA(text);&#xD;
			break;&#xD;
		default:&#xD;
			break;&#xD;
		}&#xD;
		&#xD;
	&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp4ESzCHEeWlMpF-4bareg" name="handleERP" specification="_pj9pgzCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp4ETDCHEeWlMpF-4bareg" name="xml">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <language>java</language>
            <body>ERPData erpData = SimDataFactory.createERPData(xml);&#xD;
		productHandler.createNewProduct(erpData);&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp4ETTCHEeWlMpF-4bareg" name="handleOPC" specification="_pj9phTCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp4ETjCHEeWlMpF-4bareg" name="xml">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <language>java</language>
            <body>OPCDataItem opcDataItem = SimDataFactory.createOPCDataItem(xml);&#xD;
		productHandler.fireOPCEvent(opcDataItem);&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp4rUDCHEeWlMpF-4bareg" name="handleSA" specification="_pj-QkDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp4rUTCHEeWlMpF-4bareg" name="json">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <language>java</language>
            <body>SAData saData = SimDataFactory.createSAData(json);&#xD;
		productHandler.fireSAEvent(saData);&#xD;
	</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_pj9CcDCHEeWlMpF-4bareg" name="run" method="_pp4ERzCHEeWlMpF-4bareg"/>
          <ownedOperation xmi:id="_pj9pgzCHEeWlMpF-4bareg" name="handleERP" method="_pp4ESzCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pj9phDCHEeWlMpF-4bareg" name="xml">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_pj9phTCHEeWlMpF-4bareg" name="handleOPC" method="_pp4ETTCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pj9phjCHEeWlMpF-4bareg" name="xml">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_pj-QkDCHEeWlMpF-4bareg" name="handleSA" method="_pp4rUDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pj-QkTCHEeWlMpF-4bareg" name="json">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_porKYDCHEeWlMpF-4bareg" name="MessageWorker" method="_pp4ERDCHEeWlMpF-4bareg">
            <eAnnotations xmi:id="_porKYjCHEeWlMpF-4bareg" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_porKYzCHEeWlMpF-4bareg" key="create"/>
            </eAnnotations>
            <ownedParameter xmi:id="_porKYTCHEeWlMpF-4bareg" name="messageHandler" type="_pj5YEDCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_porKZDCHEeWlMpF-4bareg" type="_pj8bYDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_porxcDCHEeWlMpF-4bareg" name="handleMessage" visibility="protected" method="_pp4ESDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_porxcTCHEeWlMpF-4bareg" name="text">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_porxcjCHEeWlMpF-4bareg" name="type" type="_pkP9YTCHEeWlMpF-4bareg"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_pj_esDCHEeWlMpF-4bareg" name="ProductHandler">
          <ownedAttribute xmi:id="_ppm-gzCHEeWlMpF-4bareg" name="products" visibility="package" type="_poMCMDCHEeWlMpF-4bareg" association="_pqRs4TCHEeWlMpF-4bareg"/>
          <ownedAttribute xmi:id="_ppnllTCHEeWlMpF-4bareg" name="stateMachineHandler" visibility="private" type="_pjJxNzCHEeWlMpF-4bareg" association="_pqRs5zCHEeWlMpF-4bareg"/>
          <ownedAttribute xmi:id="_ppoMozCHEeWlMpF-4bareg" name="wsServer" visibility="private" type="_pjvAADCHEeWlMpF-4bareg" association="_pqST9DCHEeWlMpF-4bareg"/>
          <ownedAttribute xmi:id="_4-g84TCQEeWKod2uCAN30Q" name="product" type="_pjaP4DCHEeWlMpF-4bareg" association="_4-gV0DCQEeWKod2uCAN30Q">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4-g84jCQEeWKod2uCAN30Q"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4-g84zCQEeWKod2uCAN30Q" value="*"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_kEzGkTCREeWKod2uCAN30Q" name="dB" type="_pi4rcDCHEeWlMpF-4bareg" association="_kEyfgDCREeWKod2uCAN30Q">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kEzGkjCREeWKod2uCAN30Q" value="1"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kEzGkzCREeWKod2uCAN30Q" value="1"/>
          </ownedAttribute>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp4rVDCHEeWlMpF-4bareg" name="ProductHandler" specification="_pkAFwDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp4rVTCHEeWlMpF-4bareg" type="_pj_esDCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>products = new ArrayList&lt;Product>();&#xD;
		stateMachineHandler = new StateMachineHandler();&#xD;
		cEventProcessor = new CEventProcessor();&#xD;
		cEventProcessor.init();&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp4rVjCHEeWlMpF-4bareg" name="setWSListener" specification="_posYgDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp4rVzCHEeWlMpF-4bareg" name="wsServer" type="_pjvAADCHEeWlMpF-4bareg"/>
            <language>java</language>
            <body>this.wsServer = wsServer;&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp5SYDCHEeWlMpF-4bareg" name="createNewProduct" specification="_posYgjCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp5SYTCHEeWlMpF-4bareg" name="erpData" type="_pjRF8DCHEeWlMpF-4bareg"/>
            <language>java</language>
            <body>Product p = new Product(erpData, stateMachineHandler.createStateMachine());&#xD;
		products.add(p);&#xD;
		// System.out.println(&quot;new product in Queue&quot;);&#xD;
		&#xD;
		sendToWS(p, erpData);&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp5SYjCHEeWlMpF-4bareg" name="fireSAEvent" specification="_pos_kDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp5SYzCHEeWlMpF-4bareg" name="saData" type="_pjehUDCHEeWlMpF-4bareg"/>
            <language>java</language>
            <body>Product p = this.fireEvent(saData);&#xD;
		p.setSAData(saData);&#xD;
		&#xD;
		// Notify DB that product is finished&#xD;
		try {&#xD;
			DB.getDB().insertIntoDB(p);&#xD;
		} catch (Exception e) {&#xD;
			Log.error(e.getMessage());&#xD;
		}&#xD;
		&#xD;
		// Notify EsperTech&#xD;
		&#xD;
		// Notify WS&#xD;
		sendToWS(p, saData);&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp5SZDCHEeWlMpF-4bareg" name="fireOPCEvent" specification="_pos_kjCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp5SZTCHEeWlMpF-4bareg" name="opcDataItem" type="_pjUwUDCHEeWlMpF-4bareg"/>
            <language>java</language>
            <body>Product p = this.fireEvent(opcDataItem);&#xD;
		p.addSimData(opcDataItem);&#xD;
		&#xD;
		// Notify EsperTech&#xD;
		&#xD;
		// Notify WS&#xD;
		sendToWS(p, opcDataItem);&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp5SZjCHEeWlMpF-4bareg" name="fireEvent" specification="_pos_lDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp5SZzCHEeWlMpF-4bareg" name="simData" type="_pjiLsDCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_pp5SaDCHEeWlMpF-4bareg" type="_pjaP4DCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>Product result = null;&#xD;
		for (Product p : products) {&#xD;
			if (p.canFire(simData)) {&#xD;
				p.fireEvent(simData);&#xD;
				result = p;&#xD;
				break;&#xD;
			}&#xD;
		}&#xD;
		// System.out.println(result.getState());&#xD;
&#xD;
		&#xD;
		return result;&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp55cDCHEeWlMpF-4bareg" name="sendToWS" specification="_pos_lzCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pp55cTCHEeWlMpF-4bareg" name="p" type="_pjaP4DCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_pp55cjCHEeWlMpF-4bareg" name="simData" type="_pjiLsDCHEeWlMpF-4bareg"/>
            <language>java</language>
            <body>if (wsServer != null) {&#xD;
			wsServer.onSimData(p, simData);&#xD;
		}&#xD;
	</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_pkAFwDCHEeWlMpF-4bareg" name="ProductHandler" visibility="private" method="_pp4rVDCHEeWlMpF-4bareg">
            <eAnnotations xmi:id="_pkAFwTCHEeWlMpF-4bareg" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_pkAFwjCHEeWlMpF-4bareg" key="create"/>
            </eAnnotations>
            <ownedParameter xmi:id="_pkAFwzCHEeWlMpF-4bareg" type="_pj_esDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_posYgDCHEeWlMpF-4bareg" name="setWSListener" method="_pp4rVjCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_posYgTCHEeWlMpF-4bareg" name="wsServer" type="_pjvAADCHEeWlMpF-4bareg"/>
          </ownedOperation>
          <ownedOperation xmi:id="_posYgjCHEeWlMpF-4bareg" name="createNewProduct" method="_pp5SYDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_posYgzCHEeWlMpF-4bareg" name="erpData" type="_pjRF8DCHEeWlMpF-4bareg"/>
          </ownedOperation>
          <ownedOperation xmi:id="_pos_kDCHEeWlMpF-4bareg" name="fireSAEvent" method="_pp5SYjCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pos_kTCHEeWlMpF-4bareg" name="saData" type="_pjehUDCHEeWlMpF-4bareg"/>
          </ownedOperation>
          <ownedOperation xmi:id="_pos_kjCHEeWlMpF-4bareg" name="fireOPCEvent" method="_pp5SZDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pos_kzCHEeWlMpF-4bareg" name="opcDataItem" type="_pjUwUDCHEeWlMpF-4bareg"/>
          </ownedOperation>
          <ownedOperation xmi:id="_pos_lDCHEeWlMpF-4bareg" name="fireEvent" method="_pp5SZjCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pos_lTCHEeWlMpF-4bareg" name="simData" type="_pjiLsDCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_pos_ljCHEeWlMpF-4bareg" type="_pjaP4DCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_pos_lzCHEeWlMpF-4bareg" name="sendToWS" method="_pp55cDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pos_mDCHEeWlMpF-4bareg" name="p" type="_pjaP4DCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_potmoDCHEeWlMpF-4bareg" name="simData" type="_pjiLsDCHEeWlMpF-4bareg"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_pkCiADCHEeWlMpF-4bareg" name="Simulation">
          <generalization xmi:id="_ppQZMDCHEeWlMpF-4bareg" general="_ppMHwTCHEeWlMpF-4bareg"/>
          <ownedAttribute xmi:id="_ppoMpTCHEeWlMpF-4bareg" name="p" visibility="package" type="_ppPyIDCHEeWlMpF-4bareg" association="_pqS7ADCHEeWlMpF-4bareg"/>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp55czCHEeWlMpF-4bareg" name="run" specification="_pkDwIDCHEeWlMpF-4bareg">
            <language>java</language>
            <body>Log.info(&quot;Simulation: Starting sim...&quot;);&#xD;
		Runtime rt = Runtime.getRuntime();&#xD;
		try {&#xD;
			rt.exec(&quot;CMD /C start sim\\startSim.bat&quot;);&#xD;
			&#xD;
		} catch (IOException e) {&#xD;
			Log.error(e.getMessage());&#xD;
			e.printStackTrace();&#xD;
			try {&#xD;
				p = rt.exec(&quot;./sim/startSim.sh&quot;);&#xD;
			} catch (IOException e1) {&#xD;
				e1.printStackTrace();&#xD;
			}&#xD;
		}&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pp55dDCHEeWlMpF-4bareg" name="stopSim" specification="_pkE-QjCHEeWlMpF-4bareg">
            <language>java</language>
            <body>Log.info(&quot;Simulation: Stopping sim...&quot;);&#xD;
		try {&#xD;
			p.destroyForcibly();&#xD;
			Runtime.getRuntime().exec(&quot;taskkill /im cmd.exe&quot;);&#xD;
		} catch (Exception e) {&#xD;
			Log.error(&quot;Error killing cmd: &quot; + e.getMessage());&#xD;
			&#xD;
		}&#xD;
	</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_pkDwIDCHEeWlMpF-4bareg" name="run" method="_pp55czCHEeWlMpF-4bareg"/>
          <ownedOperation xmi:id="_pkE-QjCHEeWlMpF-4bareg" name="stopSim" method="_pp55dDCHEeWlMpF-4bareg"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_pqP3tzCHEeWlMpF-4bareg" name="" memberEnd="_pqP3uDCHEeWlMpF-4bareg _pplJUjCHEeWlMpF-4bareg">
          <ownedEnd xmi:id="_pqP3uDCHEeWlMpF-4bareg" name="" type="_pjz4gDCHEeWlMpF-4bareg" association="_pqP3tzCHEeWlMpF-4bareg"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_pqQewTCHEeWlMpF-4bareg" name="" memberEnd="_pqQewjCHEeWlMpF-4bareg _pplJUzCHEeWlMpF-4bareg">
          <ownedEnd xmi:id="_pqQewjCHEeWlMpF-4bareg" name="" type="_pjz4gDCHEeWlMpF-4bareg" association="_pqQewTCHEeWlMpF-4bareg"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_pqQexDCHEeWlMpF-4bareg" name="" memberEnd="_pqQexTCHEeWlMpF-4bareg _pplJVDCHEeWlMpF-4bareg">
          <ownedEnd xmi:id="_pqQexTCHEeWlMpF-4bareg" name="" type="_pjz4gDCHEeWlMpF-4bareg" association="_pqQexDCHEeWlMpF-4bareg"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_pqQexzCHEeWlMpF-4bareg" name="" memberEnd="_pqQeyDCHEeWlMpF-4bareg _pplwYTCHEeWlMpF-4bareg">
          <ownedEnd xmi:id="_pqQeyDCHEeWlMpF-4bareg" name="" type="_pj5YEDCHEeWlMpF-4bareg" association="_pqQexzCHEeWlMpF-4bareg"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_pqRF0TCHEeWlMpF-4bareg" name="" memberEnd="_pqRF0jCHEeWlMpF-4bareg _ppmXdTCHEeWlMpF-4bareg">
          <ownedEnd xmi:id="_pqRF0jCHEeWlMpF-4bareg" name="" type="_pj8bYDCHEeWlMpF-4bareg" association="_pqRF0TCHEeWlMpF-4bareg">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2-LkMDCNEeWKod2uCAN30Q" value="1"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2-MLQDCNEeWKod2uCAN30Q" value="1"/>
          </ownedEnd>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_pqRF1DCHEeWlMpF-4bareg" name="" memberEnd="_pqRF1TCHEeWlMpF-4bareg _ppm-gTCHEeWlMpF-4bareg">
          <ownedEnd xmi:id="_pqRF1TCHEeWlMpF-4bareg" name="" type="_pj8bYDCHEeWlMpF-4bareg" association="_pqRF1DCHEeWlMpF-4bareg"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_pqRs4TCHEeWlMpF-4bareg" name="" memberEnd="_pqRs4jCHEeWlMpF-4bareg _ppm-gzCHEeWlMpF-4bareg">
          <ownedEnd xmi:id="_pqRs4jCHEeWlMpF-4bareg" name="" type="_pj_esDCHEeWlMpF-4bareg" association="_pqRs4TCHEeWlMpF-4bareg"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_pqRs5zCHEeWlMpF-4bareg" name="" memberEnd="_pqRs6DCHEeWlMpF-4bareg _ppnllTCHEeWlMpF-4bareg">
          <ownedEnd xmi:id="_pqRs6DCHEeWlMpF-4bareg" name="" type="_pj_esDCHEeWlMpF-4bareg" association="_pqRs5zCHEeWlMpF-4bareg"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_pqST9DCHEeWlMpF-4bareg" name="" memberEnd="_pqST9TCHEeWlMpF-4bareg _ppoMozCHEeWlMpF-4bareg">
          <ownedEnd xmi:id="_pqST9TCHEeWlMpF-4bareg" name="" type="_pj_esDCHEeWlMpF-4bareg" association="_pqST9DCHEeWlMpF-4bareg"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_pqS7ADCHEeWlMpF-4bareg" name="" memberEnd="_pqS7ATCHEeWlMpF-4bareg _ppoMpTCHEeWlMpF-4bareg">
          <ownedEnd xmi:id="_pqS7ATCHEeWlMpF-4bareg" name="" type="_pkCiADCHEeWlMpF-4bareg" association="_pqS7ADCHEeWlMpF-4bareg"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_VZtH8DCNEeWKod2uCAN30Q" name="" memberEnd="_VZtH8TCNEeWKod2uCAN30Q _VZtvAjCNEeWKod2uCAN30Q"/>
        <packagedElement xmi:type="uml:Association" xmi:id="_lKKI8DCNEeWKod2uCAN30Q" name="" memberEnd="_lKKI8TCNEeWKod2uCAN30Q _lKKwAjCNEeWKod2uCAN30Q"/>
        <packagedElement xmi:type="uml:Association" xmi:id="_4-gV0DCQEeWKod2uCAN30Q" name="" memberEnd="_4-gV0TCQEeWKod2uCAN30Q _4-g84TCQEeWKod2uCAN30Q">
          <ownedEnd xmi:id="_4-gV0TCQEeWKod2uCAN30Q" name="productHandler" type="_pj_esDCHEeWlMpF-4bareg" association="_4-gV0DCQEeWKod2uCAN30Q">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4-gV0jCQEeWKod2uCAN30Q"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4-g84DCQEeWKod2uCAN30Q" value="*"/>
          </ownedEnd>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_SiwMIDCREeWKod2uCAN30Q" name="" memberEnd="_SiwMITCREeWKod2uCAN30Q _SiwMJDCREeWKod2uCAN30Q">
          <ownedEnd xmi:id="_SiwMITCREeWKod2uCAN30Q" name="messageWorker" type="_pj8bYDCHEeWlMpF-4bareg" association="_SiwMIDCREeWKod2uCAN30Q">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SiwMIjCREeWKod2uCAN30Q" value="1"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SiwMIzCREeWKod2uCAN30Q" value="1"/>
          </ownedEnd>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_kEyfgDCREeWKod2uCAN30Q" name="" memberEnd="_kEyfgTCREeWKod2uCAN30Q _kEzGkTCREeWKod2uCAN30Q">
          <ownedEnd xmi:id="_kEyfgTCREeWKod2uCAN30Q" name="productHandler" type="_pj_esDCHEeWlMpF-4bareg" association="_kEyfgDCREeWKod2uCAN30Q">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kEyfgjCREeWKod2uCAN30Q" value="1"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kEzGkDCREeWKod2uCAN30Q" value="1"/>
          </ownedEnd>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_s7D8oDCREeWKod2uCAN30Q" name="" memberEnd="_s7D8oTCREeWKod2uCAN30Q _s7EjsjCREeWKod2uCAN30Q">
          <ownedEnd xmi:id="_s7D8oTCREeWKod2uCAN30Q" name="messageHandler" type="_pj5YEDCHEeWlMpF-4bareg" association="_s7D8oDCREeWKod2uCAN30Q">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s7EjsDCREeWKod2uCAN30Q"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s7EjsTCREeWKod2uCAN30Q" value="*"/>
          </ownedEnd>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_uWoiwDCREeWKod2uCAN30Q" name="" memberEnd="_uWpJ0DCREeWKod2uCAN30Q _uWpJ0zCREeWKod2uCAN30Q">
          <ownedEnd xmi:id="_uWpJ0DCREeWKod2uCAN30Q" name="messageObject" type="_pj7NQDCHEeWlMpF-4bareg" association="_uWoiwDCREeWKod2uCAN30Q">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uWpJ0TCREeWKod2uCAN30Q"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uWpJ0jCREeWKod2uCAN30Q" value="*"/>
          </ownedEnd>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_phSI8DCHEeWlMpF-4bareg" name="model">
        <packagedElement xmi:type="uml:Class" xmi:id="_pjRF8DCHEeWlMpF-4bareg" name="ERPData">
          <generalization xmi:id="_poUlEDCHEeWlMpF-4bareg" general="_pjiLsDCHEeWlMpF-4bareg"/>
          <ownedAttribute xmi:id="_ppb_YDCHEeWlMpF-4bareg" name="OrderNumber">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppb_YjCHEeWlMpF-4bareg" name="CustomerNumber">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppb_ZDCHEeWlMpF-4bareg" name="MaterialNumber">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppb_ZjCHEeWlMpF-4bareg" name="TimeStamp" type="_poSv4DCHEeWlMpF-4bareg" association="_pqAnJTCHEeWlMpF-4bareg"/>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppwvgjCHEeWlMpF-4bareg" name="getTime" specification="_pjS7IzCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppwvgzCHEeWlMpF-4bareg" direction="return">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#long"/>
            </ownedParameter>
            <language>java</language>
            <body>return TimeStamp.getTime();&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppwvhDCHEeWlMpF-4bareg" name="getTrigger" specification="_pjTiMDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppwvhTCHEeWlMpF-4bareg" type="_pjM0gDCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>return null;&#xD;
	</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_pjSUEDCHEeWlMpF-4bareg" name="ERPData">
            <eAnnotations xmi:id="_pjS7IDCHEeWlMpF-4bareg" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_pjS7ITCHEeWlMpF-4bareg" key="create"/>
            </eAnnotations>
            <ownedParameter xmi:id="_pjS7IjCHEeWlMpF-4bareg" type="_pjRF8DCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_pjS7IzCHEeWlMpF-4bareg" name="getTime" method="_ppwvgjCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pjS7JDCHEeWlMpF-4bareg" direction="return">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#long"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_pjTiMDCHEeWlMpF-4bareg" name="getTrigger" method="_ppwvhDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_poT-ATCHEeWlMpF-4bareg" type="_pjM0gDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_pjUwUDCHEeWlMpF-4bareg" name="OPCDataItem">
          <generalization xmi:id="_poVMITCHEeWlMpF-4bareg" general="_pjiLsDCHEeWlMpF-4bareg"/>
          <ownedAttribute xmi:id="_ppcmcDCHEeWlMpF-4bareg" name="value" type="_ppEL8DCHEeWlMpF-4bareg" association="_pqBOMTCHEeWlMpF-4bareg"/>
          <ownedAttribute xmi:id="_ppcmcjCHEeWlMpF-4bareg" name="status">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppcmdDCHEeWlMpF-4bareg" name="itemName">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppcmdjCHEeWlMpF-4bareg" name="timestamp">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#long"/>
          </ownedAttribute>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppxWkDCHEeWlMpF-4bareg" name="OPCDataItem" specification="_ppEL8jCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppxWkTCHEeWlMpF-4bareg" name="v" type="_ppEL8DCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_ppxWkjCHEeWlMpF-4bareg" name="name">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_ppxWkzCHEeWlMpF-4bareg" type="_pjUwUDCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>this.value = v;&#xD;
     this.itemName = name;&#xD;
     this.timestamp = System.currentTimeMillis();&#xD;
     this.status = &quot;GOOD&quot;;&#xD;
 </body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppxWlDCHEeWlMpF-4bareg" name="getTrigger" specification="_pjWlgDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppxWlTCHEeWlMpF-4bareg" type="_pjM0gDCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>for (Triggers t : Triggers.values()) {&#xD;
			if (t.eventName.equals(this.itemName + &quot; &quot; + value)) {&#xD;
				return t;&#xD;
			}&#xD;
			else if (this.itemName.contains(t.eventName)) {&#xD;
				return t;&#xD;
			}&#xD;
		}&#xD;
		return null;&#xD;
	</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_pjV-cDCHEeWlMpF-4bareg" name="OPCDataItem">
            <eAnnotations xmi:id="_pjV-cTCHEeWlMpF-4bareg" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_pjV-cjCHEeWlMpF-4bareg" key="create"/>
            </eAnnotations>
            <ownedParameter xmi:id="_pjV-czCHEeWlMpF-4bareg" type="_pjUwUDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_pjWlgDCHEeWlMpF-4bareg" name="getTrigger" method="_ppxWlDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_poVMIDCHEeWlMpF-4bareg" type="_pjM0gDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_ppEL8jCHEeWlMpF-4bareg" name="OPCDataItem" method="_ppxWkDCHEeWlMpF-4bareg">
            <eAnnotations xmi:id="_ppEzAjCHEeWlMpF-4bareg" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_ppEzAzCHEeWlMpF-4bareg" key="create"/>
            </eAnnotations>
            <ownedParameter xmi:id="_ppEzADCHEeWlMpF-4bareg" name="v" type="_ppEL8DCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_ppEzATCHEeWlMpF-4bareg" name="name">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_ppEzBDCHEeWlMpF-4bareg" type="_pjUwUDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_pjaP4DCHEeWlMpF-4bareg" name="Product">
          <ownedAttribute xmi:id="_ppdNgTCHEeWlMpF-4bareg" name="opcDataItems" visibility="private" type="_poMCMDCHEeWlMpF-4bareg" association="_pqM0ZDCHEeWlMpF-4bareg"/>
          <ownedAttribute xmi:id="_ppd0kDCHEeWlMpF-4bareg" name="stateMachine" visibility="private" type="_poVzMDCHEeWlMpF-4bareg" association="_pqNbcTCHEeWlMpF-4bareg"/>
          <ownedAttribute xmi:id="_ppd0kzCHEeWlMpF-4bareg" name="erpData" type="_pjRF8DCHEeWlMpF-4bareg" association="_pqNbdDCHEeWlMpF-4bareg"/>
          <ownedAttribute xmi:id="_ppd0lTCHEeWlMpF-4bareg" name="saData" type="_pjehUDCHEeWlMpF-4bareg" association="_pqNbdzCHEeWlMpF-4bareg"/>
          <ownedAttribute xmi:id="_2Q0AgjCQEeWKod2uCAN30Q" name="oPCDataItem" type="_pjUwUDCHEeWlMpF-4bareg" association="_2QzZcDCQEeWKod2uCAN30Q">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2Q0AgzCQEeWKod2uCAN30Q"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2Q0nkDCQEeWKod2uCAN30Q" value="*"/>
          </ownedAttribute>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppx9oDCHEeWlMpF-4bareg" name="Product" specification="_ppFaEDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppx9oTCHEeWlMpF-4bareg" name="erpData" type="_pjRF8DCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_ppx9ojCHEeWlMpF-4bareg" name="stateMachine" type="_poVzMDCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_ppx9ozCHEeWlMpF-4bareg" type="_pjaP4DCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>this.erpData = erpData;&#xD;
		this.stateMachine = stateMachine;&#xD;
		this.opcDataItems = new ArrayList&lt;OPCDataItem>();&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppx9pDCHEeWlMpF-4bareg" name="addSimData" specification="_poWaQDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppx9pTCHEeWlMpF-4bareg" name="opcDataItem" type="_pjUwUDCHEeWlMpF-4bareg"/>
            <language>java</language>
            <body>opcDataItems.add(opcDataItem);&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppx9pjCHEeWlMpF-4bareg" name="getOPCDataItems" specification="_pjbeADCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppx9pzCHEeWlMpF-4bareg" type="_poMCMDCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>return opcDataItems;&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppx9qDCHEeWlMpF-4bareg" name="setSAData" specification="_poWaQjCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppx9qTCHEeWlMpF-4bareg" name="saData" type="_pjehUDCHEeWlMpF-4bareg"/>
            <language>java</language>
            <body>this.saData = saData;&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppyksDCHEeWlMpF-4bareg" name="getSAData" specification="_pjcFEDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppyksTCHEeWlMpF-4bareg" type="_pjehUDCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>return saData;&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppyksjCHEeWlMpF-4bareg" name="fireEvent" specification="_poXBUTCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppykszCHEeWlMpF-4bareg" name="simData" type="_pjiLsDCHEeWlMpF-4bareg"/>
            <language>java</language>
            <body>stateMachine.fire(simData.getTrigger());&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppyktDCHEeWlMpF-4bareg" name="canFire" specification="_poXBUzCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppyktTCHEeWlMpF-4bareg" name="simData" type="_pjiLsDCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_ppyktjCHEeWlMpF-4bareg" direction="return">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
            </ownedParameter>
            <language>java</language>
            <body>return stateMachine.canFire(simData.getTrigger());&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppyktzCHEeWlMpF-4bareg" name="getState" specification="_pjcFETCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppykuDCHEeWlMpF-4bareg" type="_pjIjETCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>return stateMachine.getState();&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppykuTCHEeWlMpF-4bareg" name="getErpData" specification="_pjcsIDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppykujCHEeWlMpF-4bareg" type="_pjRF8DCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>return erpData;&#xD;
	</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_pjbeADCHEeWlMpF-4bareg" name="getOPCDataItems" method="_ppx9pjCHEeWlMpF-4bareg">
            <ownedComment xmi:id="_pqBONTCHEeWlMpF-4bareg">
              <body>Returns the list of events added to this specific product.&#xD;
	 * @return Current list of opc events</body>
            </ownedComment>
            <ownedParameter xmi:id="_ppGBITCHEeWlMpF-4bareg" type="_poMCMDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_pjcFEDCHEeWlMpF-4bareg" name="getSAData" method="_ppyksDCHEeWlMpF-4bareg">
            <ownedComment xmi:id="_pqBONzCHEeWlMpF-4bareg">
              <body>Returns the spectral analysis assigned to the product.&#xD;
	 * @return The spectral analysis data</body>
            </ownedComment>
            <ownedParameter xmi:id="_poXBUDCHEeWlMpF-4bareg" type="_pjehUDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_pjcFETCHEeWlMpF-4bareg" name="getState" method="_ppyktzCHEeWlMpF-4bareg">
            <ownedComment xmi:id="_pqB1QTCHEeWlMpF-4bareg">
              <body>Returns the current state of the product.&#xD;
	 * @return</body>
            </ownedComment>
            <ownedParameter xmi:id="_poXBVjCHEeWlMpF-4bareg" type="_pjIjETCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_pjcsIDCHEeWlMpF-4bareg" name="getErpData" method="_ppykuTCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_poXBVzCHEeWlMpF-4bareg" type="_pjRF8DCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_poWaQDCHEeWlMpF-4bareg" name="addSimData" method="_ppx9pDCHEeWlMpF-4bareg">
            <ownedComment xmi:id="_pqBONDCHEeWlMpF-4bareg">
              <body>Adds one opc event to the product.&#xD;
	 * @param opcDataItem Event to be added</body>
            </ownedComment>
            <ownedParameter xmi:id="_poWaQTCHEeWlMpF-4bareg" name="opcDataItem" type="_pjUwUDCHEeWlMpF-4bareg"/>
          </ownedOperation>
          <ownedOperation xmi:id="_poWaQjCHEeWlMpF-4bareg" name="setSAData" method="_ppx9qDCHEeWlMpF-4bareg">
            <ownedComment xmi:id="_pqBONjCHEeWlMpF-4bareg">
              <body>Assigns spectral analysis data to a product. &#xD;
	 * @param saData The spectral analysis data</body>
            </ownedComment>
            <ownedParameter xmi:id="_poWaQzCHEeWlMpF-4bareg" name="saData" type="_pjehUDCHEeWlMpF-4bareg"/>
          </ownedOperation>
          <ownedOperation xmi:id="_poXBUTCHEeWlMpF-4bareg" name="fireEvent" method="_ppyksjCHEeWlMpF-4bareg">
            <ownedComment xmi:id="_pqBOODCHEeWlMpF-4bareg">
              <body>Fires any event on a product, thus also setting the new&#xD;
	 * state. &#xD;
	 * @param simData A subclass of simData</body>
            </ownedComment>
            <ownedParameter xmi:id="_poXBUjCHEeWlMpF-4bareg" name="simData" type="_pjiLsDCHEeWlMpF-4bareg"/>
          </ownedOperation>
          <ownedOperation xmi:id="_poXBUzCHEeWlMpF-4bareg" name="canFire" method="_ppyktDCHEeWlMpF-4bareg">
            <ownedComment xmi:id="_pqB1QDCHEeWlMpF-4bareg">
              <body>Check if a certain event can be fired on a product.&#xD;
	 * @param simData A subclass of simData&#xD;
	 * @return True for can fire, false for can't fire</body>
            </ownedComment>
            <ownedParameter xmi:id="_poXBVDCHEeWlMpF-4bareg" name="simData" type="_pjiLsDCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_poXBVTCHEeWlMpF-4bareg" direction="return">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_ppFaEDCHEeWlMpF-4bareg" name="Product" method="_ppx9oDCHEeWlMpF-4bareg">
            <eAnnotations xmi:id="_ppFaEzCHEeWlMpF-4bareg" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_ppFaFDCHEeWlMpF-4bareg" key="create"/>
            </eAnnotations>
            <ownedComment xmi:id="_pqBOMzCHEeWlMpF-4bareg">
              <body>A product represents one item on the factory line. &#xD;
	 * @param erpData Metadata to refer to the product&#xD;
	 * @param stateMachine Linear sequence of states the product can be in</body>
            </ownedComment>
            <ownedParameter xmi:id="_ppFaETCHEeWlMpF-4bareg" name="erpData" type="_pjRF8DCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_ppFaEjCHEeWlMpF-4bareg" name="stateMachine" type="_poVzMDCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_ppFaFTCHEeWlMpF-4bareg" type="_pjaP4DCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_pjehUDCHEeWlMpF-4bareg" name="SAData">
          <generalization xmi:id="_poYPcTCHEeWlMpF-4bareg" general="_pjiLsDCHEeWlMpF-4bareg"/>
          <ownedAttribute xmi:id="_ppeboTCHEeWlMpF-4bareg" name="em1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppebozCHEeWlMpF-4bareg" name="em2">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppebpTCHEeWlMpF-4bareg" name="a1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppfCsTCHEeWlMpF-4bareg" name="a2">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppfCszCHEeWlMpF-4bareg" name="b1">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppfCtTCHEeWlMpF-4bareg" name="b2">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppfCtzCHEeWlMpF-4bareg" name="ts_start">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#long"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppfCuTCHEeWlMpF-4bareg" name="ts_stop">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#long"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppfCuzCHEeWlMpF-4bareg" name="overallStatus">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedAttribute>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppzLwDCHEeWlMpF-4bareg" name="getTrigger" specification="_pjfvcjCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppzLwTCHEeWlMpF-4bareg" type="_pjM0gDCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>return Triggers.SPECTRAL_ANALYSIS;&#xD;
	</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_pjfIYDCHEeWlMpF-4bareg" name="SAData">
            <eAnnotations xmi:id="_pjfIYTCHEeWlMpF-4bareg" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_pjfvcDCHEeWlMpF-4bareg" key="create"/>
            </eAnnotations>
            <ownedParameter xmi:id="_pjfvcTCHEeWlMpF-4bareg" type="_pjehUDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_pjfvcjCHEeWlMpF-4bareg" name="getTrigger" method="_ppzLwDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_poYPcDCHEeWlMpF-4bareg" type="_pjM0gDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_pjiLsDCHEeWlMpF-4bareg" name="SimData" isAbstract="true">
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppzLwjCHEeWlMpF-4bareg" name="getType" specification="_poY2gTCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppzLwzCHEeWlMpF-4bareg" name="simData" type="_pjiLsDCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_ppzLxDCHEeWlMpF-4bareg" type="_pkP9YTCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>if (simData instanceof ERPData) {&#xD;
			return SimSourceType.erpData;&#xD;
		}&#xD;
		else if (simData instanceof OPCDataItem) {&#xD;
			return SimSourceType.machineData;&#xD;
		}&#xD;
		else {&#xD;
			return SimSourceType.saData;&#xD;
		}&#xD;
	</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_pjiLsTCHEeWlMpF-4bareg" name="getTrigger" isAbstract="true">
            <ownedParameter xmi:id="_poY2gDCHEeWlMpF-4bareg" type="_pjM0gDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_poY2gTCHEeWlMpF-4bareg" name="getType" isStatic="true" method="_ppzLwjCHEeWlMpF-4bareg">
            <ownedComment xmi:id="_pqB1QjCHEeWlMpF-4bareg">
              <body>Check which type of data a certain event is.&#xD;
	 * @param simData A subclass of SimData&#xD;
	 * @return An item of SimSourceType</body>
            </ownedComment>
            <ownedParameter xmi:id="_poY2gjCHEeWlMpF-4bareg" name="simData" type="_pjiLsDCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_poZdkDCHEeWlMpF-4bareg" type="_pkP9YTCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_pjiywDCHEeWlMpF-4bareg" name="SimDataFactory">
          <ownedComment xmi:id="_pqB1QzCHEeWlMpF-4bareg">
            <body>This class is used statically to create new event items from &#xD;
xml and json strings.&#xD;
@author D059373&#xD;
 *</body>
          </ownedComment>
          <ownedAttribute xmi:id="_T0WW5DCREeWKod2uCAN30Q" name="oPCDataItem" type="_pjUwUDCHEeWlMpF-4bareg" association="_T0WW4DCREeWKod2uCAN30Q">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_T0W98DCREeWKod2uCAN30Q"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_T0W98TCREeWKod2uCAN30Q" value="*"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_U-pm0jCREeWKod2uCAN30Q" name="sAData" type="_pjehUDCHEeWlMpF-4bareg" association="_U-o_wDCREeWKod2uCAN30Q">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_U-pm0zCREeWKod2uCAN30Q"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_U-pm1DCREeWKod2uCAN30Q" value="*"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_Wy82AzCREeWKod2uCAN30Q" name="eRPData" type="_pjRF8DCHEeWlMpF-4bareg" association="_Wy8O8DCREeWKod2uCAN30Q">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Wy9dEDCREeWKod2uCAN30Q"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Wy9dETCREeWKod2uCAN30Q" value="*"/>
          </ownedAttribute>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppzLxTCHEeWlMpF-4bareg" name="createERPData" specification="_pjjZ0DCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppzLxjCHEeWlMpF-4bareg" name="xml">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_ppzLxzCHEeWlMpF-4bareg" type="_pjRF8DCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>ERPData result = null;&#xD;
		try {	&#xD;
			JAXBContext _ctx = JAXBContext.newInstance(ERPData.class);&#xD;
			Unmarshaller _unmarshaller = _ctx.createUnmarshaller();&#xD;
			&#xD;
			StringReader sReader = new StringReader(xml); &#xD;
			result = (ERPData) _unmarshaller.unmarshal(sReader);&#xD;
			&#xD;
			&#xD;
			Log.info(&quot;###########ERPItem#############&quot;);&#xD;
			Log.info(&quot;Material: &quot; + result.getMaterialNumber());&#xD;
			Log.info(&quot;Customer: &quot;+ result.getCustomerNumber());&#xD;
			Log.info(&quot;Order: &quot; + result.getOrderNumber());&#xD;
			Log.info(&quot;Timestamp: &quot; + result.getTime());&#xD;
			&#xD;
		} catch (JAXBException e) {&#xD;
			e.printStackTrace();&#xD;
			Log.error(e.getMessage());&#xD;
		}&#xD;
		return result;&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppzLyDCHEeWlMpF-4bareg" name="createOPCDataItem" specification="_pjjZ0jCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppzLyTCHEeWlMpF-4bareg" name="xml">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_ppzLyjCHEeWlMpF-4bareg" type="_pjUwUDCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>OPCDataItem result = null;&#xD;
		try {	&#xD;
			JAXBContext _ctx = JAXBContext.newInstance(OPCDataItem.class);&#xD;
			Unmarshaller _unmarshaller = _ctx.createUnmarshaller();&#xD;
			&#xD;
			StringReader sReader = new StringReader(xml); &#xD;
		&#xD;
			result = (OPCDataItem) _unmarshaller.unmarshal(sReader);&#xD;
			&#xD;
			&#xD;
			&#xD;
			Log.info(&quot;##########OPCItem#############&quot;);&#xD;
			&#xD;
			Log.info(&quot;Name: &quot; + result.getItemName());&#xD;
			Log.info(&quot;Status: &quot; + result.getStatus());&#xD;
			Log.info(&quot;Timestamp: &quot; + result.getTimestamp());&#xD;
			Log.info(&quot;Value: &quot; + result.getValue());&#xD;
			//Log.info(&quot;Timestamp: &quot; + erpData2.getTimeStamp());&#xD;
			&#xD;
		} catch (JAXBException e) {&#xD;
			Log.error(e.getMessage());&#xD;
			e.printStackTrace();&#xD;
		}&#xD;
		return result;&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppzLyzCHEeWlMpF-4bareg" name="createSAData" specification="_pjkA4DCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppzLzDCHEeWlMpF-4bareg" name="json">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_ppzLzTCHEeWlMpF-4bareg" type="_pjehUDCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>Gson gson = new Gson();&#xD;
		SAData result = gson.fromJson(json, SAData.class);&#xD;
&#xD;
		Log.info(&quot;######SAItem########&quot;);&#xD;
		Log.info(&quot;Status: &quot;+ result.getOverallStatus());&#xD;
		Log.info(&quot;Start: &quot; + result.getTs_start());&#xD;
		Log.info(&quot;Stop: &quot; + result.getTs_stop());&#xD;
		&#xD;
		return result;&#xD;
	</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_pjjZ0DCHEeWlMpF-4bareg" name="createERPData" isStatic="true" method="_ppzLxTCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pjjZ0TCHEeWlMpF-4bareg" name="xml">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_poarsTCHEeWlMpF-4bareg" type="_pjRF8DCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_pjjZ0jCHEeWlMpF-4bareg" name="createOPCDataItem" isStatic="true" method="_ppzLyDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pjjZ0zCHEeWlMpF-4bareg" name="xml">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_poarsjCHEeWlMpF-4bareg" type="_pjUwUDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_pjkA4DCHEeWlMpF-4bareg" name="createSAData" isStatic="true" method="_ppzLyzCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pjkA4TCHEeWlMpF-4bareg" name="json">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_poarszCHEeWlMpF-4bareg" type="_pjehUDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_pqAnJTCHEeWlMpF-4bareg" name="" memberEnd="_ppb_ZjCHEeWlMpF-4bareg _pqAnJjCHEeWlMpF-4bareg">
          <ownedEnd xmi:id="_pqAnJjCHEeWlMpF-4bareg" name="" type="_pjRF8DCHEeWlMpF-4bareg" association="_pqAnJTCHEeWlMpF-4bareg"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_pqBOMTCHEeWlMpF-4bareg" name="" memberEnd="_ppcmcDCHEeWlMpF-4bareg _pqBOMjCHEeWlMpF-4bareg">
          <ownedEnd xmi:id="_pqBOMjCHEeWlMpF-4bareg" name="" type="_pjUwUDCHEeWlMpF-4bareg" association="_pqBOMTCHEeWlMpF-4bareg"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_pqM0ZDCHEeWlMpF-4bareg" name="" memberEnd="_pqM0ZTCHEeWlMpF-4bareg _ppdNgTCHEeWlMpF-4bareg">
          <ownedEnd xmi:id="_pqM0ZTCHEeWlMpF-4bareg" name="" type="_pjaP4DCHEeWlMpF-4bareg" association="_pqM0ZDCHEeWlMpF-4bareg"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_pqNbcTCHEeWlMpF-4bareg" name="" memberEnd="_pqNbcjCHEeWlMpF-4bareg _ppd0kDCHEeWlMpF-4bareg">
          <ownedEnd xmi:id="_pqNbcjCHEeWlMpF-4bareg" name="" type="_pjaP4DCHEeWlMpF-4bareg" association="_pqNbcTCHEeWlMpF-4bareg"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_pqNbdDCHEeWlMpF-4bareg" name="" memberEnd="_pqNbdTCHEeWlMpF-4bareg _ppd0kzCHEeWlMpF-4bareg">
          <ownedEnd xmi:id="_pqNbdTCHEeWlMpF-4bareg" name="" type="_pjaP4DCHEeWlMpF-4bareg" association="_pqNbdDCHEeWlMpF-4bareg"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_pqNbdzCHEeWlMpF-4bareg" name="" memberEnd="_pqNbeDCHEeWlMpF-4bareg _ppd0lTCHEeWlMpF-4bareg">
          <ownedEnd xmi:id="_pqNbeDCHEeWlMpF-4bareg" name="" type="_pjaP4DCHEeWlMpF-4bareg" association="_pqNbdzCHEeWlMpF-4bareg"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_2QzZcDCQEeWKod2uCAN30Q" name="" memberEnd="_2QzZcTCQEeWKod2uCAN30Q _2Q0AgjCQEeWKod2uCAN30Q">
          <ownedEnd xmi:id="_2QzZcTCQEeWKod2uCAN30Q" name="product" type="_pjaP4DCHEeWlMpF-4bareg" association="_2QzZcDCQEeWKod2uCAN30Q">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2Q0AgDCQEeWKod2uCAN30Q" value="1"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2Q0AgTCQEeWKod2uCAN30Q" value="1"/>
          </ownedEnd>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_T0WW4DCREeWKod2uCAN30Q" name="" memberEnd="_T0WW4TCREeWKod2uCAN30Q _T0WW5DCREeWKod2uCAN30Q">
          <ownedEnd xmi:id="_T0WW4TCREeWKod2uCAN30Q" name="simDataFactory" type="_pjiywDCHEeWlMpF-4bareg" association="_T0WW4DCREeWKod2uCAN30Q">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_T0WW4jCREeWKod2uCAN30Q"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_T0WW4zCREeWKod2uCAN30Q" value="*"/>
          </ownedEnd>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_U-o_wDCREeWKod2uCAN30Q" name="" memberEnd="_U-o_wTCREeWKod2uCAN30Q _U-pm0jCREeWKod2uCAN30Q">
          <ownedEnd xmi:id="_U-o_wTCREeWKod2uCAN30Q" name="simDataFactory" type="_pjiywDCHEeWlMpF-4bareg" association="_U-o_wDCREeWKod2uCAN30Q">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_U-pm0DCREeWKod2uCAN30Q"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_U-pm0TCREeWKod2uCAN30Q" value="*"/>
          </ownedEnd>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_Wy8O8DCREeWKod2uCAN30Q" name="" memberEnd="_Wy82ADCREeWKod2uCAN30Q _Wy82AzCREeWKod2uCAN30Q">
          <ownedEnd xmi:id="_Wy82ADCREeWKod2uCAN30Q" name="simDataFactory" type="_pjiywDCHEeWlMpF-4bareg" association="_Wy8O8DCREeWKod2uCAN30Q">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Wy82ATCREeWKod2uCAN30Q"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Wy82AjCREeWKod2uCAN30Q" value="*"/>
          </ownedEnd>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_phSI8TCHEeWlMpF-4bareg" name="util"/>
      <packagedElement xmi:type="uml:Package" xmi:id="_phWaYDCHEeWlMpF-4bareg" name="db">
        <packagedElement xmi:type="uml:Class" xmi:id="_pi4rcDCHEeWlMpF-4bareg" name="DB">
          <ownedComment xmi:id="_pqAAEDCHEeWlMpF-4bareg">
            <body>Used for database connection. Singleton.&#xD;
@author Matthias&#xD;
 *</body>
          </ownedComment>
          <ownedAttribute xmi:id="_ppXt8TCHEeWlMpF-4bareg" name="conn" visibility="private" type="_poJl8TCHEeWlMpF-4bareg" association="_pqLmQTCHEeWlMpF-4bareg"/>
          <ownedAttribute xmi:id="_ppXt8zCHEeWlMpF-4bareg" name="DB_PATH" visibility="private" isLeaf="true" type="_poI-4DCHEeWlMpF-4bareg" isReadOnly="true" association="_pqMNUTCHEeWlMpF-4bareg">
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppXt9DCHEeWlMpF-4bareg" value="Paths.get(&quot;data/historical.db&quot;)"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppXt9jCHEeWlMpF-4bareg" name="TABLE_PRODUCT" isLeaf="true" isStatic="true" isReadOnly="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppXt9zCHEeWlMpF-4bareg" value="&quot;Product&quot;"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppYVADCHEeWlMpF-4bareg" name="TABLE_MEASURE" isLeaf="true" isStatic="true" isReadOnly="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppYVATCHEeWlMpF-4bareg" value="&quot;Measure&quot;"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppYVAjCHEeWlMpF-4bareg" name="COL_PRODUCT_ID" isLeaf="true" isStatic="true" isReadOnly="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppYVAzCHEeWlMpF-4bareg" value="&quot;ID&quot;"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppYVBDCHEeWlMpF-4bareg" name="COL_ORDER_NO" isLeaf="true" isStatic="true" isReadOnly="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppYVBTCHEeWlMpF-4bareg" value="&quot;OrderNo&quot;"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppYVBjCHEeWlMpF-4bareg" name="COL_CUSTOMER_NO" isLeaf="true" isStatic="true" isReadOnly="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppY8EDCHEeWlMpF-4bareg" value="&quot;CustomerNo&quot;"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppY8ETCHEeWlMpF-4bareg" name="COL_MATERIAL_NO" isLeaf="true" isStatic="true" isReadOnly="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppY8EjCHEeWlMpF-4bareg" value="&quot;MaterialNo&quot;"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppY8EzCHEeWlMpF-4bareg" name="COL_PRODUCTION_START" isLeaf="true" isStatic="true" isReadOnly="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppY8FDCHEeWlMpF-4bareg" value="&quot;ProductionStart&quot;"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppY8FTCHEeWlMpF-4bareg" name="COL_PRODUCTION_END" isLeaf="true" isStatic="true" isReadOnly="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppY8FjCHEeWlMpF-4bareg" value="&quot;ProductionEnd&quot;"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppY8FzCHEeWlMpF-4bareg" name="COL_ANALYSIS_RESULT" isLeaf="true" isStatic="true" isReadOnly="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppY8GDCHEeWlMpF-4bareg" value="&quot;AnalysisResult&quot;"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppZjIDCHEeWlMpF-4bareg" name="COL_MEASURE_ID" isLeaf="true" isStatic="true" isReadOnly="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppZjITCHEeWlMpF-4bareg" value="&quot;MeasureID&quot;"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppZjIjCHEeWlMpF-4bareg" name="COL_MEASURE" isLeaf="true" isStatic="true" isReadOnly="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppZjIzCHEeWlMpF-4bareg" value="&quot;Measure&quot;"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppZjJDCHEeWlMpF-4bareg" name="COL_STATION" isLeaf="true" isStatic="true" isReadOnly="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppZjJTCHEeWlMpF-4bareg" value="&quot;Station&quot;"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppZjJjCHEeWlMpF-4bareg" name="COL_VALUE" isLeaf="true" isStatic="true" isReadOnly="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppZjJzCHEeWlMpF-4bareg" value="&quot;Value&quot;"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppaKMDCHEeWlMpF-4bareg" name="COL_TIMESTAMP" isLeaf="true" isStatic="true" isReadOnly="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppaKMTCHEeWlMpF-4bareg" value="&quot;Timestamp&quot;"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppaKMjCHEeWlMpF-4bareg" name="COL_ANALYSIS_TIME" isLeaf="true" isStatic="true" isReadOnly="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppaKMzCHEeWlMpF-4bareg" value="&quot;AnalysisTime&quot;"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppaKNDCHEeWlMpF-4bareg" name="stations" isLeaf="true" isStatic="true" isReadOnly="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ppaKNTCHEeWlMpF-4bareg" value="*"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppaKNzCHEeWlMpF-4bareg" value="{&#xD;&#xA;&#x9;&#x9;&#x9;&quot;Milling Station&quot;,&#x9;// light barrier of milling station&#xD;&#xA;&#x9;&#x9;&#x9;&quot;Milling Speed&quot;,&#xD;&#xA;&#x9;&#x9;&#x9;&quot;Milling Heat&quot;,&#xD;&#xA;&#x9;&#x9;&#x9;&quot;Drilling Station&quot;,&#x9;// light barrier of drilling station&#xD;&#xA;&#x9;&#x9;&#x9;&quot;Drilling Speed&quot;,&#xD;&#xA;&#x9;&#x9;&#x9;&quot;Drilling Heat&quot;&#xD;&#xA;&#x9;&#x9;&#x9;}"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppaKODCHEeWlMpF-4bareg" name="MILLING_STATION" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppaKOTCHEeWlMpF-4bareg" value="stations[0]"/>
          </ownedAttribute>
          <ownedAttribute xmi:id="_ppaxQDCHEeWlMpF-4bareg" name="DRILLING_STATION" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <defaultValue xmi:type="uml:LiteralString" xmi:id="_ppaxQTCHEeWlMpF-4bareg" value="stations[3]"/>
          </ownedAttribute>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pptsMzCHEeWlMpF-4bareg" name="DB" specification="_pi6goDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pptsNDCHEeWlMpF-4bareg" type="_pi4rcDCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>try {&#xD;
			Log.info(&quot;DB: Loading JDBC drivers for sqlite...&quot;);&#xD;
		    Class.forName(&quot;org.sqlite.JDBC&quot;);&#xD;
		    Log.info(&quot;DB: JDBC drivers loaded successfully.&quot;);&#xD;
		    &#xD;
		    Log.info(&quot;DB: Connecting to sqlite database...&quot;);&#xD;
		    conn = DriverManager.getConnection(&quot;jdbc:sqlite:&quot; + DB_PATH);&#xD;
		    createTables();&#xD;
		    createViews();&#xD;
		    Log.info(&quot;DB: Connection established.&quot;);&#xD;
		} catch (Exception e) {&#xD;
			conn = null;&#xD;
			Log.error(&quot;DB: &quot; + e.getMessage());&#xD;
		}&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pptsNTCHEeWlMpF-4bareg" name="createViews" specification="_pi7HsDCHEeWlMpF-4bareg">
            <language>java</language>
            <body>Log.info(&quot;DB: Creating views on database...&quot;);&#xD;
		&#xD;
		// Create aggregated product&#xD;
		createView(&quot;ProdMinMaxAvgMeasures.sql&quot;);&#xD;
		&#xD;
		// Create Group by analysisresult&#xD;
		createView(&quot;AnalysisResultMinMaxAvgMeasures.sql&quot;);&#xD;
		&#xD;
		// create Group by MatNo views&#xD;
		createView(&quot;MatNoOkPercentage.sql&quot;);&#xD;
		createView(&quot;MatNoMinMaxAvgMeasures.sql&quot;);&#xD;
		&#xD;
		// Create Group by MatGrp views&#xD;
		createView(&quot;ProdGroups.sql&quot;);&#xD;
		createView(&quot;ProdGroupOkPercentage.sql&quot;);&#xD;
		&#xD;
		Log.info(&quot;DB: Views created successfully.&quot;);&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppuTQDCHEeWlMpF-4bareg" name="createView" specification="_pi7HsTCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppuTQTCHEeWlMpF-4bareg" name="sqlFile">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <language>java</language>
            <body>try {&#xD;
			Statement stmt = conn.createStatement();&#xD;
			String sql = getSqlFromFile(sqlFile);&#xD;
			stmt.executeUpdate(sql);&#xD;
			stmt.close();&#xD;
		}&#xD;
		catch (SQLException e) {&#xD;
			Log.error(&quot;DB: Error creating view from &quot; + sqlFile + &quot;: &quot; + e.getMessage());&#xD;
		}&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppuTQjCHEeWlMpF-4bareg" name="getDB" specification="_pi7HszCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppuTQzCHEeWlMpF-4bareg" type="_pi4rcDCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>if(instance == null){&#xD;
			instance = new DB();&#xD;
		}&#xD;
		return instance;&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppuTRDCHEeWlMpF-4bareg" name="createTables" specification="_pi7uwDCHEeWlMpF-4bareg">
            <language>java</language>
            <body>try {&#xD;
			Log.info(&quot;DB: Creating tables on database...&quot;);&#xD;
			Statement stmt = conn.createStatement();&#xD;
		    // create product table&#xD;
			String sql = &quot;CREATE TABLE IF NOT EXISTS &quot; + TABLE_PRODUCT + &quot; (&quot;&#xD;
					+ COL_PRODUCT_ID + &quot; INTEGER PRIMARY KEY, &quot;	// No auto_increment needed as we don't delete / modify any data&#xD;
					+ COL_ORDER_NO + &quot; TEXT NOT NULL, &quot;&#xD;
					+ COL_CUSTOMER_NO + &quot; INTEGER NOT NULL, &quot;&#xD;
					+ COL_MATERIAL_NO + &quot; INTEGER NOT NULL, &quot;&#xD;
					+ COL_PRODUCTION_START + &quot; INTEGER NOT NULL, &quot; 	// timestamp&#xD;
					+ COL_PRODUCTION_END + &quot; INTEGER NOT NULL, &quot;	// timestamp&#xD;
					+ COL_ANALYSIS_RESULT + &quot; TEXT NOT NULL, &quot;&#xD;
					+ COL_ANALYSIS_TIME + &quot; INTEGER NOT NULL&quot;&#xD;
					+ &quot;)&quot;;&#xD;
		    stmt.executeUpdate(sql);&#xD;
		    // create measurements table&#xD;
		    sql = &quot;CREATE TABLE IF NOT EXISTS &quot; + TABLE_MEASURE + &quot; (&quot;&#xD;
		    		+ COL_MEASURE_ID + &quot; INTEGER PRIMARY KEY, &quot;&#xD;
		    		+ COL_PRODUCT_ID + &quot; INTEGER REFERENCES &quot; + TABLE_PRODUCT + &quot;(&quot; + COL_PRODUCT_ID + &quot;), &quot;&#xD;
		    		+ COL_STATION + &quot; TEXT NOT NULL, &quot;&#xD;
		    		+ COL_TIMESTAMP + &quot; INTEGER NOT NULL, &quot;&#xD;
		    		+ COL_VALUE + &quot; NUMERIC NOT NULL&quot;&#xD;
		    		+ &quot;)&quot;;&#xD;
		    stmt.executeUpdate(sql);&#xD;
		    stmt.close();&#xD;
		    Log.info(&quot;DB: All tables created if they didn't exist.&quot;);&#xD;
		} catch (SQLException e) {&#xD;
			Log.error(&quot;DB: Table creation failed: &quot; + e.getMessage());&#xD;
			throw e;&#xD;
		}&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppuTRTCHEeWlMpF-4bareg" name="deleteDatabase" specification="_pi7uwTCHEeWlMpF-4bareg">
            <language>java</language>
            <body>Log.info(&quot;DB: Deleting database \&quot;&quot; + DB_PATH + &quot;\&quot;...&quot;);&#xD;
		try {&#xD;
			conn.close();&#xD;
		} catch (SQLException e) {&#xD;
			Log.error(&quot;DB: The database connection couldn't be closed: &quot; + e.getMessage());&#xD;
		}&#xD;
		try {&#xD;
		    Files.delete(DB_PATH);&#xD;
		    conn = DriverManager.getConnection(&quot;jdbc:sqlite:&quot; + DB_PATH);&#xD;
		} catch (NoSuchFileException e) {&#xD;
			// if the database didn't exist anyway --> don't throw an error&#xD;
		    Log.warn(&quot;DB: The database to be deleted on path \&quot;&quot; + DB_PATH.toString() + &quot;\&quot; doesn't exist!&quot;);&#xD;
		} catch (IOException e) {&#xD;
		    // problems occurring with file permissions (like write lock etc.)&#xD;
		    Log.error(&quot;DB: The database couldn't be deleted! &quot; + e.getMessage());&#xD;
		    throw e;&#xD;
		}&#xD;
		Log.info(&quot;DB: Database deleted.&quot;);&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppuTRjCHEeWlMpF-4bareg" name="insertIntoDB" specification="_poOecDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppuTRzCHEeWlMpF-4bareg" name="product" type="_pjaP4DCHEeWlMpF-4bareg"/>
            <language>java</language>
            <body>try {&#xD;
			// insert into product table&#xD;
			PreparedStatement stmt = conn.prepareStatement(&#xD;
					&quot;INSERT INTO &quot; + TABLE_PRODUCT + &quot; (&quot; + &#xD;
							COL_ORDER_NO + &quot;, &quot; + &#xD;
							COL_CUSTOMER_NO + &quot;, &quot; + &#xD;
							COL_MATERIAL_NO + &quot;, &quot; + &#xD;
							COL_PRODUCTION_START + &quot;, &quot; + &#xD;
							COL_PRODUCTION_END + &quot;, &quot; + &#xD;
							COL_ANALYSIS_RESULT + &quot;, &quot; + &#xD;
							COL_ANALYSIS_TIME + &quot;) VALUES (?, ?, ?, ?, ?, ?, ?)&quot;);&#xD;
			ERPData erp = product.getErpData();&#xD;
			stmt.setString(1, erp.getOrderNumber());&#xD;
			stmt.setInt(2, erp.getCustomerNumber());&#xD;
			stmt.setInt(3, erp.getMaterialNumber());&#xD;
			stmt.setLong(4, erp.getTimeStamp().getTime());&#xD;
			stmt.setLong(5, product.getSAData().getTs_stop());&#xD;
			stmt.setString(6, product.getSAData().getOverallStatus());&#xD;
			stmt.setLong(7, product.getSAData().getTs_stop() - product.getSAData().getTs_start());&#xD;
			int no_rows = stmt.executeUpdate();&#xD;
			int prodId = -1;&#xD;
			if(no_rows == 1){&#xD;
				ResultSet generatedKeys = stmt.getGeneratedKeys();&#xD;
				if(generatedKeys.next()){&#xD;
					prodId = generatedKeys.getInt(1);&#xD;
				}&#xD;
			}&#xD;
			stmt.close();&#xD;
			// insert into measures table&#xD;
			stmt= conn.prepareStatement(&#xD;
					&quot;INSERT INTO &quot; + TABLE_MEASURE + &quot; (&quot; + &#xD;
							COL_PRODUCT_ID + &quot;, &quot; + &#xD;
							COL_STATION + &quot;, &quot; + &#xD;
							COL_TIMESTAMP + &quot;, &quot; + &#xD;
							COL_VALUE + &quot;) VALUES (?, ?, ?, ?)&quot;);&#xD;
			ArrayList&lt;OPCDataItem> opcs = product.getOPCDataItems();&#xD;
			for(int i = 0; i &lt; opcs.size(); i++){&#xD;
				OPCDataItem opc = opcs.get(i);&#xD;
				if(Arrays.asList(stations).contains(opc.getItemName())){&#xD;
					if((opc.getItemName().equals(MILLING_STATION) || opc.getItemName().equals(DRILLING_STATION))){ // it is a light barrier&#xD;
						if((Boolean) opc.getValue()){ // it is an interrupting light barrier&#xD;
							// get closing light barrier to calculate time&#xD;
							long time = -1;&#xD;
							for(int j = i+1; j &lt; opcs.size(); j++){&#xD;
								OPCDataItem opc1 = opcs.get(j);&#xD;
								if(opc.getItemName().equals(opc1.getItemName())){ // it is the same light barrier&#xD;
									if(!(Boolean)opc1.getValue()){ // it is a closing light barrier&#xD;
										time = opc1.getTimestamp() - opc.getTimestamp();&#xD;
									}&#xD;
								}&#xD;
							}&#xD;
							// catch if no data was found&#xD;
							if(time == -1){&#xD;
								throw new Exception(&quot;The data is corrupt! Light barrier &quot; + opc.getItemName() + &quot; has no reconnecting event!&quot;);&#xD;
							}&#xD;
							// insert data on database&#xD;
							stmt.setInt(1, prodId);&#xD;
							stmt.setString(2, opc.getItemName());&#xD;
							stmt.setLong(3, opc.getTimestamp());&#xD;
							stmt.setLong(4, time);&#xD;
							stmt.executeUpdate();&#xD;
						}&#xD;
					} else { // it isn't a light barrier&#xD;
						stmt.setInt(1, prodId);&#xD;
						stmt.setString(2, opc.getItemName());&#xD;
						stmt.setLong(3, opc.getTimestamp());&#xD;
						// get the proper data type&#xD;
						if(opc.getValue() instanceof Integer){&#xD;
							stmt.setInt(4, (Integer) opc.getValue());&#xD;
						} else if(opc.getValue() instanceof Double){&#xD;
							stmt.setDouble(4, (Double) opc.getValue());&#xD;
						} else if(opc.getValue() instanceof Long){&#xD;
							stmt.setLong(4, (Long) opc.getValue());&#xD;
						} else {&#xD;
							throw new Exception(&quot;Couldn't insert value into database: Data type &quot; + opc.getValue().getClass() + &quot; not supported yet!&quot;);&#xD;
						}&#xD;
						stmt.executeUpdate();&#xD;
					}&#xD;
				}&#xD;
			}&#xD;
			&#xD;
			&#xD;
		} catch (SQLException e) {&#xD;
			Log.error(&quot;DB: Error on inserting a product into the database: &quot; + e.getMessage());&#xD;
			throw e;&#xD;
		}&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppuTSDCHEeWlMpF-4bareg" name="logDB" specification="_pi8V0DCHEeWlMpF-4bareg">
            <language>java</language>
            <body>Statement stmt;&#xD;
		try {&#xD;
			stmt = conn.createStatement();&#xD;
			ResultSet rs = stmt.executeQuery(&quot;SELECT name FROM sqlite_master WHERE type='table' ORDER BY name&quot;);&#xD;
			while(rs.next()){&#xD;
				logTable(rs.getString(1));&#xD;
			}&#xD;
		} catch (Exception e) {&#xD;
			Log.error(&quot;DB: Database couldn't be logged!&quot;);&#xD;
		}&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppuTSTCHEeWlMpF-4bareg" name="logTableContent" specification="_ppBIoDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppuTSjCHEeWlMpF-4bareg" name="tableName">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_ppuTSzCHEeWlMpF-4bareg" name="types" type="_poMCMDCHEeWlMpF-4bareg"/>
            <language>java</language>
            <body>String log = &quot;&quot;;&#xD;
		Statement stmt = conn.createStatement();&#xD;
		String sql = &quot;SELECT * FROM &quot; + tableName;&#xD;
		ResultSet rs = stmt.executeQuery(sql);&#xD;
		while(rs.next()){&#xD;
			for (int i = 1; i &lt;= types.size(); i++) {&#xD;
				String type = types.get(i-1);&#xD;
				if (type.equals(&quot;INTEGER&quot;)) {&#xD;
					log += rs.getLong(i);&#xD;
				}&#xD;
				else if (type.equals(&quot;NUMERIC&quot;)) {&#xD;
					log += rs.getDouble(i);&#xD;
				}&#xD;
				else if (type.equals(&quot;TEXT&quot;)) {&#xD;
					log += rs.getString(i);&#xD;
				}&#xD;
				else {&#xD;
					throw new Exception(&quot;DB: Data type \&quot;&quot; + types.get(i) + &quot;\&quot; is not supported for logging yet!&quot;);&#xD;
				}&#xD;
				log += &quot; &quot;;&#xD;
			}&#xD;
			log += &quot;\n&quot;;&#xD;
		}&#xD;
		Log.info(&quot;DB: &quot; + log);&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppu6UDCHEeWlMpF-4bareg" name="logTable" specification="_pi884DCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppu6UTCHEeWlMpF-4bareg" name="tableName">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <language>java</language>
            <body>try {&#xD;
			ArrayList&lt;String> types = new ArrayList&lt;String>();&#xD;
			String columns = &quot;&quot;;&#xD;
			String sql = &quot;PRAGMA table_info(&quot; + tableName + &quot;);&quot;;&#xD;
			Statement stmt = conn.createStatement();&#xD;
			ResultSet rs = stmt.executeQuery(sql);&#xD;
			while(rs.next()){&#xD;
				columns += rs.getString(2) + &quot; &quot;;&#xD;
				types.add(rs.getString(3));&#xD;
			}&#xD;
			Log.info(&quot;DB: Table \&quot;&quot; + tableName + &quot;\&quot;: &quot; + columns);&#xD;
			logTableContent(tableName, types);&#xD;
		} catch (Exception e) {&#xD;
			Log.error(&quot;DB: Table \&quot;&quot; + tableName + &quot;\&quot; couldn't be logged!&quot;);&#xD;
		}&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppu6UjCHEeWlMpF-4bareg" name="getSqlFromFile" specification="_pi9j8DCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppu6UzCHEeWlMpF-4bareg" name="fileName">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_ppu6VDCHEeWlMpF-4bareg" direction="return">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <language>java</language>
            <body>String result = null;&#xD;
		try {&#xD;
			File file = new File(&quot;doc/&quot; + fileName);&#xD;
			FileInputStream fis = new FileInputStream(file);&#xD;
			byte[] data = new byte[(int) file.length()];&#xD;
			fis.read(data);&#xD;
			fis.close();&#xD;
&#xD;
			result = new String(data, &quot;UTF-8&quot;);&#xD;
		}&#xD;
		catch (Exception e) {&#xD;
			Log.error(&quot;DB: Error getting file: &quot; + e.getMessage());&#xD;
		}&#xD;
		return result;&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppu6VTCHEeWlMpF-4bareg" name="getLastProducts" specification="_pi9j8zCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppu6VjCHEeWlMpF-4bareg" direction="return">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <language>java</language>
            <body>String result = null;&#xD;
		try {&#xD;
			String sql = &quot;SELECT * FROM ProdMinMaxAvgMeasures ORDER BY ProductionStart DESC LIMIT 25&quot;;&#xD;
			result = getJsonData(sql);&#xD;
		}&#xD;
		catch (Exception e) {&#xD;
			Log.error(&quot;DB: Error getting getLastProducts: &quot; + e.getMessage());&#xD;
		}&#xD;
		return result;&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppu6VzCHEeWlMpF-4bareg" name="getDataByAnalysisResult" specification="_pi-LATCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppu6WDCHEeWlMpF-4bareg" direction="return">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <language>java</language>
            <body>String result = null;&#xD;
		try {&#xD;
			String sql = &quot;SELECT * FROM AnalysisResultMinMaxAvgMeasures&quot;;&#xD;
			result = getJsonData(sql);&#xD;
		}&#xD;
		catch (Exception e) {&#xD;
			Log.error(&quot;DB: Error getting getDataByAnalysisResult: &quot; + e.getMessage());&#xD;
		}	&#xD;
		return result;&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppu6WTCHEeWlMpF-4bareg" name="getDataByMat" specification="_pi-yEDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppu6WjCHEeWlMpF-4bareg" direction="return">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <language>java</language>
            <body>String result = null;&#xD;
		try {&#xD;
			String sql = &quot;SELECT * FROM AnalysisResultByMat NATURAL JOIN MatNoMinMaxAvgMeasures&quot;;&#xD;
			result = getJsonData(sql);&#xD;
		}&#xD;
		catch (Exception e) {&#xD;
			Log.error(&quot;DB: Error getting getDataByMat: &quot; + e.getMessage());&#xD;
		}	&#xD;
		return result;&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppu6WzCHEeWlMpF-4bareg" name="getDataByMatGrp" specification="_pi_ZIDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppu6XDCHEeWlMpF-4bareg" direction="return">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <language>java</language>
            <body>String result = null;&#xD;
		try {&#xD;
			String sql = &quot;SELECT * FROM ProdGroupOKPercentage&quot;;&#xD;
			result = getJsonData(sql);&#xD;
		}&#xD;
		catch (Exception e) {&#xD;
			Log.error(&quot;DB: Error getting getDataByMatGrp: &quot; + e.getMessage());&#xD;
		}&#xD;
		return result;&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppvhYDCHEeWlMpF-4bareg" name="getJsonData" specification="_pi_ZIjCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppvhYTCHEeWlMpF-4bareg" name="sql">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_ppvhYjCHEeWlMpF-4bareg" direction="return">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <language>java</language>
            <body>JsonObject result = new JsonObject();&#xD;
		JsonArray resultArray = new JsonArray();&#xD;
		&#xD;
		Statement stmt = conn.createStatement();&#xD;
		ResultSet rs = stmt.executeQuery(sql);&#xD;
		ResultSetMetaData metaData = rs.getMetaData();&#xD;
		while(rs.next()) {&#xD;
			JsonObject row = buildRow(rs, metaData);&#xD;
			resultArray.add(row);&#xD;
		}&#xD;
		result.add(&quot;data&quot;, resultArray);&#xD;
		return result.toString();&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppvhYzCHEeWlMpF-4bareg" name="buildRow" specification="_ppBvsTCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppvhZDCHEeWlMpF-4bareg" name="rs" type="_poKNAzCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_ppvhZTCHEeWlMpF-4bareg" name="metaData" type="_poK0ETCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_ppvhZjCHEeWlMpF-4bareg" type="_poNQUDCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>//Add columns to json row&#xD;
		JsonObject row = new JsonObject();&#xD;
		for (int i = 1; i &lt; metaData.getColumnCount()+1; i++) {&#xD;
			String columnLabel = metaData.getColumnName(i);&#xD;
			Object value = rs.getObject(i);&#xD;
			if (value instanceof Integer) {&#xD;
				row.addProperty(columnLabel, (Integer) value);&#xD;
			}&#xD;
			else if (value instanceof Double) {&#xD;
				row.addProperty(columnLabel, (Double) value);&#xD;
			}&#xD;
			else if (value instanceof String) {&#xD;
				row.addProperty(columnLabel, (String) value);&#xD;
			}&#xD;
			else if (value instanceof Long) {&#xD;
				row.addProperty(columnLabel, (Long) value);&#xD;
			}&#xD;
		}&#xD;
		return row;&#xD;
	</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_pi6goDCHEeWlMpF-4bareg" name="DB" visibility="private" method="_pptsMzCHEeWlMpF-4bareg">
            <eAnnotations xmi:id="_pi6goTCHEeWlMpF-4bareg" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_pi6gojCHEeWlMpF-4bareg" key="create"/>
            </eAnnotations>
            <ownedParameter xmi:id="_pi6gozCHEeWlMpF-4bareg" type="_pi4rcDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_pi7HsDCHEeWlMpF-4bareg" name="createViews" method="_pptsNTCHEeWlMpF-4bareg"/>
          <ownedOperation xmi:id="_pi7HsTCHEeWlMpF-4bareg" name="createView" visibility="private" method="_ppuTQDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pi7HsjCHEeWlMpF-4bareg" name="sqlFile">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_pi7HszCHEeWlMpF-4bareg" name="getDB" isStatic="true" method="_ppuTQjCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_poN3YDCHEeWlMpF-4bareg" type="_pi4rcDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_pi7uwDCHEeWlMpF-4bareg" name="createTables" method="_ppuTRDCHEeWlMpF-4bareg"/>
          <ownedOperation xmi:id="_pi7uwTCHEeWlMpF-4bareg" name="deleteDatabase" method="_ppuTRTCHEeWlMpF-4bareg"/>
          <ownedOperation xmi:id="_pi8V0DCHEeWlMpF-4bareg" name="logDB" method="_ppuTSDCHEeWlMpF-4bareg"/>
          <ownedOperation xmi:id="_pi884DCHEeWlMpF-4bareg" name="logTable" method="_ppu6UDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pi884TCHEeWlMpF-4bareg" name="tableName">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_pi9j8DCHEeWlMpF-4bareg" name="getSqlFromFile" method="_ppu6UjCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pi9j8TCHEeWlMpF-4bareg" name="fileName">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_pi9j8jCHEeWlMpF-4bareg" direction="return">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_pi9j8zCHEeWlMpF-4bareg" name="getLastProducts" method="_ppu6VTCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pi-LADCHEeWlMpF-4bareg" direction="return">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_pi-LATCHEeWlMpF-4bareg" name="getDataByAnalysisResult" method="_ppu6VzCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pi-LAjCHEeWlMpF-4bareg" direction="return">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_pi-yEDCHEeWlMpF-4bareg" name="getDataByMat" method="_ppu6WTCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pi-yETCHEeWlMpF-4bareg" direction="return">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_pi_ZIDCHEeWlMpF-4bareg" name="getDataByMatGrp" method="_ppu6WzCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pi_ZITCHEeWlMpF-4bareg" direction="return">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_pi_ZIjCHEeWlMpF-4bareg" name="getJsonData" visibility="private" method="_ppvhYDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_pi_ZIzCHEeWlMpF-4bareg" name="sql">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_pi_ZJDCHEeWlMpF-4bareg" direction="return">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
          </ownedOperation>
          <ownedOperation xmi:id="_poOecDCHEeWlMpF-4bareg" name="insertIntoDB" method="_ppuTRjCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_poOecTCHEeWlMpF-4bareg" name="product" type="_pjaP4DCHEeWlMpF-4bareg"/>
          </ownedOperation>
          <ownedOperation xmi:id="_ppBIoDCHEeWlMpF-4bareg" name="logTableContent" visibility="private" method="_ppuTSTCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppBIoTCHEeWlMpF-4bareg" name="tableName">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_ppBIojCHEeWlMpF-4bareg" name="types" type="_poMCMDCHEeWlMpF-4bareg"/>
          </ownedOperation>
          <ownedOperation xmi:id="_ppBvsTCHEeWlMpF-4bareg" name="buildRow" visibility="private" method="_ppvhYzCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppBvsjCHEeWlMpF-4bareg" name="rs" type="_poKNAzCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_ppBvszCHEeWlMpF-4bareg" name="metaData" type="_poK0ETCHEeWlMpF-4bareg"/>
            <ownedParameter xmi:id="_ppBvtDCHEeWlMpF-4bareg" type="_poNQUDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_pqLmQTCHEeWlMpF-4bareg" name="" memberEnd="_pqLmQjCHEeWlMpF-4bareg _ppXt8TCHEeWlMpF-4bareg">
          <ownedEnd xmi:id="_pqLmQjCHEeWlMpF-4bareg" name="" type="_pi4rcDCHEeWlMpF-4bareg" association="_pqLmQTCHEeWlMpF-4bareg"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_pqMNUTCHEeWlMpF-4bareg" name="" memberEnd="_pqMNUjCHEeWlMpF-4bareg _ppXt8zCHEeWlMpF-4bareg">
          <ownedEnd xmi:id="_pqMNUjCHEeWlMpF-4bareg" name="" type="_pi4rcDCHEeWlMpF-4bareg" association="_pqMNUTCHEeWlMpF-4bareg"/>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_phb58DCHEeWlMpF-4bareg" name="fsm">
        <packagedElement xmi:type="uml:Enumeration" xmi:id="_pjIjETCHEeWlMpF-4bareg" name="PartStates">
          <ownedLiteral xmi:id="_pjJKITCHEeWlMpF-4bareg" name="INIT"/>
          <ownedLiteral xmi:id="_pjJKIjCHEeWlMpF-4bareg" name="LIGHTBARRIER_1"/>
          <ownedLiteral xmi:id="_pjJKIzCHEeWlMpF-4bareg" name="BETWEEN_L1_L2"/>
          <ownedLiteral xmi:id="_pjJKJDCHEeWlMpF-4bareg" name="LIGHTBARRIER_2"/>
          <ownedLiteral xmi:id="_pjJKJTCHEeWlMpF-4bareg" name="BETWEEN_L2_L3"/>
          <ownedLiteral xmi:id="_pjJKJjCHEeWlMpF-4bareg" name="MILLING_STATION"/>
          <ownedLiteral xmi:id="_pjJxMDCHEeWlMpF-4bareg" name="BETWEEN_L3_L4"/>
          <ownedLiteral xmi:id="_pjJxMTCHEeWlMpF-4bareg" name="DRILLING_STATION"/>
          <ownedLiteral xmi:id="_pjJxMjCHEeWlMpF-4bareg" name="BETWEEN_L4_L5"/>
          <ownedLiteral xmi:id="_pjJxMzCHEeWlMpF-4bareg" name="LIGHTBARRIER_5"/>
          <ownedLiteral xmi:id="_pjJxNDCHEeWlMpF-4bareg" name="END_OF_PRODUCTION"/>
          <ownedLiteral xmi:id="_pjJxNTCHEeWlMpF-4bareg" name="SPECTRAL_ANALYSIS"/>
          <ownedLiteral xmi:id="_pjJxNjCHEeWlMpF-4bareg" name="FINISH"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_pjJxNzCHEeWlMpF-4bareg" name="StateMachineHandler">
          <ownedAttribute xmi:id="_ppaxQjCHEeWlMpF-4bareg" name="fsmc" visibility="private" type="_ppC90DCHEeWlMpF-4bareg" association="_pqM0YTCHEeWlMpF-4bareg"/>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppwIcDCHEeWlMpF-4bareg" name="StateMachineHandler" specification="_pjKYQDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppwIcTCHEeWlMpF-4bareg" type="_pjJxNzCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>configure();&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppwIcjCHEeWlMpF-4bareg" name="createStateMachine" specification="_pjKYRDCHEeWlMpF-4bareg">
            <ownedParameter xmi:id="_ppwIczCHEeWlMpF-4bareg" type="_poVzMDCHEeWlMpF-4bareg" direction="return"/>
            <language>java</language>
            <body>StateMachine&lt;PartStates, Triggers> stateMachine = new StateMachine&lt;PartStates, Triggers>(PartStates.INIT, fsmc);&#xD;
		return stateMachine;&#xD;
	</body>
          </ownedBehavior>
          <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ppwIdDCHEeWlMpF-4bareg" name="configure" specification="_pjLmYDCHEeWlMpF-4bareg">
            <language>java</language>
            <body>fsmc = new StateMachineConfig&lt;PartStates, Triggers>(); &#xD;
		&#xD;
		fsmc.configure(PartStates.INIT)&#xD;
		.permit(Triggers.LIGHTBARRIER_1_INTERRUPT, PartStates.LIGHTBARRIER_1); &#xD;
		&#xD;
		fsmc.configure(PartStates.LIGHTBARRIER_1)&#xD;
		.permit(Triggers.LIGHTBARRIER_1_CONNECT, PartStates.BETWEEN_L1_L2);&#xD;
		&#xD;
		fsmc.configure(PartStates.BETWEEN_L1_L2)&#xD;
		.permit(Triggers.LIGHTBARRIER_2_INTERRUPT, PartStates.LIGHTBARRIER_2);&#xD;
		&#xD;
		fsmc.configure(PartStates.LIGHTBARRIER_2)&#xD;
		.permit(Triggers.LIGHTBARRIER_2_CONNECT, PartStates.BETWEEN_L2_L3);&#xD;
		&#xD;
		fsmc.configure(PartStates.BETWEEN_L2_L3)&#xD;
		.permit(Triggers.LIGHTBARRIER_3_INTERRUPT, PartStates.MILLING_STATION);&#xD;
		&#xD;
		fsmc.configure(PartStates.MILLING_STATION)&#xD;
		.permitReentry(Triggers.MILLING_STATION)&#xD;
		.permit(Triggers.LIGHTBARRIER_3_CONNECT, PartStates.BETWEEN_L3_L4);&#xD;
		&#xD;
		fsmc.configure(PartStates.BETWEEN_L3_L4)&#xD;
		.permit(Triggers.LIGHTBARRIER_4_INTERRUPT, PartStates.DRILLING_STATION);&#xD;
		&#xD;
		fsmc.configure(PartStates.DRILLING_STATION)&#xD;
		.permitReentry(Triggers.DRILLING_STATION)&#xD;
		.permit(Triggers.LIGHTBARRIER_4_CONNECT, PartStates.BETWEEN_L4_L5);&#xD;
		&#xD;
		fsmc.configure(PartStates.BETWEEN_L4_L5)&#xD;
		.permit(Triggers.LIGHTBARRIER_5_INTERRUPT, PartStates.LIGHTBARRIER_5);&#xD;
		&#xD;
		fsmc.configure(PartStates.LIGHTBARRIER_5)&#xD;
		.permit(Triggers.LIGHTBARRIER_5_CONNECT, PartStates.END_OF_PRODUCTION);&#xD;
		&#xD;
		fsmc.configure(PartStates.END_OF_PRODUCTION)&#xD;
		.permit(Triggers.SPECTRAL_ANALYSIS, PartStates.FINISH);&#xD;
		&#xD;
		fsmc.configure(PartStates.FINISH);&#xD;
		//.permit(Triggers.SPECTAL_ANALYSIS, PartStates.FINISH);&#xD;
		&#xD;
		&#xD;
	</body>
          </ownedBehavior>
          <ownedOperation xmi:id="_pjKYQDCHEeWlMpF-4bareg" name="StateMachineHandler" method="_ppwIcDCHEeWlMpF-4bareg">
            <eAnnotations xmi:id="_pjKYQTCHEeWlMpF-4bareg" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_pjKYQjCHEeWlMpF-4bareg" key="create"/>
            </eAnnotations>
            <ownedComment xmi:id="_pqAAETCHEeWlMpF-4bareg">
              <body>Is responsible for creating the state machine to be used to&#xD;
	 * save which state a product is in during production.</body>
            </ownedComment>
            <ownedParameter xmi:id="_pjKYQzCHEeWlMpF-4bareg" type="_pjJxNzCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_pjKYRDCHEeWlMpF-4bareg" name="createStateMachine" method="_ppwIcjCHEeWlMpF-4bareg">
            <ownedComment xmi:id="_pqAAEjCHEeWlMpF-4bareg">
              <body>Creates a new state machine.&#xD;
	 * @return A new state machine</body>
            </ownedComment>
            <ownedParameter xmi:id="_ppC90jCHEeWlMpF-4bareg" type="_poVzMDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedOperation xmi:id="_pjLmYDCHEeWlMpF-4bareg" name="configure" visibility="private" method="_ppwIdDCHEeWlMpF-4bareg">
            <ownedComment xmi:id="_pqAAEzCHEeWlMpF-4bareg">
              <body>Configures the StateMachineConfig to be used for state machines. The&#xD;
	 * sequence of states a product can be in is linear.</body>
            </ownedComment>
          </ownedOperation>
        </packagedElement>
        <packagedElement xmi:type="uml:Enumeration" xmi:id="_pjM0gDCHEeWlMpF-4bareg" name="Triggers">
          <ownedComment xmi:id="_pqAAFDCHEeWlMpF-4bareg">
            <body>Collection of triggers that transfers a product to a new state.&#xD;
@author D059373&#xD;
 *</body>
          </ownedComment>
          <ownedAttribute xmi:id="_ppbYUjCHEeWlMpF-4bareg" name="eventName">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedAttribute>
          <ownedOperation xmi:id="_pjPQwDCHEeWlMpF-4bareg" name="Triggers" visibility="package" method="_ppwIdTCHEeWlMpF-4bareg">
            <eAnnotations xmi:id="_pjP30DCHEeWlMpF-4bareg" source="http://www.eclipse.org/uml2/2.0.0/UML">
              <details xmi:id="_pjP30TCHEeWlMpF-4bareg" key="create"/>
            </eAnnotations>
            <ownedParameter xmi:id="_pjPQwTCHEeWlMpF-4bareg" name="eventName">
              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            </ownedParameter>
            <ownedParameter xmi:id="_pjP30jCHEeWlMpF-4bareg" type="_pjM0gDCHEeWlMpF-4bareg" direction="return"/>
          </ownedOperation>
          <ownedLiteral xmi:id="_pjNbkDCHEeWlMpF-4bareg" name="LIGHTBARRIER_1_INTERRUPT">
            <specification xmi:type="uml:Expression" xmi:id="_pjNbkTCHEeWlMpF-4bareg">
              <operand xmi:type="uml:LiteralString" xmi:id="_pqAAFTCHEeWlMpF-4bareg" value="&quot;Lichtschranke 1 false&quot;"/>
            </specification>
          </ownedLiteral>
          <ownedLiteral xmi:id="_pjNbkjCHEeWlMpF-4bareg" name="LIGHTBARRIER_1_CONNECT">
            <specification xmi:type="uml:Expression" xmi:id="_pjNbkzCHEeWlMpF-4bareg">
              <operand xmi:type="uml:LiteralString" xmi:id="_pqAAFjCHEeWlMpF-4bareg" value="&quot;Lichtschranke 1 true&quot;"/>
            </specification>
          </ownedLiteral>
          <ownedLiteral xmi:id="_pjNblDCHEeWlMpF-4bareg" name="LIGHTBARRIER_2_INTERRUPT">
            <specification xmi:type="uml:Expression" xmi:id="_pjNblTCHEeWlMpF-4bareg">
              <operand xmi:type="uml:LiteralString" xmi:id="_pqAAFzCHEeWlMpF-4bareg" value="&quot;Lichtschranke 2 false&quot;"/>
            </specification>
          </ownedLiteral>
          <ownedLiteral xmi:id="_pjNbljCHEeWlMpF-4bareg" name="LIGHTBARRIER_2_CONNECT">
            <specification xmi:type="uml:Expression" xmi:id="_pjNblzCHEeWlMpF-4bareg">
              <operand xmi:type="uml:LiteralString" xmi:id="_pqAAGDCHEeWlMpF-4bareg" value="&quot;Lichtschranke 2 true&quot;"/>
            </specification>
          </ownedLiteral>
          <ownedLiteral xmi:id="_pjOCoDCHEeWlMpF-4bareg" name="LIGHTBARRIER_3_INTERRUPT">
            <specification xmi:type="uml:Expression" xmi:id="_pjOCoTCHEeWlMpF-4bareg">
              <operand xmi:type="uml:LiteralString" xmi:id="_pqAAGTCHEeWlMpF-4bareg" value="&quot;Lichtschranke 3 false&quot;"/>
            </specification>
          </ownedLiteral>
          <ownedLiteral xmi:id="_pjOCojCHEeWlMpF-4bareg" name="MILLING_STATION">
            <specification xmi:type="uml:Expression" xmi:id="_pjOCozCHEeWlMpF-4bareg">
              <operand xmi:type="uml:LiteralString" xmi:id="_pqAAGjCHEeWlMpF-4bareg" value="&quot;Milling&quot;"/>
            </specification>
          </ownedLiteral>
          <ownedLiteral xmi:id="_pjOCpDCHEeWlMpF-4bareg" name="LIGHTBARRIER_3_CONNECT">
            <specification xmi:type="uml:Expression" xmi:id="_pjOCpTCHEeWlMpF-4bareg">
              <operand xmi:type="uml:LiteralString" xmi:id="_pqAAGzCHEeWlMpF-4bareg" value="&quot;Lichtschranke 3 true&quot;"/>
            </specification>
          </ownedLiteral>
          <ownedLiteral xmi:id="_pjOCpjCHEeWlMpF-4bareg" name="LIGHTBARRIER_4_INTERRUPT">
            <specification xmi:type="uml:Expression" xmi:id="_pjOCpzCHEeWlMpF-4bareg">
              <operand xmi:type="uml:LiteralString" xmi:id="_pqAAHDCHEeWlMpF-4bareg" value="&quot;Lichtschranke 4 false&quot;"/>
            </specification>
          </ownedLiteral>
          <ownedLiteral xmi:id="_pjOCqDCHEeWlMpF-4bareg" name="DRILLING_STATION">
            <specification xmi:type="uml:Expression" xmi:id="_pjOCqTCHEeWlMpF-4bareg">
              <operand xmi:type="uml:LiteralString" xmi:id="_pqAnIDCHEeWlMpF-4bareg" value="&quot;Drilling&quot;"/>
            </specification>
          </ownedLiteral>
          <ownedLiteral xmi:id="_pjOCqjCHEeWlMpF-4bareg" name="LIGHTBARRIER_4_CONNECT">
            <specification xmi:type="uml:Expression" xmi:id="_pjOCqzCHEeWlMpF-4bareg">
              <operand xmi:type="uml:LiteralString" xmi:id="_pqAnITCHEeWlMpF-4bareg" value="&quot;Lichtschranke 4 true&quot;"/>
            </specification>
          </ownedLiteral>
          <ownedLiteral xmi:id="_pjOpsDCHEeWlMpF-4bareg" name="LIGHTBARRIER_5_INTERRUPT">
            <specification xmi:type="uml:Expression" xmi:id="_pjOpsTCHEeWlMpF-4bareg">
              <operand xmi:type="uml:LiteralString" xmi:id="_pqAnIjCHEeWlMpF-4bareg" value="&quot;Lichtschranke 5 false&quot;"/>
            </specification>
          </ownedLiteral>
          <ownedLiteral xmi:id="_pjOpsjCHEeWlMpF-4bareg" name="LIGHTBARRIER_5_CONNECT">
            <specification xmi:type="uml:Expression" xmi:id="_pjOpszCHEeWlMpF-4bareg">
              <operand xmi:type="uml:LiteralString" xmi:id="_pqAnIzCHEeWlMpF-4bareg" value="&quot;Lichtschranke 5 true&quot;"/>
            </specification>
          </ownedLiteral>
          <ownedLiteral xmi:id="_pjOptDCHEeWlMpF-4bareg" name="SPECTRAL_ANALYSIS">
            <specification xmi:type="uml:Expression" xmi:id="_pjOptTCHEeWlMpF-4bareg">
              <operand xmi:type="uml:LiteralString" xmi:id="_pqAnJDCHEeWlMpF-4bareg" value="&quot;SPECTRAL_ANALYSIS&quot;"/>
            </specification>
          </ownedLiteral>
        </packagedElement>
        <packagedElement xmi:type="uml:Association" xmi:id="_pqM0YTCHEeWlMpF-4bareg" name="" memberEnd="_pqM0YjCHEeWlMpF-4bareg _ppaxQjCHEeWlMpF-4bareg">
          <ownedEnd xmi:id="_pqM0YjCHEeWlMpF-4bareg" name="" type="_pjJxNzCHEeWlMpF-4bareg" association="_pqM0YTCHEeWlMpF-4bareg"/>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_piJEkDCHEeWlMpF-4bareg" name="test"/>
      <packagedElement xmi:type="uml:Association" xmi:id="_t9gVQDCKEeWKod2uCAN30Q" name="" memberEnd="_t9hjYDCKEeWKod2uCAN30Q _t9ixgDCKEeWKod2uCAN30Q">
        <ownedEnd xmi:id="_t9hjYDCKEeWKod2uCAN30Q" name="main" type="_pi22QDCHEeWlMpF-4bareg" association="_t9gVQDCKEeWKod2uCAN30Q">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_t9iKcDCKEeWKod2uCAN30Q" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_t9iKcTCKEeWKod2uCAN30Q" value="1"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_d-tg0DCLEeWKod2uCAN30Q" name="" memberEnd="_d-tg0TCLEeWKod2uCAN30Q _d-tg1DCLEeWKod2uCAN30Q">
        <ownedEnd xmi:id="_d-tg0TCLEeWKod2uCAN30Q" name="main" type="_pi22QDCHEeWlMpF-4bareg" association="_d-tg0DCLEeWKod2uCAN30Q">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_d-tg0jCLEeWKod2uCAN30Q"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_d-tg0zCLEeWKod2uCAN30Q" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_vQfKoDCLEeWKod2uCAN30Q" name="" memberEnd="_vQfxsDCLEeWKod2uCAN30Q _vQgYwjCLEeWKod2uCAN30Q">
        <ownedEnd xmi:id="_vQfxsDCLEeWKod2uCAN30Q" name="main" type="_pi22QDCHEeWlMpF-4bareg" association="_vQfKoDCLEeWKod2uCAN30Q">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vQgYwDCLEeWKod2uCAN30Q"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vQgYwTCLEeWKod2uCAN30Q" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_bu3g8DCSEeWKod2uCAN30Q" name="" memberEnd="_bu4IADCSEeWKod2uCAN30Q _bu4IAzCSEeWKod2uCAN30Q">
        <ownedEnd xmi:id="_bu4IADCSEeWKod2uCAN30Q" name="main" type="_pi22QDCHEeWlMpF-4bareg" association="_bu3g8DCSEeWKod2uCAN30Q">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bu4IATCSEeWKod2uCAN30Q"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bu4IAjCSEeWKod2uCAN30Q" value="*"/>
        </ownedEnd>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_phQ60DCHEeWlMpF-4bareg" name="java">
      <packagedElement xmi:type="uml:Package" xmi:id="_phQ60TCHEeWlMpF-4bareg" name="io">
        <packagedElement xmi:type="uml:Class" xmi:id="_poGioDCHEeWlMpF-4bareg" name="File"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_poHJsTCHEeWlMpF-4bareg" name="FileInputStream"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_poZdkTCHEeWlMpF-4bareg" name="StringReader"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_po4lwDCHEeWlMpF-4bareg" name="PrintStream"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_phRh4DCHEeWlMpF-4bareg" name="nio">
        <packagedElement xmi:type="uml:Package" xmi:id="_phRh4TCHEeWlMpF-4bareg" name="file">
          <packagedElement xmi:type="uml:Class" xmi:id="_poHwwzCHEeWlMpF-4bareg" name="Files"/>
          <packagedElement xmi:type="uml:Class" xmi:id="_poIX0TCHEeWlMpF-4bareg" name="NoSuchFileException"/>
          <packagedElement xmi:type="uml:Interface" xmi:id="_poI-4DCHEeWlMpF-4bareg" name="Path"/>
          <packagedElement xmi:type="uml:Class" xmi:id="_poI-4jCHEeWlMpF-4bareg" name="Paths"/>
          <packagedElement xmi:type="uml:Class" xmi:id="_powp8DCHEeWlMpF-4bareg" name="StandardWatchEventKinds"/>
          <packagedElement xmi:type="uml:Interface" xmi:id="_poxRADCHEeWlMpF-4bareg" name="WatchEvent"/>
          <packagedElement xmi:type="uml:Interface" xmi:id="_poxRAjCHEeWlMpF-4bareg" name="WatchKey"/>
          <packagedElement xmi:type="uml:Interface" xmi:id="_pox4ETCHEeWlMpF-4bareg" name="WatchService"/>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_phRh4jCHEeWlMpF-4bareg" name="sql">
        <packagedElement xmi:type="uml:Interface" xmi:id="_poJl8TCHEeWlMpF-4bareg" name="Connection"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_poJl8zCHEeWlMpF-4bareg" name="DriverManager"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_poKNATCHEeWlMpF-4bareg" name="PreparedStatement"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_poKNAzCHEeWlMpF-4bareg" name="ResultSet"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_poK0ETCHEeWlMpF-4bareg" name="ResultSetMetaData"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_poLbITCHEeWlMpF-4bareg" name="Statement"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_phRh4zCHEeWlMpF-4bareg" name="util">
        <packagedElement xmi:type="uml:Class" xmi:id="_poMCMDCHEeWlMpF-4bareg" name="ArrayList"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_poMCMjCHEeWlMpF-4bareg" name="Arrays"/>
        <packagedElement xmi:type="uml:DataType" xmi:id="_poSv4DCHEeWlMpF-4bareg" name="Date"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_poouIDCHEeWlMpF-4bareg" name="Observable"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_popVMTCHEeWlMpF-4bareg" name="Observer"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_phwDADCHEeWlMpF-4bareg" name="net">
        <packagedElement xmi:type="uml:Class" xmi:id="_poe9JDCHEeWlMpF-4bareg" name="InetSocketAddress"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_po_6gDCHEeWlMpF-4bareg" name="lang">
        <packagedElement xmi:type="uml:Class" xmi:id="_ppEL8DCHEeWlMpF-4bareg" name="Object"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_ppMHwTCHEeWlMpF-4bareg" name="Thread"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_ppPyIDCHEeWlMpF-4bareg" name="Process"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_ppQZMTCHEeWlMpF-4bareg" name="Runnable"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_phSI8jCHEeWlMpF-4bareg" name="com">
      <packagedElement xmi:type="uml:Package" xmi:id="_phSI8zCHEeWlMpF-4bareg" name="google">
        <packagedElement xmi:type="uml:Package" xmi:id="_phSI9DCHEeWlMpF-4bareg" name="gson">
          <packagedElement xmi:type="uml:Class" xmi:id="_poMpQTCHEeWlMpF-4bareg" name="JsonArray"/>
          <packagedElement xmi:type="uml:Class" xmi:id="_poNQUDCHEeWlMpF-4bareg" name="JsonObject"/>
          <packagedElement xmi:type="uml:Class" xmi:id="_poaEpTCHEeWlMpF-4bareg" name="Gson"/>
          <packagedElement xmi:type="uml:Class" xmi:id="_po07YTCHEeWlMpF-4bareg" name="JsonParser"/>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_phchADCHEeWlMpF-4bareg" name="github">
        <packagedElement xmi:type="uml:Package" xmi:id="_phchATCHEeWlMpF-4bareg" name="oxo42">
          <packagedElement xmi:type="uml:Package" xmi:id="_phchAjCHEeWlMpF-4bareg" name="stateless4j">
            <packagedElement xmi:type="uml:Class" xmi:id="_poVzMDCHEeWlMpF-4bareg" name="StateMachine"/>
            <packagedElement xmi:type="uml:Class" xmi:id="_ppC90DCHEeWlMpF-4bareg" name="StateMachineConfig"/>
          </packagedElement>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_ph1ikDCHEeWlMpF-4bareg" name="espertech">
        <packagedElement xmi:type="uml:Package" xmi:id="_ph1ikTCHEeWlMpF-4bareg" name="esper">
          <packagedElement xmi:type="uml:Package" xmi:id="_ph1ikjCHEeWlMpF-4bareg" name="client">
            <packagedElement xmi:type="uml:Interface" xmi:id="_poiAcDCHEeWlMpF-4bareg" name="EPServiceProvider"/>
            <packagedElement xmi:type="uml:Class" xmi:id="_poingTCHEeWlMpF-4bareg" name="EPServiceProviderManager"/>
            <packagedElement xmi:type="uml:Interface" xmi:id="_poingzCHEeWlMpF-4bareg" name="EPStatement"/>
            <packagedElement xmi:type="uml:Interface" xmi:id="_pojOkDCHEeWlMpF-4bareg" name="EventBean"/>
            <packagedElement xmi:type="uml:Interface" xmi:id="_pojOkjCHEeWlMpF-4bareg" name="UpdateListener"/>
          </packagedElement>
        </packagedElement>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_phfkUDCHEeWlMpF-4bareg" name="javax">
      <packagedElement xmi:type="uml:Package" xmi:id="_phfkUTCHEeWlMpF-4bareg" name="xml">
        <packagedElement xmi:type="uml:Package" xmi:id="_phfkUjCHEeWlMpF-4bareg" name="bind">
          <packagedElement xmi:type="uml:Class" xmi:id="_poZdkzCHEeWlMpF-4bareg" name="JAXBContext"/>
          <packagedElement xmi:type="uml:Package" xmi:id="_phfkUzCHEeWlMpF-4bareg" name="annotation">
            <packagedElement xmi:type="uml:Interface" xmi:id="_poTW8TCHEeWlMpF-4bareg" name="XmlRootElement"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="_poaEoTCHEeWlMpF-4bareg" name="JAXBException"/>
          <packagedElement xmi:type="uml:Interface" xmi:id="_poaEozCHEeWlMpF-4bareg" name="Unmarshaller"/>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_ph4l4DCHEeWlMpF-4bareg" name="jms">
        <packagedElement xmi:type="uml:Interface" xmi:id="_polDwDCHEeWlMpF-4bareg" name="Connection"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_polDwjCHEeWlMpF-4bareg" name="ConnectionFactory"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_polq0TCHEeWlMpF-4bareg" name="Session"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_pouNsDCHEeWlMpF-4bareg" name="Destination"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_pou0wTCHEeWlMpF-4bareg" name="Message"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_pou0wzCHEeWlMpF-4bareg" name="MessageConsumer"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_pou0xTCHEeWlMpF-4bareg" name="TextMessage"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_po2wkDCHEeWlMpF-4bareg" name="ExceptionListener"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_phqjcDCHEeWlMpF-4bareg" name="javaxt">
      <packagedElement xmi:type="uml:Package" xmi:id="_phrKgDCHEeWlMpF-4bareg" name="http">
        <packagedElement xmi:type="uml:Class" xmi:id="_pjl2EDCHEeWlMpF-4bareg" name="Server"/>
        <packagedElement xmi:type="uml:Package" xmi:id="_phrxkDCHEeWlMpF-4bareg" name="servlet">
          <packagedElement xmi:type="uml:Class" xmi:id="_pobSwDCHEeWlMpF-4bareg" name="HttpServlet"/>
          <packagedElement xmi:type="uml:Class" xmi:id="_pobSwjCHEeWlMpF-4bareg" name="HttpServletRequest"/>
          <packagedElement xmi:type="uml:Class" xmi:id="_pob50TCHEeWlMpF-4bareg" name="HttpServletResponse"/>
        </packagedElement>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_phwqEDCHEeWlMpF-4bareg" name="org">
      <packagedElement xmi:type="uml:Package" xmi:id="_phwqETCHEeWlMpF-4bareg" name="java_websocket">
        <packagedElement xmi:type="uml:Interface" xmi:id="_pofkMTCHEeWlMpF-4bareg" name="WebSocket"/>
        <packagedElement xmi:type="uml:Package" xmi:id="_phwqEjCHEeWlMpF-4bareg" name="handshake">
          <packagedElement xmi:type="uml:Interface" xmi:id="_pogLQDCHEeWlMpF-4bareg" name="ClientHandshake"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="_phwqEzCHEeWlMpF-4bareg" name="server">
          <packagedElement xmi:type="uml:Class" xmi:id="_pogLQjCHEeWlMpF-4bareg" name="WebSocketServer"/>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_ph4l4TCHEeWlMpF-4bareg" name="apache">
        <packagedElement xmi:type="uml:Package" xmi:id="_ph4l4jCHEeWlMpF-4bareg" name="activemq">
          <packagedElement xmi:type="uml:Class" xmi:id="_polq0zCHEeWlMpF-4bareg" name="ActiveMQConnectionFactory"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="_piUDsDCHEeWlMpF-4bareg" name="log4j">
          <packagedElement xmi:type="uml:Class" xmi:id="_po4lwjCHEeWlMpF-4bareg" name="Logger"/>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_piIdgDCHEeWlMpF-4bareg" name="junit">
        <packagedElement xmi:type="uml:Interface" xmi:id="_pozGMDCHEeWlMpF-4bareg" name="Test"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_poztQTCHEeWlMpF-4bareg" name="Assert"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_po0UUTCHEeWlMpF-4bareg" name="Before"/>
        <packagedElement xmi:type="uml:Interface" xmi:id="_po3XoDCHEeWlMpF-4bareg" name="After"/>
      </packagedElement>
    </packagedElement>
    <profileApplication xmi:id="_pMN34jCHEeWlMpF-4bareg">
      <eAnnotations xmi:id="_pMN34zCHEeWlMpF-4bareg" source="http://www.eclipse.org/uml2/2.0.0/UML">
        <references xmi:type="ecore:EPackage" href="pathmap://UMLLAB_PROFILES/UMLLab.profile.uml#UMLLabProfile-Annotation_2-UMLLabProfile"/>
      </eAnnotations>
      <appliedProfile href="pathmap://UMLLAB_PROFILES/UMLLab.profile.uml#UMLLabProfile"/>
    </profileApplication>
  </uml:Model>
  <UMLLabProfile:TargetLanguage xmi:id="_pMOe8DCHEeWlMpF-4bareg" base_Package="_pGd1MDCHEeWlMpF-4bareg">
    <languageName>java</languageName>
  </UMLLabProfile:TargetLanguage>
  <UMLLabProfile:LegacyStyledElement xmi:id="_pjJKIDCHEeWlMpF-4bareg" base_Element="_pjIjETCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Generics xmi:id="_pjK_UDCHEeWlMpF-4bareg" genericsValue="PartStates, Triggers" base_Element="_pjKYRDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_pjRtADCHEeWlMpF-4bareg" base_Element="_pjRF8DCHEeWlMpF-4bareg"/>
  <UMLLabProfile:StyledElement xmi:id="_pjS7JTCHEeWlMpF-4bareg" base_Element="_pjS7IzCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Annotations xmi:id="_pjTiMTCHEeWlMpF-4bareg" base_Element="_pjTiMDCHEeWlMpF-4bareg">
    <annotations xmi:id="_pjTiMjCHEeWlMpF-4bareg" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Annotations xmi:id="_pjTiMzCHEeWlMpF-4bareg" base_Element="_pjRF8DCHEeWlMpF-4bareg">
    <annotations xmi:id="_pjUJQDCHEeWlMpF-4bareg" name="XmlRootElement"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_pjVXYDCHEeWlMpF-4bareg" base_Element="_pjUwUDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Annotations xmi:id="_pjXMkDCHEeWlMpF-4bareg" base_Element="_pjWlgDCHEeWlMpF-4bareg">
    <annotations xmi:id="_pjXMkTCHEeWlMpF-4bareg" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Annotations xmi:id="_pjXzoDCHEeWlMpF-4bareg" base_Element="_pjUwUDCHEeWlMpF-4bareg">
    <annotations xmi:id="_pjYasDCHEeWlMpF-4bareg" name="XmlRootElement">
      <annotationParameters xmi:id="_pjYasTCHEeWlMpF-4bareg" name="name" skipArray="true">
        <valueSpecifications xmi:type="uml:LiteralString" xmi:id="_pqBOMDCHEeWlMpF-4bareg" value="&quot;OpcDataItem&quot;"/>
      </annotationParameters>
    </annotations>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Generics xmi:id="_pjbeATCHEeWlMpF-4bareg" genericsValue="OPCDataItem" base_Element="_pjbeADCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_pjehUTCHEeWlMpF-4bareg" base_Element="_pjehUDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Annotations xmi:id="_pjfvczCHEeWlMpF-4bareg" base_Element="_pjfvcjCHEeWlMpF-4bareg">
    <annotations xmi:id="_pjgWgDCHEeWlMpF-4bareg" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Annotations xmi:id="_pjgWgTCHEeWlMpF-4bareg" base_Element="_pjehUDCHEeWlMpF-4bareg">
    <annotations xmi:id="_pjgWgjCHEeWlMpF-4bareg" name="XmlRootElement"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_pjlPAjCHEeWlMpF-4bareg" base_Element="_pjlPATCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Annotations xmi:id="_pjlPAzCHEeWlMpF-4bareg" base_Element="_pjlPATCHEeWlMpF-4bareg">
    <annotations xmi:id="_pjlPBDCHEeWlMpF-4bareg" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_pjl2ETCHEeWlMpF-4bareg" base_Element="_pjl2EDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_pjwOIDCHEeWlMpF-4bareg" base_Element="_pjvnFDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Annotations xmi:id="_pjwOITCHEeWlMpF-4bareg" base_Element="_pjvnFDCHEeWlMpF-4bareg">
    <annotations xmi:id="_pjwOIjCHEeWlMpF-4bareg" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_pj270DCHEeWlMpF-4bareg" base_Element="_pj2UwTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Annotations xmi:id="_pj270TCHEeWlMpF-4bareg" base_Element="_pj2UwTCHEeWlMpF-4bareg">
    <annotations xmi:id="_pj270jCHEeWlMpF-4bareg" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_pj9pgDCHEeWlMpF-4bareg" base_Element="_pj9CcDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Annotations xmi:id="_pj9pgTCHEeWlMpF-4bareg" base_Element="_pj9CcDCHEeWlMpF-4bareg">
    <annotations xmi:id="_pj9pgjCHEeWlMpF-4bareg" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_pkEXMDCHEeWlMpF-4bareg" base_Element="_pkDwIDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Annotations xmi:id="_pkE-QDCHEeWlMpF-4bareg" base_Element="_pkDwIDCHEeWlMpF-4bareg">
    <annotations xmi:id="_pkE-QTCHEeWlMpF-4bareg" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_pkQkcDCHEeWlMpF-4bareg" base_Element="_pkP9YTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poHJsDCHEeWlMpF-4bareg" base_Element="_poGioDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poHwwDCHEeWlMpF-4bareg" base_Element="_poHJsTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poIX0DCHEeWlMpF-4bareg" base_Element="_poHwwzCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poIX0jCHEeWlMpF-4bareg" base_Element="_poIX0TCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poI-4TCHEeWlMpF-4bareg" base_Element="_poI-4DCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poJl8DCHEeWlMpF-4bareg" base_Element="_poI-4jCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poJl8jCHEeWlMpF-4bareg" base_Element="_poJl8TCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poKNADCHEeWlMpF-4bareg" base_Element="_poJl8zCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poKNAjCHEeWlMpF-4bareg" base_Element="_poKNATCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poK0EDCHEeWlMpF-4bareg" base_Element="_poKNAzCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poK0EjCHEeWlMpF-4bareg" base_Element="_poK0ETCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poLbIjCHEeWlMpF-4bareg" base_Element="_poLbITCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poMCMTCHEeWlMpF-4bareg" base_Element="_poMCMDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poMpQDCHEeWlMpF-4bareg" base_Element="_poMCMjCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poMpQjCHEeWlMpF-4bareg" base_Element="_poMpQTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poNQUTCHEeWlMpF-4bareg" base_Element="_poNQUDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poTW8DCHEeWlMpF-4bareg" base_Element="_poSv4DCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poT-ADCHEeWlMpF-4bareg" base_Element="_poTW8TCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poVzMTCHEeWlMpF-4bareg" base_Element="_poVzMDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poZdkjCHEeWlMpF-4bareg" base_Element="_poZdkTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poaEoDCHEeWlMpF-4bareg" base_Element="_poZdkzCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poaEojCHEeWlMpF-4bareg" base_Element="_poaEoTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poaEpDCHEeWlMpF-4bareg" base_Element="_poaEozCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poarsDCHEeWlMpF-4bareg" base_Element="_poaEpTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pobSwTCHEeWlMpF-4bareg" base_Element="_pobSwDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pob50DCHEeWlMpF-4bareg" base_Element="_pobSwjCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pob50jCHEeWlMpF-4bareg" base_Element="_pob50TCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pofkMDCHEeWlMpF-4bareg" base_Element="_poe9JDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pofkMjCHEeWlMpF-4bareg" base_Element="_pofkMTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pogLQTCHEeWlMpF-4bareg" base_Element="_pogLQDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pogLQzCHEeWlMpF-4bareg" base_Element="_pogLQjCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poingDCHEeWlMpF-4bareg" base_Element="_poiAcDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poingjCHEeWlMpF-4bareg" base_Element="_poingTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poinhDCHEeWlMpF-4bareg" base_Element="_poingzCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pojOkTCHEeWlMpF-4bareg" base_Element="_pojOkDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pojOkzCHEeWlMpF-4bareg" base_Element="_pojOkjCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_polDwTCHEeWlMpF-4bareg" base_Element="_polDwDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_polDwzCHEeWlMpF-4bareg" base_Element="_polDwjCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_polq0jCHEeWlMpF-4bareg" base_Element="_polq0TCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pomR4DCHEeWlMpF-4bareg" base_Element="_polq0zCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_popVMDCHEeWlMpF-4bareg" base_Element="_poouIDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_popVMjCHEeWlMpF-4bareg" base_Element="_popVMTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pou0wDCHEeWlMpF-4bareg" base_Element="_pouNsDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pou0wjCHEeWlMpF-4bareg" base_Element="_pou0wTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pou0xDCHEeWlMpF-4bareg" base_Element="_pou0wzCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_povb0DCHEeWlMpF-4bareg" base_Element="_pou0xTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_powp8TCHEeWlMpF-4bareg" base_Element="_powp8DCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poxRATCHEeWlMpF-4bareg" base_Element="_poxRADCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pox4EDCHEeWlMpF-4bareg" base_Element="_poxRAjCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pox4EjCHEeWlMpF-4bareg" base_Element="_pox4ETCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_poztQDCHEeWlMpF-4bareg" base_Element="_pozGMDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_po0UUDCHEeWlMpF-4bareg" base_Element="_poztQTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_po07YDCHEeWlMpF-4bareg" base_Element="_po0UUTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_po07YjCHEeWlMpF-4bareg" base_Element="_po07YTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_po2wkTCHEeWlMpF-4bareg" base_Element="_po2wkDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_po3-sDCHEeWlMpF-4bareg" base_Element="_po3XoDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_po4lwTCHEeWlMpF-4bareg" base_Element="_po4lwDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_po4lwzCHEeWlMpF-4bareg" base_Element="_po4lwjCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Generics xmi:id="_ppBvsDCHEeWlMpF-4bareg" genericsValue="String" base_Element="_ppBIojCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_ppC90TCHEeWlMpF-4bareg" base_Element="_ppC90DCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_ppEL8TCHEeWlMpF-4bareg" base_Element="_ppEL8DCHEeWlMpF-4bareg"/>
  <UMLLabProfile:StyledElement xmi:id="_ppEzBTCHEeWlMpF-4bareg" base_Element="_ppEL8jCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Generics xmi:id="_ppGBIDCHEeWlMpF-4bareg" genericsValue="PartStates, Triggers" base_Element="_ppFaEjCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppJEcTCHEeWlMpF-4bareg" base_Element="_ppIdYDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Annotations xmi:id="_ppJEcjCHEeWlMpF-4bareg" base_Element="_ppIdYDCHEeWlMpF-4bareg">
    <annotations xmi:id="_ppJEczCHEeWlMpF-4bareg" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppJrgDCHEeWlMpF-4bareg" base_Element="_ppJEdDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Annotations xmi:id="_ppJrgTCHEeWlMpF-4bareg" base_Element="_ppJEdDCHEeWlMpF-4bareg">
    <annotations xmi:id="_ppJrgjCHEeWlMpF-4bareg" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppJrhjCHEeWlMpF-4bareg" base_Element="_ppJrgzCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Annotations xmi:id="_ppKSkDCHEeWlMpF-4bareg" base_Element="_ppJrgzCHEeWlMpF-4bareg">
    <annotations xmi:id="_ppKSkTCHEeWlMpF-4bareg" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppK5oDCHEeWlMpF-4bareg" base_Element="_ppKSkjCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Annotations xmi:id="_ppK5oTCHEeWlMpF-4bareg" base_Element="_ppKSkjCHEeWlMpF-4bareg">
    <annotations xmi:id="_ppK5ojCHEeWlMpF-4bareg" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_ppMHwjCHEeWlMpF-4bareg" base_Element="_ppMHwTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_ppPyITCHEeWlMpF-4bareg" base_Element="_ppPyIDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_ppQZMjCHEeWlMpF-4bareg" base_Element="_ppQZMTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppXt8jCHEeWlMpF-4bareg" base_Element="_ppXt8TCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppXt9TCHEeWlMpF-4bareg" base_Element="_ppXt8zCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Array xmi:id="_ppaKNjCHEeWlMpF-4bareg" base_Element="_ppaKNDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Generics xmi:id="_ppbYUDCHEeWlMpF-4bareg" genericsValue="PartStates, Triggers" base_Element="_ppaxQjCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppbYUTCHEeWlMpF-4bareg" base_Element="_ppaxQjCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppbYUzCHEeWlMpF-4bareg" base_Element="_ppbYUjCHEeWlMpF-4bareg"/>
  <UMLLabProfile:StyledElement xmi:id="_ppb_YTCHEeWlMpF-4bareg" base_Element="_ppb_YDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:StyledElement xmi:id="_ppb_YzCHEeWlMpF-4bareg" base_Element="_ppb_YjCHEeWlMpF-4bareg"/>
  <UMLLabProfile:StyledElement xmi:id="_ppb_ZTCHEeWlMpF-4bareg" base_Element="_ppb_ZDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:StyledElement xmi:id="_ppb_ZzCHEeWlMpF-4bareg" base_Element="_ppb_ZjCHEeWlMpF-4bareg"/>
  <UMLLabProfile:StyledElement xmi:id="_ppcmcTCHEeWlMpF-4bareg" base_Element="_ppcmcDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:StyledElement xmi:id="_ppcmczCHEeWlMpF-4bareg" base_Element="_ppcmcjCHEeWlMpF-4bareg"/>
  <UMLLabProfile:StyledElement xmi:id="_ppcmdTCHEeWlMpF-4bareg" base_Element="_ppcmdDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:StyledElement xmi:id="_ppdNgDCHEeWlMpF-4bareg" base_Element="_ppcmdjCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Generics xmi:id="_ppdNgjCHEeWlMpF-4bareg" genericsValue="OPCDataItem" base_Element="_ppdNgTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppdNgzCHEeWlMpF-4bareg" base_Element="_ppdNgTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Generics xmi:id="_ppd0kTCHEeWlMpF-4bareg" genericsValue="PartStates, Triggers" base_Element="_ppd0kDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppd0kjCHEeWlMpF-4bareg" base_Element="_ppd0kDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppd0lDCHEeWlMpF-4bareg" base_Element="_ppd0kzCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppeboDCHEeWlMpF-4bareg" base_Element="_ppd0lTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:StyledElement xmi:id="_ppebojCHEeWlMpF-4bareg" base_Element="_ppeboTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:StyledElement xmi:id="_ppebpDCHEeWlMpF-4bareg" base_Element="_ppebozCHEeWlMpF-4bareg"/>
  <UMLLabProfile:StyledElement xmi:id="_ppfCsDCHEeWlMpF-4bareg" base_Element="_ppebpTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:StyledElement xmi:id="_ppfCsjCHEeWlMpF-4bareg" base_Element="_ppfCsTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:StyledElement xmi:id="_ppfCtDCHEeWlMpF-4bareg" base_Element="_ppfCszCHEeWlMpF-4bareg"/>
  <UMLLabProfile:StyledElement xmi:id="_ppfCtjCHEeWlMpF-4bareg" base_Element="_ppfCtTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:StyledElement xmi:id="_ppfCuDCHEeWlMpF-4bareg" base_Element="_ppfCtzCHEeWlMpF-4bareg"/>
  <UMLLabProfile:StyledElement xmi:id="_ppfCujCHEeWlMpF-4bareg" base_Element="_ppfCuTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:StyledElement xmi:id="_ppfpwDCHEeWlMpF-4bareg" base_Element="_ppfCuzCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Generics xmi:id="_ppgQ0zCHEeWlMpF-4bareg" genericsValue="Route" base_Element="_ppgQ0jCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppg34DCHEeWlMpF-4bareg" base_Element="_ppgQ0jCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppg34jCHEeWlMpF-4bareg" base_Element="_ppg34TCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppg35DCHEeWlMpF-4bareg" base_Element="_ppg34zCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_pphe8DCHEeWlMpF-4bareg" base_Element="_ppg35TCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_pphe8jCHEeWlMpF-4bareg" base_Element="_pphe8TCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_pphe9DCHEeWlMpF-4bareg" base_Element="_pphe8zCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppiGATCHEeWlMpF-4bareg" base_Element="_pphe9zCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Generics xmi:id="_ppiGAzCHEeWlMpF-4bareg" genericsValue="WebSocket" base_Element="_ppiGAjCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppiGBDCHEeWlMpF-4bareg" base_Element="_ppiGAjCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppj7MDCHEeWlMpF-4bareg" base_Element="_ppjUIzCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppj7NjCHEeWlMpF-4bareg" base_Element="_ppj7NTCHEeWlMpF-4bareg">
    <associatedElement xmi:type="uml:Operation" xmi:id="_ppkiQDCHEeWlMpF-4bareg" name="getKeepListening" isStatic="true" method="_pp2PFDCHEeWlMpF-4bareg">
      <ownedParameter xmi:id="_ppkiQzCHEeWlMpF-4bareg" direction="return">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
      </ownedParameter>
    </associatedElement>
    <associatedElement xmi:type="uml:Operation" xmi:id="_ppkiQTCHEeWlMpF-4bareg" name="setKeepListening" isStatic="true" method="_pp2PFjCHEeWlMpF-4bareg">
      <ownedParameter xmi:id="_ppkiQjCHEeWlMpF-4bareg" name="listen">
        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
      </ownedParameter>
    </associatedElement>
  </UMLLabProfile:LegacyStyledElement>
  <UMLLabProfile:LegacyStyledElement xmi:id="_pplwYDCHEeWlMpF-4bareg" base_Element="_pplJVDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Generics xmi:id="_pplwYjCHEeWlMpF-4bareg" genericsValue="MessageObject" base_Element="_pplwYTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppmXcDCHEeWlMpF-4bareg" base_Element="_pplwYTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppmXcjCHEeWlMpF-4bareg" base_Element="_ppmXcTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppmXdDCHEeWlMpF-4bareg" base_Element="_ppmXczCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppm-gDCHEeWlMpF-4bareg" base_Element="_ppmXdTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppm-gjCHEeWlMpF-4bareg" base_Element="_ppm-gTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Generics xmi:id="_ppm-hDCHEeWlMpF-4bareg" genericsValue="Product" base_Element="_ppm-gzCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppnlkDCHEeWlMpF-4bareg" base_Element="_ppm-gzCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppoMoDCHEeWlMpF-4bareg" base_Element="_ppnllTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppoMpDCHEeWlMpF-4bareg" base_Element="_ppoMozCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppozsDCHEeWlMpF-4bareg" base_Element="_ppoMpTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppozsjCHEeWlMpF-4bareg" base_Element="_ppozsTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppoztTCHEeWlMpF-4bareg" base_Element="_ppozszCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_pppawzCHEeWlMpF-4bareg" base_Element="_pppawTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ppqB0TCHEeWlMpF-4bareg" base_Element="_ppqB0DCHEeWlMpF-4bareg"/>
  <uml:OpaqueBehavior xmi:id="_ppwIdTCHEeWlMpF-4bareg" name="Triggers" specification="_pjPQwDCHEeWlMpF-4bareg">
    <ownedParameter xmi:id="_ppwvgDCHEeWlMpF-4bareg" name="eventName">
      <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
    </ownedParameter>
    <ownedParameter xmi:id="_ppwvgTCHEeWlMpF-4bareg" type="_pjM0gDCHEeWlMpF-4bareg" direction="return"/>
    <language>java</language>
    <body>this.eventName = eventName;&#xD;
	</body>
  </uml:OpaqueBehavior>
  <uml:OpaqueBehavior xmi:id="_pp2PFDCHEeWlMpF-4bareg" name="getKeepListening" specification="_ppkiQDCHEeWlMpF-4bareg">
    <ownedParameter xmi:id="_pp2PFTCHEeWlMpF-4bareg" direction="return">
      <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
    </ownedParameter>
    <language>java</language>
    <body>return keepListening;&#xD;
	</body>
  </uml:OpaqueBehavior>
  <uml:OpaqueBehavior xmi:id="_pp2PFjCHEeWlMpF-4bareg" name="setKeepListening" specification="_ppkiQTCHEeWlMpF-4bareg">
    <ownedParameter xmi:id="_pp2PFzCHEeWlMpF-4bareg" name="listen">
      <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
    </ownedParameter>
    <language>java</language>
    <body>keepListening = listen;&#xD;
	</body>
  </uml:OpaqueBehavior>
  <uml:OpaqueBehavior xmi:id="_pp4rUjCHEeWlMpF-4bareg" name="getProductHandler">
    <ownedParameter xmi:id="_pp4rUzCHEeWlMpF-4bareg" type="_pj_esDCHEeWlMpF-4bareg" direction="return"/>
    <language>java</language>
    <body>if (productHandler == null) {&#xD;
			productHandler = new ProductHandler();&#xD;
		}&#xD;
		&#xD;
		return productHandler;&#xD;
	</body>
  </uml:OpaqueBehavior>
  <UMLLabProfile:Reference xmi:id="_pqMNUDCHEeWlMpF-4bareg" base_Element="_pqLmQTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqM0YDCHEeWlMpF-4bareg" base_Element="_pqMNUTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqM0YzCHEeWlMpF-4bareg" base_Element="_pqM0YTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqNbcDCHEeWlMpF-4bareg" base_Element="_pqM0ZDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqNbczCHEeWlMpF-4bareg" base_Element="_pqNbcTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqNbdjCHEeWlMpF-4bareg" base_Element="_pqNbdDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqOCgDCHEeWlMpF-4bareg" base_Element="_pqNbdzCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqOpkzCHEeWlMpF-4bareg" base_Element="_pqOpkTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqOpljCHEeWlMpF-4bareg" base_Element="_pqOplDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqPQoDCHEeWlMpF-4bareg" base_Element="_pqOplzCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqPQozCHEeWlMpF-4bareg" base_Element="_pqPQoTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqP3sDCHEeWlMpF-4bareg" base_Element="_pqPQpDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqQewDCHEeWlMpF-4bareg" base_Element="_pqP3tzCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqQewzCHEeWlMpF-4bareg" base_Element="_pqQewTCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqQexjCHEeWlMpF-4bareg" base_Element="_pqQexDCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqRF0DCHEeWlMpF-4bareg" base_Element="_pqQexzCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqRF0zCHEeWlMpF-4bareg" base_Element="_pqRF0TCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqRs4DCHEeWlMpF-4bareg" base_Element="_pqRF1DCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqRs4zCHEeWlMpF-4bareg" base_Element="_pqRs4TCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqST8DCHEeWlMpF-4bareg" base_Element="_pqRs5zCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqST9jCHEeWlMpF-4bareg" base_Element="_pqST9DCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqS7AjCHEeWlMpF-4bareg" base_Element="_pqS7ADCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqS7BTCHEeWlMpF-4bareg" base_Element="_pqS7AzCHEeWlMpF-4bareg"/>
  <UMLLabProfile:Reference xmi:id="_pqTiEDCHEeWlMpF-4bareg" base_Element="_pqS7BjCHEeWlMpF-4bareg"/>
</xmi:XMI>
