diff --git a/.gitignore b/.gitignore index 095e29f0467249459c9aa1370185a0f77b6bd3d3..2361e48f30486ea49428eed2338c6b9ce5f62e44 100644 --- a/.gitignore +++ b/.gitignore @@ -22,7 +22,7 @@ .vscode/* !.vscode/settings.json !.vscode/tasks.json -!.vscode/launch.json +# !.vscode/launch.json !.vscode/extensions.json # misc @@ -46,4 +46,20 @@ Thumbs.db /jalhyd_class_diagram.png # distribution output -/jalhyd-*.tgz \ No newline at end of file +/jalhyd-*.tgz + +.vscode/launch.json +Makefile +check_message_codes +commit +debug_jasmine +graphviz +newton +parse_spip_log +run_testjs +spec/support/jasmine-remous.json +spec/test.ts +spec/test2.ts +spec/tsconfig-test.spec.json +spec/tsconfig-test2.spec.json +src/util/http.ts diff --git a/.vscode/launch.json b/.vscode/launch.json index 7ca0dc5577d8533754f994538ca949512c6368b5..be37e2d1bdf7fef954f0e29a3c64ca397f7415a1 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -14,7 +14,7 @@ "${workspaceRoot}/build/**/*.js" ], "cwd": "${workspaceRoot}", - "preLaunchTask": "buildspec" + // "preLaunchTask": "buildspec" } ] } \ No newline at end of file diff --git a/doc/papyrus/Model_RootElement_Nub_Section_Parameters_Class_Diagram.PNG b/doc/papyrus/Model_RootElement_Nub_Section_Parameters_Class_Diagram.PNG new file mode 100644 index 0000000000000000000000000000000000000000..618a958f31c14c81b3ce78ad9fc780604408c000 Binary files /dev/null and b/doc/papyrus/Model_RootElement_Nub_Section_Parameters_Class_Diagram.PNG differ diff --git a/doc/papyrus/Model_RootElement_Object_Reference_Class_Diagram.PNG b/doc/papyrus/Model_RootElement_Object_Reference_Class_Diagram.PNG new file mode 100644 index 0000000000000000000000000000000000000000..0a530de0f08911b84525e8f066ae6613ea8ba6ec Binary files /dev/null and b/doc/papyrus/Model_RootElement_Object_Reference_Class_Diagram.PNG differ diff --git a/doc/papyrus/README b/doc/papyrus/README new file mode 100644 index 0000000000000000000000000000000000000000..0a9140f88bad639a349faa6f745706e467dcc1ab --- /dev/null +++ b/doc/papyrus/README @@ -0,0 +1,2 @@ +documentation UML JalHyd +editée avec Papyrus (https://www.eclipse.org/papyrus/) diff --git a/doc/papyrus/model-jalhyd.di b/doc/papyrus/model-jalhyd.di new file mode 100644 index 0000000000000000000000000000000000000000..bf9abab340f5ecdf972f830c46f57d08d822d01f --- /dev/null +++ b/doc/papyrus/model-jalhyd.di @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/> diff --git a/doc/papyrus/model-jalhyd.notation b/doc/papyrus/model-jalhyd.notation new file mode 100644 index 0000000000000000000000000000000000000000..64cacdad06190f1e486632000cf64a14912c237c --- /dev/null +++ b/doc/papyrus/model-jalhyd.notation @@ -0,0 +1,1759 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/gmfdiag/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML"> + <notation:Diagram xmi:id="_tJpZEE99Eee7Pr5wMBo3JA" type="PapyrusUMLClassDiagram" name="Nub/Section/Parameters Class Diagram" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_v54FAE99Eee7Pr5wMBo3JA" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GDnEQlGXEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GDnEQ1GXEeevz5N4F7hvnQ" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GMbpEFGXEeevz5N4F7hvnQ" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_v6JKwE99Eee7Pr5wMBo3JA" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_v6JKwU99Eee7Pr5wMBo3JA" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_v6JKwk99Eee7Pr5wMBo3JA" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_v6LnAE99Eee7Pr5wMBo3JA" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_v6LnAU99Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_v6LnAk99Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_v6LnA099Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v6LnBE99Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_v6LnBU99Eee7Pr5wMBo3JA" type="Class_OperationCompartment"> + <children xmi:type="notation:Shape" xmi:id="_KgBssFAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_Kfx1EFAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_KgBssVAMEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_Nq67YFAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_Nqs48FAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Nq7icFAMEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_O9vOIFAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_O9bFEFAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_O9vOIVAMEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_TVR2IFAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_TVDMoFAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_TVR2IVAMEeeHkO_PSanZTQ"/> + </children> + <styles xmi:type="notation:TitleStyle" xmi:id="_v6LnBk99Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_v6LnB099Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_v6LnCE99Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v6LnCU99Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_v6LnCk99Eee7Pr5wMBo3JA" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_v6LnC099Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_v6LnDE99Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_v6LnDU99Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v6LnDk99Eee7Pr5wMBo3JA"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_v5viIE99Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v54FAU99Eee7Pr5wMBo3JA" x="291" y="37" width="138"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_19UOIE99Eee7Pr5wMBo3JA" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Dkv1IFGXEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Dkv1IVGXEeevz5N4F7hvnQ" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Duyh8FGXEeevz5N4F7hvnQ" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_19U1ME99Eee7Pr5wMBo3JA" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_19U1MU99Eee7Pr5wMBo3JA" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_19U1Mk99Eee7Pr5wMBo3JA" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_19U1M099Eee7Pr5wMBo3JA" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_19U1NE99Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_19U1NU99Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_19U1Nk99Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_19U1N099Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_19U1OE99Eee7Pr5wMBo3JA" type="Class_OperationCompartment"> + <children xmi:type="notation:Shape" xmi:id="_RwVCAFBCEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_RwG_kFBCEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_RwVCAVBCEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_TCbjEFBCEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_TCOHsFBCEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_TCbjEVBCEeeHkO_PSanZTQ"/> + </children> + <styles xmi:type="notation:TitleStyle" xmi:id="_19U1OU99Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_19U1Ok99Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_19U1O099Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_19U1PE99Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_19U1PU99Eee7Pr5wMBo3JA" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_19U1Pk99Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_19U1P099Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_19U1QE99Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_19U1QU99Eee7Pr5wMBo3JA"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_19Rx4E99Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_19UOIU99Eee7Pr5wMBo3JA" x="473" y="330" width="165"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_GCDdEE9-Eee7Pr5wMBo3JA" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GDnEQFGXEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GDnEQVGXEeevz5N4F7hvnQ" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GMZz4FGXEeevz5N4F7hvnQ" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_GCEEIE9-Eee7Pr5wMBo3JA" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_GCEEIU9-Eee7Pr5wMBo3JA" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_GCEEIk9-Eee7Pr5wMBo3JA" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_GCEEI09-Eee7Pr5wMBo3JA" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_GCEEJE9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_GCEEJU9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_GCEEJk9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCEEJ09-Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_GCEEKE9-Eee7Pr5wMBo3JA" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_GCEEKU9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_GCEEKk9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_GCEEK09-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCEELE9-Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_GCEELU9-Eee7Pr5wMBo3JA" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_GCEELk9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_GCEEL09-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_GCEEME9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCEEMU9-Eee7Pr5wMBo3JA"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_GCCO8E9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GCDdEU9-Eee7Pr5wMBo3JA" x="68" y="335" width="176"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_KSvPIE9-Eee7Pr5wMBo3JA" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EYtBoFGXEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EYtBoVGXEeevz5N4F7hvnQ" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EezCkFGXEeevz5N4F7hvnQ" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_KSvPIk9-Eee7Pr5wMBo3JA" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_KSvPI09-Eee7Pr5wMBo3JA" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_KSvPJE9-Eee7Pr5wMBo3JA" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_KSvPJU9-Eee7Pr5wMBo3JA" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_KSvPJk9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_KSvPJ09-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_KSvPKE9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KSvPKU9-Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_KSvPKk9-Eee7Pr5wMBo3JA" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_KSvPK09-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_KSvPLE9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_KSvPLU9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KSvPLk9-Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_KSv2ME9-Eee7Pr5wMBo3JA" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_KSv2MU9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_KSv2Mk9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_KSv2M09-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KSv2NE9-Eee7Pr5wMBo3JA"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_KSuBAE9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KSvPIU9-Eee7Pr5wMBo3JA" x="281" y="335" width="158"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_XbWrME9-Eee7Pr5wMBo3JA" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_71wJIFGWEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_71wJIVGWEeevz5N4F7hvnQ" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7_U74FGWEeevz5N4F7hvnQ" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_XbXSQE9-Eee7Pr5wMBo3JA" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_XbXSQU9-Eee7Pr5wMBo3JA" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_XbXSQk9-Eee7Pr5wMBo3JA" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_XbXSQ09-Eee7Pr5wMBo3JA" type="Class_AttributeCompartment"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__BSYgFALEeeHkO_PSanZTQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__BS_kFALEeeHkO_PSanZTQ" key="collapsed" value="true"/> + </eAnnotations> + <styles xmi:type="notation:TitleStyle" xmi:id="_XbXSRE9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_XbXSRU9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_XbXSRk9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XbXSR09-Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_XbXSSE9-Eee7Pr5wMBo3JA" type="Class_OperationCompartment"> + <children xmi:type="notation:Shape" xmi:id="_CgjUsFAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_CgOkkFAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_CgjUsVAMEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_EUNqsFAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_ET9MAFAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_EUNqsVAMEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_afBgAFAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_aexBUFAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_afBgAVAMEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_cjDNQFAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_cizVoFAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_cjDNQVAMEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_fPN4kFAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_fO_2IFAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_fPN4kVAMEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_iGlHQFAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_iGVPoFAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_iGlHQVAMEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_jgvYIFAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_jghVsFAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_jgvYIVAMEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_mUDNQFAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_mTzVoFAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_mUDNQVAMEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_oyCSoFAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_ox03QFAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_oyCSoVAMEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_t4vGsFAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_t4gdMFAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_t4vGsVAMEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_vcZR0FAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_vb_pMFAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_vcZR0VAMEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_wv5hEFAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_wvsFsFAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_wv5hEVAMEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_xxgvEFAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_xxT6wFAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_xxgvEVAMEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_zhW8EFAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_zhI5oFAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_zhW8EVAMEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_2F58cFAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_2FshEFAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_2F58cVAMEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_3_QDsFAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_3_CBQFAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_3_QDsVAMEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_5oMXcFAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_5n74wFAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_5oMXcVAMEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_6qapcFAMEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_6qKx0FAMEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_6qapcVAMEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_DGoAwFANEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_DGVs4FANEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_DGoAwVANEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_IZ1m0FANEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_IZnkYFANEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_IZ1m0VANEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_JZd30FANEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_JZQccFANEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_JZd30VANEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_KpCpUFANEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_Ko1N8FANEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_KpCpUVANEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_L0UJoFANEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_L0IjcFANEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_L0UJoVANEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_M8LJkFANEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_M77R8FANEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_M8LJkVANEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_NpXmwFANEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_NpKycFANEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_NpXmwVANEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_O1SAQFANEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_O1FL8FANEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_O1SAQVANEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_QDCz4FANEeeHkO_PSanZTQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_QC1YgFANEeeHkO_PSanZTQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_QDCz4VANEeeHkO_PSanZTQ"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_mlilwFGUEeevz5N4F7hvnQ" type="Operation_ClassOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_mlEEoFGUEeevz5N4F7hvnQ"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_mlilwVGUEeevz5N4F7hvnQ"/> + </children> + <styles xmi:type="notation:TitleStyle" xmi:id="_XbXSSU9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_XbXSSk9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_XbXSS09-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XbXSTE9-Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_XbXSTU9-Eee7Pr5wMBo3JA" type="Class_NestedClassifierCompartment" collapsed="true"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qdb58FALEeeHkO_PSanZTQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qdb58VALEeeHkO_PSanZTQ" key="collapsed" value="true"/> + </eAnnotations> + <styles xmi:type="notation:TitleStyle" xmi:id="_XbXSTk9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_XbXST09-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_XbXSUE9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XbXSUU9-Eee7Pr5wMBo3JA"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_XbVdEE9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XbWrMU9-Eee7Pr5wMBo3JA" x="1051" y="87" width="216" height="524"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_dETQsE9-Eee7Pr5wMBo3JA" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_71wJIlGWEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_71wJI1GWEeevz5N4F7hvnQ" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7_WKAFGWEeevz5N4F7hvnQ" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_dET3wE9-Eee7Pr5wMBo3JA" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_dET3wU9-Eee7Pr5wMBo3JA" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_dET3wk9-Eee7Pr5wMBo3JA" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_dET3w09-Eee7Pr5wMBo3JA" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_dET3xE9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_dET3xU9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_dET3xk9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dET3x09-Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_dET3yE9-Eee7Pr5wMBo3JA" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_dET3yU9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_dET3yk9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_dET3y09-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dET3zE9-Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_dET3zU9-Eee7Pr5wMBo3JA" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_dET3zk9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_dET3z09-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_dET30E9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dET30U9-Eee7Pr5wMBo3JA"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_dESCkE9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dETQsU9-Eee7Pr5wMBo3JA" x="906" y="737"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_nqt1wE9-Eee7Pr5wMBo3JA" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_71wwMFGWEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_71wwMVGWEeevz5N4F7hvnQ" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7_XYIFGWEeevz5N4F7hvnQ" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_nqt1wk9-Eee7Pr5wMBo3JA" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_nqt1w09-Eee7Pr5wMBo3JA" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_nqt1xE9-Eee7Pr5wMBo3JA" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_nqt1xU9-Eee7Pr5wMBo3JA" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_nqt1xk9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_nqt1x09-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_nqt1yE9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nqt1yU9-Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_nqt1yk9-Eee7Pr5wMBo3JA" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_nqt1y09-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_nqt1zE9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_nqt1zU9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nqt1zk9-Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_nqt1z09-Eee7Pr5wMBo3JA" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_nqt10E9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_nqt10U9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_nqt10k9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nqt1009-Eee7Pr5wMBo3JA"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_nqsnoE9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nqt1wU9-Eee7Pr5wMBo3JA" x="1048" y="739"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_q6AcQE9-Eee7Pr5wMBo3JA" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_71wwMlGWEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_71wwM1GWEeevz5N4F7hvnQ" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7_YmQFGWEeevz5N4F7hvnQ" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_q6AcQk9-Eee7Pr5wMBo3JA" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_q6AcQ09-Eee7Pr5wMBo3JA" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_q6AcRE9-Eee7Pr5wMBo3JA" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_q6AcRU9-Eee7Pr5wMBo3JA" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_q6AcRk9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_q6AcR09-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_q6AcSE9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q6AcSU9-Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_q6AcSk9-Eee7Pr5wMBo3JA" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_q6AcS09-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_q6AcTE9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_q6AcTU9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q6AcTk9-Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_q6BDUE9-Eee7Pr5wMBo3JA" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_q6BDUU9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_q6BDUk9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_q6BDU09-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q6BDVE9-Eee7Pr5wMBo3JA"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_q5_OIE9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q6AcQU9-Eee7Pr5wMBo3JA" x="1186" y="738"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_tL4YQE9-Eee7Pr5wMBo3JA" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_71wwNFGWEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_71wwNVGWEeevz5N4F7hvnQ" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7_Z0YFGWEeevz5N4F7hvnQ" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_tL4YQk9-Eee7Pr5wMBo3JA" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_tL4YQ09-Eee7Pr5wMBo3JA" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tL4YRE9-Eee7Pr5wMBo3JA" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_tL4_UE9-Eee7Pr5wMBo3JA" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_tL4_UU9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_tL4_Uk9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_tL4_U09-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tL4_VE9-Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_tL4_VU9-Eee7Pr5wMBo3JA" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_tL4_Vk9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_tL4_V09-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_tL4_WE9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tL4_WU9-Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_tL4_Wk9-Eee7Pr5wMBo3JA" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_tL4_W09-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_tL4_XE9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_tL4_XU9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tL4_Xk9-Eee7Pr5wMBo3JA"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_tL3KIE9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tL4YQU9-Eee7Pr5wMBo3JA" x="1322" y="735"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_9U2m8E9-Eee7Pr5wMBo3JA" type="Interface_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CmWTMFGXEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CmWTMVGXEeevz5N4F7hvnQ" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CtW6IFGXEeevz5N4F7hvnQ" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_9U2m8k9-Eee7Pr5wMBo3JA" type="Interface_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_9U2m809-Eee7Pr5wMBo3JA" type="Interface_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_9U2m9E9-Eee7Pr5wMBo3JA" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_9U3OAE9-Eee7Pr5wMBo3JA" type="Interface_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_9U3OAU9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_9U3OAk9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_9U3OA09-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9U3OBE9-Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_9U3OBU9-Eee7Pr5wMBo3JA" type="Interface_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_9U3OBk9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_9U3OB09-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_9U3OCE9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9U3OCU9-Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_9U3OCk9-Eee7Pr5wMBo3JA" type="Interface_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_9U3OC09-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_9U3ODE9-Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_9U3ODU9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9U3ODk9-Eee7Pr5wMBo3JA"/> + </children> + <element xmi:type="uml:Interface" href="model-jalhyd.uml#_9U0xwE9-Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9U2m8U9-Eee7Pr5wMBo3JA" x="284" y="483" width="137"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_EwaZkE9_Eee7Pr5wMBo3JA" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0tPOUFGWEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0tPOUVGWEeevz5N4F7hvnQ" key="gradient" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1ph3cFGWEeevz5N4F7hvnQ" key="fillColor" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_EwaZkk9_Eee7Pr5wMBo3JA" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_EwaZk09_Eee7Pr5wMBo3JA" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_EwaZlE9_Eee7Pr5wMBo3JA" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_EwaZlU9_Eee7Pr5wMBo3JA" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_EwaZlk9_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_EwaZl09_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_EwaZmE9_Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EwaZmU9_Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_EwaZmk9_Eee7Pr5wMBo3JA" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_EwaZm09_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_EwaZnE9_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_EwaZnU9_Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EwaZnk9_Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_EwbAoE9_Eee7Pr5wMBo3JA" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_EwbAoU9_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_EwbAok9_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_EwbAo09_Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EwbApE9_Eee7Pr5wMBo3JA"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_EwZLcE9_Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EwaZkU9_Eee7Pr5wMBo3JA" x="66" y="702" width="167"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_MCVIAE9_Eee7Pr5wMBo3JA" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yl9_0FGWEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yl9_0VGWEeevz5N4F7hvnQ" key="gradient" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z6pTwFGWEeevz5N4F7hvnQ" key="fillColor" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_MCVIAk9_Eee7Pr5wMBo3JA" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_MCVIA09_Eee7Pr5wMBo3JA" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_MCVIBE9_Eee7Pr5wMBo3JA" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_MCVIBU9_Eee7Pr5wMBo3JA" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_MCVIBk9_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_MCVIB09_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_MCVICE9_Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MCVICU9_Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_MCVICk9_Eee7Pr5wMBo3JA" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_MCVIC09_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_MCVIDE9_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_MCVIDU9_Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MCVIDk9_Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_MCVID09_Eee7Pr5wMBo3JA" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_MCVIEE9_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_MCVIEU9_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_MCVIEk9_Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MCVIE09_Eee7Pr5wMBo3JA"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_MCTS0E9_Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MCVIAU9_Eee7Pr5wMBo3JA" x="262" y="701" width="172"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_QTnXAE9_Eee7Pr5wMBo3JA" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_v5LpcFGWEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_v5LpcVGWEeevz5N4F7hvnQ" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yQ2EYFGWEeevz5N4F7hvnQ" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_QTnXAk9_Eee7Pr5wMBo3JA" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_QTnXA09_Eee7Pr5wMBo3JA" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_QTnXBE9_Eee7Pr5wMBo3JA" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_QTnXBU9_Eee7Pr5wMBo3JA" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_QTnXBk9_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_QTnXB09_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_QTnXCE9_Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QTnXCU9_Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_QTnXCk9_Eee7Pr5wMBo3JA" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_QTnXC09_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_QTnXDE9_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_QTnXDU9_Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QTnXDk9_Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_QTnXD09_Eee7Pr5wMBo3JA" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_QTnXEE9_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_QTnXEU9_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_QTnXEk9_Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QTnXE09_Eee7Pr5wMBo3JA"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_QTmI4E9_Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QTnXAU9_Eee7Pr5wMBo3JA" x="452" y="701" width="132"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_f-D2oE9_Eee7Pr5wMBo3JA" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2vbIgFGWEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2vbIgVGWEeevz5N4F7hvnQ" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_24jPUFGWEeevz5N4F7hvnQ" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_f-D2ok9_Eee7Pr5wMBo3JA" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_f-D2o09_Eee7Pr5wMBo3JA" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_f-D2pE9_Eee7Pr5wMBo3JA" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_f-D2pU9_Eee7Pr5wMBo3JA" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_f-D2pk9_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_f-D2p09_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_f-D2qE9_Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f-D2qU9_Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_f-D2qk9_Eee7Pr5wMBo3JA" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_f-D2q09_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_f-D2rE9_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_f-D2rU9_Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f-D2rk9_Eee7Pr5wMBo3JA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_f-EdsE9_Eee7Pr5wMBo3JA" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_f-EdsU9_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_f-Edsk9_Eee7Pr5wMBo3JA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_f-Eds09_Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f-EdtE9_Eee7Pr5wMBo3JA"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_f-CBcE9_Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f-D2oU9_Eee7Pr5wMBo3JA" x="674" y="879" width="125"/> + </children> + <children xmi:type="notation:Shape" xmi:id="__kiVIE9_EeefHO8U_-Vyow" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2vbvkFGWEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2vbvkVGWEeevz5N4F7hvnQ" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_24lEgFGWEeevz5N4F7hvnQ" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="__kkKUE9_EeefHO8U_-Vyow" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="__kkKUU9_EeefHO8U_-Vyow" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="__kkKUk9_EeefHO8U_-Vyow" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="__kkxYE9_EeefHO8U_-Vyow" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="__kkxYU9_EeefHO8U_-Vyow"/> + <styles xmi:type="notation:SortingStyle" xmi:id="__kkxYk9_EeefHO8U_-Vyow"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="__kkxY09_EeefHO8U_-Vyow"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="__kkxZE9_EeefHO8U_-Vyow"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="__kkxZU9_EeefHO8U_-Vyow" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="__kkxZk9_EeefHO8U_-Vyow"/> + <styles xmi:type="notation:SortingStyle" xmi:id="__kkxZ09_EeefHO8U_-Vyow"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="__kkxaE9_EeefHO8U_-Vyow"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="__kkxaU9_EeefHO8U_-Vyow"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="__kkxak9_EeefHO8U_-Vyow" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="__kkxa09_EeefHO8U_-Vyow"/> + <styles xmi:type="notation:SortingStyle" xmi:id="__kkxbE9_EeefHO8U_-Vyow"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="__kkxbU9_EeefHO8U_-Vyow"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="__kkxbk9_EeefHO8U_-Vyow"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#__j3mwE9_EeefHO8U_-Vyow"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="__kiVIU9_EeefHO8U_-Vyow" x="416" y="1100" width="144"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_HLk_AE-AEeefHO8U_-Vyow" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2vbvklGWEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2vbvk1GWEeevz5N4F7hvnQ" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_24mSoFGWEeevz5N4F7hvnQ" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_HLk_Ak-AEeefHO8U_-Vyow" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_HLk_A0-AEeefHO8U_-Vyow" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_HLk_BE-AEeefHO8U_-Vyow" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_HLk_BU-AEeefHO8U_-Vyow" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_HLk_Bk-AEeefHO8U_-Vyow"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_HLk_B0-AEeefHO8U_-Vyow"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_HLk_CE-AEeefHO8U_-Vyow"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HLk_CU-AEeefHO8U_-Vyow"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_HLlmEE-AEeefHO8U_-Vyow" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_HLlmEU-AEeefHO8U_-Vyow"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_HLlmEk-AEeefHO8U_-Vyow"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_HLlmE0-AEeefHO8U_-Vyow"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HLlmFE-AEeefHO8U_-Vyow"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_HLlmFU-AEeefHO8U_-Vyow" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_HLlmFk-AEeefHO8U_-Vyow"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_HLlmF0-AEeefHO8U_-Vyow"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_HLlmGE-AEeefHO8U_-Vyow"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HLlmGU-AEeefHO8U_-Vyow"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_HLiiwE-AEeefHO8U_-Vyow"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HLk_AU-AEeefHO8U_-Vyow" x="580" y="1096" width="164"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_ITHO0E-AEeefHO8U_-Vyow" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2vbvlFGWEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2vbvlVGWEeevz5N4F7hvnQ" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_24ngwFGWEeevz5N4F7hvnQ" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_ITH14E-AEeefHO8U_-Vyow" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_ITH14U-AEeefHO8U_-Vyow" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_ITH14k-AEeefHO8U_-Vyow" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_ITH140-AEeefHO8U_-Vyow" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_ITH15E-AEeefHO8U_-Vyow"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_ITH15U-AEeefHO8U_-Vyow"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_ITH15k-AEeefHO8U_-Vyow"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ITH150-AEeefHO8U_-Vyow"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_ITH16E-AEeefHO8U_-Vyow" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_ITH16U-AEeefHO8U_-Vyow"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_ITH16k-AEeefHO8U_-Vyow"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_ITH160-AEeefHO8U_-Vyow"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ITH17E-AEeefHO8U_-Vyow"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_ITH17U-AEeefHO8U_-Vyow" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_ITH17k-AEeefHO8U_-Vyow"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_ITH170-AEeefHO8U_-Vyow"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_ITH18E-AEeefHO8U_-Vyow"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ITH18U-AEeefHO8U_-Vyow"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_ITGAsE-AEeefHO8U_-Vyow"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ITHO0U-AEeefHO8U_-Vyow" x="759" y="1094" width="160"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_KjFtYE-AEeefHO8U_-Vyow" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2vbvllGWEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2vbvl1GWEeevz5N4F7hvnQ" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_24ou4FGWEeevz5N4F7hvnQ" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_KjFtYk-AEeefHO8U_-Vyow" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_KjFtY0-AEeefHO8U_-Vyow" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_KjFtZE-AEeefHO8U_-Vyow" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_KjFtZU-AEeefHO8U_-Vyow" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_KjFtZk-AEeefHO8U_-Vyow"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_KjFtZ0-AEeefHO8U_-Vyow"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_KjFtaE-AEeefHO8U_-Vyow"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KjFtaU-AEeefHO8U_-Vyow"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_KjFtak-AEeefHO8U_-Vyow" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_KjFta0-AEeefHO8U_-Vyow"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_KjFtbE-AEeefHO8U_-Vyow"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_KjFtbU-AEeefHO8U_-Vyow"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KjFtbk-AEeefHO8U_-Vyow"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_KjGUcE-AEeefHO8U_-Vyow" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_KjGUcU-AEeefHO8U_-Vyow"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_KjGUck-AEeefHO8U_-Vyow"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_KjGUc0-AEeefHO8U_-Vyow"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KjGUdE-AEeefHO8U_-Vyow"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_KjEfQE-AEeefHO8U_-Vyow"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KjFtYU-AEeefHO8U_-Vyow" x="940" y="1094" width="146"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_pUSMkFDnEeerqLEV-qup4Q" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_71xXQFGWEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_71xXQVGWEeevz5N4F7hvnQ" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7_giEFGWEeevz5N4F7hvnQ" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_pUSzoFDnEeerqLEV-qup4Q" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_pUSzoVDnEeerqLEV-qup4Q" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_pUSzolDnEeerqLEV-qup4Q" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_pUTasFDnEeerqLEV-qup4Q" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_pUTasVDnEeerqLEV-qup4Q"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_pUTaslDnEeerqLEV-qup4Q"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_pUTas1DnEeerqLEV-qup4Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pUTatFDnEeerqLEV-qup4Q"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_pUTatVDnEeerqLEV-qup4Q" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_pUTatlDnEeerqLEV-qup4Q"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_pUTat1DnEeerqLEV-qup4Q"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_pUTauFDnEeerqLEV-qup4Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pUTauVDnEeerqLEV-qup4Q"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_pUTaulDnEeerqLEV-qup4Q" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_pUTau1DnEeerqLEV-qup4Q"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_pUTavFDnEeerqLEV-qup4Q"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_pUTavVDnEeerqLEV-qup4Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pUTavlDnEeerqLEV-qup4Q"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_pUPwUFDnEeerqLEV-qup4Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pUSMkVDnEeerqLEV-qup4Q" x="1657" y="49"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_qznEwFD8EeerqLEV-qup4Q" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_71wwNlGWEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_71wwN1GWEeevz5N4F7hvnQ" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7_bCgFGWEeevz5N4F7hvnQ" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_qznEwlD8EeerqLEV-qup4Q" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_qznr0FD8EeerqLEV-qup4Q" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_qznr0VD8EeerqLEV-qup4Q" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_qznr0lD8EeerqLEV-qup4Q" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_qznr01D8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_qznr1FD8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_qznr1VD8EeerqLEV-qup4Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qznr1lD8EeerqLEV-qup4Q"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_qznr11D8EeerqLEV-qup4Q" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_qznr2FD8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_qznr2VD8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_qznr2lD8EeerqLEV-qup4Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qznr21D8EeerqLEV-qup4Q"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_qznr3FD8EeerqLEV-qup4Q" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_qznr3VD8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_qznr3lD8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_qznr31D8EeerqLEV-qup4Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qznr4FD8EeerqLEV-qup4Q"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_qzl2oFD8EeerqLEV-qup4Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qznEwVD8EeerqLEV-qup4Q" x="1439" y="248" width="123"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_yTIKUFD8EeerqLEV-qup4Q" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_71wwOFGWEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_71wwOVGWEeevz5N4F7hvnQ" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7_cQoFGWEeevz5N4F7hvnQ" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_yTIxYFD8EeerqLEV-qup4Q" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_yTIxYVD8EeerqLEV-qup4Q" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_yTIxYlD8EeerqLEV-qup4Q" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_yTIxY1D8EeerqLEV-qup4Q" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_yTIxZFD8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_yTIxZVD8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_yTIxZlD8EeerqLEV-qup4Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yTIxZ1D8EeerqLEV-qup4Q"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_yTIxaFD8EeerqLEV-qup4Q" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_yTIxaVD8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_yTIxalD8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_yTIxa1D8EeerqLEV-qup4Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yTIxbFD8EeerqLEV-qup4Q"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_yTIxbVD8EeerqLEV-qup4Q" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_yTIxblD8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_yTIxb1D8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_yTIxcFD8EeerqLEV-qup4Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yTIxcVD8EeerqLEV-qup4Q"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_yTG8MFD8EeerqLEV-qup4Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yTIKUVD8EeerqLEV-qup4Q" x="1579" y="248" width="154"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_0eZIAFD8EeerqLEV-qup4Q" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_71wwPFGWEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_71wwPVGWEeevz5N4F7hvnQ" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7_fT8FGWEeevz5N4F7hvnQ" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_0eZIAlD8EeerqLEV-qup4Q" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_0eZIA1D8EeerqLEV-qup4Q" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_0eZIBFD8EeerqLEV-qup4Q" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_0eZIBVD8EeerqLEV-qup4Q" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_0eZIBlD8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_0eZIB1D8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_0eZICFD8EeerqLEV-qup4Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0eZICVD8EeerqLEV-qup4Q"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_0eZIClD8EeerqLEV-qup4Q" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_0eZIC1D8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_0eZIDFD8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_0eZIDVD8EeerqLEV-qup4Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0eZIDlD8EeerqLEV-qup4Q"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_0eZID1D8EeerqLEV-qup4Q" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_0eZIEFD8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_0eZIEVD8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_0eZIElD8EeerqLEV-qup4Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0eZIE1D8EeerqLEV-qup4Q"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_0eXS0FD8EeerqLEV-qup4Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0eZIAVD8EeerqLEV-qup4Q" x="1738" y="246" width="106"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_4kcXYFD8EeerqLEV-qup4Q" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_71wwOlGWEeevz5N4F7hvnQ" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_71wwO1GWEeevz5N4F7hvnQ" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7_dewFGWEeevz5N4F7hvnQ" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_4kcXYlD8EeerqLEV-qup4Q" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_4kcXY1D8EeerqLEV-qup4Q" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_4kcXZFD8EeerqLEV-qup4Q" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_4kcXZVD8EeerqLEV-qup4Q" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_4kcXZlD8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_4kcXZ1D8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_4kcXaFD8EeerqLEV-qup4Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4kcXaVD8EeerqLEV-qup4Q"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_4kcXalD8EeerqLEV-qup4Q" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_4kcXa1D8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_4kcXbFD8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_4kcXbVD8EeerqLEV-qup4Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4kcXblD8EeerqLEV-qup4Q"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_4kcXb1D8EeerqLEV-qup4Q" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_4kcXcFD8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_4kcXcVD8EeerqLEV-qup4Q"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_4kcXclD8EeerqLEV-qup4Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4kcXc1D8EeerqLEV-qup4Q"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_4kbJQFD8EeerqLEV-qup4Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4kcXYVD8EeerqLEV-qup4Q" x="1848" y="244"/> + </children> + <styles xmi:type="notation:StringValueStyle" xmi:id="_tJpZEU99Eee7Pr5wMBo3JA" name="diagram_compatibility_version" stringValue="1.4.0"/> + <styles xmi:type="notation:DiagramStyle" xmi:id="_tJpZEk99Eee7Pr5wMBo3JA"/> + <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_EiBssG4_EeioI6dcHPBwyA" diagramKindId="org.eclipse.papyrus.uml.diagram.class"> + <owner xmi:type="uml:Model" href="model-jalhyd.uml#_tIT8UE99Eee7Pr5wMBo3JA"/> + </styles> + <element xmi:type="uml:Model" href="model-jalhyd.uml#_tIT8UE99Eee7Pr5wMBo3JA"/> + <edges xmi:type="notation:Connector" xmi:id="_Dvin4E9-Eee7Pr5wMBo3JA" type="Generalization_Edge" source="_19UOIE99Eee7Pr5wMBo3JA" target="_v54FAE99Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_Dvj2AE9-Eee7Pr5wMBo3JA" type="Generalization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_E6CFEE9-Eee7Pr5wMBo3JA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Dvj2AU9-Eee7Pr5wMBo3JA" y="38"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_Dvin4U9-Eee7Pr5wMBo3JA"/> + <element xmi:type="uml:Generalization" href="model-jalhyd.uml#_DvVMgE9-Eee7Pr5wMBo3JA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Dvin4k9-Eee7Pr5wMBo3JA" points="[377, 333, -643984, -643984]$[408, 194, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DwLhEE9-Eee7Pr5wMBo3JA" id="(0.6,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DwLhEU9-Eee7Pr5wMBo3JA" id="(0.7753623188405797,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_IYAAwE9-Eee7Pr5wMBo3JA" type="Generalization_Edge" source="_GCDdEE9-Eee7Pr5wMBo3JA" target="_v54FAE99Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_IYAAw09-Eee7Pr5wMBo3JA" type="Generalization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_OUrakE9-Eee7Pr5wMBo3JA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_IYAAxE9-Eee7Pr5wMBo3JA" y="39"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_IYAAwU9-Eee7Pr5wMBo3JA"/> + <element xmi:type="uml:Generalization" href="model-jalhyd.uml#_IX5TEE9-Eee7Pr5wMBo3JA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_IYAAwk9-Eee7Pr5wMBo3JA" points="[511, 332, -643984, -643984]$[445, 194, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IYM1EE9-Eee7Pr5wMBo3JA" id="(0.48863636363636365,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IYM1EU9-Eee7Pr5wMBo3JA" id="(0.2391304347826087,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_MawrkE9-Eee7Pr5wMBo3JA" type="Generalization_Edge" source="_KSvPIE9-Eee7Pr5wMBo3JA" target="_v54FAE99Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_Mawrk09-Eee7Pr5wMBo3JA" type="Generalization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_OUyIQE9-Eee7Pr5wMBo3JA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_MawrlE9-Eee7Pr5wMBo3JA" x="-1" y="38"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_MawrkU9-Eee7Pr5wMBo3JA"/> + <element xmi:type="uml:Generalization" href="model-jalhyd.uml#_ManhoE9-Eee7Pr5wMBo3JA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Mawrkk9-Eee7Pr5wMBo3JA" points="[707, 345, -643984, -643984]$[479, 182, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MbE0oE9-Eee7Pr5wMBo3JA" id="(0.4873417721518987,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MbE0oU9-Eee7Pr5wMBo3JA" id="(0.427536231884058,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_hj1XEE9-Eee7Pr5wMBo3JA" type="Generalization_Edge" source="_dETQsE9-Eee7Pr5wMBo3JA" target="_XbWrME9-Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_hj1XE09-Eee7Pr5wMBo3JA" type="Generalization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_FTc6IFAMEeeHkO_PSanZTQ" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_hj1XFE9-Eee7Pr5wMBo3JA" y="39"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_hj1XEU9-Eee7Pr5wMBo3JA"/> + <element xmi:type="uml:Generalization" href="model-jalhyd.uml#_hjs0ME9-Eee7Pr5wMBo3JA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hj1XEk9-Eee7Pr5wMBo3JA" points="[892, 409, -643984, -643984]$[1016, 193, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hkFOsE9-Eee7Pr5wMBo3JA" id="(0.74,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hkFOsU9-Eee7Pr5wMBo3JA" id="(0.09722222222222222,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_qQrLYE9-Eee7Pr5wMBo3JA" type="Generalization_Edge" source="_nqt1wE9-Eee7Pr5wMBo3JA" target="_XbWrME9-Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_qQrycE9-Eee7Pr5wMBo3JA" type="Generalization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_FTq8kFAMEeeHkO_PSanZTQ" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_qQrycU9-Eee7Pr5wMBo3JA" y="38"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_qQrLYU9-Eee7Pr5wMBo3JA"/> + <element xmi:type="uml:Generalization" href="model-jalhyd.uml#_qQiogE9-Eee7Pr5wMBo3JA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qQrLYk9-Eee7Pr5wMBo3JA" points="[1032, 422, -643984, -643984]$[1045, 193, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qQ7qEE9-Eee7Pr5wMBo3JA" id="(0.44,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qQ7qEU9-Eee7Pr5wMBo3JA" id="(0.375,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_sZ0pME9-Eee7Pr5wMBo3JA" type="Generalization_Edge" source="_q6AcQE9-Eee7Pr5wMBo3JA" target="_XbWrME9-Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_sZ0pM09-Eee7Pr5wMBo3JA" type="Generalization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_FT4X8FAMEeeHkO_PSanZTQ" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_sZ0pNE9-Eee7Pr5wMBo3JA" y="39"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_sZ0pMU9-Eee7Pr5wMBo3JA"/> + <element xmi:type="uml:Generalization" href="model-jalhyd.uml#_sZsGUE9-Eee7Pr5wMBo3JA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_sZ0pMk9-Eee7Pr5wMBo3JA" points="[1149, 365, -643984, -643984]$[1072, 193, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_saIyQE9-Eee7Pr5wMBo3JA" id="(0.22,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_saIyQU9-Eee7Pr5wMBo3JA" id="(0.6157407407407407,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_vF_UgE9-Eee7Pr5wMBo3JA" type="Generalization_Edge" source="_tL4YQE9-Eee7Pr5wMBo3JA" target="_XbWrME9-Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_vF_Ug09-Eee7Pr5wMBo3JA" type="Generalization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_FUGaYFAMEeeHkO_PSanZTQ" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_vF_UhE9-Eee7Pr5wMBo3JA" x="-1" y="38"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_vF_UgU9-Eee7Pr5wMBo3JA"/> + <element xmi:type="uml:Generalization" href="model-jalhyd.uml#_vFzuUE9-Eee7Pr5wMBo3JA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vF_Ugk9-Eee7Pr5wMBo3JA" points="[1257, 362, -643984, -643984]$[1100, 193, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vGRoYE9-Eee7Pr5wMBo3JA" id="(0.38,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vGRoYU9-Eee7Pr5wMBo3JA" id="(0.875,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_Iq55ME9_Eee7Pr5wMBo3JA" type="Realization_Edge" source="_EwaZkE9_Eee7Pr5wMBo3JA" target="_9U2m8E9-Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_Iq6gQE9_Eee7Pr5wMBo3JA" type="Realization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Ky7acFGUEeevz5N4F7hvnQ" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Iq6gQU9_Eee7Pr5wMBo3JA" y="38"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_Iq6gQk9_Eee7Pr5wMBo3JA" type="Realization_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_KzhQUFGUEeevz5N4F7hvnQ" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Iq6gQ09_Eee7Pr5wMBo3JA" y="59"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_Iq55MU9_Eee7Pr5wMBo3JA"/> + <element xmi:type="uml:Realization" href="model-jalhyd.uml#_Iq4EAE9_Eee7Pr5wMBo3JA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Iq55Mk9_Eee7Pr5wMBo3JA" points="[225, 702, -643984, -643984]$[299, 586, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IrSTsE9_Eee7Pr5wMBo3JA" id="(0.7305389221556886,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IrSTsU9_Eee7Pr5wMBo3JA" id="(0.145985401459854,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_M0jPIE9_Eee7Pr5wMBo3JA" type="Realization_Edge" source="_MCVIAE9_Eee7Pr5wMBo3JA" target="_9U2m8E9-Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_M0jPI09_Eee7Pr5wMBo3JA" type="Realization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LIqZ4FGUEeevz5N4F7hvnQ" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_M0jPJE9_Eee7Pr5wMBo3JA" y="39"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_M0jPJU9_Eee7Pr5wMBo3JA" type="Realization_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LJtiwFGUEeevz5N4F7hvnQ" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_M0jPJk9_Eee7Pr5wMBo3JA" y="59"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_M0jPIU9_Eee7Pr5wMBo3JA"/> + <element xmi:type="uml:Realization" href="model-jalhyd.uml#_M0iBAE9_Eee7Pr5wMBo3JA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_M0jPIk9_Eee7Pr5wMBo3JA" points="[412, 689, -643984, -643984]$[351, 586, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_M05NYE9_Eee7Pr5wMBo3JA" id="(0.5465116279069767,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_M05NYU9_Eee7Pr5wMBo3JA" id="(0.5255474452554745,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_Q-OaQE9_Eee7Pr5wMBo3JA" type="Realization_Edge" source="_QTnXAE9_Eee7Pr5wMBo3JA" target="_9U2m8E9-Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_Q-PBUU9_Eee7Pr5wMBo3JA" type="Realization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Rd5_4E9_Eee7Pr5wMBo3JA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Q-PBUk9_Eee7Pr5wMBo3JA" x="-1" y="38"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_Q-PBU09_Eee7Pr5wMBo3JA" type="Realization_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_ReEX8E9_Eee7Pr5wMBo3JA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Q-PBVE9_Eee7Pr5wMBo3JA" x="-1" y="58"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_Q-OaQU9_Eee7Pr5wMBo3JA"/> + <element xmi:type="uml:Realization" href="model-jalhyd.uml#_Q-NMIE9_Eee7Pr5wMBo3JA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Q-PBUE9_Eee7Pr5wMBo3JA" points="[556, 665, -643984, -643984]$[406, 560, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Q-k_kE9_Eee7Pr5wMBo3JA" id="(0.2727272727272727,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Q-k_kU9_Eee7Pr5wMBo3JA" id="(0.7591240875912408,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_ke6ysE9_Eee7Pr5wMBo3JA" type="Generalization_Edge" source="_f-D2oE9_Eee7Pr5wMBo3JA" target="_QTnXAE9_Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_ke6ys09_Eee7Pr5wMBo3JA" type="Generalization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_IF58IFDnEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_ke6ytE9_Eee7Pr5wMBo3JA" y="40"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_ke6ysU9_Eee7Pr5wMBo3JA"/> + <element xmi:type="uml:Generalization" href="model-jalhyd.uml#_kevMgE9_Eee7Pr5wMBo3JA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ke6ysk9_Eee7Pr5wMBo3JA" points="[674, 924, -643984, -643984]$[522, 924, -643984, -643984]$[522, 800, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kfSmIE9_Eee7Pr5wMBo3JA" id="(0.0,0.45)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kfSmIU9_Eee7Pr5wMBo3JA" id="(0.5303030303030303,0.99)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_N-jusE-AEeefHO8U_-Vyow" type="Generalization_Edge" source="__kiVIE9_EeefHO8U_-Vyow" target="_f-D2oE9_Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_N-kVwk-AEeefHO8U_-Vyow" type="Generalization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Q7oj0E-AEeefHO8U_-Vyow" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_N-kVw0-AEeefHO8U_-Vyow" x="1" y="38"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_N-kVwE-AEeefHO8U_-Vyow"/> + <element xmi:type="uml:Generalization" href="model-jalhyd.uml#_N-SB4E-AEeefHO8U_-Vyow"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_N-kVwU-AEeefHO8U_-Vyow" points="[506, 1022, -643984, -643984]$[531, 964, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_N_KysE-AEeefHO8U_-Vyow" id="(0.7291666666666666,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_N_KysU-AEeefHO8U_-Vyow" id="(0.152,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_OyyoAE-AEeefHO8U_-Vyow" type="Generalization_Edge" source="_HLk_AE-AEeefHO8U_-Vyow" target="_f-D2oE9_Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_OyyoA0-AEeefHO8U_-Vyow" type="Generalization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_QfQJ0E-AEeefHO8U_-Vyow" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_OyyoBE-AEeefHO8U_-Vyow" x="-1" y="38"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_OyyoAU-AEeefHO8U_-Vyow"/> + <element xmi:type="uml:Generalization" href="model-jalhyd.uml#_OyhiQE-AEeefHO8U_-Vyow"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OyyoAk-AEeefHO8U_-Vyow" points="[668, 1024, -643984, -643984]$[629, 964, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OzS-UE-AEeefHO8U_-Vyow" id="(0.45121951219512196,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OzS-UU-AEeefHO8U_-Vyow" id="(0.304,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_PKUXME-AEeefHO8U_-Vyow" type="Generalization_Edge" source="_ITHO0E-AEeefHO8U_-Vyow" target="_f-D2oE9_Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_PKUXM0-AEeefHO8U_-Vyow" type="Generalization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_RpGGwE-AEeefHO8U_-Vyow" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_PKUXNE-AEeefHO8U_-Vyow" x="-1" y="38"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_PKUXMU-AEeefHO8U_-Vyow"/> + <element xmi:type="uml:Generalization" href="model-jalhyd.uml#_PKD4gE-AEeefHO8U_-Vyow"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PKUXMk-AEeefHO8U_-Vyow" points="[810, 1023, -643984, -643984]$[637, 928, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PKyRQE-AEeefHO8U_-Vyow" id="(0.425,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PKyRQU-AEeefHO8U_-Vyow" id="(0.568,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_PmfV0E-AEeefHO8U_-Vyow" type="Generalization_Edge" source="_KjFtYE-AEeefHO8U_-Vyow" target="_f-D2oE9_Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_PmfV00-AEeefHO8U_-Vyow" type="Generalization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_R5470E-AEeefHO8U_-Vyow" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_PmfV1E-AEeefHO8U_-Vyow" x="-1" y="38"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_PmfV0U-AEeefHO8U_-Vyow"/> + <element xmi:type="uml:Generalization" href="model-jalhyd.uml#_PmQsUE-AEeefHO8U_-Vyow"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PmfV0k-AEeefHO8U_-Vyow" points="[978, 1034, -643984, -643984]$[637, 891, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Pm_FEE-AEeefHO8U_-Vyow" id="(0.3767123287671233,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Pm_FEU-AEeefHO8U_-Vyow" id="(0.84,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_BoJWME-BEeefHO8U_-Vyow" type="Association_Edge" source="_9U2m8E9-Eee7Pr5wMBo3JA" target="_v54FAE99Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_BoJ9QE-BEeefHO8U_-Vyow" type="Association_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_CfKdwE-BEeefHO8U_-Vyow" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_BoJ9QU-BEeefHO8U_-Vyow" x="-1" y="-18"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_BoJ9Qk-BEeefHO8U_-Vyow" type="Association_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_CfaVYE-BEeefHO8U_-Vyow" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_BoJ9Q0-BEeefHO8U_-Vyow" y="19"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_BoJ9RE-BEeefHO8U_-Vyow" type="Association_TargetRoleLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_CfqNAE-BEeefHO8U_-Vyow" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_BoJ9RU-BEeefHO8U_-Vyow" x="61" y="-21"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_BoJ9Rk-BEeefHO8U_-Vyow" type="Association_SourceRoleLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Cf3oYE-BEeefHO8U_-Vyow" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_BoJ9R0-BEeefHO8U_-Vyow" x="-42" y="18"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_BoJ9SE-BEeefHO8U_-Vyow" type="Association_SourceMultiplicityLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_CgHgAE-BEeefHO8U_-Vyow" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_BoJ9SU-BEeefHO8U_-Vyow" x="23" y="17"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_BoJ9Sk-BEeefHO8U_-Vyow" type="Association_TargetMultiplicityLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_CgUUUE-BEeefHO8U_-Vyow" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_BoJ9S0-BEeefHO8U_-Vyow" x="-43" y="-24"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_BoJWMU-BEeefHO8U_-Vyow"/> + <element xmi:type="uml:Association" href="model-jalhyd.uml#_BnwUoE-BEeefHO8U_-Vyow"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BoJWMk-BEeefHO8U_-Vyow" points="[284, 520, -643984, -643984]$[28, 520, -643984, -643984]$[28, 90, -643984, -643984]$[290, 90, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BpAR0E-BEeefHO8U_-Vyow" id="(0.0,0.3592233009708738)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BpAR0U-BEeefHO8U_-Vyow" id="(0.0,0.3680555555555556)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_ZsNYcFALEeeHkO_PSanZTQ" type="Association_Edge" source="_XbWrME9-Eee7Pr5wMBo3JA" target="_f-D2oE9_Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_ZsOmkFALEeeHkO_PSanZTQ" type="Association_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_ai7lEFALEeeHkO_PSanZTQ" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_ZsOmkVALEeeHkO_PSanZTQ" x="13" y="-182"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_ZsPNoFALEeeHkO_PSanZTQ" type="Association_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_ajPHEFALEeeHkO_PSanZTQ" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_ZsPNoVALEeeHkO_PSanZTQ" x="12" y="-145"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_ZsPNolALEeeHkO_PSanZTQ" type="Association_TargetRoleLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_ajkeQFALEeeHkO_PSanZTQ" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_ZsPNo1ALEeeHkO_PSanZTQ" x="-134" y="7"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_ZsPNpFALEeeHkO_PSanZTQ" type="Association_SourceRoleLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_aj4AQFALEeeHkO_PSanZTQ" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_ZsPNpVALEeeHkO_PSanZTQ" x="-25" y="-26"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_ZsPNplALEeeHkO_PSanZTQ" type="Association_SourceMultiplicityLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_akLiQFALEeeHkO_PSanZTQ" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_ZsPNp1ALEeeHkO_PSanZTQ" x="-135" y="-34"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_ZsPNqFALEeeHkO_PSanZTQ" type="Association_TargetMultiplicityLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_akfEQFALEeeHkO_PSanZTQ" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_ZsPNqVALEeeHkO_PSanZTQ" x="-26" y="25"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_ZsNYcVALEeeHkO_PSanZTQ"/> + <element xmi:type="uml:Association" href="model-jalhyd.uml#_ZrveYFALEeeHkO_PSanZTQ"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZsNYclALEeeHkO_PSanZTQ" points="[1050, 528, -643984, -643984]$[748, 528, -643984, -643984]$[748, 878, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZtFiMFALEeeHkO_PSanZTQ" id="(0.0,0.8416030534351145)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZtFiMVALEeeHkO_PSanZTQ" id="(0.592,0.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_-z2z4FDkEeerqLEV-qup4Q" type="Association_Edge" source="_19UOIE99Eee7Pr5wMBo3JA" target="_XbWrME9-Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_-z4CAFDkEeerqLEV-qup4Q" type="Association_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AJ4LoFDlEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_-z4CAVDkEeerqLEV-qup4Q" x="-115" y="-22"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_-z4CAlDkEeerqLEV-qup4Q" type="Association_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AKSbUFDlEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_-z4CA1DkEeerqLEV-qup4Q" x="119" y="-1"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_-z4CBFDkEeerqLEV-qup4Q" type="Association_TargetRoleLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AKpnsFDlEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_-z4CBVDkEeerqLEV-qup4Q" x="10" y="-21"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_-z4CBlDkEeerqLEV-qup4Q" type="Association_SourceRoleLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AK_l8FDlEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_-z4CB1DkEeerqLEV-qup4Q" x="120" y="-14"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_-z4pEFDkEeerqLEV-qup4Q" type="Association_SourceMultiplicityLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_ALWyUFDlEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_-z4pEVDkEeerqLEV-qup4Q" x="11" y="21"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_-z4pElDkEeerqLEV-qup4Q" type="Association_TargetMultiplicityLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_ALswkFDlEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_-z4pE1DkEeerqLEV-qup4Q" x="136" y="38"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_-z2z4VDkEeerqLEV-qup4Q"/> + <element xmi:type="uml:Association" href="model-jalhyd.uml#_-xrpoFDkEeerqLEV-qup4Q"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-z2z4lDkEeerqLEV-qup4Q" points="[637, 375, -643984, -643984]$[886, 280, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-1HYIFDkEeerqLEV-qup4Q" id="(0.9878787878787879,0.44642857142857145)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-1HYIVDkEeerqLEV-qup4Q" id="(0.0,0.5591603053435115)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_wYg3wFD8EeerqLEV-qup4Q" type="Generalization_Edge" source="_qznEwFD8EeerqLEV-qup4Q" target="_pUSMkFDnEeerqLEV-qup4Q"> + <children xmi:type="notation:DecorationNode" xmi:id="_wYg3w1D8EeerqLEV-qup4Q" type="Generalization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_wuoRsFD8EeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_wYg3xFD8EeerqLEV-qup4Q" y="38"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_wYg3wVD8EeerqLEV-qup4Q"/> + <element xmi:type="uml:Generalization" href="model-jalhyd.uml#_wYNVwFD8EeerqLEV-qup4Q"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wYg3wlD8EeerqLEV-qup4Q" points="[1345, 822, -643984, -643984]$[1376, 767, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wZFfgFD8EeerqLEV-qup4Q" id="(0.5789473684210527,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wZFfgVD8EeerqLEV-qup4Q" id="(0.18333333333333332,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_9vFQQFD8EeerqLEV-qup4Q" type="Generalization_Edge" source="_yTIKUFD8EeerqLEV-qup4Q" target="_pUSMkFDnEeerqLEV-qup4Q"> + <children xmi:type="notation:DecorationNode" xmi:id="_9vF3UFD8EeerqLEV-qup4Q" type="Generalization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="__zpJAFD8EeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_9vF3UVD8EeerqLEV-qup4Q" x="-1" y="38"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_9vFQQVD8EeerqLEV-qup4Q"/> + <element xmi:type="uml:Generalization" href="model-jalhyd.uml#_9u0KgFD8EeerqLEV-qup4Q"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9vFQQlD8EeerqLEV-qup4Q" points="[1442, 830, -643984, -643984]$[1434, 765, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9vop4FD8EeerqLEV-qup4Q" id="(0.5684931506849316,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9vop4VD8EeerqLEV-qup4Q" id="(0.33,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_-j6mgFD8EeerqLEV-qup4Q" type="Generalization_Edge" source="_0eZIAFD8EeerqLEV-qup4Q" target="_pUSMkFDnEeerqLEV-qup4Q"> + <children xmi:type="notation:DecorationNode" xmi:id="_-j6mg1D8EeerqLEV-qup4Q" type="Generalization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="__z610FD8EeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_-j6mhFD8EeerqLEV-qup4Q" x="-1" y="38"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_-j6mgVD8EeerqLEV-qup4Q"/> + <element xmi:type="uml:Generalization" href="model-jalhyd.uml#_-jpgwFD8EeerqLEV-qup4Q"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-j6mglD8EeerqLEV-qup4Q" points="[1550, 834, -643984, -643984]$[1430, 765, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-kgcYFD8EeerqLEV-qup4Q" id="(0.21,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-kgcYVD8EeerqLEV-qup4Q" id="(0.55,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="__Gr8YFD8EeerqLEV-qup4Q" type="Generalization_Edge" source="_4kcXYFD8EeerqLEV-qup4Q" target="_pUSMkFDnEeerqLEV-qup4Q"> + <children xmi:type="notation:DecorationNode" xmi:id="__Gr8Y1D8EeerqLEV-qup4Q" type="Generalization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="__0KtcFD8EeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="__Gr8ZFD8EeerqLEV-qup4Q" x="-1" y="38"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="__Gr8YVD8EeerqLEV-qup4Q"/> + <element xmi:type="uml:Generalization" href="model-jalhyd.uml#__Ga2oFD8EeerqLEV-qup4Q"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__Gr8YlD8EeerqLEV-qup4Q" points="[1671, 829, -643984, -643984]$[1454, 757, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__HOu8FD8EeerqLEV-qup4Q" id="(0.0,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__HOu8VD8EeerqLEV-qup4Q" id="(0.81,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_nkcgcFEEEeerqLEV-qup4Q" type="Association_Edge" source="_qznEwFD8EeerqLEV-qup4Q" target="_XbWrME9-Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_nkcgc1EEEeerqLEV-qup4Q" type="Association_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_sSWaAFEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_nkcgdFEEEeerqLEV-qup4Q" x="-1" y="-18"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_nkcgdVEEEeerqLEV-qup4Q" type="Association_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_sSot4FEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_nkcgdlEEEeerqLEV-qup4Q" x="24" y="11"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_nkcgd1EEEeerqLEV-qup4Q" type="Association_TargetRoleLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_sS5MkFEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_nkcgeFEEEeerqLEV-qup4Q" x="31" y="-18"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_nkcgeVEEEeerqLEV-qup4Q" type="Association_SourceRoleLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_sTKSUFEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_nkcgelEEEeerqLEV-qup4Q" x="-15" y="25"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_nkcge1EEEeerqLEV-qup4Q" type="Association_SourceMultiplicityLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_sTb_IFEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_nkcgfFEEEeerqLEV-qup4Q" x="30" y="27"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_nkcgfVEEEeerqLEV-qup4Q" type="Association_TargetMultiplicityLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_sTtr8FEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_nkcgflEEEeerqLEV-qup4Q" x="-17" y="-17"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_nkcgcVEEEeerqLEV-qup4Q"/> + <element xmi:type="uml:Association" href="model-jalhyd.uml#_nkJlgFEEEeerqLEV-qup4Q"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nkcgclEEEeerqLEV-qup4Q" points="[1446, 367, -643984, -643984]$[1210, 382, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nlCWUFEEEeerqLEV-qup4Q" id="(0.0,0.56)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nlCWUVEEEeerqLEV-qup4Q" id="(1.0,0.41412213740458015)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_tXSBwFEEEeerqLEV-qup4Q" type="Association_Edge" source="_yTIKUFD8EeerqLEV-qup4Q" target="_XbWrME9-Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_tXSBw1EEEeerqLEV-qup4Q" type="Association_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_tv4H8FEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tXSo0FEEEeerqLEV-qup4Q" x="64" y="-23"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_tXSo0VEEEeerqLEV-qup4Q" type="Association_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_twMRAFEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tXSo0lEEEeerqLEV-qup4Q" x="94" y="7"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_tXSo01EEEeerqLEV-qup4Q" type="Association_TargetRoleLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_twdWwFEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tXSo1FEEEeerqLEV-qup4Q" x="10" y="-19"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_tXSo1VEEEeerqLEV-qup4Q" type="Association_SourceRoleLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_twvDkFEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tXSo1lEEEeerqLEV-qup4Q" x="-25" y="11"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_tXSo11EEEeerqLEV-qup4Q" type="Association_SourceMultiplicityLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_tw_iQFEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tXSo2FEEEeerqLEV-qup4Q" x="15" y="29"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_tXSo2VEEEeerqLEV-qup4Q" type="Association_TargetMultiplicityLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_txR2IFEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tXSo2lEEEeerqLEV-qup4Q" x="-30" y="-8"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_tXSBwVEEEeerqLEV-qup4Q"/> + <element xmi:type="uml:Association" href="model-jalhyd.uml#_tW8DgFEEEeerqLEV-qup4Q"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tXSBwlEEEeerqLEV-qup4Q" points="[1652, 348, -643984, -643984]$[1652, 408, -643984, -643984]$[1266, 408, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tX4esFEEEeerqLEV-qup4Q" id="(0.474025974025974,1.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tX4esVEEEeerqLEV-qup4Q" id="(0.9907407407407407,0.6125954198473282)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_3GBX8FEEEeerqLEV-qup4Q" type="Association_Edge" source="_0eZIAFD8EeerqLEV-qup4Q" target="_XbWrME9-Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_3GBX81EEEeerqLEV-qup4Q" type="Association_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_3hM4EFEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_3GBX9FEEEeerqLEV-qup4Q" x="64" y="-24"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_3GBX9VEEEeerqLEV-qup4Q" type="Association_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_3hdWwFEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_3GBX9lEEEeerqLEV-qup4Q" x="87" y="11"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_3GBX91EEEeerqLEV-qup4Q" type="Association_TargetRoleLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_3hwRsFEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_3GBX-FEEEeerqLEV-qup4Q" x="22" y="-12"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_3GBX-VEEEeerqLEV-qup4Q" type="Association_SourceRoleLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_3iAJUFEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_3GBX-lEEEeerqLEV-qup4Q" x="-22" y="8"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_3GB_AFEEEeerqLEV-qup4Q" type="Association_SourceMultiplicityLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_3iRPEFEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_3GB_AVEEEeerqLEV-qup4Q" x="17" y="27"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_3GB_AlEEEeerqLEV-qup4Q" type="Association_TargetMultiplicityLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_3iiU0FEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_3GB_A1EEEeerqLEV-qup4Q" x="-25" y="-9"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_3GBX8VEEEeerqLEV-qup4Q"/> + <element xmi:type="uml:Association" href="model-jalhyd.uml#_3FudAFEEEeerqLEV-qup4Q"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3GBX8lEEEeerqLEV-qup4Q" points="[1804, 345, -643984, -643984]$[1804, 466, -643984, -643984]$[1266, 465, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3GmmwFEEEeerqLEV-qup4Q" id="(0.6226415094339622,0.98)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3GmmwVEEEeerqLEV-qup4Q" id="(0.9907407407407407,0.7194656488549618)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_85FiwFEEEeerqLEV-qup4Q" type="Association_Edge" source="_4kcXYFD8EeerqLEV-qup4Q" target="_XbWrME9-Eee7Pr5wMBo3JA"> + <children xmi:type="notation:DecorationNode" xmi:id="_85GJ0FEEEeerqLEV-qup4Q" type="Association_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_-ApAsFEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_85GJ0VEEEeerqLEV-qup4Q" x="64" y="-23"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_85GJ0lEEEeerqLEV-qup4Q" type="Association_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_-A6tgFEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_85GJ01EEEeerqLEV-qup4Q" x="63" y="11"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_85GJ1FEEEeerqLEV-qup4Q" type="Association_TargetRoleLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_-BMaUFEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_85GJ1VEEEeerqLEV-qup4Q" x="37" y="-10"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_85GJ1lEEEeerqLEV-qup4Q" type="Association_SourceRoleLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_-BeuMFEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_85GJ11EEEeerqLEV-qup4Q" x="-22" y="19"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_85GJ2FEEEeerqLEV-qup4Q" type="Association_SourceMultiplicityLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_-Bvz8FEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_85GJ2VEEEeerqLEV-qup4Q" x="35" y="27"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_85GJ2lEEEeerqLEV-qup4Q" type="Association_TargetMultiplicityLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_-CA5sFEEEeerqLEV-qup4Q" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_85GJ21EEEeerqLEV-qup4Q" x="-29" y="-16"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_85FiwVEEEeerqLEV-qup4Q"/> + <element xmi:type="uml:Association" href="model-jalhyd.uml#_84yn0FEEEeerqLEV-qup4Q"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_85FiwlEEEeerqLEV-qup4Q" points="[1904, 344, -643984, -643984]$[1904, 546, -643984, -643984]$[1266, 553, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_85rYoFEEEeerqLEV-qup4Q" id="(0.56,1.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_85rYoVEEEeerqLEV-qup4Q" id="(0.9907407407407407,0.8740458015267175)"/> + </edges> + </notation:Diagram> + <notation:Diagram xmi:id="_R0gPYG4_EeioI6dcHPBwyA" type="PapyrusUMLClassDiagram" name="Object Reference Class Diagram" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_WQc2QG4_EeioI6dcHPBwyA" type="Interface_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qJTrgG5JEeioI6dcHPBwyA" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qJTrgW5JEeioI6dcHPBwyA" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qOAlUG5JEeioI6dcHPBwyA" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_WQeEYG4_EeioI6dcHPBwyA" type="Interface_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_WQeEYW4_EeioI6dcHPBwyA" type="Interface_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_WQeEYm4_EeioI6dcHPBwyA" y="15"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_WQercG4_EeioI6dcHPBwyA" type="Interface_AttributeCompartment"> + <children xmi:type="notation:Shape" xmi:id="_4gHSoG5BEeioI6dcHPBwyA" type="Property_InterfaceAttributeLabel"> + <element xmi:type="uml:Property" href="model-jalhyd.uml#_4gDoQG5BEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_4gHSoW5BEeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_jA7-0G5CEeioI6dcHPBwyA" type="Property_InterfaceAttributeLabel"> + <element xmi:type="uml:Property" href="model-jalhyd.uml#_jA2fQG5CEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_jA7-0W5CEeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_tjleMG5CEeioI6dcHPBwyA" type="Property_InterfaceAttributeLabel"> + <element xmi:type="uml:Property" href="model-jalhyd.uml#_tjhMwG5CEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tjleMW5CEeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_yOhjUG5CEeioI6dcHPBwyA" type="Property_InterfaceAttributeLabel"> + <element xmi:type="uml:Property" href="model-jalhyd.uml#_yOdR4G5CEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_yOhjUW5CEeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_2QBp4G5CEeioI6dcHPBwyA" type="Property_InterfaceAttributeLabel"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lQbRAG5JEeioI6dcHPBwyA" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lQbRAW5JEeioI6dcHPBwyA" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lXCPUG5JEeioI6dcHPBwyA" key="gradient" value="true"/> + </eAnnotations> + <element xmi:type="uml:Property" href="model-jalhyd.uml#_2P8KUG5CEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_2QBp4W5CEeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_6tbCQG5CEeioI6dcHPBwyA" type="Property_InterfaceAttributeLabel"> + <element xmi:type="uml:Property" href="model-jalhyd.uml#_6tSfYG5CEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_6tbCQW5CEeioI6dcHPBwyA"/> + </children> + <styles xmi:type="notation:TitleStyle" xmi:id="_WQercW4_EeioI6dcHPBwyA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_WQercm4_EeioI6dcHPBwyA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_WQerc24_EeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WQerdG4_EeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_WQerdW4_EeioI6dcHPBwyA" type="Interface_OperationCompartment"> + <children xmi:type="notation:Shape" xmi:id="_d81TIG4_EeioI6dcHPBwyA" type="Operation_InterfaceOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_d8t-YG4_EeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_d81TIW4_EeioI6dcHPBwyA"/> + </children> + <styles xmi:type="notation:TitleStyle" xmi:id="_WQerdm4_EeioI6dcHPBwyA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_WQerd24_EeioI6dcHPBwyA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_WQereG4_EeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WQereW4_EeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_WQerem4_EeioI6dcHPBwyA" type="Interface_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_WQere24_EeioI6dcHPBwyA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_WQerfG4_EeioI6dcHPBwyA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_WQerfW4_EeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WQerfm4_EeioI6dcHPBwyA"/> + </children> + <element xmi:type="uml:Interface" href="model-jalhyd.uml#_WQX9wG4_EeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WQc2QW4_EeioI6dcHPBwyA" x="16" y="40" width="409" height="201"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_rF23gG5CEeioI6dcHPBwyA" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pFLVAG5JEeioI6dcHPBwyA" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pFNKMG5JEeioI6dcHPBwyA" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pN5MIG5JEeioI6dcHPBwyA" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_rF23gm5CEeioI6dcHPBwyA" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_rF23g25CEeioI6dcHPBwyA" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_rF23hG5CEeioI6dcHPBwyA" y="15"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_rF23hW5CEeioI6dcHPBwyA" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_rF23hm5CEeioI6dcHPBwyA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_rF23h25CEeioI6dcHPBwyA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_rF23iG5CEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rF23iW5CEeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_rF23im5CEeioI6dcHPBwyA" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_rF23i25CEeioI6dcHPBwyA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_rF23jG5CEeioI6dcHPBwyA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_rF23jW5CEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rF23jm5CEeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_rF23j25CEeioI6dcHPBwyA" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_rF23kG5CEeioI6dcHPBwyA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_rF23kW5CEeioI6dcHPBwyA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_rF23km5CEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rF23k25CEeioI6dcHPBwyA"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_rF1CUG5CEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rF23gW5CEeioI6dcHPBwyA" x="540" y="20" width="141"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_zJwcgG5CEeioI6dcHPBwyA" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ob4gYG5JEeioI6dcHPBwyA" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ob4gYW5JEeioI6dcHPBwyA" key="gradient" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_onbCAG5JEeioI6dcHPBwyA" key="fillColor" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_zJxDkG5CEeioI6dcHPBwyA" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_zJxDkW5CEeioI6dcHPBwyA" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_zJxqoG5CEeioI6dcHPBwyA" y="15"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_zJxqoW5CEeioI6dcHPBwyA" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_zJxqom5CEeioI6dcHPBwyA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_zJxqo25CEeioI6dcHPBwyA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_zJxqpG5CEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zJxqpW5CEeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_zJxqpm5CEeioI6dcHPBwyA" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_zJxqp25CEeioI6dcHPBwyA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_zJxqqG5CEeioI6dcHPBwyA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_zJxqqW5CEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zJxqqm5CEeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_zJxqq25CEeioI6dcHPBwyA" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_zJxqrG5CEeioI6dcHPBwyA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_zJxqrW5CEeioI6dcHPBwyA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_zJxqrm5CEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zJxqr25CEeioI6dcHPBwyA"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_zJvOYG5CEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zJwcgW5CEeioI6dcHPBwyA" x="540" y="280" width="141"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_f43lMG5DEeioI6dcHPBwyA" type="Interface_Shape" transparency="0"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cxadUG5JEeioI6dcHPBwyA" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cxadUW5JEeioI6dcHPBwyA" key="gradient" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eY9p8G5JEeioI6dcHPBwyA" key="fillColor" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_f43lMm5DEeioI6dcHPBwyA" type="Interface_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_f44MQG5DEeioI6dcHPBwyA" type="Interface_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_f44MQW5DEeioI6dcHPBwyA" y="15"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_f44MQm5DEeioI6dcHPBwyA" type="Interface_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_f44MQ25DEeioI6dcHPBwyA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_f44MRG5DEeioI6dcHPBwyA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_f44MRW5DEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f44MRm5DEeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_f46BcG5DEeioI6dcHPBwyA" type="Interface_OperationCompartment"> + <children xmi:type="notation:Shape" xmi:id="_9fuVUG5DEeioI6dcHPBwyA" type="Operation_InterfaceOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_9fmZgG5DEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_9fuVUW5DEeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_ICLAYG5EEeioI6dcHPBwyA" type="Operation_InterfaceOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_ICESsG5EEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_ICLAYW5EEeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_OH8EwG5EEeioI6dcHPBwyA" type="Operation_InterfaceOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_OH1-IG5EEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_OH8EwW5EEeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_Q6ed0G5EEeioI6dcHPBwyA" type="Operation_InterfaceOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_Q6XwIG5EEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Q6ed0W5EEeioI6dcHPBwyA"/> + </children> + <styles xmi:type="notation:TitleStyle" xmi:id="_f46BcW5DEeioI6dcHPBwyA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_f46Bcm5DEeioI6dcHPBwyA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_f46Bc25DEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f46BdG5DEeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_f46BdW5DEeioI6dcHPBwyA" type="Interface_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_f46Bdm5DEeioI6dcHPBwyA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_f46Bd25DEeioI6dcHPBwyA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_f46BeG5DEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f46BeW5DEeioI6dcHPBwyA"/> + </children> + <element xmi:type="uml:Interface" href="model-jalhyd.uml#_f42XEG5DEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f43lMW5DEeioI6dcHPBwyA" x="60" y="360" width="281"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_XC1jMG5EEeioI6dcHPBwyA" type="Class_Shape" transparency="0"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iByKwG5JEeioI6dcHPBwyA" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iByx0G5JEeioI6dcHPBwyA" key="gradient" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_i-se8G5JEeioI6dcHPBwyA" key="fillColor" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_XC1jMm5EEeioI6dcHPBwyA" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_XC1jM25EEeioI6dcHPBwyA" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_XC1jNG5EEeioI6dcHPBwyA" y="15"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_XC1jNW5EEeioI6dcHPBwyA" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_XC1jNm5EEeioI6dcHPBwyA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_XC1jN25EEeioI6dcHPBwyA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_XC1jOG5EEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XC1jOW5EEeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_XC1jOm5EEeioI6dcHPBwyA" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_XC1jO25EEeioI6dcHPBwyA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_XC1jPG5EEeioI6dcHPBwyA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_XC1jPW5EEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XC1jPm5EEeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_XC2KQG5EEeioI6dcHPBwyA" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_XC2KQW5EEeioI6dcHPBwyA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_XC2KQm5EEeioI6dcHPBwyA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_XC2KQ25EEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XC2KRG5EEeioI6dcHPBwyA"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_v5viIE99Eee7Pr5wMBo3JA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XC1jMW5EEeioI6dcHPBwyA" x="540" y="580" width="141"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_y_KrMG5EEeioI6dcHPBwyA" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l_DRkG5JEeioI6dcHPBwyA" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l_DRkW5JEeioI6dcHPBwyA" key="gradient" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mNTwAG5JEeioI6dcHPBwyA" key="fillColor" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_y_LSQG5EEeioI6dcHPBwyA" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_y_LSQW5EEeioI6dcHPBwyA" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_y_LSQm5EEeioI6dcHPBwyA" y="15"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_y_LSQ25EEeioI6dcHPBwyA" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_y_LSRG5EEeioI6dcHPBwyA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_y_LSRW5EEeioI6dcHPBwyA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_y_LSRm5EEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y_LSR25EEeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_y_LSSG5EEeioI6dcHPBwyA" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_y_LSSW5EEeioI6dcHPBwyA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_y_LSSm5EEeioI6dcHPBwyA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_y_LSS25EEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y_LSTG5EEeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_y_LSTW5EEeioI6dcHPBwyA" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_y_LSTm5EEeioI6dcHPBwyA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_y_LST25EEeioI6dcHPBwyA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_y_LSUG5EEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y_LSUW5EEeioI6dcHPBwyA"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_y_JdEG5EEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y_KrMW5EEeioI6dcHPBwyA" x="540" y="160" width="141"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_WrkAwG5GEeioI6dcHPBwyA" type="Interface_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_m6JA0G5JEeioI6dcHPBwyA" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_m6JA0W5JEeioI6dcHPBwyA" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_m-FssG5JEeioI6dcHPBwyA" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_Wrkn0G5GEeioI6dcHPBwyA" type="Interface_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_Wrkn0W5GEeioI6dcHPBwyA" type="Interface_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Wrkn0m5GEeioI6dcHPBwyA" y="15"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_Wrkn025GEeioI6dcHPBwyA" type="Interface_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_Wrkn1G5GEeioI6dcHPBwyA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_Wrkn1W5GEeioI6dcHPBwyA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_Wrkn1m5GEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wrkn125GEeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_Wrkn2G5GEeioI6dcHPBwyA" type="Interface_OperationCompartment"> + <children xmi:type="notation:Shape" xmi:id="_a2BPAG5GEeioI6dcHPBwyA" type="Operation_InterfaceOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_a15TMG5GEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_a2BPAW5GEeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_hLksAHnwEeiygcv4AVbSqA" type="Operation_InterfaceOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_hKef0HnwEeiygcv4AVbSqA"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_hLksAXnwEeiygcv4AVbSqA"/> + </children> + <styles xmi:type="notation:TitleStyle" xmi:id="_Wrkn2W5GEeioI6dcHPBwyA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_Wrkn2m5GEeioI6dcHPBwyA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_Wrkn225GEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wrkn3G5GEeioI6dcHPBwyA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_Wrkn3W5GEeioI6dcHPBwyA" type="Interface_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_Wrkn3m5GEeioI6dcHPBwyA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_Wrkn325GEeioI6dcHPBwyA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_Wrkn4G5GEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wrkn4W5GEeioI6dcHPBwyA"/> + </children> + <element xmi:type="uml:Interface" href="model-jalhyd.uml#_WriyoG5GEeioI6dcHPBwyA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WrkAwW5GEeioI6dcHPBwyA" x="740" y="20" width="301"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_TMNaQHMCEei6M4wQtYraFw" type="Interface_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y194EHMCEei6M4wQtYraFw" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y194EXMCEei6M4wQtYraFw" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y8dhoHMCEei6M4wQtYraFw" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_TMNaQnMCEei6M4wQtYraFw" type="Interface_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_TMNaQ3MCEei6M4wQtYraFw" type="Interface_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_TMNaRHMCEei6M4wQtYraFw" y="15"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_TMNaRXMCEei6M4wQtYraFw" type="Interface_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_TMNaRnMCEei6M4wQtYraFw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_TMNaR3MCEei6M4wQtYraFw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_TMNaSHMCEei6M4wQtYraFw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TMNaSXMCEei6M4wQtYraFw"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_TMNaSnMCEei6M4wQtYraFw" type="Interface_OperationCompartment"> + <children xmi:type="notation:Shape" xmi:id="_Zfmq8HMCEei6M4wQtYraFw" type="Operation_InterfaceOperationLabel"> + <element xmi:type="uml:Operation" href="model-jalhyd.uml#_ZfadsHMCEei6M4wQtYraFw"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Zfmq8XMCEei6M4wQtYraFw"/> + </children> + <styles xmi:type="notation:TitleStyle" xmi:id="_TMNaS3MCEei6M4wQtYraFw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_TMNaTHMCEei6M4wQtYraFw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_TMNaTXMCEei6M4wQtYraFw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TMNaTnMCEei6M4wQtYraFw"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_TMNaT3MCEei6M4wQtYraFw" type="Interface_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_TMNaUHMCEei6M4wQtYraFw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_TMNaUXMCEei6M4wQtYraFw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_TMNaUnMCEei6M4wQtYraFw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TMOBUHMCEei6M4wQtYraFw"/> + </children> + <element xmi:type="uml:Interface" href="model-jalhyd.uml#_TMMMIHMCEei6M4wQtYraFw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TMNaQXMCEei6M4wQtYraFw" x="740" y="239" width="301"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_uxamQHMDEei6M4wQtYraFw" type="Class_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xwdKQHMDEei6M4wQtYraFw" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xwdKQXMDEei6M4wQtYraFw" key="fillColor" value="true"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_x2x0sHMDEei6M4wQtYraFw" key="gradient" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_uxamQnMDEei6M4wQtYraFw" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_uxamQ3MDEei6M4wQtYraFw" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_uxamRHMDEei6M4wQtYraFw" y="15"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_uxamRXMDEei6M4wQtYraFw" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_uxamRnMDEei6M4wQtYraFw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_uxamR3MDEei6M4wQtYraFw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_uxamSHMDEei6M4wQtYraFw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uxamSXMDEei6M4wQtYraFw"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_uxamSnMDEei6M4wQtYraFw" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_uxamS3MDEei6M4wQtYraFw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_uxamTHMDEei6M4wQtYraFw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_uxamTXMDEei6M4wQtYraFw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uxamTnMDEei6M4wQtYraFw"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_uxamT3MDEei6M4wQtYraFw" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_uxamUHMDEei6M4wQtYraFw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_uxamUXMDEei6M4wQtYraFw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_uxamUnMDEei6M4wQtYraFw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uxamU3MDEei6M4wQtYraFw"/> + </children> + <element xmi:type="uml:Class" href="model-jalhyd.uml#_uxZYIHMDEei6M4wQtYraFw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uxamQXMDEei6M4wQtYraFw" x="540" y="460" width="141"/> + </children> + <styles xmi:type="notation:StringValueStyle" xmi:id="_R0gPYW4_EeioI6dcHPBwyA" name="diagram_compatibility_version" stringValue="1.4.0"/> + <styles xmi:type="notation:DiagramStyle" xmi:id="_R0gPYm4_EeioI6dcHPBwyA"/> + <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_R0gPY24_EeioI6dcHPBwyA" diagramKindId="org.eclipse.papyrus.uml.diagram.class"> + <owner xmi:type="uml:Model" href="model-jalhyd.uml#_tIT8UE99Eee7Pr5wMBo3JA"/> + </styles> + <element xmi:type="uml:Model" href="model-jalhyd.uml#_tIT8UE99Eee7Pr5wMBo3JA"/> + <edges xmi:type="notation:Connector" xmi:id="_22W0oG5DEeioI6dcHPBwyA" type="Dependency_Edge" source="_WQc2QG4_EeioI6dcHPBwyA" target="_f43lMG5DEeioI6dcHPBwyA"> + <children xmi:type="notation:DecorationNode" xmi:id="_22W0o25DEeioI6dcHPBwyA" type="Dependency_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_4QaX0G5DEeioI6dcHPBwyA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_22W0pG5DEeioI6dcHPBwyA" x="-1" y="37"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_22W0pW5DEeioI6dcHPBwyA" type="Dependency_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_4QnzMG5DEeioI6dcHPBwyA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_22W0pm5DEeioI6dcHPBwyA" x="-1" y="58"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_22W0oW5DEeioI6dcHPBwyA"/> + <element xmi:type="uml:Dependency" href="model-jalhyd.uml#_22UYYG5DEeioI6dcHPBwyA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_22W0om5DEeioI6dcHPBwyA" points="[220, 241, -643984, -643984]$[260, 360, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_22pvkG5DEeioI6dcHPBwyA" id="(0.49875311720698257,1.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_22pvkW5DEeioI6dcHPBwyA" id="(0.5693950177935944,0.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_ZrQW8G5EEeioI6dcHPBwyA" type="InterfaceRealization_Edge" source="_XC1jMG5EEeioI6dcHPBwyA" target="_f43lMG5DEeioI6dcHPBwyA"> + <children xmi:type="notation:DecorationNode" xmi:id="_ZrQW825EEeioI6dcHPBwyA" type="InterfaceRealization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_evlzgG5EEeioI6dcHPBwyA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_ZrQW9G5EEeioI6dcHPBwyA" x="-1" y="37"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_ZrQW9W5EEeioI6dcHPBwyA" type="InterfaceRealization_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_evwLkG5EEeioI6dcHPBwyA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_ZrQW9m5EEeioI6dcHPBwyA" x="-1" y="58"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_ZrQW8W5EEeioI6dcHPBwyA"/> + <element xmi:type="uml:InterfaceRealization" href="model-jalhyd.uml#_Zq05IG5EEeioI6dcHPBwyA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZrQW8m5EEeioI6dcHPBwyA" points="[580, 332, -643984, -643984]$[421, 140, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Zrg1oG5EEeioI6dcHPBwyA" id="(0.0,0.6)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Zrg1oW5EEeioI6dcHPBwyA" id="(1.0,0.5063291139240507)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_5GnKkG5EEeioI6dcHPBwyA" type="InterfaceRealization_Edge" source="_y_KrMG5EEeioI6dcHPBwyA" target="_WQc2QG4_EeioI6dcHPBwyA"> + <children xmi:type="notation:DecorationNode" xmi:id="_5GnKk25EEeioI6dcHPBwyA" type="InterfaceRealization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_RLLW0G5FEeioI6dcHPBwyA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_5GnKlG5EEeioI6dcHPBwyA" x="-1" y="38"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_5GnKlW5EEeioI6dcHPBwyA" type="InterfaceRealization_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_RLSEgG5FEeioI6dcHPBwyA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_5GnKlm5EEeioI6dcHPBwyA" x="-1" y="58"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_5GnKkW5EEeioI6dcHPBwyA"/> + <element xmi:type="uml:InterfaceRealization" href="model-jalhyd.uml#_5GfOwG5EEeioI6dcHPBwyA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5GnKkm5EEeioI6dcHPBwyA" points="[520, 320, -643984, -643984]$[341, 420, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5G3pQG5EEeioI6dcHPBwyA" id="(0.0,0.6)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5G3pQW5EEeioI6dcHPBwyA" id="(1.0,0.6965174129353234)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_BdmDoG5FEeioI6dcHPBwyA" type="InterfaceRealization_Edge" source="_rF23gG5CEeioI6dcHPBwyA" target="_WQc2QG4_EeioI6dcHPBwyA"> + <children xmi:type="notation:DecorationNode" xmi:id="_BdmDo25FEeioI6dcHPBwyA" type="InterfaceRealization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Tb5cQG5FEeioI6dcHPBwyA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_BdmDpG5FEeioI6dcHPBwyA" y="40"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_BdmDpW5FEeioI6dcHPBwyA" type="InterfaceRealization_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TcAJ8G5FEeioI6dcHPBwyA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_BdmDpm5FEeioI6dcHPBwyA" y="60"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_BdmDoW5FEeioI6dcHPBwyA"/> + <element xmi:type="uml:InterfaceRealization" href="model-jalhyd.uml#_BddgwG5FEeioI6dcHPBwyA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BdmDom5FEeioI6dcHPBwyA" points="[620, 440, -643984, -643984]$[341, 440, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Bd3JYG5FEeioI6dcHPBwyA" id="(0.0,0.6)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Bd3JYW5FEeioI6dcHPBwyA" id="(1.0,0.29850746268656714)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_xgcGkG5IEeioI6dcHPBwyA" type="InterfaceRealization_Edge" source="_rF23gG5CEeioI6dcHPBwyA" target="_WrkAwG5GEeioI6dcHPBwyA"> + <children xmi:type="notation:DecorationNode" xmi:id="_xgcGk25IEeioI6dcHPBwyA" type="InterfaceRealization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_0S9RgG5IEeioI6dcHPBwyA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_xgcGlG5IEeioI6dcHPBwyA" y="39"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_xgcGlW5IEeioI6dcHPBwyA" type="InterfaceRealization_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_0TF0YG5IEeioI6dcHPBwyA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_xgcGlm5IEeioI6dcHPBwyA" y="59"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_xgcGkW5IEeioI6dcHPBwyA"/> + <element xmi:type="uml:InterfaceRealization" href="model-jalhyd.uml#_xgS8oG5IEeioI6dcHPBwyA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_xgcGkm5IEeioI6dcHPBwyA" points="[681, 200, -643984, -643984]$[760, 150, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xgslQG5IEeioI6dcHPBwyA" id="(1.0,0.4)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xgslQW5IEeioI6dcHPBwyA" id="(0.0,0.36363636363636365)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_WJo0sHMCEei6M4wQtYraFw" type="Generalization_Edge" source="_TMNaQHMCEei6M4wQtYraFw" target="_WrkAwG5GEeioI6dcHPBwyA"> + <children xmi:type="notation:DecorationNode" xmi:id="_WJo0s3MCEei6M4wQtYraFw" type="Generalization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_XNihsHMCEei6M4wQtYraFw" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_WJo0tHMCEei6M4wQtYraFw" y="39"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_WJo0sXMCEei6M4wQtYraFw"/> + <element xmi:type="uml:Generalization" href="model-jalhyd.uml#_WJfqwHMCEei6M4wQtYraFw"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WJo0snMCEei6M4wQtYraFw" points="[940, 239, -643984, -643984]$[880, 130, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WJ89wHMCEei6M4wQtYraFw" id="(0.46511627906976744,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WJ89wXMCEei6M4wQtYraFw" id="(0.46511627906976744,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_l8xWQHMCEei6M4wQtYraFw" type="InterfaceRealization_Edge" source="_y_KrMG5EEeioI6dcHPBwyA" target="_TMNaQHMCEei6M4wQtYraFw"> + <children xmi:type="notation:DecorationNode" xmi:id="_l8xWQ3MCEei6M4wQtYraFw" type="InterfaceRealization_StereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_l8xWRHMCEei6M4wQtYraFw" y="40"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_l8xWRXMCEei6M4wQtYraFw" type="InterfaceRealization_NameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_l8xWRnMCEei6M4wQtYraFw" y="60"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_l8xWQXMCEei6M4wQtYraFw"/> + <element xmi:type="uml:InterfaceRealization" href="model-jalhyd.uml#_l8oMUHMCEei6M4wQtYraFw"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_l8xWQnMCEei6M4wQtYraFw" points="[681, 220, -643984, -643984]$[740, 280, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l9DqIHMCEei6M4wQtYraFw" id="(1.0,0.6)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l9ERMHMCEei6M4wQtYraFw" id="(0.0,0.37272727272727274)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_m6CPwHMCEei6M4wQtYraFw" type="InterfaceRealization_Edge" source="_zJwcgG5CEeioI6dcHPBwyA" target="_TMNaQHMCEei6M4wQtYraFw"> + <children xmi:type="notation:DecorationNode" xmi:id="_m6CPw3MCEei6M4wQtYraFw" type="InterfaceRealization_StereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_m6CPxHMCEei6M4wQtYraFw" y="40"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_m6CPxXMCEei6M4wQtYraFw" type="InterfaceRealization_NameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_m6CPxnMCEei6M4wQtYraFw" y="60"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_m6CPwXMCEei6M4wQtYraFw"/> + <element xmi:type="uml:InterfaceRealization" href="model-jalhyd.uml#_m55F0HMCEei6M4wQtYraFw"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_m6CPwnMCEei6M4wQtYraFw" points="[681, 340, -643984, -643984]$[740, 300, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_m6VKsHMCEei6M4wQtYraFw" id="(1.0,0.6)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_m6VxwHMCEei6M4wQtYraFw" id="(0.0,0.5545454545454546)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_zGoTAHMDEei6M4wQtYraFw" type="InterfaceRealization_Edge" source="_uxamQHMDEei6M4wQtYraFw" target="_TMNaQHMCEei6M4wQtYraFw"> + <children xmi:type="notation:DecorationNode" xmi:id="_zGoTA3MDEei6M4wQtYraFw" type="InterfaceRealization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_6N6ewHMDEei6M4wQtYraFw" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_zGoTBHMDEei6M4wQtYraFw" y="38"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_zGoTBXMDEei6M4wQtYraFw" type="InterfaceRealization_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_6ODBoHMDEei6M4wQtYraFw" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_zGoTBnMDEei6M4wQtYraFw" x="1" y="59"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_zGoTAXMDEei6M4wQtYraFw"/> + <element xmi:type="uml:InterfaceRealization" href="model-jalhyd.uml#_zGdT4HMDEei6M4wQtYraFw"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zGoTAnMDEei6M4wQtYraFw" points="[681, 460, -643984, -643984]$[780, 349, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zHCisHMDEei6M4wQtYraFw" id="(1.0,0.6)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zHCisXMDEei6M4wQtYraFw" id="(0.132890365448505,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_7PtS8HMDEei6M4wQtYraFw" type="Dependency_Edge" source="_zJwcgG5CEeioI6dcHPBwyA" target="_uxamQHMDEei6M4wQtYraFw"> + <children xmi:type="notation:DecorationNode" xmi:id="_7PtS83MDEei6M4wQtYraFw" type="Dependency_NameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7PtS9HMDEei6M4wQtYraFw" y="40"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_7Pt6AHMDEei6M4wQtYraFw" type="Dependency_StereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7Pt6AXMDEei6M4wQtYraFw" y="60"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_7PtS8XMDEei6M4wQtYraFw"/> + <element xmi:type="uml:Dependency" href="model-jalhyd.uml#_7PsE0HMDEei6M4wQtYraFw"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7PtS8nMDEei6M4wQtYraFw" points="[600, 380, -643984, -643984]$[600, 460, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7QFGYHMDEei6M4wQtYraFw" id="(0.425531914893617,1.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7QFGYXMDEei6M4wQtYraFw" id="(0.425531914893617,0.0)"/> + </edges> + </notation:Diagram> +</xmi:XMI> diff --git a/doc/papyrus/model-jalhyd.uml b/doc/papyrus/model-jalhyd.uml new file mode 100644 index 0000000000000000000000000000000000000000..00de68fe838b4f5fe6b3985c1431221237345b27 --- /dev/null +++ b/doc/papyrus/model-jalhyd.uml @@ -0,0 +1,237 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_tIT8UE99Eee7Pr5wMBo3JA" name="RootElement"> + <packagedElement xmi:type="uml:Class" xmi:id="_v5viIE99Eee7Pr5wMBo3JA" name="Nub" isAbstract="true"> + <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_Zq05IG5EEeioI6dcHPBwyA" client="_v5viIE99Eee7Pr5wMBo3JA" supplier="_f42XEG5DEeioI6dcHPBwyA" contract="_f42XEG5DEeioI6dcHPBwyA"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_Kfx1EFAMEeeHkO_PSanZTQ" name="Equation" isAbstract="true"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_Nqs48FAMEeeHkO_PSanZTQ" name="Calc"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_O9bFEFAMEeeHkO_PSanZTQ" name="CalcSerie"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_TVDMoFAMEeeHkO_PSanZTQ" name="Solve"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_19Rx4E99Eee7Pr5wMBo3JA" name="RegimeUniforme"> + <generalization xmi:type="uml:Generalization" xmi:id="_DvVMgE9-Eee7Pr5wMBo3JA" general="_v5viIE99Eee7Pr5wMBo3JA"/> + <ownedAttribute xmi:type="uml:Property" xmi:id="_-xy-YFDkEeerqLEV-qup4Q" name="Sn" type="_XbVdEE9-Eee7Pr5wMBo3JA" aggregation="composite" association="_-xrpoFDkEeerqLEV-qup4Q"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_RwG_kFBCEeeHkO_PSanZTQ" name="Calc_Qn"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_TCOHsFBCEeeHkO_PSanZTQ" name="Equation"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_GCCO8E9-Eee7Pr5wMBo3JA" name="ConduiteDistrib"> + <generalization xmi:type="uml:Generalization" xmi:id="_IX5TEE9-Eee7Pr5wMBo3JA" general="_v5viIE99Eee7Pr5wMBo3JA"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_KSuBAE9-Eee7Pr5wMBo3JA" name="LechaptCalmon"> + <generalization xmi:type="uml:Generalization" xmi:id="_ManhoE9-Eee7Pr5wMBo3JA" general="_v5viIE99Eee7Pr5wMBo3JA"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_XbVdEE9-Eee7Pr5wMBo3JA" name="acSection" isAbstract="true"> + <ownedAttribute xmi:type="uml:Property" xmi:id="_ZryhsFALEeeHkO_PSanZTQ" name="oP" type="_f-CBcE9_Eee7Pr5wMBo3JA" aggregation="composite" association="_ZrveYFALEeeHkO_PSanZTQ"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_CgOkkFAMEeeHkO_PSanZTQ" name="Calc"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_ET9MAFAMEeeHkO_PSanZTQ" name="CalcGeo"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_aexBUFAMEeeHkO_PSanZTQ" name="Calc_S" isAbstract="true"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_cizVoFAMEeeHkO_PSanZTQ" name="Calc_dS"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_fO_2IFAMEeeHkO_PSanZTQ" name="Calc_S_Debordement"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_iGVPoFAMEeeHkO_PSanZTQ" name="Calc_dS_Debordement"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_jghVsFAMEeeHkO_PSanZTQ" name="Calc_P" isAbstract="true"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_mTzVoFAMEeeHkO_PSanZTQ" name="Calc_P_Debordement"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_ox03QFAMEeeHkO_PSanZTQ" name="Calc_dP" isAbstract="true"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_t4gdMFAMEeeHkO_PSanZTQ" name="Calc_dP_Debordement"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_vb_pMFAMEeeHkO_PSanZTQ" name="Calc_R"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_wvsFsFAMEeeHkO_PSanZTQ" name="Calc_dR"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_xxT6wFAMEeeHkO_PSanZTQ" name="Calc_B" isAbstract="true"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_zhI5oFAMEeeHkO_PSanZTQ" name="Calc_B_Debordement"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_2FshEFAMEeeHkO_PSanZTQ" name="Calc_dB" isAbstract="true"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_3_CBQFAMEeeHkO_PSanZTQ" name="Calc_dB_Debordement"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_5n74wFAMEeeHkO_PSanZTQ" name="Calc_J"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_6qKx0FAMEeeHkO_PSanZTQ" name="Calc_Fr"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_DGVs4FANEeeHkO_PSanZTQ" name="Calc_V"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_IZnkYFANEeeHkO_PSanZTQ" name="Calc_Hs"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_JZQccFANEeeHkO_PSanZTQ" name="Calc_Hsc"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_Ko1N8FANEeeHkO_PSanZTQ" name="Calc_Yc"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_L0IjcFANEeeHkO_PSanZTQ" name="Calc_Yn"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_M77R8FANEeeHkO_PSanZTQ" name="Calc_Yf"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_NpKycFANEeeHkO_PSanZTQ" name="Calc_Yt"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_O1FL8FANEeeHkO_PSanZTQ" name="Calc_Yco"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_QC1YgFANEeeHkO_PSanZTQ" name="Calc_Tau0"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_mlEEoFGUEeevz5N4F7hvnQ" name="Calc_dXdY"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_dESCkE9-Eee7Pr5wMBo3JA" name="cSnCirc"> + <generalization xmi:type="uml:Generalization" xmi:id="_hjs0ME9-Eee7Pr5wMBo3JA" general="_XbVdEE9-Eee7Pr5wMBo3JA"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_nqsnoE9-Eee7Pr5wMBo3JA" name="cSnRectang"> + <generalization xmi:type="uml:Generalization" xmi:id="_qQiogE9-Eee7Pr5wMBo3JA" general="_XbVdEE9-Eee7Pr5wMBo3JA"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_q5_OIE9-Eee7Pr5wMBo3JA" name="cSnPuiss"> + <generalization xmi:type="uml:Generalization" xmi:id="_sZsGUE9-Eee7Pr5wMBo3JA" general="_XbVdEE9-Eee7Pr5wMBo3JA"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_tL3KIE9-Eee7Pr5wMBo3JA" name="cSnTrapez"> + <generalization xmi:type="uml:Generalization" xmi:id="_vFzuUE9-Eee7Pr5wMBo3JA" general="_XbVdEE9-Eee7Pr5wMBo3JA"/> + </packagedElement> + <packagedElement xmi:type="uml:Interface" xmi:id="_9U0xwE9-Eee7Pr5wMBo3JA" name="IParamsEquation"/> + <packagedElement xmi:type="uml:Class" xmi:id="_EwZLcE9_Eee7Pr5wMBo3JA" name="ConduiteDistribParams"/> + <packagedElement xmi:type="uml:Realization" xmi:id="_Iq4EAE9_Eee7Pr5wMBo3JA" client="_EwZLcE9_Eee7Pr5wMBo3JA" supplier="_9U0xwE9-Eee7Pr5wMBo3JA"/> + <packagedElement xmi:type="uml:Class" xmi:id="_MCTS0E9_Eee7Pr5wMBo3JA" name="LechaptCalmonParams"/> + <packagedElement xmi:type="uml:Realization" xmi:id="_M0iBAE9_Eee7Pr5wMBo3JA" client="_MCTS0E9_Eee7Pr5wMBo3JA" supplier="_9U0xwE9-Eee7Pr5wMBo3JA"/> + <packagedElement xmi:type="uml:Class" xmi:id="_QTmI4E9_Eee7Pr5wMBo3JA" name="cParamsCanal" isAbstract="true"/> + <packagedElement xmi:type="uml:Realization" xmi:id="_Q-NMIE9_Eee7Pr5wMBo3JA" client="_QTmI4E9_Eee7Pr5wMBo3JA" supplier="_9U0xwE9-Eee7Pr5wMBo3JA"/> + <packagedElement xmi:type="uml:Class" xmi:id="_f-CBcE9_Eee7Pr5wMBo3JA" name="ParamsSection" isAbstract="true"> + <generalization xmi:type="uml:Generalization" xmi:id="_kevMgE9_Eee7Pr5wMBo3JA" general="_QTmI4E9_Eee7Pr5wMBo3JA"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="__j3mwE9_EeefHO8U_-Vyow" name="ParamsSectionCirc"> + <generalization xmi:type="uml:Generalization" xmi:id="_N-SB4E-AEeefHO8U_-Vyow" general="_f-CBcE9_Eee7Pr5wMBo3JA"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_HLiiwE-AEeefHO8U_-Vyow" name="ParamsSectionRectang"> + <generalization xmi:type="uml:Generalization" xmi:id="_OyhiQE-AEeefHO8U_-Vyow" general="_f-CBcE9_Eee7Pr5wMBo3JA"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_ITGAsE-AEeefHO8U_-Vyow" name="ParamsSectionTrapez"> + <generalization xmi:type="uml:Generalization" xmi:id="_PKD4gE-AEeefHO8U_-Vyow" general="_f-CBcE9_Eee7Pr5wMBo3JA"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_KjEfQE-AEeefHO8U_-Vyow" name="ParamsSectionPuiss"> + <generalization xmi:type="uml:Generalization" xmi:id="_PmQsUE-AEeefHO8U_-Vyow" general="_f-CBcE9_Eee7Pr5wMBo3JA"/> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_BnwUoE-BEeefHO8U_-Vyow" memberEnd="_BnzX8E-BEeefHO8U_-Vyow _Bnz_AE-BEeefHO8U_-Vyow" navigableOwnedEnd="_Bnz_AE-BEeefHO8U_-Vyow"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BnxiwE-BEeefHO8U_-Vyow" source="org.eclipse.papyrus"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BnyJ0E-BEeefHO8U_-Vyow" key="nature" value="UML_Nature"/> + </eAnnotations> + <ownedEnd xmi:type="uml:Property" xmi:id="_BnzX8E-BEeefHO8U_-Vyow" type="_v5viIE99Eee7Pr5wMBo3JA" association="_BnwUoE-BEeefHO8U_-Vyow"/> + <ownedEnd xmi:type="uml:Property" xmi:id="_Bnz_AE-BEeefHO8U_-Vyow" name="prms" type="_9U0xwE9-Eee7Pr5wMBo3JA" aggregation="composite" association="_BnwUoE-BEeefHO8U_-Vyow"/> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_ZrveYFALEeeHkO_PSanZTQ" memberEnd="_ZryhsFALEeeHkO_PSanZTQ _ZryhsVALEeeHkO_PSanZTQ"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Zrx6oFALEeeHkO_PSanZTQ" source="org.eclipse.papyrus"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Zrx6oVALEeeHkO_PSanZTQ" key="nature" value="UML_Nature"/> + </eAnnotations> + <ownedEnd xmi:type="uml:Property" xmi:id="_ZryhsVALEeeHkO_PSanZTQ" type="_XbVdEE9-Eee7Pr5wMBo3JA" association="_ZrveYFALEeeHkO_PSanZTQ"/> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_-xrpoFDkEeerqLEV-qup4Q" name="Calcule sur" visibility="private" memberEnd="_-xy-YFDkEeerqLEV-qup4Q _-xzlcFDkEeerqLEV-qup4Q"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-xxwQFDkEeerqLEV-qup4Q" source="org.eclipse.papyrus"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-xyXUFDkEeerqLEV-qup4Q" key="nature" value="UML_Nature"/> + </eAnnotations> + <ownedEnd xmi:type="uml:Property" xmi:id="_-xzlcFDkEeerqLEV-qup4Q" type="_19Rx4E99Eee7Pr5wMBo3JA" association="_-xrpoFDkEeerqLEV-qup4Q"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_pUPwUFDnEeerqLEV-qup4Q" name="Newton"/> + <packagedElement xmi:type="uml:Class" xmi:id="_qzl2oFD8EeerqLEV-qup4Q" name="HautConjuguee"> + <generalization xmi:type="uml:Generalization" xmi:id="_wYNVwFD8EeerqLEV-qup4Q" general="_pUPwUFDnEeerqLEV-qup4Q"/> + <ownedAttribute xmi:type="uml:Property" xmi:id="_nkKMkVEEEeerqLEV-qup4Q" name="Sn" type="_XbVdEE9-Eee7Pr5wMBo3JA" aggregation="composite" association="_nkJlgFEEEeerqLEV-qup4Q"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_yTG8MFD8EeerqLEV-qup4Q" name="HautCorrespondante"> + <generalization xmi:type="uml:Generalization" xmi:id="_9u0KgFD8EeerqLEV-qup4Q" general="_pUPwUFDnEeerqLEV-qup4Q"/> + <ownedAttribute xmi:type="uml:Property" xmi:id="_tW8Dg1EEEeerqLEV-qup4Q" name="Sn" type="_XbVdEE9-Eee7Pr5wMBo3JA" aggregation="composite" association="_tW8DgFEEEeerqLEV-qup4Q"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_0eXS0FD8EeerqLEV-qup4Q" name="HautCritique"> + <generalization xmi:type="uml:Generalization" xmi:id="_-jpgwFD8EeerqLEV-qup4Q" general="_pUPwUFDnEeerqLEV-qup4Q"/> + <ownedAttribute xmi:type="uml:Property" xmi:id="_3FvEElEEEeerqLEV-qup4Q" name="Sn" type="_XbVdEE9-Eee7Pr5wMBo3JA" association="_3FudAFEEEeerqLEV-qup4Q"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_4kbJQFD8EeerqLEV-qup4Q" name="HautNormale"> + <generalization xmi:type="uml:Generalization" xmi:id="__Ga2oFD8EeerqLEV-qup4Q" general="_pUPwUFDnEeerqLEV-qup4Q"/> + <ownedAttribute xmi:type="uml:Property" xmi:id="_84zO4FEEEeerqLEV-qup4Q" name="Sn" type="_XbVdEE9-Eee7Pr5wMBo3JA" aggregation="composite" association="_84yn0FEEEeerqLEV-qup4Q"/> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_nkJlgFEEEeerqLEV-qup4Q" name="Calcule sur" memberEnd="_nkKMkVEEEeerqLEV-qup4Q _nkKMklEEEeerqLEV-qup4Q"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nkJlgVEEEeerqLEV-qup4Q" source="org.eclipse.papyrus"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nkKMkFEEEeerqLEV-qup4Q" key="nature" value="UML_Nature"/> + </eAnnotations> + <ownedEnd xmi:type="uml:Property" xmi:id="_nkKMklEEEeerqLEV-qup4Q" type="_qzl2oFD8EeerqLEV-qup4Q" association="_nkJlgFEEEeerqLEV-qup4Q"/> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_tW8DgFEEEeerqLEV-qup4Q" name="Calcule sur" memberEnd="_tW8Dg1EEEeerqLEV-qup4Q _tW8DhFEEEeerqLEV-qup4Q"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tW8DgVEEEeerqLEV-qup4Q" source="org.eclipse.papyrus"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tW8DglEEEeerqLEV-qup4Q" key="nature" value="UML_Nature"/> + </eAnnotations> + <ownedEnd xmi:type="uml:Property" xmi:id="_tW8DhFEEEeerqLEV-qup4Q" type="_yTG8MFD8EeerqLEV-qup4Q" association="_tW8DgFEEEeerqLEV-qup4Q"/> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_3FudAFEEEeerqLEV-qup4Q" name="Calcule sur" memberEnd="_3FvEElEEEeerqLEV-qup4Q _3FvrIFEEEeerqLEV-qup4Q"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3FvEEFEEEeerqLEV-qup4Q" source="org.eclipse.papyrus"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3FvEEVEEEeerqLEV-qup4Q" key="nature" value="UML_Nature"/> + </eAnnotations> + <ownedEnd xmi:type="uml:Property" xmi:id="_3FvrIFEEEeerqLEV-qup4Q" type="_0eXS0FD8EeerqLEV-qup4Q" association="_3FudAFEEEeerqLEV-qup4Q"/> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_84yn0FEEEeerqLEV-qup4Q" name="Calcule sur" memberEnd="_84zO4FEEEeerqLEV-qup4Q _84zO4VEEEeerqLEV-qup4Q"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_84yn0VEEEeerqLEV-qup4Q" source="org.eclipse.papyrus"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_84yn0lEEEeerqLEV-qup4Q" key="nature" value="UML_Nature"/> + </eAnnotations> + <ownedEnd xmi:type="uml:Property" xmi:id="_84zO4VEEEeerqLEV-qup4Q" type="_4kbJQFD8EeerqLEV-qup4Q" association="_84yn0FEEEeerqLEV-qup4Q"/> + </packagedElement> + <packagedElement xmi:type="uml:Interface" xmi:id="_WQX9wG4_EeioI6dcHPBwyA" name="INubReference" visibility="protected"> + <ownedComment xmi:type="uml:Comment" xmi:id="_xGPM8G4_EeioI6dcHPBwyA"> + <body>référence vers un Nub contenant une valeur vers laquelle on crée un lien</body> + </ownedComment> + <ownedAttribute xmi:type="uml:Property" xmi:id="_4gDoQG5BEeioI6dcHPBwyA" name="referenceDefinition" isReadOnly="true"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_jA2fQG5CEeioI6dcHPBwyA" name="isReferenceDefined"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_tjhMwG5CEeioI6dcHPBwyA" name="referencedParamValues" type="_rF1CUG5CEeioI6dcHPBwyA"/> + <ownedAttribute xmi:type="uml:Property" xmi:id="_yOdR4G5CEeioI6dcHPBwyA" name="referencedResult" type="_zJvOYG5CEeioI6dcHPBwyA"/> + <ownedAttribute xmi:type="uml:Property" xmi:id="_2P8KUG5CEeioI6dcHPBwyA" name="referencedExtraResult"/> + <ownedAttribute xmi:type="uml:Property" xmi:id="_6tSfYG5CEeioI6dcHPBwyA" name="referencedValuesIterator" type="__1DDYG5CEeioI6dcHPBwyA"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_d8t-YG4_EeioI6dcHPBwyA" name="defineReference"> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_oFSNAG5DEeioI6dcHPBwyA" name="target" type="_f42XEG5DEeioI6dcHPBwyA"/> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_sf_dwG5DEeioI6dcHPBwyA" name="desc"> + <ownedComment xmi:type="uml:Comment" xmi:id="_sf_dwW5DEeioI6dcHPBwyA"> + <body>description de la valeur pointée sous forme symbolique. Exemples : Q, <n° d'ouvrage>.Z1</body> + </ownedComment> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_rF1CUG5CEeioI6dcHPBwyA" name="ParamValues"> + <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_BddgwG5FEeioI6dcHPBwyA" client="_rF1CUG5CEeioI6dcHPBwyA" supplier="_WQX9wG4_EeioI6dcHPBwyA" contract="_WQX9wG4_EeioI6dcHPBwyA"/> + <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_xgS8oG5IEeioI6dcHPBwyA" client="_rF1CUG5CEeioI6dcHPBwyA" supplier="_WriyoG5GEeioI6dcHPBwyA" contract="_WriyoG5GEeioI6dcHPBwyA"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_zJvOYG5CEeioI6dcHPBwyA" name="Result"> + <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_m55F0HMCEei6M4wQtYraFw" client="_zJvOYG5CEeioI6dcHPBwyA" supplier="_TMMMIHMCEei6M4wQtYraFw" contract="_TMMMIHMCEei6M4wQtYraFw"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="__1DDYG5CEeioI6dcHPBwyA" name="IterableIterator"/> + <packagedElement xmi:type="uml:Interface" xmi:id="_f42XEG5DEeioI6dcHPBwyA" name="IReferencedNub"> + <ownedComment xmi:type="uml:Comment" xmi:id="_7-Aq8G5DEeioI6dcHPBwyA"> + <body>Nub dont les valeurs sont référençables pour réutilisation (d'une calculette sur une autre par ex)</body> + </ownedComment> + <ownedOperation xmi:type="uml:Operation" xmi:id="_9fmZgG5DEeioI6dcHPBwyA" name="getReferencedParamValues"> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_Dcw7gG5EEeioI6dcHPBwyA" name="desc"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_ICESsG5EEeioI6dcHPBwyA" name="getReferencedResult" visibility="public"> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_LBJ6AG5EEeioI6dcHPBwyA" name="desc"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_OH1-IG5EEeioI6dcHPBwyA" name="getReferencedExtraResult"> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_P_7hIG5EEeioI6dcHPBwyA" name="desc"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_Q6XwIG5EEeioI6dcHPBwyA" name="getReferencedValuesIterator"> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_TFGiUG5EEeioI6dcHPBwyA" name="desc"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_22UYYG5DEeioI6dcHPBwyA" name="référence" client="_WQX9wG4_EeioI6dcHPBwyA" supplier="_f42XEG5DEeioI6dcHPBwyA"/> + <packagedElement xmi:type="uml:Class" xmi:id="_y_JdEG5EEeioI6dcHPBwyA" name="BaseParam"> + <ownedComment xmi:type="uml:Comment" xmi:id="_2DcUgG5EEeioI6dcHPBwyA" annotatedElement="_y_JdEG5EEeioI6dcHPBwyA"> + <body>paramètre avec symbole et domaine de définition</body> + </ownedComment> + <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_5GfOwG5EEeioI6dcHPBwyA" client="_y_JdEG5EEeioI6dcHPBwyA" supplier="_WQX9wG4_EeioI6dcHPBwyA" contract="_WQX9wG4_EeioI6dcHPBwyA"/> + <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_l8oMUHMCEei6M4wQtYraFw" client="_y_JdEG5EEeioI6dcHPBwyA" supplier="_TMMMIHMCEei6M4wQtYraFw" contract="_TMMMIHMCEei6M4wQtYraFw"/> + </packagedElement> + <packagedElement xmi:type="uml:Interface" xmi:id="_WriyoG5GEeioI6dcHPBwyA" name="IterableValues"> + <ownedComment xmi:type="uml:Comment" xmi:id="_ZCHBYG5GEeioI6dcHPBwyA" annotatedElement="_WriyoG5GEeioI6dcHPBwyA"> + <body>interface implémentée par les objets pouvant renvoyer un itérateur sur une série de valeurs numériques</body> + </ownedComment> + <ownedOperation xmi:type="uml:Operation" xmi:id="_a15TMG5GEeioI6dcHPBwyA" name="valuesIterator"> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_hXmawG5IEeioI6dcHPBwyA" name=" " type="__1DDYG5CEeioI6dcHPBwyA" direction="out"/> + </ownedOperation> + <ownedOperation xmi:type="uml:Operation" xmi:id="_hKef0HnwEeiygcv4AVbSqA" name="hasMultipleValues"> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_nX0L0HnwEeiygcv4AVbSqA" name=" " direction="out"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Interface" xmi:id="_TMMMIHMCEei6M4wQtYraFw" name="NamedIterableValues"> + <generalization xmi:type="uml:Generalization" xmi:id="_WJfqwHMCEei6M4wQtYraFw" general="_WriyoG5GEeioI6dcHPBwyA"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_ZfadsHMCEei6M4wQtYraFw" name="name" visibility="public"> + <ownedParameter xmi:type="uml:Parameter" xmi:id="_eNFtwHMCEei6M4wQtYraFw" name=" " direction="out"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_uxZYIHMDEei6M4wQtYraFw" name="ExtraResults"> + <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_zGdT4HMDEei6M4wQtYraFw" client="_uxZYIHMDEei6M4wQtYraFw" supplier="_TMMMIHMCEei6M4wQtYraFw" contract="_TMMMIHMCEei6M4wQtYraFw"/> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_7PsE0HMDEei6M4wQtYraFw" name="instancie" client="_zJvOYG5CEeioI6dcHPBwyA" supplier="_uxZYIHMDEei6M4wQtYraFw"/> +</uml:Model> diff --git a/doc/papyrus/model-jalhyd_fr_FR.properties b/doc/papyrus/model-jalhyd_fr_FR.properties new file mode 100644 index 0000000000000000000000000000000000000000..78fbc8007c66c121abfdab654643fa0cbfa2b133 --- /dev/null +++ b/doc/papyrus/model-jalhyd_fr_FR.properties @@ -0,0 +1 @@ +#Wed Jun 27 11:58:42 CEST 2018 diff --git a/spec/iterator/named_iterable_value.spec.ts b/spec/iterator/named_iterable_value.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..a3e68602f5c98c547b451fc553e18d0f25a424b1 --- /dev/null +++ b/spec/iterator/named_iterable_value.spec.ts @@ -0,0 +1,134 @@ +import { ExtraResults, Result, ResultElement, BaseParam, ParamDomainValue } from "../../src"; + +/** + * IMPORTANT ! + * Décommenter temporairement la ligne suivante (import { } from "./mock_jasmine") + * Pour exécuter ce code dans le débugger. + * Faire de même avec le fichier test_func.ts + */ +// import { describe, expect, it, xdescribe, xit } from "../mock_jasmine"; + +function testBaseParamValues(vals: number[]): BaseParam { + const p: BaseParam = new BaseParam("aa", ParamDomainValue.ANY); + + p.paramValues.setValues(vals); + + let n = 0; + for (const v of p.valuesIterator) + expect(v).toEqual(vals[n++]); + + expect(n).toEqual(vals.length); + + return p; +} + +function testResultValues(vals: number[]): Result { + const r: Result = new Result(); + + for (const v of vals) + r.addResultElement(new ResultElement(v)); + + let n = 0; + for (const v of r.valuesIterator) + expect(v).toEqual(vals[n++]); + + expect(n).toEqual(vals.length); + + return r; +} + +function testExtraResultsValues(vals: number[]): ExtraResults { + const ers: ExtraResults = new ExtraResults("aa"); + + for (const v of vals) + ers.addValue(v); + + let n = 0; + for (const v of ers.valuesIterator) + expect(v).toEqual(vals[n++]); + + expect(n).toEqual(vals.length); + + return ers; +} + +describe("NamedIterableValues : ", () => { + describe("BaseParam : ", () => { + it("test 1", () => { + const name = "aa"; + const p: BaseParam = new BaseParam(name, ParamDomainValue.ANY); + expect(p.name).toEqual(name); + }); + + it("test 2", () => { + const vals: number[] = []; + const p = testBaseParamValues(vals); + expect(p.hasMultipleValues).toBeFalsy(); + }); + + it("test 3", () => { + const vals: number[] = [0]; + const p = testBaseParamValues(vals); + expect(p.hasMultipleValues).toBeFalsy(); + }); + + it("test 4", () => { + const vals: number[] = [0, 1]; + const p = testBaseParamValues(vals); + expect(p.hasMultipleValues).toBeTruthy(); + }); + }); + + describe("Result : ", () => { + it("test 1", () => { + const name = "aa"; + const r: Result = new Result(0); + r.name = name; + expect(r.name).toEqual(name); + }); + + it("test 2", () => { + const vals: number[] = []; + const r = testResultValues(vals); + expect(r.hasMultipleValues).toBeFalsy(); + }); + + it("test 3", () => { + const vals: number[] = [0]; + const r = testResultValues(vals); + expect(r.hasMultipleValues).toBeFalsy(); + }); + + it("test 3", () => { + const vals: number[] = [0, 1]; + const r = testResultValues(vals); + expect(r.hasMultipleValues).toBeTruthy(); + }); + }); + + describe("ExtraResults : ", () => { + it("test 1", () => { + const name = "aa"; + const ers: ExtraResults = new ExtraResults(name); + expect(ers.name).toEqual(name); + }); + + it("test 2", () => { + const vals: number[] = []; + const ers = testExtraResultsValues(vals); + expect(ers.hasMultipleValues).toBeFalsy(); + }); + + it("test 3", () => { + const vals: number[] = [0]; + const ers = testExtraResultsValues(vals); + expect(ers.hasMultipleValues).toBeFalsy(); + }); + + it("test 4", () => { + const vals: number[] = [0, 1]; + const ers = testExtraResultsValues(vals); + expect(ers.hasMultipleValues).toBeTruthy(); + }); + }); +}); diff --git a/spec/iterator/paramvalues_iterator.spec.ts b/spec/iterator/paramvalues_iterator.spec.ts index 238b64b503e76072787e6bb8e807fa1fb52fefe3..672cb1342c00a1fa19ef2efc94d56cced8bbdf20 100644 --- a/spec/iterator/paramvalues_iterator.spec.ts +++ b/spec/iterator/paramvalues_iterator.spec.ts @@ -1,6 +1,8 @@ -import { ParamValues, ParamValueMode, ParamValueIterator } from "../../src/param/param-values" +import { ParamValues } from "../../src/param/param-values" +import { NumberIterator } from "../../src/param/param-value-iterator"; +import { ParamValueMode } from "../../src/param/param-value-mode"; -function checkNumberList(it: ParamValueIterator, exp: number[]) { +function checkNumberList(it: NumberIterator, exp: number[]) { let n = 0; for (const v of it) { expect(v).toEqual(exp[n]); diff --git a/spec/mock_jasmine.ts b/spec/mock_jasmine.ts index 17bffedd0e0a95929b3cb34f6d732c3d3cc8a31e..2baf17136e0af0f3d14d27c2a7a5d47d49aa5395 100644 --- a/spec/mock_jasmine.ts +++ b/spec/mock_jasmine.ts @@ -37,6 +37,14 @@ export function xit(sTxt: string, fFun: () => void) { console.warn("*** " + sTxt + " ignored ***"); } +export function fail(m?: string) { + let s = "Test failed"; + if (m !== undefined) + s += ` (${m})`; + + console.error(s); +} + /** * Classe contenant les méthodes de comparaison de Jasmine. */ @@ -83,7 +91,7 @@ class Expect { public toEqual(expected: any) { const res = this.actual === expected; if (!res) { - console.warn("Test 'to be equal to' not tested"); + console.warn(`Test ${this.actual} 'to be equal to' ${expected} failed`); } return res; } @@ -116,6 +124,16 @@ class Expect { } } + public toBeDefined(message?: string) { + if (this.actual === undefined) { + if (message !== undefined) { + console.error(message); + } else { + console.error(`${this.actual} should be defined`); + } + } + } + public toBeUndefined(message?: string) { if (this.actual !== undefined) { if (message !== undefined) { diff --git a/spec/nubtest.ts b/spec/nubtest.ts index 75896f2ed4d8f4aa4330811c481368b35641641c..5d8c6bedcf7da95be4270fea7f9768ed8ba7ff9a 100644 --- a/spec/nubtest.ts +++ b/spec/nubtest.ts @@ -3,7 +3,7 @@ import { Nub } from "../src/nub"; import { ParamsEquation } from "../src/param/params-equation"; import { ParamDefinition, ParamDomainValue, ParamCalculability } from "../src"; -class NubTestParams extends ParamsEquation { +export class NubTestParams extends ParamsEquation { private _A: ParamDefinition; private _B: ParamDefinition; private _C: ParamDefinition; diff --git a/spec/param/param-values.spec.ts b/spec/param/param-values.spec.ts index 6c155989e9fdb919037646bd4ab6f37d780b97f3..f7575fe1cacb3724bcb7668f0985b98af6fc06b0 100644 --- a/spec/param/param-values.spec.ts +++ b/spec/param/param-values.spec.ts @@ -1,6 +1,7 @@ /// <reference path="../../node_modules/@types/jasmine/index.d.ts" /> -import { ParamValues, ParamValueMode } from "../../src/param/param-values" +import { ParamValues } from "../../src/param/param-values" +import { ParamValueMode } from "../../src/param/param-value-mode"; describe('paramvalues : ', () => { it("check single (1)", () => { @@ -56,4 +57,10 @@ describe('paramvalues : ', () => { p.valueMode = ParamValueMode.CALCUL; expect(() => p.check()).not.toThrow(); }); + + it("check link (1)", () => { + const p = new ParamValues(); + p.valueMode = ParamValueMode.LINK; + expect(() => p.check()).not.toThrow(); + }); }); diff --git a/spec/remous/remous_rect_trapezes_pentefaible.spec.ts b/spec/remous/remous_rect_trapezes_pentefaible.spec.ts index 11ef5943cec37654e81ae48c436782f7239b634b..e1be44a9db4b33911d1bdfb3d83d62f5e8ecb6b4 100644 --- a/spec/remous/remous_rect_trapezes_pentefaible.spec.ts +++ b/spec/remous/remous_rect_trapezes_pentefaible.spec.ts @@ -434,8 +434,8 @@ describe("Class Remous / section rectangulaire :", () => { // compareArray("abscisses", res.getExtraResult("trX"), x); const extraHS = { 0.000: 1.6, 5.000: 0.808, 10.000: 0.618 }; - // compareObject("extra (Hs)", res.getExtraResult("tRes"), extraHS, 0.001); - compareExtraResult("extra (Hs)", res, "tRes", extraHS, 0.001); + // compareObject("extra (Hs)", res.getExtraResult("Hs"), extraHS, 0.001); + compareExtraResult("extra (Hs)", res, "Hs", extraHS, 0.001); const expLog = new cLog(); let m = new Message(MessageCode.INFO_REMOUS_LARGEUR_BERGE); diff --git a/spec/remous/remous_trapez.spec.ts b/spec/remous/remous_trapez.spec.ts index b90111075b99454a0803cef8149d93d86a46d04d..95f2c51c2a9e9f4a2b5e6e9fb3b9394856638cce 100644 --- a/spec/remous/remous_trapez.spec.ts +++ b/spec/remous/remous_trapez.spec.ts @@ -153,8 +153,8 @@ describe("Class Remous / section trapèze :", () => { // données de validation : version PHP (oct 2017) const hs = { 0.000: 1.507, 5.000: 0.735, 10.000: 0.731, 15.000: 0.727, 20.000: 0.723, 25.000: 0.719, 30.000: 0.715, 35.000: 0.71, 40.000: 0.704, 45.000: 0.699, 50.000: 0.693, 55.000: 0.687, 60.000: 0.68, 65.000: 0.673, 70.000: 0.665, 75.000: 0.656, 80.000: 0.646, 85.000: 0.634, 90.000: 0.62, 95.000: 0.603, 100.000: 0.572 }; - // compareObject("Hs", res.getExtraResult("tRes"), hs, 0.002); - compareExtraResult("Hs", res, "tRes", hs, 0.002); + // compareObject("Hs", res.getExtraResult("Hs"), hs, 0.002); + compareExtraResult("Hs", res, "Hs", hs, 0.002); }); xit("Hs (test 2)", () => { // désactivé car échoue depuis les modifs apportées depuis la version PHP (calcul du ressaut hydraulique) @@ -185,8 +185,8 @@ describe("Class Remous / section trapèze :", () => { // données de validation : version PHP (oct 2017) // ici j'ai supprimé un point (x=2.5) const hs = { 0.000: 1.507, 2.600: 0.753, 2.700: 0.757, 2.800: 0.762, 2.900: 0.767, 3.000: 0.771, 3.100: 0.776, 3.200: 0.781, 3.300: 0.786, 3.400: 0.79, 3.500: 0.795, 3.600: 0.8, 3.700: 0.805, 3.800: 0.81, 3.900: 0.814, 4.000: 0.819, 4.100: 0.824, 4.200: 0.829, 4.300: 0.834, 4.400: 0.839, 4.500: 0.844, 4.600: 0.849, 4.700: 0.854, 4.800: 0.859, 4.900: 0.864, 5.000: 0.869, 5.100: 0.874, 5.200: 0.879, 5.300: 0.884, 5.400: 0.889, 5.500: 0.894, 5.600: 0.899, 5.700: 0.904, 5.800: 0.909, 5.900: 0.914, 6.000: 0.919, 6.100: 0.924, 6.200: 0.929, 6.300: 0.934, 6.400: 0.939, 6.500: 0.944, 6.600: 0.95, 6.700: 0.955, 6.800: 0.96, 6.900: 0.965, 7.000: 0.97, 7.100: 0.975, 7.200: 0.98, 7.300: 0.986, 7.400: 0.991, 7.500: 0.996, 7.600: 1.001, 7.700: 1.006, 7.800: 1.012, 7.900: 1.017, 8.000: 1.022 }; - // compareObject("Hs", res.getExtraResult("tRes"), hs, 0.009); - compareExtraResult("Hs", res, "tRes", hs, 0.009); + // compareObject("Hs", res.getExtraResult("Hs"), hs, 0.009); + compareExtraResult("Hs", res, "Hs", hs, 0.009); }); }); }); diff --git a/spec/value_ref/value_ref.spec.ts b/spec/value_ref/value_ref.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..82ed531ea7af2861f4a8d7cb79e7880a30f29053 --- /dev/null +++ b/spec/value_ref/value_ref.spec.ts @@ -0,0 +1,230 @@ +/** + * IMPORTANT ! + * Décommenter temporairement la ligne suivante (import { } from "./mock_jasmine") + * Pour exécuter ce code dans le débugger. + * Faire de même avec le fichier test_func.ts + */ +// import { describe, expect, it, xdescribe, xit } from "../mock_jasmine"; + +import { NubTest, NubTestParams } from "../nubtest"; +import { precDigits } from "../test_config"; +import { ParamValueMode } from "../../src/param/param-value-mode"; +import { Result } from "../../src"; + +let nub1: NubTest; +let nub2: NubTest; +let prm1: NubTestParams; +let prm2: NubTestParams; + +/** + * crée l'environnement de test. + * répété à chaque test car il manque un mock de beforeEach + */ +function createEnv() { + // Nub maître (dont on référence la valeur du paramètre A) + nub1 = new NubTest(new NubTestParams()); + prm1 = nub1.parameters as NubTestParams; + + // Nub esclave (qui utilise la valeur de A du Nub maître) + nub2 = new NubTest(new NubTestParams()); + prm2 = nub2.parameters as NubTestParams; +} + +describe("référence d'un paramètre à un autre : ", () => { + describe("lien au paramètre du même nom : ", () => { + it("test 1", () => { + // cas de figure : + // nub2.A est lié à nub1.A (valeur fixe) + // lecture des valeurs de tous les paramètres + + createEnv(); + + prm2.A.v = 0; // valeur esclave, doit être masquée par la valeur maître (cad prm1.A, normalement 1) + prm2.A.defineReference(nub1, "A"); + + expect(prm1.A.v).toEqual(1); + expect(prm1.B.v).toEqual(2); + expect(prm1.C.v).toEqual(3); + expect(prm2.A.v).toEqual(1); + expect(prm2.B.v).toEqual(2); + expect(prm2.C.v).toEqual(3); + }); + + it("test 2", () => { + // cas de figure : + // nub2.B est lié à nub1.B (valeur fixe) + // lecture des valeurs de tous les paramètres + + createEnv(); + + prm2.B.v = 0; // valeur esclave, doit être masquée par la valeur maître (cad prm1.B, normalement 2) + prm2.B.defineReference(nub1, "B"); + + expect(prm1.A.v).toEqual(1); + expect(prm1.B.v).toEqual(2); + expect(prm1.C.v).toEqual(3); + expect(prm2.A.v).toEqual(1); + expect(prm2.B.v).toEqual(2); + expect(prm2.C.v).toEqual(3); + }); + + it("test 3", () => { + // cas de figure : + // nub2.C est lié à nub1.C (valeur fixe) + // lecture des valeurs de tous les paramètres + + createEnv(); + + prm2.C.v = 0; // valeur esclave, doit être masquée par la valeur maître (cad prm1.C, normalement 3) + prm2.C.defineReference(nub1, "C"); + + expect(prm1.A.v).toEqual(1); + expect(prm1.B.v).toEqual(2); + expect(prm1.C.v).toEqual(3); + expect(prm2.A.v).toEqual(1); + expect(prm2.B.v).toEqual(2); + expect(prm2.C.v).toEqual(3); + }); + + it('test 4', () => { + // cas de figure : + // nub2.A est lié à nub1.A (valeur fixe) + // calcul de tous les paramètres + + createEnv(); + + prm2.A.v = 0; // valeur esclave, doit être masquée par la valeur maître (cad prm1.A, normalement 1) + prm2.A.defineReference(nub1, "A"); + + expect(nub1.Calc("A").vCalc).toBeCloseTo(1, precDigits); + expect(nub1.Calc("B").vCalc).toBeCloseTo(2, precDigits); + expect(nub1.Calc("C").vCalc).toBeCloseTo(3, precDigits); + + expect(nub2.Calc("A").vCalc).toBeCloseTo(1, precDigits); + expect(nub2.Calc("B").vCalc).toBeCloseTo(2, precDigits); + expect(nub2.Calc("C").vCalc).toBeCloseTo(3, precDigits); + }); + + it('test 5', () => { + // cas de figure : + // nub2.B est lié à nub1.B (valeur fixe) + // calcul de tous les paramètres + + createEnv(); + + prm1.B.v = 3; // valeur maître + prm2.B.v = 0; // valeur esclave (doit être masquée par la valeur maître) + prm2.B.defineReference(nub1, "B"); + + expect(nub1.Calc("A").vCalc).toBeCloseTo(0, precDigits); + expect(nub1.Calc("B").vCalc).toBeCloseTo(3, precDigits); + expect(nub1.Calc("C").vCalc).toBeCloseTo(3, precDigits); + + expect(nub2.Calc("A").vCalc).toBeCloseTo(0, precDigits); + //expect(nub2.Calc("B").vCalc).toBeCloseTo(3, precDigits); // échoue car l'écriture du paramètre esclave (pendant la dichotomie) n'affecte pas la valeur maître; la relecture du paramètre esclave ne reflète pas la valeur écrite + expect(nub2.Calc("C").vCalc).toBeCloseTo(3, precDigits); + }); + + it('test 6', () => { + // cas de figure : + // nub2.C est lié à nub1.C (valeur fixe) + // calcul de tous les paramètres + + createEnv(); + + prm2.C.v = 0; // valeur esclave, doit être masquée par la valeur maître (cad prm1.C, normalement 3) + prm2.C.defineReference(nub1, "C"); + + + expect(nub1.Calc("A").vCalc).toBeCloseTo(1, precDigits); + expect(nub1.Calc("B").vCalc).toBeCloseTo(2, precDigits); + expect(nub1.Calc("C").vCalc).toBeCloseTo(3, precDigits); + + expect(nub2.Calc("A").vCalc).toBeCloseTo(1, precDigits); + expect(nub2.Calc("B").vCalc).toBeCloseTo(2, precDigits); + expect(nub2.Calc("C").vCalc).toBeCloseTo(3, precDigits); + }); + }); + + describe("lien à un paramètre non fixé : ", () => { + it('test 1', () => { + // cas de figure : + // nub2.A est lié à nub1.C (valeur calculée) + // lecture de nub2.A + + createEnv(); + + prm1.B.v = 5; + prm1.C.paramValues.valueMode = ParamValueMode.CALCUL; + prm2.A.v = 0; // valeur esclave (doit être masquée par la valeur maître, cad prm1.C, normalement 3) + prm2.A.defineReference(nub1, "C"); + + expect(prm2.A.v).toBeCloseTo(6, precDigits); + }); + + it('test 2', () => { + // cas de figure : + // nub2.A est lié à nub1.C (valeur calculée) + // calcul de nub2.C + + createEnv(); + + prm1.C.v = 0; // valeur bidon, doit être 3 après calcul + prm1.C.paramValues.valueMode = ParamValueMode.CALCUL; + prm2.C.v = 0; // valeur bidon, doit être 5 après calcul + prm2.A.v = 0; // valeur esclave bidon, doit être masquée par la valeur maître (cad prm1.C, normalement 3) + prm2.A.defineReference(nub1, "C"); + + expect(nub2.Calc("C").vCalc).toBeCloseTo(5, precDigits); + }); + + it('test 3', () => { + // cas de figure : + // nub2.A est lié à nub1.A (valeur variée) + // lecture de nub2.A + + createEnv(); + + const min = 1; + const max = 5; + const step = 1; + + const pv = prm1.A.paramValues; + pv.setValues(min, max, step); + prm2.A.v = 0; // valeur esclave bidon, doit être masquée par la valeur maître (cad prm1.A, normalement [1,2,3,4,5]) + prm2.A.defineReference(nub1, "A"); + + let n = 0; + let i = min; + for (const v of prm2.A.paramValues.getValuesIterator()) { + expect(v).toEqual(i); + n++; + i += step; + } + expect(n).toEqual((max - min) / step + 1); + }); + + it('test 4', () => { + // cas de figure : + // nub2.A est lié à nub1.A (valeur variée) + // calcul de nub2.C + + createEnv(); + + const input = [2, 3, 4, 5, 6]; + const pv = prm1.A.paramValues; + pv.setValues(input); + prm2.A.v = 0; // valeur esclave bidon, doit être masquée par la valeur maître (cad prm1.A, normalement [2,3,4,5,6]) + prm2.A.defineReference(nub1, "A"); + + const r: Result = nub2.CalcSerie(0.001, 0.1, "C"); + + let n = 0; + for (const re of r.resultElements) { + expect(re.vCalc).toEqual(input[n] + 2); + n++; + } + expect(n).toEqual(input.length); + }); + }); +}); diff --git a/spec/value_ref/value_ref_circularity.spec.ts b/spec/value_ref/value_ref_circularity.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..bf06ed1bc8fb54aef939e17e30b5e7ae4aed6709 --- /dev/null +++ b/spec/value_ref/value_ref_circularity.spec.ts @@ -0,0 +1,104 @@ +import { NubTest, NubTestParams } from "../nubtest"; + +/** + * IMPORTANT ! + * Décommenter temporairement la ligne suivante (import { } from "./mock_jasmine") + * Pour exécuter ce code dans le débugger. + * Faire de même avec le fichier test_func.ts + */ +// import { describe, expect, it, xdescribe, xit, fail } from "../mock_jasmine"; + +let nub1: NubTest; +let nub2: NubTest; +let nub3: NubTest; +let prm1: NubTestParams; +let prm2: NubTestParams; +let prm3: NubTestParams; + +/** + * crée l'environnement de test. + * répété à chaque test car il manque un mock de beforeEach + */ +function createEnv() { + nub1 = new NubTest(new NubTestParams()); + prm1 = nub1.parameters as NubTestParams; + + nub2 = new NubTest(new NubTestParams()); + prm2 = nub2.parameters as NubTestParams; + + nub3 = new NubTest(new NubTestParams()); + prm3 = nub3.parameters as NubTestParams; +} + +describe("référence d'un paramètre à un autre : ", () => { + describe("vérification des références circulaires : ", () => { + it("test 1", () => { + // cas de figure (ne doit pas échouer) : + // nub2.A référence nub1.A + + createEnv(); + + try { + prm2.A.defineReference(nub1, "A"); // ne doit pas échouer + } + catch (e) { + fail(); + } + }); + + it("test 2", () => { + // cas de figure (ne doit pas échouer) : + // nub1.A référence nub2.A qui référence nub3.A + + createEnv(); + + try { + prm1.A.defineReference(nub2, "A"); + prm2.A.defineReference(nub3, "A"); + } + catch (e) { + fail(); + } + }); + + it("test 3", () => { + // cas de figure (doit échouer) : + // nub2.A référence nub1.A qui référence nub2.A + + createEnv(); + + try { + prm2.A.defineReference(nub1, "A"); // ne doit pas échouer + prm1.A.defineReference(nub2, "A"); // doit échouer + fail(); + } + catch (e) { + } + }); + + it("test 4", () => { + // cas de figure (doit échouer) : + // param1 référence param2 (OK) + // param3 référence param1 (OK) + // param2 référence param3 (doit échouer) + + createEnv(); + + try { + prm1.A.defineReference(nub2, "A"); // ne doit pas échouer + prm3.A.defineReference(nub1, "A"); // ne doit pas échouer + } + catch (e) { + fail(); + } + + + try { + prm2.A.defineReference(nub3, "A"); // doit échouer + fail(); + } + catch (e) { + } + }); + }); +}); diff --git a/spec/value_ref/value_ref_section.spec.ts b/spec/value_ref/value_ref_section.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..58d7479d557aebaf34efefa07b510ee03b17bb7b --- /dev/null +++ b/spec/value_ref/value_ref_section.spec.ts @@ -0,0 +1,49 @@ +import { SectionParametree } from "../../src/section/section_nub"; +import { acSection } from "../../src/section/section_type"; +import { cSnTrapez, ParamsSectionTrapez } from "../../src"; + +/** + * IMPORTANT ! + * Décommenter temporairement la ligne suivante (import { } from "./mock_jasmine") + * Pour exécuter ce code dans le débugger. + * Faire de même avec le fichier test_func.ts + */ +// import { describe, expect, it, xdescribe, xit } from "../mock_jasmine"; + +let nub1: SectionParametree; +let nub2: SectionParametree; +let prm1: ParamsSectionTrapez; +let prm2: ParamsSectionTrapez; + +/** + * crée l'environnement de test. + * répété à chaque test car il manque un mock de beforeEach + */ +function createEnv() { + // Nub maître + nub1 = new SectionParametree(new cSnTrapez(new ParamsSectionTrapez(1, 0.5, 1, 0.01, 1, 0.01, 0.01, 2))); + prm1 = nub1.parameters as ParamsSectionTrapez; + + // Nub esclave + nub2 = new SectionParametree(new cSnTrapez(new ParamsSectionTrapez(1, 0.5, 1, 0.01, 1, 0.01, 0.01, 2))); + prm2 = nub2.parameters as ParamsSectionTrapez; +} + +describe("référence d'un paramètre à un autre : ", () => { + describe("résultat complémentaire/section : ", () => { + it("test 1", () => { + // cas de figure : + // nub2.Y est lié au résultat complémentaire Yf de nub1 + // lecture de nub2.Y + + createEnv(); + + prm2.Y.v = 0; // valeur esclave, doit être masquée par la valeur maître (cad prm1.Yf) + prm2.Y.defineReference(nub1, ".Yf"); + + nub1.CalcSerie(); + + expect(prm2.Y.v).toEqual(1); + }); + }); +}); diff --git a/spec/value_ref/value_ref_structure.spec.ts b/spec/value_ref/value_ref_structure.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..f49eb0a6805e8e240268189f5af17184e053a318 --- /dev/null +++ b/spec/value_ref/value_ref_structure.spec.ts @@ -0,0 +1,99 @@ +import { SectionParametree } from "../../src/section/section_nub"; +import { cSnTrapez, ParamsSectionTrapez, ParallelStructure, ParallelStructureParams } from "../../src"; +import { StructureCem88d, RectangularStructureParams } from "../../src/structure/structure_cem88d"; +import { StructureCunge80 } from "../../src/structure/structure_cunge80"; + +/** + * IMPORTANT ! + * Décommenter temporairement la ligne suivante (import { } from "./mock_jasmine") + * Pour exécuter ce code dans le débugger. + * Faire de même avec le fichier test_func.ts + */ +// import { describe, expect, it, xdescribe, xit } from "../mock_jasmine"; + +let nub1: ParallelStructure; +let nub2: ParallelStructure; +let nub3: StructureCem88d; +let nub4: StructureCunge80; +let prm3: RectangularStructureParams; +let prm4: RectangularStructureParams; + +/** + * crée l'environnement de test. + * répété à chaque test car il manque un mock de beforeEach + */ +function createEnv() { + // Nub maître 1 + nub1 = new ParallelStructure(new ParallelStructureParams(1, 2, 1)); + + // Nub maître 2 + nub2 = new ParallelStructure(new ParallelStructureParams(1, 2, 1)); + + // Nub esclave 1 + nub3 = new StructureCem88d(new RectangularStructureParams(0.5, 0, 1, 0.5, 1, 0.5)); + prm3 = nub3.parameters as RectangularStructureParams; + nub1.addStructure(nub3); + + // Nub esclave 2 + nub4 = new StructureCunge80(new RectangularStructureParams(0.5, 0, 1, 0.5, 1, 0.5)); + prm4 = nub4.parameters as RectangularStructureParams; + nub2.addStructure(nub4); +} + +describe("référence d'un paramètre à un autre : ", () => { + describe("résultat complémentaire/ouvrages parallèles : ", () => { + it("test 1", () => { + // cas de figure : + // nub4.Q est lié au résultat complémentaire Q_Mode de nub1 + // lecture de nub4.Q + + createEnv(); + + prm4.Q.defineReference(nub1, "ouvrage[0].Q_Mode"); + + nub1.CalcSerie(0.001, 0.1, "Q"); + nub2.CalcSerie(0.001, 0.1, "Q"); + /* + nub1.result.resultElements[0].extraResults = { + "ouvrage[0].Q" : 6.264183905346331 + "ouvrage[0].Q_Mode" : 0 + "ouvrage[0].Q_Regime" : 0 + } + nub2.result.resultElements[0].extraResults = { + "ouvrage[0].Q" : 2.4110855093366834 + "ouvrage[0].Q_Mode" : 0 + "ouvrage[0].Q_Regime" : 0 + } + */ + + expect(prm4.Q.v).toEqual(0); + }); + + it("test 2", () => { + // cas de figure : + // nub4.Q est lié au résultat complémentaire Q de nub1 + // lecture de nub4.Q + + createEnv(); + + prm4.Q.defineReference(nub1, "ouvrage[0].Q"); + + nub1.CalcSerie(0.001, 0.1, "Q"); + nub2.CalcSerie(0.001, 0.1, "Q"); + /* + nub1.result.resultElements[0].extraResults = { + "ouvrage[0].Q" : 6.264183905346331 + "ouvrage[0].Q_Mode" : 0 + "ouvrage[0].Q_Regime" : 0 + } + nub2.result.resultElements[0].extraResults = { + "ouvrage[0].Q" : 2.4110855093366834 + "ouvrage[0].Q_Mode" : 0 + "ouvrage[0].Q_Regime" : 0 + } + */ + + expect(prm4.Q.v).toEqual(6.264183905346331); + }); + }); +}); diff --git a/spec/value_ref/value_ref_variable_extraresult.spec.ts b/spec/value_ref/value_ref_variable_extraresult.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..52449b539f17623ed7751169cdc3d39b511935d8 --- /dev/null +++ b/spec/value_ref/value_ref_variable_extraresult.spec.ts @@ -0,0 +1,61 @@ +import { ParamsSectionRectang, cSnRectang, CourbeRemousParams, MethodeResolution, CourbeRemous, Result } from "../../src"; + +/** + * IMPORTANT ! + * Décommenter temporairement la ligne suivante (import { } from "./mock_jasmine") + * Pour exécuter ce code dans le débugger. + * Faire de même avec le fichier test_func.ts + */ +// import { describe, expect, it, xdescribe, xit } from "../mock_jasmine"; + +describe("référence d'un paramètre à un résultat complémentaire multivalué : ", () => { + it("test 1", () => { + // cas de figure : + // courbe de remous / section rectangulaire, méthode Euler explicite, faible pente, pas de ressaut, Yamont > Yc, Yaval > Yn + // on itère sur la courbe fluviale + + const prms = new ParamsSectionRectang(undefined, // tirant d'eau + 2.5, // largeur de fond + 40, // Ks=Strickler + 2, // Q=Débit + 0.001, // If=pente du fond + 0.001, // précision + 1 // YB=hauteur de berge + ); + + const sect = new cSnRectang(prms); + + const prem = new CourbeRemousParams(sect, 0.5, // Yamont = tirant amont + 1, // Yaval = tirant aval + 100, // Long= Longueur du bief + 5, // Dx=Pas d'espace + MethodeResolution.EulerExplicite + ); + + const rem = new CourbeRemous(prem); + + const res: Result = rem.calculRemous(undefined); + + // données de validation : version Typescript (Oct 2017) méthode des trapèzes + + const f = [0.9872500000000014, 0.9872500000000014, 0.9872500000000014, + 0.9872500000000014, 0.9880000000000013, 0.9887500000000012, + 0.9895000000000012, 0.9902500000000011, 0.991000000000001, + 0.9917500000000009, 0.9925000000000008, 0.9932500000000007, + 0.9940000000000007, 0.9947500000000006, 0.9955000000000005, + 0.9962500000000004, 0.9970000000000003, 0.9977500000000002, + 0.9985000000000002, 0.9992500000000001, 1]; + + const vs = rem.getLinkableValues("flu"); + expect(Object.keys(vs).length).toEqual(1); + + const vs2 = vs[0]["value"]; + expect(vs2.name).toEqual("flu"); + + let i = 0; + for (const v of vs2.valuesIterator) { + expect(f[i]).toBeDefined(); + expect(Math.abs(v - f[i++]) < 0.01).toBeTruthy(); + } + }); +}); diff --git a/spec/value_ref/value_ref_variable_result.spec.ts b/spec/value_ref/value_ref_variable_result.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..9eff1a2bbaccef2f7902459bf49b06a320188cff --- /dev/null +++ b/spec/value_ref/value_ref_variable_result.spec.ts @@ -0,0 +1,68 @@ +import { ConduiteDistrib } from "../../src/cond_distri"; +import { ConduiteDistribParams } from "../../src/cond_distri"; +import { ParamValueMode } from "../../src"; + +/** + * IMPORTANT ! + * Décommenter temporairement la ligne suivante (import { } from "./mock_jasmine") + * Pour exécuter ce code dans le débugger. + * Faire de même avec le fichier test_func.ts + */ +// import { describe, expect, it, xdescribe, xit } from "../mock_jasmine"; + +let nub1: ConduiteDistrib; +let nub2: ConduiteDistrib; +let prm1: ConduiteDistribParams; +let prm2: ConduiteDistribParams; + +/** + * crée l'environnement de test. + * répété à chaque test car il manque un mock de beforeEach + */ +function createEnv() { + // Nub maître + nub1 = new ConduiteDistrib(new ConduiteDistribParams(3, 1.2, 0.6, 100, 0.000001)); + prm1 = nub1.parameters as ConduiteDistribParams; + + // Nub esclave + nub2 = new ConduiteDistrib(new ConduiteDistribParams(3, 1.2, 0.6, 100, 0.000001)); + prm2 = nub2.parameters as ConduiteDistribParams; +} + +describe("référence d'un paramètre à un résultat multivalué : ", () => { + it("test 1", () => { + // cas de figure : + // nub2.Q est lié au résultat J de nub1 + // lecture de nub2.Q + + createEnv(); + + prm1.Q.paramValues.valueMode = ParamValueMode.MINMAX; + prm1.Q.paramValues.min = 1.5; + prm1.Q.paramValues.max = 6; + prm1.Q.paramValues.step = 0.5; + prm2.Q.defineReference(nub1, "J."); + + const expectedJ: number[] = [0.024202971271651448, 0.04004160474685753, 0.059170330781816, 0.08140876712328136, 0.10661739314398751, 0.1346833675705545, 0.16551253143900968, 0.19902447617522237, 0.23514929908544743, 0.273825361776767]; + + const res = nub1.CalcSerie(0.001, 0.6, "J"); + let i = 0; + for (const re of res.resultElements) + // console.log(re.vCalc); + expect(re.vCalc).toEqual(expectedJ[i++]); + + i = 0; + for (const v of res.valuesIterator) + expect(v).toEqual(expectedJ[i++]); + expect(i).toEqual(expectedJ.length); + + // i = 0; + // for (const v of prm1.J.valuesIterator) + // expect(v).toEqual(expectedJ[i++]); // échoue car le valueMode de J (SINGLE) n'est pas modifié par CalcSerie() + + i = 0; + for (const v of prm2.Q.valuesIterator) + expect(v).toEqual(expectedJ[i++]); + expect(i).toEqual(expectedJ.length); + }); +}); diff --git a/src/index.ts b/src/index.ts index f904a4e2888d429cf7ea21fe4a2ed3d091308033..1a2c0adb291db03e068510818a6f2aad2b026ffd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,6 +4,8 @@ export * from "./param/param-definition"; export * from "./param/param-domain"; export * from "./param/params-equation"; export * from "./param/param-values"; +export * from "./param/param-value-mode"; +export * from "./param/param-value-iterator"; export * from "./compute-node"; export * from "./nub"; export * from "./nub_factory"; diff --git a/src/jalhyd_object.ts b/src/jalhyd_object.ts index eb7c2c31fe23f53229ebbcaae77b71fbe588fc27..994ee0be245817bfaa403daa0dfb29f4eca6d305 100644 --- a/src/jalhyd_object.ts +++ b/src/jalhyd_object.ts @@ -1,14 +1,21 @@ -export abstract class JalhydObject { +export interface IJalhydObject { + readonly uid: number; +} + +export interface INamedObject extends IJalhydObject { + readonly name: string; +} +export abstract class JalhydObject implements IJalhydObject { /** - * générateur d'id - */ - private static _uidSequence: number = 0; + * id numérique unique + */ + private _uid: number; /** - * id numérique unique + * générateur d'id */ - private _uid: number; + private static _uidSequence: number = 0; constructor() { this._uid = JalhydObject.nextUID; diff --git a/src/nub.ts b/src/nub.ts index 26f285efb765b6246d56e01cd459fdd35a023056..68ae8e3cadee30d7f285008c7a2d449965956e98 100644 --- a/src/nub.ts +++ b/src/nub.ts @@ -2,13 +2,16 @@ import { Debug } from "./base"; import { Dichotomie } from "./dichotomie"; import { ComputeNode } from "./compute-node"; import { Result } from "./util/result"; -import { ParamValues, ParamValueMode } from "./param/param-values"; +import { ParamValues } from "./param/param-values"; +import { ParamValueMode } from "./param/param-value-mode"; import { ParamDefinition } from "."; +import { IReferencedNub } from "./value_ref/object_ref"; +import { NamedIterableValues, NumberIterator } from "./param/param-value-iterator"; /** * Classe abstraite de Noeud de calcul : classe de base pour tous les calculs */ -export abstract class Nub extends ComputeNode { +export abstract class Nub extends ComputeNode implements IReferencedNub { private _dichoStartIntervalMaxSteps: number = 100; /** @@ -46,12 +49,14 @@ export abstract class Nub extends ComputeNode { } if (computedVar.isAnalytical()) { this._result = this.Equation(sVarCalc); + this._result.name = sVarCalc; return this._result; } const resSolve: Result = this.Solve(sVarCalc, rInit, rPrec); if (!resSolve.ok) { this._result = resSolve; + this._result.name = sVarCalc; return this._result; } const sAnalyticalPrm: string = this.getFirstAnalyticalParameter().symbol; @@ -59,6 +64,7 @@ export abstract class Nub extends ComputeNode { const res: Result = this.Equation(sAnalyticalPrm); res.vCalc = resSolve.vCalc; this._result = res; + this._result.name = sVarCalc; return res; } @@ -69,18 +75,21 @@ export abstract class Nub extends ComputeNode { * @param sDonnee éventuel symbole du paramètre à calculer */ public CalcSerie(rPrec: number = 0.001, rInit?: number, sDonnee?: string): Result { - const res = new Result(); - this._result = res; - let variatedParam: ParamDefinition; let computedParam: ParamDefinition; - for (const p of this.parameterIterator) { + let prmValue: ParamValues; // instance de ParamValues utilisée pour le paramètre varié (qui peut être un paramètre référencé (importé)) + for (const p of this.parameterIterator) { switch (p.valueMode) { + case ParamValueMode.SINGLE: + break; + case ParamValueMode.LISTE: case ParamValueMode.MINMAX: - if (variatedParam == undefined) + if (variatedParam == undefined) { variatedParam = p; + prmValue = p.paramValues; + } else throw new Error(`CalcSerie() : il y plusieurs paramètres à varier (au moins ${variatedParam.symbol} et ${p.symbol})`); break; @@ -93,6 +102,39 @@ export abstract class Nub extends ComputeNode { throw new Error(`CalcSerie() : il y plusieurs paramètres à calculer (au moins ${computedParam.symbol} et ${p.symbol})`); } break; + + case ParamValueMode.LINK: + if (p.referencedParamValues !== undefined) + switch (p.referencedParamValues.valueMode) { + case ParamValueMode.SINGLE: + break; + + case ParamValueMode.LISTE: + case ParamValueMode.MINMAX: + if (variatedParam == undefined) { + variatedParam = p; + prmValue = p.referencedParamValues; + } + else + throw new Error(`CalcSerie() : il y plusieurs paramètres à varier (au moins ${variatedParam.symbol} et ${p.symbol})`); + break; + + case ParamValueMode.CALCUL: + if (sDonnee == undefined) { + if (computedParam == undefined) + computedParam = p; + else + throw new Error(`CalcSerie() : il y plusieurs paramètres à calculer (au moins ${computedParam.symbol} et ${p.symbol})`); + } + break; + + default: + throw new Error(`CalcSerie() : valeur référencée de ParamValueMode ${ParamValueMode[p.referencedParamValues.valueMode]} non prise en charge`); + } + break; + + default: + throw new Error(`CalcSerie() : valeur de ParamValueMode ${ParamValueMode[p.valueMode]} non prise en charge`); } } @@ -111,9 +153,9 @@ export abstract class Nub extends ComputeNode { this._result = this.Calc(computedSymbol, rInit, rPrec); // résultat dans this._result else { const res = new Result(); - variatedParam.paramValues.initIterator(); - while (variatedParam.paramValues.hasNext) { - variatedParam.paramValues.next; + prmValue.initIterator(); + while (prmValue.hasNext) { + prmValue.next; this.Calc(computedSymbol, rInit, rPrec); // résultat dans this._result if (this._result.ok) { res.addResultElement(this._result.resultElement); @@ -125,6 +167,7 @@ export abstract class Nub extends ComputeNode { this._result = res; } + this._result.name = computedSymbol; return this._result; } @@ -144,4 +187,100 @@ export abstract class Nub extends ComputeNode { public get result(): Result { return this._result; } + + // interface IReferencedNub + + public getReferencedParamValues(desc: string): ParamValues { + const prm = this.getParameter(desc); + if (prm !== undefined) + return prm.paramValues; + return undefined; + } + + public getReferencedResult(desc?: string): Result { + if (desc === undefined || (this._result !== undefined && this._result.name === desc)) + return this._result; + + return this.CalcSerie(0.001, 0.1, desc); // il y a des valeurs par défaut pour la précision et la valeur initiale, mais il faudra prévoir un mécanisme pour les transmettre + } + + public getReferencedExtraResult(desc: string): any { + const tmp: string[] = desc.split("."); + const r: Result = this.getReferencedResult(tmp[0]); + return r.getExtraResult(tmp[1]); + } + + public getReferencedValuesIterator(desc: string): NumberIterator { + const ro = this.getReferencedObject(desc); + return ro.valuesIterator; + } + + public getReferencedObject(desc: string): NamedIterableValues { + const tmp = desc.split("."); + + if (tmp.length == 1) // paramètre (ex "Q") + return this.getParameter(desc); + + if (tmp[1] === "") // résultat (ex "Q.") + if (this._result !== undefined) + return this._result; + + // les autres objets référençables n'implémentant pas IJalhydObject... + return undefined; + } + + private addPrefix(str: string, prefix: string) { + return prefix === undefined ? str : `${prefix}${str}`; + } + + /** + * liste des valeurs (paramètre, résultat, résultat complémentaire) liables à un paramètre + * @param src objet qui sert de clé de recherche des paramètres liables, de type INamedObject | string + * @param excludeResult true si on veut exclure des valeurs retournées le résultat/résultat complémentaire correspondant à la clé de recherche + * @returns tableau d'objets de la forme { "name":string, "value":NamedIterableValues, "nub":Nub}, nub=Nub d'origine de la "value" + */ + public getLinkableValues(src: any, prefix?: string, excludeResult: boolean = false): any[] { + const res: any[] = []; + + const isStr = typeof (src) === "string"; + const name = isStr ? src : src.name; + const hasUid = isStr ? false : "uid" in src; + + // paramètres + + for (const p of this._prms) { + const cond = hasUid ? p.uid !== src.uid : true; // pour éviter d'ajouter le paramètre d'entrée dans le tableau résultat + if (cond) + switch (p.valueMode) { + case ParamValueMode.SINGLE: + case ParamValueMode.MINMAX: + case ParamValueMode.LISTE: + switch (name) { + case "Z1": + case "Z2": + if (p.symbol === "Z1" || p.symbol === "Z2") + res.push({ "name": this.addPrefix(p.symbol, prefix), "value": p, "nub": this }); + break; + + default: + if (p.symbol === name) + res.push({ "name": this.addPrefix(p.symbol, prefix), "value": p, "nub": this }); + } + } + } + + // résultat + if (this._result !== undefined && !excludeResult) { + if (this._result.name === name) + res.push({ "name": this.addPrefix(`${name}.`, prefix), "value": this._result, "nub": this }); + + // résultats complémentaires + + const erIter = this._result.getIterableExtraResults(name) + if (erIter !== undefined) + res.push({ "name": this.addPrefix(`${this._result.name}.${name}`, prefix), "value": erIter, "nub": this }); + } + + return res; + } } diff --git a/src/nub_factory.ts b/src/nub_factory.ts index e84c0b724dcdd77ac23afac169015f73088c5192..ecf899377dd4960e0cb0e6e89262f72f408b5423 100644 --- a/src/nub_factory.ts +++ b/src/nub_factory.ts @@ -84,6 +84,16 @@ export class NubFactory { } throw new Error(`NubFactory.replaceStructureNub() : la structure (uid ${oldNub.uid}) à remplacer n'a pas été trouvée`); } + + // copie (dans la mesure du possible) des modes de valeur des paramètres + + for (const p of newNub.parameters) + try { + const p2 = oldNub.getParameter(p.symbol); + p.valueMode = p2.valueMode; + } + catch (e) { + } } private deleteStructureNub(n: Nub) { diff --git a/src/param/param-base.ts b/src/param/param-base.ts index 6731c4566b1389a5a2526233db51ab429c055d64..2d8ff743bbbde4813228a2cc495dd75fc4df46d8 100644 --- a/src/param/param-base.ts +++ b/src/param/param-base.ts @@ -1,16 +1,20 @@ -import { DefinedNumber } from "../util/definedvalue"; import { Interval } from "../util/interval"; import { Message, MessageCode } from "../util/message"; -import { JalhydObject } from "../jalhyd_object" +import { JalhydObject, IJalhydObject } from "../jalhyd_object" import { ParamDomain, ParamDomainValue } from "./param-domain"; -import { ParamValues, ParamValueMode } from "./param-values"; +import { ParamValues } from "./param-values"; +import { ParamValueMode } from "./param-value-mode"; +import { IReferencedNub, INubReference } from "../value_ref/object_ref"; +import { Result } from "../util/result"; +import { NamedIterableValues, NumberIterator } from "./param-value-iterator"; +import { IObservable, Observable, Observer } from "../util/observer"; /** * paramètre avec symbole et domaine de définition */ // tslint:disable-next-line:max-classes-per-file -export class BaseParam extends JalhydObject { +export class BaseParam extends JalhydObject implements INubReference, NamedIterableValues, IObservable { /** * symbole */ @@ -26,14 +30,19 @@ export class BaseParam extends JalhydObject { */ private _paramValues: ParamValues; + /** + * implémentation par délégation de IObservable + */ + private _observable: Observable; + constructor(symb: string, d: ParamDomain | ParamDomainValue, val?: number) { super(); this._symbol = symb; + this._observable = new Observable() + this._paramValues = new ParamValues(); this._paramValues.setSingleValue(val); - if (val !== undefined) - this._paramValues.valueMode = ParamValueMode.SINGLE; if (d instanceof ParamDomain) { this._domain = d; @@ -57,6 +66,8 @@ export class BaseParam extends JalhydObject { } public get paramValues(): ParamValues { + if (this.isReferenceDefined) + return this.referencedParamValues; return this._paramValues; } @@ -75,12 +86,24 @@ export class BaseParam extends JalhydObject { throw e; } - return this._paramValues.singleValue; + return this._paramValues.currentValue; } - public setValue(val: number) { + /** + * notification envoyée après la modification de la valeur du paramètre + */ + private notifyValueModified(sender: any) { + this.notifyObservers( + { + "action": "baseparamAfterValue", + }, sender + ); + } + + public setValue(val: number, sender?: any) { this.checkValue(val); - this._paramValues.setSingleValue(val); + this._paramValues.currentValue = val; + this.notifyValueModified(sender); } public get uncheckedValue(): number { @@ -141,7 +164,227 @@ export class BaseParam extends JalhydObject { } } + /** + * vérifie si un min/max est valide par rapport au domaine de définition + */ + private isMinMaxDomainValid(v: number): boolean { + if (v == undefined) + return false; + + if (this._paramValues.valueMode == ParamValueMode.MINMAX) + try { + this.checkValue(v); + } + catch (e) { + return false; + } + + return true; + } + + public checkMin(min: number): boolean { + return this.isMinMaxDomainValid(min) && (min < this._paramValues.max); + } + + public checkMax(max: number): boolean { + return this.isMinMaxDomainValid(max) && (this._paramValues.min < max); + } + + private checkMinMax(min: number, max: number): boolean { + return this.isMinMaxDomainValid(min) && this.isMinMaxDomainValid(max) && (min < max); + } + + public get isMinMaxValid(): boolean { + return this.checkMinMax(this._paramValues.min, this._paramValues.max); + } + + public checkStep(step: number): boolean { + return this.isMinMaxValid && this._paramValues.stepRefValue.intervalHasValue(step); + } + + public get isValueValid(): boolean { + try { + const v = this.getValue(); + this.checkValue(v); + return true; + } + catch (e) { + return false; + } + } + + private get isListValid(): boolean { + if (this._paramValues.valueList == undefined) + return false; + + for (let v of this._paramValues.valueList) + try { + this.checkValue(v); + } + catch (e) { + return false; + } + return true; + } + + public get isRangeValid(): boolean { + switch (this._paramValues.valueMode) { + case ParamValueMode.LISTE: + return this.isListValid; + + case ParamValueMode.MINMAX: + return this.checkStep(this._paramValues.step); + } + + throw new Error(`"BaseParam.isRangeValid() : valeur ${ParamValueMode[this._paramValues.valueMode]} de ParamValueMode non prise en compte`); + } + + public get isValid() { + switch (this._paramValues.valueMode) { + case ParamValueMode.SINGLE: + return this.isValueValid; + + case ParamValueMode.MINMAX: + case ParamValueMode.LISTE: + return this.isRangeValid; + + case ParamValueMode.CALCUL: + return true; + + case ParamValueMode.LINK: + if (!this.isReferenceDefined) + return false; + + try { + for (const v of this.valuesIterator) + this.checkValue(v); + return true + } + catch (e) { + return false; + } + } + + throw new Error(`"BaseParam.isValid() : valeur de ParamValueMode '${ParamValueMode[this._paramValues.valueMode]}' non prise en charge`); + } + public get valueMode() { return this._paramValues.valueMode; } + + public set valueMode(m: ParamValueMode) { + this._paramValues.valueMode = m; + } + + // interface INubReference + + /** + * vérifie l'absence de référence circulaire + * @param seenUids liste des uids déjà vérifiés + * @param o objet à tester (son uid est il déjà dans la liste ?) + */ + private checkReferenceCircularity(o: any, seenUids: number[]) { + if ("uid" in o) { + // if (o.uid in seenUids) + if (seenUids.indexOf(o.uid) !== -1) + throw new Error(`références circulaires détectées (uids : ${seenUids})`); + + seenUids.push(o.uid); + + if ("referencedObject" in o) { + const curr = o as INubReference; + const next = curr.referencedObject; + if (next !== undefined) + this.checkReferenceCircularity(next as IJalhydObject, seenUids); + } + } + } + + public defineReference(target: IReferencedNub, desc: string) { + const oldDef = this._paramValues.referenceDefinition; + const oldTarget = this._paramValues.referencedNub; + try { + this._paramValues.defineReference(target, desc); + this.checkReferenceCircularity(this, []); + } + catch (e) { + this._paramValues.defineReference(oldTarget, oldDef); + throw e; + } + } + + public undefineReference() { + this._paramValues.undefineReference(); + } + + public get referenceDefinition(): string { + return this._paramValues.referenceDefinition; + } + + public get referencedNub(): IReferencedNub { + return this._paramValues.referencedNub; + } + + public get isReferenceDefined(): boolean { + return this._paramValues.isReferenceDefined; + } + + public get referencedParamValues(): ParamValues { + return this._paramValues.referencedParamValues; + } + + public get referencedResult(): Result { + return this._paramValues.referencedResult; + } + + public get referencedExtraResult(): any { + return this._paramValues.referencedExtraResult; + } + + public get referencedValuesIterator(): NumberIterator { + return this._paramValues.referencedValuesIterator; + } + + public get referencedObject(): NamedIterableValues { + return this._paramValues.referencedObject; + } + + // interface NamedIterableValues + + public get valuesIterator(): NumberIterator { + if (this.isReferenceDefined) + return this.referencedValuesIterator; + return this._paramValues.valuesIterator; + } + + public get hasMultipleValues(): boolean { + return this._paramValues.hasMultipleValues; + } + + public get name(): string { + return this._symbol; + } + + // interface IObservable + + /** + * ajoute un observateur à la liste + */ + public addObserver(o: Observer) { + this._observable.addObserver(o); + } + + /** + * supprime un observateur de la liste + */ + public removeObserver(o: Observer) { + this._observable.removeObserver(o); + } + + /** + * notifie un événement aux observateurs + */ + notifyObservers(data: any, sender?: any) { + this._observable.notifyObservers(data, sender); + } } diff --git a/src/param/param-definition.ts b/src/param/param-definition.ts index a3ee7daa6fb9dec90ee2de3c54138950f8111eea..3cfde12f879738e1fbab0aa38e8a6b2167ff893f 100644 --- a/src/param/param-definition.ts +++ b/src/param/param-definition.ts @@ -2,6 +2,8 @@ import { Message, MessageCode } from "../util/message"; import { BaseParam } from "./param-base"; import { ParamDomain, ParamDomainValue } from "./param-domain"; +import { ParamValueMode } from "./param-value-mode"; +import { Result } from "../util/result"; /** * calculabilité du paramètre @@ -44,6 +46,27 @@ export class ParamDefinition extends BaseParam { } get v(): number { + if (this.isReferenceDefined) { + const ro = this.referencedObject; + + if (ro instanceof BaseParam) { + switch (this.referencedParamValues.valueMode) { + case ParamValueMode.CALCUL: + const r = this.referencedResult; + if (r.nbResultElements == 1) + return r.resultElement.vCalc; + throw new Error(`il n'y a pas exactement un ResultElement dans le Result "${r.name}"`); + + default: + return this.referencedParamValues.currentValue; + } + } + else if (ro instanceof Result) + return ro.vCalc; + + return this.referencedExtraResult; + } + return super.getValue(); } diff --git a/src/param/param-value-iterator.ts b/src/param/param-value-iterator.ts new file mode 100644 index 0000000000000000000000000000000000000000..c5f05fcbf12acf15c3e56c4129a5823c4fe7578d --- /dev/null +++ b/src/param/param-value-iterator.ts @@ -0,0 +1,186 @@ +import { ParamValues } from "./param-values"; +import { ParamValueMode } from "./param-value-mode"; +import { INamedObject } from "../jalhyd_object"; + +/** + * itérateur sur des nombres + */ +export interface NumberIterator extends IterableIterator<number> { + /** + * @return true si il reste des valeurs à parcourir + */ + readonly hasNext: boolean; + + /** + * prochaine valeur + */ + next(): IteratorResult<number>; +} + +/** + * interface implémentée par les objets pouvant renvoyer un itérateur sur une série de valeurs numériques + */ +export interface IterableValues { + /** + * itérateur sur les valeurs + */ + readonly valuesIterator: NumberIterator; + + /** + * true si la série de valeurs a plus d'une valeur + */ + readonly hasMultipleValues: boolean; +} + +/** + * objets pouvant ayant un nom et un itérateur sur une série de valeurs numériques + */ +export interface NamedIterableValues extends INamedObject, IterableValues { +} + +/** + * itérateur sur les (ou la) valeurs prises par un ParamValues + */ +export class ParamValueIterator implements NumberIterator { + /** + * paramètre à itérer + */ + private _param: ParamValues; + + /** + * true si les valeurs sont fournies de max à min (ParamValueMode.MINMAX) + */ + private _reverse: boolean; + + private _index: number; + + /** + * cas de figure : + * 0 : valeur fixée + * 1 : min/max/pas + * 2 : liste de valeurs + */ + private _config: number; + + constructor(prm: ParamValues, reverse: boolean = false) { + prm.check(); + this._param = prm; + this.reset(reverse) + } + + public reset(reverse: boolean) { + this._reverse = reverse; + + switch (this._param.valueMode) { + case ParamValueMode.SINGLE: + this._config = 0; + this._index = 0; + break; + + case ParamValueMode.MINMAX: + this._config = 1; + if (reverse) + this._index = this._param.max; + else + this._index = this._param.min; + break; + + case ParamValueMode.LISTE: + this._config = 2; + this._index = 0; + break; + + default: + throw new Error(`ParamValueIterator : mode de génération de valeurs ${ParamValueMode[this._param.valueMode]} incorrect`); + } + } + + public get hasNext(): boolean { + switch (this._config) { + // valeur fixée + case 0: + return this._index == 0; + + // min/max + case 1: + const end = this._reverse ? this._index < this._param.min : this._index > this._param.max; + return !end; + + // liste + case 2: + return this._index < this._param.valueList.length; + + default: + throw new Error(`ParamValueIterator.hasNext() : erreur interne`); + } + } + + public next(): IteratorResult<number> { + switch (this._config) { + // valeur fixée + case 0: + if (this.hasNext) { + this._index++; + return { + done: false, + value: this._param.singleValue + }; + } + else + return { + done: true, + value: undefined + }; + + // min/max + case 1: + const res = this._index; + if (this.hasNext) { + if (this._reverse) + this._index -= this._param.step; + else + this._index += this._param.step; + return { + done: false, + value: res + }; + } else { + return { + done: true, + value: undefined + }; + } + + // liste + case 2: + const i = this._index; + if (this.hasNext) { + const res = this._param.valueList[this._index++]; + return { + done: false, + value: res + }; + } else { + return { + done: true, + value: undefined + }; + } + + default: + throw new Error(`ParamValueIterator.next() : erreur interne`); + } + } + + // public get current(): number { + // if (this._config == 1) + // return this._index; + // throw new Error(`appel ParamValueIterator.current() invalide`) + // } + + // interface IterableIterator + + public [Symbol.iterator](): IterableIterator<number> { + return this; + } +} diff --git a/src/param/param-value-mode.ts b/src/param/param-value-mode.ts new file mode 100644 index 0000000000000000000000000000000000000000..826ca43fb4f3b457e5487b2306ee667c7e6db29d --- /dev/null +++ b/src/param/param-value-mode.ts @@ -0,0 +1,30 @@ + +/** + * mode de génération des valeurs d'un paramètre + */ +export enum ParamValueMode { + /** + * valeur unique + */ + SINGLE, + + /** + * min, max, pas + */ + MINMAX, + + /** + * liste de valeurs discrètes + */ + LISTE, + + /** + * la valeur du paramètre est non définie et à calculer + */ + CALCUL, + + /** + * la valeur du paramètre est liée à celle d'un paramètre, d'un résultat, ... + */ + LINK +} diff --git a/src/param/param-values.ts b/src/param/param-values.ts index 3793c823327e4d88396f1afce8de97590e1f546f..f30e70d5b2b9ae6e0dcfdb62f57e96ff3459fe00 100644 --- a/src/param/param-values.ts +++ b/src/param/param-values.ts @@ -1,179 +1,11 @@ import { Pair } from "../util/pair" import { DefinedNumber } from "../util/definedvalue"; +import { IReferencedNub, INubReference, NubReference } from "../value_ref/object_ref"; +import { Result } from ".."; +import { ParamValueMode } from "./param-value-mode"; +import { ParamValueIterator, IterableValues, NamedIterableValues, NumberIterator } from "./param-value-iterator"; -/** - * mode de génération des valeurs - */ -export enum ParamValueMode { - /** - * valeur unique - */ - SINGLE, - - /** - * min, max, pas - */ - MINMAX, - - /** - * liste de valeurs discrètes - */ - LISTE, - - /** - * la valeur du paramètre est non définie et à calculer - */ - CALCUL -} - -/** - * itérateur sur les (ou la) valeurs prises par le paramètre - */ -export class ParamValueIterator implements IterableIterator<number> { - /** - * paramètre à itérer - */ - private _param: ParamValues; - - /** - * true si les valeurs sont fournies de max à min (ParamValueMode.MINMAX) - */ - private _reverse: boolean; - - private _index: number; - - /** - * cas de figure : - * 0 : valeur fixée - * 1 : min/max/pas - * 2 : liste de valeurs - */ - private _config: number; - - constructor(prm: ParamValues, reverse: boolean = false) { - prm.check(); - this._param = prm; - this.reset(reverse) - } - - public reset(reverse: boolean) { - this._reverse = reverse; - - switch (this._param.valueMode) { - case ParamValueMode.SINGLE: - this._config = 0; - this._index = 0; - break; - - case ParamValueMode.MINMAX: - this._config = 1; - if (reverse) - this._index = this._param.max; - else - this._index = this._param.min; - break; - - case ParamValueMode.LISTE: - this._config = 2; - this._index = 0; - break; - - default: - throw new Error(`ParamValueIterator : mode de génération de valeurs ${ParamValueMode[this._param.valueMode]} incorrect`); - } - } - - public get hasNext(): boolean { - switch (this._config) { - // valeur fixée - case 0: - return this._index == 0; - - // min/max - case 1: - const end = this._reverse ? this._index < this._param.min : this._index > this._param.max; - return !end; - - // liste - case 2: - return this._index < this._param.valueList.length; - - default: - throw new Error(`ParamValueIterator.hasNext() : erreur interne`); - } - } - - public next(): IteratorResult<number> { - switch (this._config) { - // valeur fixée - case 0: - if (this.hasNext) { - this._index++; - return { - done: false, - value: this._param.singleValue - }; - } - else - return { - done: true, - value: undefined - }; - - // min/max - case 1: - const res = this._index; - if (this.hasNext) { - if (this._reverse) - this._index -= this._param.step; - else - this._index += this._param.step; - return { - done: false, - value: res - }; - } else { - return { - done: true, - value: undefined - }; - } - - // liste - case 2: - const i = this._index; - if (this.hasNext) { - const res = this._param.valueList[this._index++]; - return { - done: false, - value: res - }; - } else { - return { - done: true, - value: undefined - }; - } - - default: - throw new Error(`ParamValueIterator.next() : erreur interne`); - } - } - - // public get current(): number { - // if (this._config == 1) - // return this._index; - // throw new Error(`appel ParamValueIterator.current() invalide`) - // } - - // interface IterableIterator - - public [Symbol.iterator](): IterableIterator<number> { - return this; - } -} - -export class ParamValues { +export class ParamValues implements INubReference, IterableValues { /** * mode de génération des valeurs : min/max, liste, ... */ @@ -204,13 +36,25 @@ export class ParamValues { */ private _valueList: number[]; + /** + * valeur courante (éventuellement non définie) indépendemment du mode + */ + private _currentValue: DefinedNumber; + /** * itérateur courant */ - private _iterator: ParamValueIterator; + private _iterator: NumberIterator; + + /** + * implémentation par délégation de INubReference + */ + private _nubRef: NubReference; constructor() { this._singleValue = new DefinedNumber(); + this._currentValue = new DefinedNumber(); + this._nubRef = new NubReference(); } public setValues(o: number | any, max?: number, step?: number) { @@ -218,16 +62,19 @@ export class ParamValues { if (max == undefined) { this._valueMode = ParamValueMode.SINGLE; this._singleValue.value = o as number; + this._currentValue.value = o as number; } else { this._valueMode = ParamValueMode.MINMAX; this._minValue = o as number; this._maxValue = max; this._stepValue = step; + this._currentValue.undefine(); } } else if (Array.isArray(o)) { this._valueMode = ParamValueMode.LISTE; this._valueList = o; + this._currentValue.undefine(); } else throw new Error(`ParamValues.setValues() : appel invalide`); @@ -269,6 +116,7 @@ export class ParamValues { throw new Error(`ParamValues : liste de valeurs non définie`); break; + case ParamValueMode.LINK: case ParamValueMode.CALCUL: break; @@ -277,24 +125,54 @@ export class ParamValues { } } - public get singleValue() { + /** + * valeur courante + */ + public get currentValue(): number { + if (this.isReferenceDefined) + return this._nubRef.referencedParamValues.currentValue; + return this._currentValue.value; + } + + public set currentValue(v: number) { + this._currentValue.value = v; + } + + /** + * valeur dans le mode SINGLE + */ + public get singleValue(): number { + if (this.isReferenceDefined) + return this._nubRef.referencedParamValues.singleValue; return this._singleValue.value; } public get uncheckedValue() { - return this._singleValue.uncheckedValue; + return this._currentValue.uncheckedValue; } public setSingleValue(v: number) { + this._valueMode = ParamValueMode.SINGLE; this._singleValue.value = v; + this._currentValue.value = v; } public get isDefined() { - return this._singleValue.isDefined; + return this._currentValue.isDefined; } public get min() { - return this._minValue; + switch (this._valueMode) { + case ParamValueMode.MINMAX: + return this._minValue; + + case ParamValueMode.LINK: + return this._nubRef.referencedParamValues.min; + + default: + this.checkValueMode(ParamValueMode.MINMAX); // pour générer une erreur + return undefined; // pour le compilo + } } public set min(v: number) { @@ -303,7 +181,17 @@ export class ParamValues { } public get max() { - return this._maxValue; + switch (this._valueMode) { + case ParamValueMode.MINMAX: + return this._maxValue; + + case ParamValueMode.LINK: + return this._nubRef.referencedParamValues.max; + + default: + this.checkValueMode(ParamValueMode.MINMAX); + return undefined; // pour le compilo + } } public set max(v: number) { @@ -317,8 +205,17 @@ export class ParamValues { } public get step() { - this.checkValueMode(ParamValueMode.MINMAX); - return this._stepValue; + switch (this._valueMode) { + case ParamValueMode.MINMAX: + return this._stepValue; + + case ParamValueMode.LINK: + return this._nubRef.referencedParamValues.step; + + default: + this.checkValueMode(ParamValueMode.MINMAX); // pour générer une erreur + return undefined; // pour le compilo + } } public set step(v: number) { @@ -337,10 +234,10 @@ export class ParamValues { } /** - * crée un iterateur + * crée un ParamValueIterator * @param reverse true si on veut itérer max->min ou depuis la fin de la liste */ - public getValuesIterator(reverse: boolean = false): ParamValueIterator { + public getValuesIterator(reverse: boolean = false): NumberIterator { return new ParamValueIterator(this, reverse); } @@ -352,13 +249,16 @@ export class ParamValues { switch (this._valueMode) { case ParamValueMode.LISTE: case ParamValueMode.MINMAX: + this._iterator = this.getValuesIterator(reverse); + break; + + case ParamValueMode.LINK: + this._iterator = this._nubRef.referencedParamValues.getValuesIterator(reverse); break; default: throw new Error(`ParamValues : mode de valeurs ${ParamValueMode[this._valueMode]} incorrect`); } - - this._iterator = this.getValuesIterator(reverse); } /** @@ -373,7 +273,79 @@ export class ParamValues { * @return prochaine valeur à parcourir par l'itérateur courant */ public get next(): number { - this._singleValue.value = this._iterator.next().value; - return this._singleValue.value; + this._currentValue.value = this._iterator.next().value; + return this._currentValue.value; + } + + // interface INubReference + + public defineReference(target: IReferencedNub, desc: string) { + this.valueMode = ParamValueMode.LINK; + this._nubRef.defineReference(target, desc); + } + + public undefineReference() { + this._nubRef.undefineReference(); + } + + public get referencedNub(): IReferencedNub { + return this._nubRef.referencedNub; + } + + public get referenceDefinition(): string { + return this._nubRef.referenceDefinition; + } + + public get isReferenceDefined(): boolean { + return this._valueMode === ParamValueMode.LINK && this._nubRef.isReferenceDefined; + } + + public get referencedParamValues(): ParamValues { + return this._nubRef.referencedParamValues; + } + + public get referencedResult(): Result { + return this._nubRef.referencedResult; + } + + public get referencedExtraResult(): any { + return this._nubRef.referencedExtraResult; + } + + public get referencedValuesIterator(): any { + return this._nubRef.referencedValuesIterator; + } + + public get referencedObject(): NamedIterableValues { + if (this.isReferenceDefined) + return this._nubRef.referencedObject; + return undefined; + } + + // interface IterableValues + + public get valuesIterator(): NumberIterator { + return this.getValuesIterator(); + } + + public get hasMultipleValues(): boolean { + if (this.isReferenceDefined) + var it = this.referencedValuesIterator; + else { + // dans certains cas (mode LINK mais aucune valeur liable compatible), on ne peut avoir d'itérateur + if (this._valueMode !== ParamValueMode.LINK) + it = this.getValuesIterator(); + } + + if (it === undefined) + return false; + + let n = 0; + for (const v of it) { + n++; + if (n > 1) + break; + } + return n > 1; } } diff --git a/src/remous.ts b/src/remous.ts index 6c3ff39a118f985843978792639fb19ce0bcff79..ac0ee931a6983c133609d9ecef2170307fcd39fa 100644 --- a/src/remous.ts +++ b/src/remous.ts @@ -9,7 +9,7 @@ import { cLog } from "./util/log"; import { Message, MessageCode } from "./util/message"; import { Result } from "./util/result"; import { ResultElement } from "./util/resultelement"; -import { ParamValueIterator, ParamValues, BaseParam } from "."; +import { ParamValues, BaseParam } from "."; export enum MethodeResolution { Trapezes, EulerExplicite, RungeKutta4 @@ -468,11 +468,13 @@ export class CourbeRemous extends Nub { if (!rVar.ok) res.addLog(rVar.log); else - re.addExtraResult("tRes", rVar.vCalc); + re.addExtraResult(val_a_cal, rVar.vCalc); } } } + this._result = res; + return res; } diff --git a/src/section/section_nub.ts b/src/section/section_nub.ts index ad9068b19cc2d69e6dfe96a1886ebbfcd788aaf6..56445b7da42da2ec90684799fbbba707ed64b49c 100644 --- a/src/section/section_nub.ts +++ b/src/section/section_nub.ts @@ -3,7 +3,7 @@ import { acSection } from "./section_type"; import { Result } from "../util/result"; import { ParamDefinition, ParamCalculability } from "../param/param-definition"; import { ParamDomain, ParamDomainValue } from "../param/param-domain"; -import { ParamValueMode } from "../param/param-values"; +import { ParamValueMode } from "../param/param-value-mode"; import { ResultElement } from "../util/resultelement"; /** diff --git a/src/session_nub.ts b/src/session_nub.ts index 1f7970932699c01a046e4f32a490870f1807a6ca..4a80ed6d6c84bcdb0d56487f0e3e798a1ba16bda 100644 --- a/src/session_nub.ts +++ b/src/session_nub.ts @@ -1,5 +1,6 @@ import { Nub } from "./nub"; import { IObservable, Observer, Observable } from "./util/observer"; +import { ParamDefinition } from "./param/param-definition"; /** * gestion d'un ensemble de propriétés (clé/valeur) @@ -209,4 +210,21 @@ export class SessionNub { public hasProperties(p: Props | {}): boolean { return this._props.hasProperties(p); } + + /** + * @returns liste des paramètres liables à un paramètre + * @param p paramètre qui sert de clé de recherche des paramètres liables + */ + // public getLinkableParameters(p: ParamDefinition): any[] { + // return this._nub.getLinkableParameters(p); + // } + + /** + * liste des valeurs(paramètre, résultat, résultat complémentaire) liables à un paramètre + * @param src objet qui sert de clé de recherche des paramètres liables, de type INamedObject | string + * @returns tableau d'objets de la forme { "value":NamedIterableValues, "nub":Nub}, nub=Nub d'origine de la "value" + */ + public getLinkableValues(src: any, excludeResult: boolean = false): any[] { + return this._nub.getLinkableValues(src, undefined, excludeResult); + } } diff --git a/src/structure/parallel_structure.ts b/src/structure/parallel_structure.ts index 25fc2550917cca62304c46d6a22114f614d3f3d2..5c2e115f731f7ffa81ebee42a9e2e35179f456ea 100644 --- a/src/structure/parallel_structure.ts +++ b/src/structure/parallel_structure.ts @@ -1,9 +1,12 @@ import { Nub } from "../nub"; import { ParamCalculability } from "../param/param-definition"; -import { IParamDefinitionIterator, ParamsEquation, ParamsEquationArrayIterator } from "../param/params-equation"; import { Result } from "../util/result"; import { ParallelStructureParams } from "./parallel_structure_params"; import { Structure } from "./structure"; +import { IParamDefinitionIterator, ParamsEquation, ParamsEquationArrayIterator } from "../param/params-equation"; +import { ParamValues } from "../param/param-values"; +import { NamedIterableValues } from "../param/param-value-iterator"; +import { BaseParam } from "../param/param-base"; /** * Interface pour mémoriser le n° d'ouvrage et le paramètre à calculer @@ -250,6 +253,19 @@ export class ParallelStructure extends Nub { return { index: i, prm: sPrm }; } + /** + * Renvoie le n° de structure et le paramètre à calculer + * @param sVarCalc Nom du paramètre à calculer : "ouvrage[n].X" avec "n" l'index de l'ouvrage et "X" son paramètre + */ + private getStructureVarCalc2(sVarCalc: string): IStructureVarCalc { + const re = /([A-Z,a-z]+)\[(\d+)\]\.(.+)/; + const match = re.exec(sVarCalc); + if (match === null || match[1] != "ouvrage") + throw new Error(`getStructureVarCalc2() : erreur d'analyse de ${sVarCalc}, (pas de la forme ouvrage[n].X)`); + + return { index: +match[2], prm: match[3] }; + } + /** * Calcul du paramètre d'un des ouvrages en parallèle * @param sVC Index de l'ouvrage et paramètre à calculer @@ -263,4 +279,69 @@ export class ParallelStructure extends Nub { // Calcul du paramètre de la structure en calcul return this.structures[sVC.index].Calc(sVC.prm, rInit, rPrec); } + + // interface IReferencedNub + + public getReferencedObject(desc: string): NamedIterableValues { + try { + // analyse n.X + const i: IStructureVarCalc = this.getStructureVarCalc(desc); + return this.structures[i.index].getParameter(i.prm); + } + catch (e) { + try { + // analyse ouvrage[n].X + const i: IStructureVarCalc = this.getStructureVarCalc2(desc); + return this.structures[i.index].result.getExtraResult(i.prm); + } + catch (e) { + } + } + // pas de la forme n.X ou ouvrage[n].X ou erreur sur n ou X + return super.getReferencedObject(desc); + } + + public getReferencedParamValues(desc: string): ParamValues { + try { + const ro = this.getReferencedObject(desc); + if (ro instanceof BaseParam) + return ro.paramValues; + return undefined; + } + catch (e) { + // pas de la forme n.X ou ouvrage[n].X ou erreur sur n ou X + const param = this.getParameter(desc); + if (param === undefined) + return undefined; + return param.paramValues; + } + } + + public getReferencedExtraResult(desc: string): any { + return this._result.getExtraResult(desc); + } + + /** + * liste des valeurs (paramètre, résultat, résultat complémentaire) liables à un paramètre + * @param src objet qui sert de clé de recherche des paramètres liables, de type INamedObject | string + * @returns tableau d'objets de la forme { "name":string, "value":NamedIterableValues, "nub":Nub}, nub=Nub d'origine de la "value" + */ + public getLinkableValues(src: any): any[] { + // paramètres liables de ce Nub + let res = super.getLinkableValues(src); + + let i = 0; + for (const s of this.structures) { + // paramètres liables des Nub structures enfants + const l = s.getLinkableValues(src, `${i}.`, true); + + // on remplace les nubs retournés par this (à cause du préfixe) + for (const lv of l) + lv.nub = this; + + res = res.concat(l); + i++; + } + return res; + } } diff --git a/src/util/observer.ts b/src/util/observer.ts index e159e544c5fe60f24ecc6c465de737b5590196e5..c34c7deef25f870607c24c7b13322ba840d2d056 100644 --- a/src/util/observer.ts +++ b/src/util/observer.ts @@ -54,3 +54,26 @@ export class Observable implements IObservable { } } } + +/** + * @return true si l'objet passé implémente IObservable + * @param o objet à tester + */ +export function isObservable(o: any): boolean { + if (o === undefined) + return false; + + const ob = <IObservable>o; + return typeof ob.addObserver === "function"; +} + +/** + * cast d'un objet implémentant IObservable + * @param o objet à convertir + */ +export function asObservable(o: any): IObservable { + if (isObservable(o)) + return <IObservable>o; + + return undefined; +} diff --git a/src/util/result.ts b/src/util/result.ts index baca22343183e8b927f8720cbf30af0529a69980..6c4ac03d06b95d66e157aa39a5b004242b653ba0 100644 --- a/src/util/result.ts +++ b/src/util/result.ts @@ -1,13 +1,15 @@ import { cLog } from "./log"; import { Message, MessageCode, MessageSeverity } from "./message"; import { ResultElement } from "./resultelement"; +import { JalhydObject } from "../jalhyd_object"; +import { NamedIterableValues, NumberIterator } from "../param/param-value-iterator"; /** * Résultat global d'un calcul * Peut comporter un ou plusieurs Result. */ // tslint:disable-next-line:max-classes-per-file -export class Result { +export class Result extends JalhydObject implements NamedIterableValues { /** * Messages (erreurs, infos, ...) */ @@ -15,7 +17,13 @@ export class Result { private _resultElements: ResultElement[]; + /** + * nom de la variable/paramètre calculé + */ + private _name: string; + constructor(v?: number | Message | ResultElement, d?: any) { + super(); this._globalLog = new cLog(); this._resultElements = []; if (typeof (v) === "number" || v instanceof Message) { @@ -29,6 +37,10 @@ export class Result { } } + public set name(n: string) { + this._name = n; + } + /** * retourne le journal de la calculette */ @@ -247,4 +259,74 @@ export class Result { return false; } + + // interface NamedIterableValues + + public get name(): string { + return this._name; + } + + public get valuesIterator(): NumberIterator { + const tmp: number[] = []; + for (const re of this._resultElements) + tmp.push(re.vCalc); + return tmp[Symbol.iterator]() as NumberIterator; + } + + public get hasMultipleValues(): boolean { + return this._resultElements.length > 1; + } + + // interface NamedIterableValues pour les résultats complémentaires + + public getIterableExtraResults(name: string): NamedIterableValues { + const res = new ExtraResults(name); + let found = false; + + for (const r of this._resultElements) { + const er = r.getExtraResult(name); + if (er !== undefined) { + found = true; + res.addValue(er); + } + } + + if (found) + return res; + + return undefined; + } +} + +/** + * série de valeurs de résultat complémentaire + */ +export class ExtraResults extends JalhydObject implements NamedIterableValues { + private _name: string; + + private _values: number[]; + + constructor(n: string) { + super(); + this._name = n; + this._values = []; + } + + public addValue(v: number) { + this._values.push(v); + } + + // interface NamedIterableValues + + public get valuesIterator(): NumberIterator { + return this._values[Symbol.iterator]() as NumberIterator; + } + + public get hasMultipleValues(): boolean { + return this._values.length > 1; + } + + public get name(): string { + return this._name; + } } diff --git a/src/value_ref/object_ref.ts b/src/value_ref/object_ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..b321604faacda0da1060ddf9d13a545697286afa --- /dev/null +++ b/src/value_ref/object_ref.ts @@ -0,0 +1,171 @@ +import { ParamValues } from "../param/param-values"; +import { Result } from ".."; +import { IJalhydObject } from "../jalhyd_object"; +import { NamedIterableValues, NumberIterator } from "../param/param-value-iterator"; + +/** + * Nub dont certaines valeurs sont référençables pour réutilisation + * (d'une calculette sur une autre par ex) + */ +export interface IReferencedNub { + /** + * getter des valeurs + * @param desc : description sous forme symbolique + */ + getReferencedParamValues(desc: string): ParamValues; + + /** + * getter du résultat + * @param desc : description sous forme symbolique + */ + getReferencedResult(desc?: string): Result; + + /** + * getter du résultat complémentaire + * @param desc : description sous forme symbolique + */ + getReferencedExtraResult(desc: string): any; + + /** + * itérateur sur les valeurs + */ + getReferencedValuesIterator(desc: string): NumberIterator; + + /** + * objet (paramètre/résultat/résultat complémentaire) référencé + */ + getReferencedObject(desc: string): NamedIterableValues; +} + +/** + * référence vers un Nub contenant une valeur vers laquelle on crée un lien + */ +export interface INubReference { + /** + * définition de la valeur référencée dans le Nub + * @param target Nub contenant la valeur qu'on va référencer + * @param desc : description de la valeur pointée sous forme symbolique. Exemples : Q, <n° d'ouvrage>.Z1 + */ + defineReference(target: IReferencedNub, desc: string): void; + + /** + * supprime la référence + */ + undefineReference(): void; + + /** + * description symbolique de la référence + */ + readonly referenceDefinition: string; + + /** + * true si la référence a été définie + */ + readonly isReferenceDefined: boolean; + + /** + * instance de ParamValues référencée + */ + readonly referencedParamValues: ParamValues; + + /** + * instance de Result référencée + */ + readonly referencedResult: Result; + + /** + * instance de résultat complémentaire référencée + */ + readonly referencedExtraResult: any; + + /** + * itérateur sur les valeurs référencées + */ + readonly referencedValuesIterator: NumberIterator; + + /** + * objet (paramètre/résultat/résultat complémentaire) référencé + */ + readonly referencedObject: NamedIterableValues; +} + +/** + * implémentation par défaut de INubReference + */ +export class NubReference implements INubReference { + private _referencedNub: IReferencedNub; + + private _refDefinition: string; + + public defineReference(target: IReferencedNub, desc: string) { + this._referencedNub = target; + this._refDefinition = desc; + } + + /** + * supprime la référence + */ + public undefineReference() { + this._referencedNub = undefined; + this._refDefinition = undefined; + } + + /** + * description symbolique de la référence + */ + public get referenceDefinition(): string { + return this._refDefinition; + } + + public get isReferenceDefined(): boolean { + return this._referencedNub !== undefined && this._refDefinition !== undefined; + } + + /** + * Nub référencé + */ + public get referencedNub(): IReferencedNub { + return this._referencedNub; + } + + /** + * instance de ParamValues référencée + */ + public get referencedParamValues(): ParamValues { + if (!this.isReferenceDefined) + return undefined; + return this._referencedNub.getReferencedParamValues(this._refDefinition); + } + + /** + * instance de Result référencée + */ + public get referencedResult(): Result { + if (!this.isReferenceDefined) + return undefined; + return this._referencedNub.getReferencedResult(this._refDefinition); + } + + /** + * instance de résultat complémentaire référencée + */ + public get referencedExtraResult(): any { + if (!this.isReferenceDefined) + return undefined; + return this._referencedNub.getReferencedExtraResult(this._refDefinition); + } + + /** + * itérateur sur les valeurs référencées + */ + public get referencedValuesIterator(): NumberIterator { + return this._referencedNub.getReferencedValuesIterator(this._refDefinition); + } + + /** + * objet (paramètre/résultat/résultat complémentaire) référencé + */ + public get referencedObject(): NamedIterableValues { + return this._referencedNub.getReferencedObject(this._refDefinition); + } +}