Fixed issue 34821: High memory usage on tests using arquillian.
authorJavier Armendáriz <javier.armendariz@openbravo.com>
Mon, 11 Feb 2019 11:01:09 +0100
changeset 35440 9275bf6ed1ff
parent 35438 6f33ffa453d5 (diff)
parent 35439 3a11d791ddab (current diff)
child 35441 4d0df2352c16
Fixed issue 34821: High memory usage on tests using arquillian.
modules/org.openbravo.base.weld/src-test/org/openbravo/base/weld/test/WeldBaseTest.java
--- a/.hgignore	Wed Mar 07 12:45:04 2018 +0100
+++ b/.hgignore	Mon Feb 11 11:01:09 2019 +0100
@@ -26,7 +26,10 @@
 config/instance.revision
 config/eclipse/hibernate.cfg.xml
 src/result.xml
+config/log4j2.xml
+config/log4j2-web.xml
 
+src-test/src/log4j2-test.xml
 src-db/database/lib/dbmanager.jar
 src-db/database/formalChangesScript.xml
 src-core/lib/openbravo-core.jar
--- a/.hgsigs	Wed Mar 07 12:45:04 2018 +0100
+++ b/.hgsigs	Mon Feb 11 11:01:09 2019 +0100
@@ -225,4 +225,19 @@
 2e43174aba46ec6956a0e703bbb9bee5292c871a 0 iEYEABECAAYFAlpuyUwACgkQCX/oGf+2qkPuJgCePIRg5ennwj6kgpOnyxZCPUV54Y0Ani30NnQNuNkXNkBMyykw2JfW21Vs
 43d95f7cb67084eb978752359847ab28b9aa14f6 0 iEYEABECAAYFAlpEpSMACgkQCX/oGf+2qkNdMACdGNGo6rpHht3lNH3FmwtsNcIe65sAn1sM9rBx/Sm3ytwcL2C5irUyD05J
 2ed90e80323f7bf5245be3946e2f60ea68d30f6e 0 iEYEABECAAYFAlqFgUsACgkQCX/oGf+2qkMGWwCg9AesP/a8fHuHrGVkUZcGk0x8CSgAniD73vR4fZ3uaU1eqtQr9HYlwpCQ
+f06ec509f2bf413f13d422e937ec12531fe1821a 0 iEYEABECAAYFAlqzgcwACgkQCX/oGf+2qkP/EACeJH+QthNIdldCdTvfnllHXTXDo24AnRVV1DveMhhNbgb50zu8ETDZ1WVT
 b90f619fc9f3f9ca6439969e99f742f9a9403f82 0 iEYEABECAAYFAlqMGfIACgkQCX/oGf+2qkPjiQCgyYNqJlbSOSoax5ydjqpJKun85RIAoM9s2iEyLfJ8CJyfUXFmz6FtvmqC
+c38ab6f55348fbb5963fd77b770f939a5c0eda23 0 iEYEABECAAYFAlq0lSgACgkQCX/oGf+2qkN3FwCgggZ7hoUQveeRYCuBBuHAi77v84gAn1RBjuscKhHjc7ouPvgiPgIVanBb
+9bad88c00b5da708f3e9c1abacd25ea6e6cfd664 0 iEUEABECAAYFAlrXODoACgkQCX/oGf+2qkOblACg0WOwH27TgkH75iKw2Y9tNYxSL8oAl3j0FbjQF6F05ESzZC0l3Uv2Nfg=
+dc2ef98dc38f7c32c888dcf1f1adb37c6afb4d14 0 iEYEABECAAYFAlrxbisACgkQCX/oGf+2qkMMCwCdFeF47f2MY7Pq3cdsyHon64EYekwAoPYllLnhYETGsUEqtiKSxvj9Mgxb
+2121d856284cf0c4f26faef336bd2aa41ada151f 0 iEYEABECAAYFAlr8AykACgkQCX/oGf+2qkPKhQCfeQ+9S16IA3wZMgnoJjRRZRvG8SUAoIgKQPopjsjObnB6Qu1DyNgCByRt
+faeac12b1aad3dc7fb53f8ffda3ada9e3b7deaeb 0 iEYEABECAAYFAls/boQACgkQCX/oGf+2qkNdfACfaNh5oqLf0LzgGAYLmRWa97kbFj4AoL3KPdVDG0Mf6qKcxejAl7Kl12cd
+69fa322764529bb77cd3ef3b7b5dd33f6667e560 0 iEYEABECAAYFAlt1MD4ACgkQCX/oGf+2qkPU4wCgnCdQrG3eWxbDWbitjSsm6XvbQ6IAni9v1H03pkrhgPmaS97Ft9MOHVhO
+a3dec60771dbfb34de34e735d05f10fa7a0ba7f7 0 iEYEABECAAYFAlvW4j8ACgkQCX/oGf+2qkMXngCgktuuCJKOHrfxbcd0/Y89CN/NGP0AnAv1h6DqduuUlId9b288f61gCaZ2
+bbb6e342b4af3c81bd1a49418a01e63fcb09e3c5 0 iEYEABECAAYFAltpYMEACgkQCX/oGf+2qkMblgCffRsYLqTbeixIj19Lm3dm6iMqkv0AoM3iSQaEFeV7ff9nYRd3vz227Ir6
+51e0d0e9566b3a1e0e7e08e8bd089b77ae779688 0 iEYEABECAAYFAlukneUACgkQCX/oGf+2qkP8ngCgiC3Jo4cDL8F35HXpqHL3QtD46kUAn0znm6h/Ad3r0f/rJXf6dJli+zjK
+6a52d785570ecc2a63ba164aa50efa0b463917bd 0 iEYEABECAAYFAlvXCzAACgkQCX/oGf+2qkP3xQCgqKlwdDqMVRAsTFoEwi8gK16UtRIAnRVH6VaLpC/Yh7OgsjpO+rzj9AKp
+858933b8d4f0bd4ee7e278e2530a1b476a8e4fa9 0 iEYEABECAAYFAlv74bwACgkQCX/oGf+2qkNQCwCgl168atYYGOuVSkFeqvY6bAXC3m8An1eBFNK0jTdGC1TSahJ2gyQu/GOe
+6f6d0aa1ad00e1429e8c9c3322a4f2548ba485c4 0 iEYEABECAAYFAlwjGDMACgkQCX/oGf+2qkNG7ACg378s5KJSDSn+XVb/oX2psQa/UAEAoKTvf3TWRu6zu26eDxZCDIXPJCvp
+75b4bc3d1f6f172a24506f5f72ce3137fa23aa7b 0 iF0EABECAB0WIQQwlWrRXxlUdnEi7O8Jf+gZ/7aqQwUCXA380QAKCRAJf+gZ/7aqQz70AKCz/O6ZFoJ9ewfn1JayCUThy5+mrQCeMkwewiAYcsfmFxp16XA497wv158=
+e608a90d459c54db28903268ce5930e230af8e6f 0 iF0EABECAB0WIQQwlWrRXxlUdnEi7O8Jf+gZ/7aqQwUCXCMjxQAKCRAJf+gZ/7aqQzC/AJ9XbUfKrdRJWO2jbnBYCFGSeUQsDwCgiOfjBtc3k+hWxB6NWUPukzcduoo=
--- a/.hgtags	Wed Mar 07 12:45:04 2018 +0100
+++ b/.hgtags	Mon Feb 11 11:01:09 2019 +0100
@@ -236,4 +236,19 @@
 dd65065492e55421c107be4c87894a508bb1244d 3.0PR17Q3.3
 a8b6912d30a34e4a7d0873fc0fe53df228417b49 3.0PR17Q4
 82be2c7d9d11d77238355e65724408b6c5aa2ffb 3.0PR17Q4.1
+7b0d4c95c2b308cd1b12dcfbe2a36c7f77fb49a4 3.0PR17Q4.2
 46184d2680e43a9b29d3058a75dea7d15d47b4b4 3.0PR18Q1
+03f6ac7d17926657b093b25f613a4cd3fb47ef65 3.0PR18Q1.1
+650aaadd6b6c5fda4f7ad957701face4fa4c3317 3.0PR18Q1.2
+307b23f7635f3e92dd8fc8e7d55d09b7c914384c 3.0PR18Q2
+63c5e173ffdca0828d75476e5a48e2fae42ad9e9 3.0PR18Q1.3
+3f281a901fbbde5103faebca4df0c22b94ac5535 3.0PR18Q2.1
+72cf5779eb218bb25914b1aadade7fde01c67842 3.0PR18Q2.2
+26a3469df96bb87c3517889ba412bde73f17f3f7 3.0PR18Q2.3
+5cbef591aff09f80e8a73a92202d438b792ad40f 3.0PR18Q3
+2f706d7a458e736b7b6add7ca445132c5e0b9758 3.0PR18Q3.1
+b8cd708f773317970a8024f2e5b6c0ea4417e4b5 3.0PR18Q3.2
+5a97b89aa2f1202519525757dcfb699ec267e794 3.0PR18Q3.3
+9ea275f262ba099f339fa9f06a87836b605d6123 3.0PR18Q3.4
+9a7acd649cfcb6ea234c52263051d7e33e4ce333 3.0PR18Q4
+a67abc7a3690347038295600eeb97f92460cc742 3.0PR18Q4.1
--- a/.project	Wed Mar 07 12:45:04 2018 +0100
+++ b/.project	Mon Feb 11 11:01:09 2019 +0100
@@ -11,11 +11,6 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.openarchitectureware.base.oawBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
 			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
 			<arguments>
 			</arguments>
@@ -26,6 +21,5 @@
 		<nature>org.eclipse.jdt.core.javanature</nature>
 		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
 		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
-		<nature>org.openarchitectureware.base.oawNature</nature>
 	</natures>
 </projectDescription>
--- a/.settings/org.eclipse.jdt.core.prefs	Wed Mar 07 12:45:04 2018 +0100
+++ b/.settings/org.eclipse.jdt.core.prefs	Mon Feb 11 11:01:09 2019 +0100
@@ -1,12 +1,13 @@
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.compliance=1.8
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.7
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.8
--- a/build.xml	Wed Mar 07 12:45:04 2018 +0100
+++ b/build.xml	Mon Feb 11 11:01:09 2019 +0100
@@ -12,7 +12,7 @@
 * under the License.
 * The Original Code is Openbravo ERP.
 * The Initial Developer of the Original Code is Openbravo SLU
-* All portions are Copyright (C) 2001-2017 Openbravo SLU
+* All portions are Copyright (C) 2001-2019 Openbravo SLU
 * All Rights Reserved.
 * Contributor(s):  ______________________________________.
 ************************************************************************
@@ -96,9 +96,11 @@
   <property name="buildValidation" value="true"/>
   <property name="modules" value=""/> 
  
-  <available file=".hg" property="is.hg" />
+  <condition property="xdoclint.missing" value="" else="-Xdoclint:-missing">
+    <equals arg1="${ant.java.version}" arg2="1.7"/>
+  </condition>
 
-  <condition property="jdk9">
+  <condition property="html.version" value="-html5" else="">
     <not>
       <or>
         <equals arg1="${ant.java.version}" arg2="1.7"/>
@@ -106,9 +108,9 @@
       </or>
     </not>
   </condition>
-
-  <condition property="j9.module.args" value="--add-modules=java.se.ee" else="">
-    <isset property="jdk9"/>
+  
+  <condition property="jvm.arg.line" value="" else="--add-opens java.base/java.lang=ALL-UNNAMED">
+    <equals arg1="${ant.java.version}" arg2="1.8"/>
   </condition>
 
   <condition property="calculate.core.rev">
@@ -232,6 +234,7 @@
     <fileset dir="${build.wad.lib}">
       <include name="openbravo-wad.jar" />
     </fileset>
+    <pathelement path="${base.config}" />
   </path>
 
   <path id="project.class.path">
@@ -239,6 +242,7 @@
       <include name="*/build/classes/" />
     </dirset>
     <pathelement path="${basedir}/src-util/modulescript/build/classes/" />
+    <pathelement path="${base.config}" />
     <pathelement path="${build}" />
     <pathelement path="${base.src}" />
     <fileset dir="${base.lib}">
@@ -273,6 +277,7 @@
     </dirset>
     <pathelement path="${basedir}/../../src-util/modulescript/build/classes/" />
     <pathelement path="${build.apply.module}" />
+    <pathelement path="${base.config}" />
     <pathelement path="${base.src}" />
     <fileset dir="${base.lib}">
       <include name="**/*.jar" />
@@ -303,6 +308,7 @@
       <include name="*/build/classes/" />
     </dirset>
     <pathelement path="${basedir}/../../src-util/modulescript/build/classes/" />
+    <pathelement path="${base.config}" />
     <pathelement path="${build.apply.module}" />
     <pathelement path="${build}" />
     <pathelement path="${base.src}" />
@@ -356,22 +362,26 @@
   
   <taskdef resource="axis-tasks.properties" classpathref="project.class.path" />
   
-  <target name="init" depends="code.rev">
+  <target name="init">
     <fail if="root.user" message="Don't run ant tasks with the root user" />
     <fail if="no.java.home" message="The environment variable JAVA_HOME is not set." />
-  </target>
-
-  <target name="code.rev" depends="set.code.rev">
-    <condition property="code.revision" value="${hg.id}" else="0">
-      <isset property="hg.id" />
-    </condition>
-  </target>
-
-  <target name="set.code.rev" if="is.hg">
-    <exec executable="hg" outputproperty="hg.id" failifexecutionfails="false">
-      <arg value="id"/>
-      <arg value="-i"/>
-    </exec>
+    <fail message="Unsupported Java version ${ant.java.version}. Minimum required is 8 (1.8).">
+      <condition>
+        <or>
+          <equals arg1="${ant.java.version}" arg2="1.6"/>
+          <equals arg1="${ant.java.version}" arg2="1.7"/>
+        </or>
+      </condition>
+    </fail>
+    <antversion property="min.ant.version" atleast="1.9.2" />
+    <antversion property="actual.ant.version" />
+    <fail message="Unsupported ant version ${actual.ant.version}. Minimum required is 1.9.2.">
+      <condition>
+        <not>
+          <isset property="min.ant.version"/>
+        </not>
+      </condition>
+    </fail>
   </target>
 
   <target name="compile.complete" depends="init, core.lib, wad.lib, trl.lib">
@@ -420,11 +430,6 @@
     <ant dir="${base.db}" target="setApplied" inheritAll="true" inheritRefs="true" />
     <antcall target="build.deploy" />
     <updatesystemstatuswhennot v="RB51" previous="RB12"/>
-    <!-- only restart tomcat if the restart prop was set to true -->
-    <condition property="dorestart">
-      <istrue value="${restart}" />
-    </condition>
-    <antcall target="if.restart.tomcat" />
   </target>
 
   <target name="update.database.if.no.local" if="no.local">
@@ -453,10 +458,6 @@
     <antcall target="war" />
   </target>
 
-  <target name="if.restart.tomcat" if="dorestart">
-    <antcall target="tomcat.restart" />
-  </target>
-
   <target name="compile" depends="init,core.lib, wad.lib, trl.lib">
     <ant dir="${base.src}" target="compile" inheritAll="true" inheritRefs="true" />
   </target>
@@ -535,12 +536,7 @@
   </target>
 
   <target name="generate.java.doc">
-    <antcall target="generate.java.doc.jdk7"/>
-    <antcall target="generate.java.doc.jdk9"/>
-  </target>
-
-  <target name="generate.java.doc.jdk7" unless="jdk9">
-    <javadoc Windowtitle="${title}" access="protected" Header="${header}" Footer="${footer}" destdir="${build.docs}" maxmemory="1024M" failonerror="yes">
+    <javadoc Windowtitle="${title}" access="protected" Header="${header}" Footer="${footer}" destdir="${build.docs}" maxmemory="1024M" failonerror="yes" additionalparam="${xdoclint.missing} ${html.version}">
       <sourcepath>
         <pathelement path="${base.src}" />
         <pathelement path="${base.src.test}/src" />
@@ -562,35 +558,7 @@
           <include name="*/lib/test/*.jar" />
         </fileset>
       </classpath>
-      <link href="http://docs.oracle.com/javase/7/docs/api/"/>
-    </javadoc>
-  </target>
-
-  <target name="generate.java.doc.jdk9" if="jdk9">
-    <javadoc Windowtitle="${title}" access="protected" Header="${header}" Footer="${footer}" destdir="${build.docs}" maxmemory="1024M" failonerror="yes">
-      <sourcepath>
-        <pathelement path="${base.src}" />
-        <pathelement path="${base.src.test}/src" />
-        <pathelement path="${build.AD}" />
-        <pathelement path="${base.src.core}/src" />
-        <pathelement path="${base.src.gen}" />
-        <pathelement path="build/javasqlc/src" />
-        <pathelement path="build/javasqlc/srcAD" />
-        <dirset dir="${base.modules}">
-          <include name="*/src" />
-          <include name="*/src-test" />
-        </dirset>
-      </sourcepath>
-      <excludepackage name="org.openbravo.erpWindows.*"/>
-      <classpath>
-        <path refid="project.class.path"/>
-        <pathelement path="lib/build/js.jar" />
-        <fileset dir="${base.modules}">
-          <include name="*/lib/test/*.jar" />
-        </fileset>
-      </classpath>
-      <link href="http://docs.oracle.com/javase/9/docs/api/"/>
-      <arg value="${j9.module.args}"/>
+      <link href="https://docs.oracle.com/javase/8/docs/api/"/>
     </javadoc>
   </target>
 
@@ -642,7 +610,6 @@
                   password="${bbdd.password}" 
                   stableDBdir="${stableDBdir}"
                   testDBdir="${basedir}"
-                  verbosity="${bbdd.verbosity}"
                   modules="${modules}"
     />    
   </target>
@@ -805,6 +772,7 @@
   <target name="apply.module" depends="compile.apply.module">
     <java classname="org.openbravo.erpCommon.modules.ApplyModuleTask" fork="true" maxmemory="${build.maxmemory}" failonerror="true">
       <arg line="'${base.src}' '${friendlyWarnings}' '${forceRefData}'" />
+      <jvmarg line="${jvm.arg.line}" />
       <classpath refid="apply.module.runtime.classpath" />
     </java>
    <delete includeEmptyDirs="true"  dir="${build.apply.module}" />
@@ -833,7 +801,7 @@
 		This task is called from the Openbravo ui, it spawns a java call which again
 		calls the restart.tomcat.do task as a spawned task.
 	-->
-  <target name="tomcat.restart" description="Restart the tomcat server process">
+  <target name="tomcat.restart">
     <echo message="Restarting tomcat..." />
     <java classname="org.openbravo.service.system.RestartTomcat" spawn="true" fork="true" maxmemory="${build.maxmemory}">
       <arg line="${base.src}" />
@@ -844,7 +812,7 @@
   <!--
 		Is called by the org.openbravo.service.system.RestartTomcat class.
 	-->
-  <target name="tomcat.restart.do" description="Restart the tomcat server process">
+  <target name="tomcat.restart.do">
     <echo message="Restarting Tomcat at ${env.CATALINA_HOME}" />
     <java classname="org.apache.catalina.startup.Bootstrap" fork="true">
       <classpath path=":${env.CATALINA_HOME}/bin/bootstrap.jar:${env.CATALINA_HOME}/bin/commons-logging-api.jar:${env.CATALINA_HOME}/bin/tomcat-juli.jar" />
@@ -863,7 +831,6 @@
       <jvmarg line="${env.CATALINA_OPTS}" />
       <jvmarg value="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" />
       <jvmarg value="-Djava.util.logging.config.file=${env.CATALINA_BASE}/conf/logging.properties" />
-      <jvmarg value="-Djava.endorsed.dirs=${env.CATALINA_HOME}/endorsed" />
       <jvmarg value="-Dcatalina.base=${env.CATALINA_BASE}" />
       <jvmarg value="-Dcatalina.home=${env.CATALINA_HOME}" />
       <jvmarg value="-Djava.io.tmpdir=${env.CATALINA_BASE}/temp" />
@@ -871,25 +838,6 @@
     </java>
   </target>
 
-  <!-- 
-		This task is called from the Openbravo ui, it spawns a java call which again
-		calls the tomcat.reload.do task as a spawned task.
-	-->
-  <target name="tomcat.reload" description="Reload the Openbravo context">
-    <echo message="Reloading webapp..." />
-    <java classname="org.openbravo.service.system.ReloadContext" jvm="${env.JAVA_HOME}/bin/java" maxmemory="${build.maxmemory}" spawn="true" fork="true">
-      <arg line="${base.src}" />
-      <classpath refid="project.class.path" />
-    </java>
-  </target>
-
-  <target name="tomcat.reload.do">
-    <taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask">
-      <classpath refid="project.class.path" />
-    </taskdef>
-    <reload url="${tomcat.manager.url}" username="${tomcat.manager.username}" password="${tomcat.manager.password}" path="/${context.name}" />
-  </target>
-
   <target name="tomcat.list">
     <taskdef name="list" classname="org.apache.catalina.ant.ListTask">
       <classpath refid="project.class.path" />
@@ -977,7 +925,7 @@
     <taskdef name="configurationApp" classname="org.openbravo.configuration.ConfigurationApp">
       <classpath refid="project.class.path" />
     </taskdef>
-    <configurationApp/>
+    <configurationApp nonInteractive="${nonInteractive}" acceptLicense="${acceptLicense}"/>
     </target>
   
   <target name="package.core" depends="init, set.version.number">
@@ -993,8 +941,6 @@
                    replace="\1${core.rev}\3"
                    byline="true"/>
     
-    <echo message="${hg.id}" file="${tmpdir}/config/instance.revision"/>
-	
     <delete includeEmptyDirs="true">
       <fileset dir="${tmpdir}/modules" includes="**/*" defaultexcludes="no"/>
     </delete>
@@ -1051,12 +997,13 @@
       <arg line="'${base.config}/Openbravo.properties' ${logFileName}" />
       <classpath>
         <pathelement path="${build.core.lib}/openbravo-core.jar" />
-        <pathelement path="${base.lib}/runtime/log4j-1.2.16.jar" />
+        <pathelement path="${base.lib}/runtime/log4j-1.2-api-2.11.1.jar" />
+        <pathelement path="${base.lib}/runtime/log4j-api-2.11.1.jar" />
+        <pathelement path="${base.lib}/runtime/log4j-core-2.11.1.jar" />
         <pathelement path="${base.lib}/runtime/commons-pool-1.5.6.jar" />
         <pathelement path="${base.lib}/runtime/commons-dbcp-1.4.jar" />
-        <pathelement path="${base.lib}/runtime/postgresql-9.4.1207.jre6.jar" />
+        <pathelement path="${base.lib}/runtime/postgresql-42.2.2.jre7.jar" />
         <pathelement path="${base.lib}/runtime/ojdbc6.jar" />
-        <pathelement path="${base.lib}/runtime/commons-collectionsi-3.2.1.jar" />
         <pathelement path="${base.lib}/runtime/ant-1.9.2.jar" />
         <pathelement path="${base.lib}/runtime/ant-launcher-1.9.2.jar" />
         <pathelement path="${base.lib}/runtime/ant-apache-log4j-1.9.2.jar" />
--- a/config/Openbravo.properties.template	Wed Mar 07 12:45:04 2018 +0100
+++ b/config/Openbravo.properties.template	Mon Feb 11 11:01:09 2019 +0100
@@ -10,7 +10,7 @@
 # * under the License. 
 # * The Original Code is Openbravo ERP. 
 # * The Initial Developer of the Original Code is Openbravo SLU 
-# * All portions are Copyright (C) 2007-2017 Openbravo SLU 
+# * All portions are Copyright (C) 2007-2018 Openbravo SLU 
 # * All Rights Reserved. 
 # * Contributor(s):  ______________________________________.
 # ************************************************************************
@@ -119,7 +119,6 @@
 ##########################
 
 bbdd.outputscript=databasescript.sql
-bbdd.verbosity=INFO
 
 # use js/css minimization (in local-context and war-file)
 minimizeJSandCSS=yes
@@ -197,13 +196,10 @@
 
 # If these properties are set, after a failed login the response time 
 # will be delayed, and the user account can be blocked.
-login.trial.delay.increment=0
-login.trial.delay.max=0
+login.trial.delay.increment=0.2
+login.trial.delay.max=3
 login.trial.user.lock=0
 
-# Prevents concurrent sessions for same user.
-login.limit.user.session=false
-
 ##########
 # Others #
 ##########
--- a/config/eclipse/Openbravo-eclipse-prefs.epf	Wed Mar 07 12:45:04 2018 +0100
+++ b/config/eclipse/Openbravo-eclipse-prefs.epf	Mon Feb 11 11:01:09 2019 +0100
@@ -1,436 +1,428 @@
-#Thu Jun 30 19:37:24 CEST 2011
-/instance/org.eclipse.jdt.ui/sp_cleanup.add_missing_annotations=true
+#Wed Jan 23 12:49:27 CET 2019
+\!/=
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.localPrefixes=
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.localSuffixes=
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.compliance=1.8
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.nullReference=warning
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.release=enabled
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.source=1.8
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,NORMAL
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.align_with_spaces=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_enum_constants=48
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=80
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.format_header=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.format_html=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.format_source_code=true
 /instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
-@org.eclipse.ui.editors=3.7.0.v20110517-0800
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.line_length=100
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.compact_else_if=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.continuation_indentation=2
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_empty_lines=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indentation.size=8
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
 /instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-@org.eclipse.debug.ui=3.7.0.v20110518
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-/instance/org.eclipse.wst.xml.core/lineWidth=100
 /instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-/instance/org.eclipse.jdt.ui/sp_cleanup.remove_unnecessary_casts=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.compliance=1.7
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-@org.eclipse.mylyn.monitor.ui=3.6.0.v20110608-1400
-@org.eclipse.jst.j2ee.webservice.ui=1.1.500.v201105122000
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-/instance/org.eclipse.jdt.ui/sp_cleanup.convert_to_enhanced_for_loop=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.overrideannotation=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-/configuration/org.eclipse.ui.ide/SHOW_WORKSPACE_SELECTION_DIALOG=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-/instance/org.eclipse.ui.ide/quickStart=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-/instance/org.eclipse.jdt.ui/org.eclipse.jface.textfont=1|Monospace|10.0|0|GTK|1|;
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-/instance/org.openarchitectureware.base/metamodelContributor=org.openarchitectureware.core.metamodel.jdt.javabean.JavaBeanMetamodelContributor
-/instance/org.eclipse.jdt.ui/formatter_profile=_Openbravo
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.format_header=false
-/instance/org.eclipse.core.resources/version=1
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-@org.eclipse.ui=3.7.0.I20110602-0100
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.exception.name=e
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-/instance/org.eclipse.jdt.ui/sp_cleanup.add_missing_nls_tags=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-/instance/org.eclipse.jdt.ui/sp_cleanup.use_this_for_non_static_method_access=false
-/instance/org.eclipse.jdt.ui/sp_cleanup.add_serial_version_id=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
 /instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-/instance/org.eclipse.jdt.ui/sp_cleanup.remove_unused_private_types=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-/instance/org.eclipse.ant.ui/formatter_tab_size=2
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-/instance/org.eclipse.jdt.ui/sp_cleanup.make_local_variable_final=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-/instance/org.eclipse.jdt.ui/sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-/instance/org.eclipse.jdt.ui/sp_cleanup.always_use_this_for_non_static_field_access=false
-/instance/org.eclipse.ui.editors/overviewRuler_migration=migrated_3.1
-@org.eclipse.mylyn.context.core=3.6.0.v20110608-1400
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-/instance/org.eclipse.jdt.ui/sp_cleanup.organize_imports=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.gettersetter.use.is=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-/instance/org.eclipse.jdt.ui/sp_cleanup.remove_unused_imports=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.tabulation.char=space
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-/instance/org.eclipse.wst.validation/USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.jst.j2ee.internal.jca.validation.UIConnectorValidator;org.eclipse.jst.j2ee.internal.web.validation.UIWarValidator;org.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.wst.common.componentcore.internal.ModuleCoreValidator;org.eclipse.jst.j2ee.internal.validation.UIApplicationClientValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsp.core.internal.validation.JSPContentValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyValidator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator;org.eclipse.jst.jsf.validation.internal.appconfig.AppConfigValidator;org.eclipse.jst.jsp.core.internal.validation.JSPBatchValidator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.jst.j2ee.internal.ejb.workbench.validation.UIEjbValidator;org.eclipse.jst.j2ee.internal.validation.UIEarValidator;org.eclipse.jst.jsf.validation.internal.JSPSemanticsValidator;
-/instance/org.eclipse.jdt.ui/sp_cleanup.remove_trailing_whitespaces_all=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-/instance/org.eclipse.ant.ui/formatter_max_line_length=100
-/configuration/org.eclipse.ui.ide/RECENT_WORKSPACES=
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-/instance/org.eclipse.jdt.ui/sp_cleanup.remove_unnecessary_nls_tags=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-/instance/org.eclipse.jdt.ui/sp_cleanup.always_use_blocks=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-@org.eclipse.mylyn.context.ui=3.6.0.v20110608-1400
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
 /instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
 /instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.lineSplit=100
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.tabulation.char=space
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.tabulation.size=2
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.use_on_off_tags=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+/instance/org.eclipse.jdt.ui/formatter_profile=_Openbravo
+/instance/org.eclipse.jdt.ui/formatter_settings_version=15
+/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.exception.name=e
+/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.formatterprofiles=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\n<profiles version\="15">\n    <profile kind\="CodeFormatterProfile" name\="Openbravo" version\="15">\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment" value\="common_lines"/>\n        <setting id\="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation" value\="common_lines"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value\="1"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement" value\="common_lines"/>\n        <setting id\="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.indentation.size" value\="8"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration" value\="common_lines"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.align_with_spaces" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.disabling_tag" value\="@formatter\:off"/>\n        <setting id\="org.eclipse.jdt.core.formatter.continuation_indentation" value\="2"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value\="48"/>\n        <setting id\="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value\="1"/>\n        <setting id\="org.eclipse.jdt.core.formatter.blank_lines_after_package" value\="1"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement" value\="common_lines"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value\="16"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.enabling_tag" value\="@formatter\:on"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value\="16"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value\="1"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references" value\="0"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line" value\="one_line_never"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value\="end_of_line"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.comment.line_length" value\="100"/>\n        <setting id\="org.eclipse.jdt.core.formatter.use_on_off_tags" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.keep_method_body_on_one_line" value\="one_line_never"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line" value\="one_line_never"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value\="end_of_line"/>\n        <setting id\="org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line" value\="one_line_never"/>\n        <setting id\="org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value\="16"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line" value\="one_line_never"/>\n        <setting id\="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value\="0"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value\="16"/>\n        <setting id\="org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause" value\="common_lines"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value\="16"/>\n        <setting id\="org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line" value\="one_line_never"/>\n        <setting id\="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.brace_position_for_block" value\="end_of_line"/>\n        <setting id\="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value\="end_of_line"/>\n        <setting id\="org.eclipse.jdt.core.formatter.brace_position_for_lambda_body" value\="end_of_line"/>\n        <setting id\="org.eclipse.jdt.core.formatter.compact_else_if" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value\="16"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_type_parameters" value\="0"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value\="16"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value\="16"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_compact_loops" value\="16"/>\n        <setting id\="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value\="16"/>\n        <setting id\="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value\="1"/>\n        <setting id\="org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation" value\="common_lines"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.comment.format_line_comments" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_assignment" value\="0"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_module_statements" value\="16"/>\n        <setting id\="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value\="16"/>\n        <setting id\="org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line" value\="one_line_never"/>\n        <setting id\="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value\="0"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value\="80"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value\="end_of_line"/>\n        <setting id\="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value\="end_of_line"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.comment.format_header" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value\="16"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value\="0"/>\n        <setting id\="org.eclipse.jdt.core.formatter.join_wrapped_lines" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.wrap_before_conditional_operator" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines" value\="2147483647"/>\n        <setting id\="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value\="end_of_line"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value\="80"/>\n        <setting id\="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause" value\="common_lines"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value\="80"/>\n        <setting id\="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.keep_code_block_on_one_line" value\="one_line_never"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.tabulation.size" value\="2"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.comment.format_source_code" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.blank_lines_before_field" value\="0"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value\="2"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.blank_lines_before_method" value\="1"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value\="16"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value\="16"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.wrap_before_assignment_operator" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.brace_position_for_switch" value\="end_of_line"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.comment.format_html" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration" value\="common_lines"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value\="16"/>\n        <setting id\="org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line" value\="one_line_never"/>\n        <setting id\="org.eclipse.jdt.core.formatter.indent_empty_lines" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_type_arguments" value\="0"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value\="0"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value\="1"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value\="1"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value\="16"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.comment.format_block_comments" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value\="16"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value\="16"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value\="end_of_line"/>\n        <setting id\="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration" value\="common_lines"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line" value\="one_line_never"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value\="end_of_line"/>\n        <setting id\="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value\="end_of_line"/>\n        <setting id\="org.eclipse.jdt.core.formatter.blank_lines_before_package" value\="0"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header" value\="0"/>\n        <setting id\="org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line" value\="false"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.join_lines_in_comments" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value\="true"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.tabulation.char" value\="space"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value\="1"/>\n        <setting id\="org.eclipse.jdt.core.formatter.lineSplit" value\="100"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value\="do not insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value\="insert"/>\n    </profile>\n</profiles>\n
+/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.formatterprofiles.version=15
+/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.gettersetter.use.is=true
+/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.overrideannotation=true
+/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates/>
+/instance/org.eclipse.jdt.ui/sp_cleanup.add_default_serial_version_id=true
+/instance/org.eclipse.jdt.ui/sp_cleanup.add_generated_serial_version_id=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.add_missing_annotations=true
+/instance/org.eclipse.jdt.ui/sp_cleanup.add_missing_deprecated_annotations=true
+/instance/org.eclipse.jdt.ui/sp_cleanup.add_missing_methods=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.add_missing_nls_tags=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.add_missing_override_annotations=true
+/instance/org.eclipse.jdt.ui/sp_cleanup.add_missing_override_annotations_interface_methods=true
+/instance/org.eclipse.jdt.ui/sp_cleanup.add_serial_version_id=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.always_use_blocks=true
+/instance/org.eclipse.jdt.ui/sp_cleanup.always_use_parentheses_in_expressions=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.always_use_this_for_non_static_field_access=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.always_use_this_for_non_static_method_access=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.convert_functional_interfaces=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.convert_to_enhanced_for_loop=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.correct_indentation=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.format_source_code=true
+/instance/org.eclipse.jdt.ui/sp_cleanup.format_source_code_changes_only=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.insert_inferred_type_arguments=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.make_local_variable_final=true
+/instance/org.eclipse.jdt.ui/sp_cleanup.make_parameters_final=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.make_private_fields_final=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.make_type_abstract_if_missing_method=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.make_variable_declarations_final=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.never_use_blocks=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.never_use_parentheses_in_expressions=true
+/instance/org.eclipse.jdt.ui/sp_cleanup.on_save_use_additional_actions=true
+/instance/org.eclipse.jdt.ui/sp_cleanup.organize_imports=true
+/instance/org.eclipse.jdt.ui/sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+/instance/org.eclipse.jdt.ui/sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+/instance/org.eclipse.jdt.ui/sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.remove_private_constructors=true
+/instance/org.eclipse.jdt.ui/sp_cleanup.remove_redundant_modifiers=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.remove_redundant_semicolons=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.remove_redundant_type_arguments=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.remove_trailing_whitespaces=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.remove_trailing_whitespaces_all=true
+/instance/org.eclipse.jdt.ui/sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.remove_unnecessary_casts=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.remove_unnecessary_nls_tags=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.remove_unused_imports=false
 /instance/org.eclipse.jdt.ui/sp_cleanup.remove_unused_local_variables=false
-@org.eclipse.wst.validation=1.2.300.v201104190230
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-/instance/org.eclipse.jdt.ui/formatter_settings_version=12
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-@org.eclipse.team.cvs.ui=3.3.400.I20110510-0800
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.source=1.7
-/instance/org.eclipse.wst.validation/USER_PREFERENCE=saveAutomaticallyfalseprojectsCanOverridetruedisableAllValidationfalseversion1.1.101.v200706071630
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-/instance/org.eclipse.ui.ide/platformState=1233309539016
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-@org.eclipse.ant.ui=3.5.100.v20110510
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-/instance/org.eclipse.wst.xml.core/indentationChar=space
-/instance/org.eclipse.jdt.ui/proposalOrderMigrated=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-/instance/org.eclipse.ant.ui/useAnnotationsPrefPage=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-/instance/org.eclipse.jdt.ui/content_assist_guess_method_arguments=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-/instance/org.eclipse.jdt.ui/sp_cleanup.make_private_fields_final=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-@org.eclipse.jdt.core=3.7.0.v_B61
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-/instance/org.eclipse.jdt.ui/sp_cleanup.use_blocks=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-/instance/org.eclipse.jdt.ui/sp_cleanup.remove_private_constructors=true
-/instance/org.eclipse.jst.j2ee.webservice.ui/areThereWebServices=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-/instance/org.eclipse.ui/showIntro=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+/instance/org.eclipse.jdt.ui/sp_cleanup.remove_unused_private_fields=true
+/instance/org.eclipse.jdt.ui/sp_cleanup.remove_unused_private_members=false
 /instance/org.eclipse.jdt.ui/sp_cleanup.remove_unused_private_methods=true
-@org.eclipse.mylyn.tasks.ui=3.6.0.v20110608-1400
-/instance/org.eclipse.ant.ui/useQuickDiffPrefPage=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-@org.eclipse.team.ui=3.6.100.I20110525-0800
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-/configuration/org.eclipse.ui.ide/MAX_RECENT_WORKSPACES=5
-@org.eclipse.core.resources=3.7.100.v20110510-0712
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-/instance/org.eclipse.epp.usagedata.recording/org.eclipse.epp.usagedata.recording.last-upload=1309455348296
-/instance/org.eclipse.jdt.ui/sp_cleanup.make_parameters_final=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-/instance/org.eclipse.jdt.launching/org.eclipse.jdt.launching.PREF_VM_XML=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\n<vmSettings defaultVM\="57,org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType13,1309455365506">\n<vmType id\="org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType">\n<vm id\="1309455365506" javadocURL\="http\://download.oracle.com/javase/6/docs/api/" name\="java-6-openjdk" path\="/usr/lib/jvm/java-6-openjdk"/>\n</vmType>\n</vmSettings>\n
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-/instance/org.eclipse.jdt.ui/sp_cleanup.add_generated_serial_version_id=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-/instance/org.eclipse.jdt.ui/editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-/configuration/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-/instance/org.eclipse.jdt.ui/sp_cleanup.always_use_this_for_non_static_method_access=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-@org.eclipse.ui.ide=3.7.0.I20110519-0100
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.editor.tab.width=
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.tabulation.size=2
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-@org.eclipse.ui.browser=3.3.100.v20110426
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-/instance/org.eclipse.jdt.ui/useQuickDiffPrefPage=true
-/instance/org.eclipse.jdt.ui/sp_cleanup.format_source_code=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.formatterprofiles=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\n<profiles version\="12">\n<profile kind\="CodeFormatterProfile" name\="Openbravo" version\="12">\n<setting id\="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.disabling_tag" value\="@formatter\:off"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value\="end_of_line"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_before_field" value\="0"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.use_on_off_tags" value\="false"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value\="false"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value\="16"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value\="16"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value\="80"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value\="end_of_line"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_after_package" value\="1"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.continuation_indentation" value\="2"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value\="16"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value\="1"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_before_package" value\="0"/>\n<setting id\="org.eclipse.jdt.core.compiler.source" value\="1.5"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.comment.format_line_comments" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.join_wrapped_lines" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value\="16"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value\="1"/>\n<setting id\="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value\="false"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value\="16"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value\="false"/>\n<setting id\="org.eclipse.jdt.core.formatter.lineSplit" value\="100"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value\="0"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.indentation.size" value\="8"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.enabling_tag" value\="@formatter\:on"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value\="16"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_assignment" value\="0"/>\n<setting id\="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value\="error"/>\n<setting id\="org.eclipse.jdt.core.formatter.tabulation.char" value\="space"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_before_method" value\="1"/>\n<setting id\="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value\="false"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value\="16"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value\="end_of_line"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value\="0"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_switch" value\="end_of_line"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value\="false"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value\="error"/>\n<setting id\="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value\="false"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_block" value\="end_of_line"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value\="end_of_line"/>\n<setting id\="org.eclipse.jdt.core.formatter.compact_else_if" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value\="end_of_line"/>\n<setting id\="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.tabulation.size" value\="2"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value\="false"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value\="16"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.indent_empty_lines" value\="false"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value\="end_of_line"/>\n<setting id\="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value\="1"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value\="16"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.compiler.compliance" value\="1.5"/>\n<setting id\="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value\="2"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value\="16"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value\="false"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value\="false"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value\="16"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value\="16"/>\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value\="end_of_line"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value\="enabled"/>\n<setting id\="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value\="16"/>\n<setting id\="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.comment.line_length" value\="100"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value\="1"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value\="end_of_line"/>\n<setting id\="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value\="0"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value\="1"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value\="16"/>\n<setting id\="org.eclipse.jdt.core.formatter.join_lines_in_comments" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value\="16"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value\="1"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.comment.format_html" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value\="16"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.comment.format_source_code" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value\="16"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value\="1.5"/>\n<setting id\="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value\="false"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value\="0"/>\n<setting id\="org.eclipse.jdt.core.formatter.comment.format_header" value\="false"/>\n<setting id\="org.eclipse.jdt.core.formatter.comment.format_block_comments" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value\="0"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value\="end_of_line"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value\="1"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value\="true"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value\="false"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value\="do not insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value\="false"/>\n<setting id\="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value\="false"/>\n</profile>\n</profiles>\n
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-/instance/org.eclipse.jdt.ui/spelling_locale_initialized=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-/instance/org.eclipse.wst.validation/DELEGATES_PREFERENCE=delegateValidatorListorg.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator\=org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator\=org.eclipse.wst.wsdl.validation.internal.eclipse.Validator;
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-/instance/org.eclipse.core.resources/encoding=UTF-8
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.compact_else_if=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.continuation_indentation=2
-/instance/org.eclipse.jdt.ui/sp_cleanup.remove_unused_private_fields=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-/instance/org.eclipse.jdt.ui/sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-@org.eclipse.mylyn.java.ui=3.6.0.v20110608-1400
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-/instance/org.eclipse.ui.ide/PROBLEMS_FILTERS_MIGRATE=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.use_on_off_tags=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning
-/instance/org.eclipse.jdt.ui/sp_cleanup.always_use_parentheses_in_expressions=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.format_source_code=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-\!/=
+/instance/org.eclipse.jdt.ui/sp_cleanup.remove_unused_private_types=true
 /instance/org.eclipse.jdt.ui/sp_cleanup.sort_members=false
-/instance/org.eclipse.jdt.ui/tabWidthPropagated=true
+/instance/org.eclipse.jdt.ui/sp_cleanup.sort_members_all=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.use_anonymous_class_creation=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.use_blocks=true
+/instance/org.eclipse.jdt.ui/sp_cleanup.use_blocks_only_for_return_and_throw=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.use_lambda=true
+/instance/org.eclipse.jdt.ui/sp_cleanup.use_parentheses_in_expressions=false
 /instance/org.eclipse.jdt.ui/sp_cleanup.use_this_for_non_static_field_access=false
-/instance/org.eclipse.jdt.ui/sp_cleanup.add_missing_override_annotations=true
-/instance/org.eclipse.jdt.ui/sp_cleanup.use_parentheses_in_expressions=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-/instance/org.eclipse.ui.workbench/ENABLED_DECORATORS=org.eclipse.jst.j2ee.navigator.ui.java.resource.decorator\:true,org.eclipse.jst.ws.jaxws.dom.integration.navigator.WebServiceDecorator\:true,org.eclipse.wst.server.ui.decorator\:false,org.eclipse.datatools.connectivity.sqm.core.internal.ui.explorer.DependencyDecoration\:true,org.eclipse.datatools.connectivity.sqm.core.internal.ui.explorer.ColumnDecoration\:true,org.eclipse.datatools.connectivity.sqm.core.internal.ui.explorer.ForeignKeyDecoration\:true,org.eclipse.datatools.connectivity.sqm.core.internal.ui.explorer.IndexTriggerDecoration\:true,org.eclipse.datatools.connectivity.internal.core.ui.bookmarkDecoration\:true,org.eclipse.datatools.connectivity.internal.core.ui.FilterNodeDecoration\:true,org.eclipse.datatools.connectivity.ui.decorator.contentextension\:false,org.eclipse.datatools.enablement.ingres.ui.providers.decorators.SynonymDecorationService\:true,org.eclipse.datatools.enablement.ingres.internal.ui.providers.decorators.ParameterDecorationService\:true,org.eclipse.datatools.enablement.sybase.asa.proxytabledecorator\:true,org.eclipse.datatools.enablement.sybase.ase.webservicetabledecorator\:true,org.eclipse.datatools.enablement.sybase.systemtabledecorator\:true,org.eclipse.jdt.ui.override.decorator\:true,org.eclipse.jdt.ui.interface.decorator\:false,org.eclipse.jdt.ui.buildpath.decorator\:true,org.eclipse.jst.j2ee.internal.ui.util.AnnotationIconDecorator_ejb\:true,org.eclipse.jst.j2ee.navigator.internal.J2EEProjectDecorator\:true,org.eclipse.jst.jee.ui.internal.navigator.ejb.BeanDecorator\:true,org.eclipse.jst.jee.navigator.internal.JEEProjectDecorator\:true,org.eclipse.jst.j2ee.internal.ui.util.AnnotationIconDecorator_servlet\:true,org.eclipse.jst.servlet.ui.Decorator\:true,org.eclipse.mylyn.context.ui.decorator.interest\:true,org.eclipse.mylyn.tasks.ui.decorators.task\:true,org.eclipse.mylyn.team.ui.changeset.decorator\:true,org.eclipse.pde.ui.binaryProjectDecorator\:false,org.eclipse.rse.core.virtualobject.decorator\:true,org.eclipse.rse.core.binary.executable.decorator\:true,org.eclipse.rse.core.script.executable.decorator\:true,org.eclipse.rse.core.java.executable.decorator\:true,org.eclipse.rse.core.library.decorator\:true,org.eclipse.rse.core.link.decorator\:true,org.eclipse.rse.subsystems.error.decorator\:true,org.eclipse.team.cvs.ui.decorator\:true,org.eclipse.ui.LinkedResourceDecorator\:true,org.eclipse.ui.VirtualResourceDecorator\:true,org.eclipse.ui.ContentTypeDecorator\:true,org.eclipse.ui.ResourceFilterDecorator\:false,org.eclipse.wst.jsdt.ui.override.decorator\:true,org.eclipse.wst.server.ui.navigatorDecorator\:true,
-/instance/org.eclipse.jdt.ui/sp_cleanup.make_variable_declarations_final=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.classpathVariable.JRE_SRC=
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-/instance/org.eclipse.wst.validation/USER_BUILD_PREFERENCE=enabledBuildValidatorList
-/instance/org.eclipse.mylyn.java.ui/org.eclipse.mylyn.ui.first.run.0_4_9=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-/instance/org.eclipse.core.resources/description.autobuilding=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-/instance/org.eclipse.wst.xml.core/indentationSize=2
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-/instance/org.eclipse.jdt.ui/content_assist_disabled_computers=org.eclipse.jdt.ui.javaNoTypeProposalCategory\u0000org.eclipse.jdt.ui.spellingProposalCategory\u0000org.eclipse.jdt.ui.textProposalCategory\u0000org.eclipse.jdt.ui.templateProposalCategory\u0000org.eclipse.jdt.ui.javaTypeProposalCategory\u0000
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-/instance/org.eclipse.jdt.ui/sp_cleanup.sort_members_all=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-/instance/org.eclipse.jdt.ui/content_assist_proposals_foreground=60,60,60
-/instance/org.eclipse.mylyn.monitor.ui/org.eclipse.mylyn.monitor.activity.tracking.enabled.checked=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.formatterprofiles.version=12
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-@org.eclipse.epp.usagedata.recording=1.3.1.R201106061540
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-/instance/org.eclipse.jdt.ui/sp_cleanup.on_save_use_additional_actions=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-@org.eclipse.ui.workbench=3.7.0.I20110519-0100
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.classpathVariable.JRE_SRCROOT=
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-/instance/org.eclipse.jdt.ui/sp_cleanup.never_use_blocks=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-/instance/org.eclipse.jdt.ui/sp_cleanup.add_default_serial_version_id=true
-@org.eclipse.jdt.ui=3.7.0.v20110531-1200
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.line_length=100
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.text.code_templates_migrated=true
-@org.eclipse.wst.xml.core=1.1.600.v201104251227
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-/instance/org.eclipse.jdt.ui/sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates/>
-/instance/org.eclipse.jdt.ui/sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-/instance/org.eclipse.jdt.ui/sp_cleanup.remove_trailing_whitespaces=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-/instance/org.eclipse.mylyn.context.core/mylyn.attention.migrated=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-/instance/org.eclipse.jdt.ui/sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-/instance/org.eclipse.ui.editors/spacesForTabs=true
-/instance/org.eclipse.jdt.ui/useAnnotationsPrefPage=true
-/configuration/org.eclipse.ui.ide/RECENT_WORKSPACES_PROTOCOL=2
-/instance/org.eclipse.team.ui/org.eclipse.team.ui.first_time=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-/instance/org.eclipse.ui.browser/browsers=<?xml version\="1.0" encoding\="UTF-8"?>\n<web-browsers current\="0">\n<system/>\n</web-browsers>
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+/instance/org.eclipse.jdt.ui/sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+/instance/org.eclipse.jdt.ui/sp_cleanup.use_this_for_non_static_method_access=false
+/instance/org.eclipse.jdt.ui/sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+@org.eclipse.jdt.core=3.15.0.v20180905-0317
+@org.eclipse.jdt.ui=3.15.0.v20180829-2215
 file_export_version=3.0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-@org.eclipse.jdt.launching=3.6.0.v20110509
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.format_line_comments=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.nullReference=warning
-/instance/org.eclipse.jdt.ui/sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-/instance/org.eclipse.jdt.ui/fontPropagated=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-/instance/org.eclipse.ant.ui/formatter_tab_char=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.localPrefixes=
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-/instance/org.eclipse.jdt.ui/content_assist_proposals_background=255,255,255
-/instance/org.eclipse.ui.ide/tipsAndTricks=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.localSuffixes=
-/instance/org.eclipse.jdt.ui/sp_cleanup.never_use_parentheses_in_expressions=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-/instance/org.eclipse.debug.ui/org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\n<launchPerspectives/>\n
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-/instance/org.eclipse.jdt.ui/sp_cleanup.add_missing_deprecated_annotations=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.format_html=true
-/instance/org.eclipse.jdt.ui/sp_cleanup.remove_unused_private_members=false
-/instance/org.eclipse.jdt.ui/sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.lineSplit=100
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-/instance/org.eclipse.team.cvs.ui/pref_first_startup=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indentation.size=8
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-/instance/org.eclipse.mylyn.context.ui/org.eclipse.mylyn.ui.interest.highlighters=flag\:\:255;238;99;yellow;Solid\:254;179;190;rose;Solid\:202;169;222;purple;Solid\:120;160;250;blue;Solid\:162;231;215;green;Solid\:81;158;235;blue gradient;Gradient\:222;137;71;orange gradient;Gradient\:
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.format_block_comments=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
-/instance/org.eclipse.mylyn.tasks.ui/org.eclipse.mylyn.tasks.ui.backup.last=1233309627073
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-/instance/org.eclipse.jdt.ui/sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_empty_lines=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.javadoclocations.migrated=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-/instance/org.eclipse.jdt.ui/sp_cleanup.use_blocks_only_for_return_and_throw=false
--- a/config/log4j.lcf.template	Wed Mar 07 12:45:04 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-# *************************************************************************
-# * The contents of this file are subject to the Openbravo  Public  License
-# * Version  1.1  (the  "License"),  being   the  Mozilla   Public  License
-# * Version 1.1  with a permitted attribution clause; you may not  use this
-# * file except in compliance with the License. You  may  obtain  a copy of
-# * the License at http://www.openbravo.com/legal/license.html 
-# * Software distributed under the License  is  distributed  on  an "AS IS"
-# * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
-# * License for the specific  language  governing  rights  and  limitations
-# * under the License. 
-# * The Original Code is Openbravo ERP. 
-# * The Initial Developer of the Original Code is Openbravo SLU
-# * All portions are Copyright (C) 2007-2013 Openbravo SLU
-# * All Rights Reserved. 
-# * Contributor(s):  ______________________________________.
-# ************************************************************************
-
-# to enable logging in i.e. eclipse console add ", C" to the line below
-log4j.rootCategory=INFO, R
-
-# Set our global levels
-log4j.category.org=WARN
-log4j.category.org.openbravo=INFO
-
-log4j.appender.R=org.apache.log4j.RollingFileAppender
-log4j.appender.R.File=${catalina.base}/logs/openbravo.log
-log4j.appender.R.MaxFileSize=10000KB
-
-# R uses PatternLayout.
-log4j.appender.R.layout=org.apache.log4j.PatternLayout
-log4j.appender.R.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c - %m%n
-
-# Keep one backup file
-log4j.appender.R.MaxBackupIndex=1
-
-# C is an optional ConsoleAppender for usage in i.e. Eclipse
-log4j.appender.C=org.apache.log4j.ConsoleAppender
-log4j.appender.C.layout=org.apache.log4j.PatternLayout
-log4j.appender.C.layout.ConversionPattern=%-4r [%t] %-5p %c - %m%n
-
-log4j.category.reloadXml=ERROR
-
-# To debug an specific class
-#log4j.category.org.openbravo.erpCommon.ad_process=DEBUG
-
-#****************************************************
-# Hibernate
-#****************************************************
-log4j.appender.HB=org.apache.log4j.RollingFileAppender
-log4j.appender.HB.File=${catalina.base}/logs/openbravo_hibernate.log
-log4j.appender.HB.MaxFileSize=10000KB
-
-# R uses PatternLayout.
-log4j.appender.HB.layout=org.apache.log4j.PatternLayout
-log4j.appender.HB.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c - %m%n
-
-# Keep one backup file
-log4j.appender.HB.MaxBackupIndex=1
-
-log4j.logger.org.hibernate=error, HB
-
-### log HQL query parser activity
-#log4j.logger.org.hibernate.hql.ast.AST=error, HB
-
-### log just the SQL
-log4j.logger.org.hibernate.SQL=error, HB
-
-### log JDBC bind parameters ###
-log4j.logger.org.hibernate.type=error, HB
-
-### log schema export/update ###
-log4j.logger.org.hibernate.tool.hbm2ddl=error, HB
-
-### log HQL parse trees
-log4j.logger.org.hibernate.hql=error, HB
-
-### log cache activity ###
-log4j.logger.org.hibernate.cache=error, HB
-
-### log transaction activity
-log4j.logger.org.hibernate.transaction=error, HB
-
-### log JDBC resource acquisition
-log4j.logger.org.hibernate.jdbc=error, HB
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/config/log4j2-web.xml.template	Mon Feb 11 11:01:09 2019 +0100
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.1  (the  "License"),  being   the  Mozilla   Public  License
+ * Version 1.1  with a permitted attribution clause; you may not  use this
+ * file except in compliance with the License. You  may  obtain  a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License  is  distributed  on  an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific  language  governing  rights  and  limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo SLU
+ * All portions are Copyright (C) 2018 Openbravo SLU
+ * All Rights Reserved.
+ * Contributor(s):  ______________________________________.
+ ************************************************************************
+-->
+<!-- Logger configuration used when running as a web application in a container (e.g. Tomcat) -->
+<!-- Rebuild tasks executed from Module Management Window uses the build config file (log4j2.xml) -->
+<Configuration>
+  <Properties>
+    <Property name="logDir">${env:CATALINA_BASE}/logs</Property>
+  </Properties>
+
+  <Loggers>
+    <Root level="info">
+      <AppenderRef ref="RollingFile"/>
+      <!-- Add this appender to show log messages in console i.e Eclipse: -->
+      <!-- <AppenderRef ref="Console"/> -->
+    </Root>
+
+    <Logger name="reloadXml" level="error"/>
+    <Logger name="org.hibernate" level="error"/>
+
+    <!-- To debug a specific class/package: -->
+    <!-- <Logger name="org.openbravo.erpCommon.ad_process" level="debug"/> -->
+  </Loggers>
+
+  <Appenders>
+    <RollingFile name="RollingFile" fileName="${logDir}/openbravo.log"
+                 filePattern="${logDir}/openbravo-%d{yyyyMMdd}-%i.log.gz">
+      <PatternLayout pattern="%d [%t] %-5p %c - %m%n"/>
+      <Policies>
+        <SizeBasedTriggeringPolicy size="100MB" />
+        <TimeBasedTriggeringPolicy />
+      </Policies>
+      <DefaultRolloverStrategy max="30"/>
+    </RollingFile>
+
+    <Console name="Console" target="SYSTEM_OUT">
+      <PatternLayout pattern="%d [%t] %-5p %c - %m%n"/>
+    </Console>
+  </Appenders>
+</Configuration>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/config/log4j2.xml.template	Mon Feb 11 11:01:09 2019 +0100
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.1  (the  "License"),  being   the  Mozilla   Public  License
+ * Version 1.1  with a permitted attribution clause; you may not  use this
+ * file except in compliance with the License. You  may  obtain  a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License  is  distributed  on  an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific  language  governing  rights  and  limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo SLU
+ * All portions are Copyright (C) 2018 Openbravo SLU
+ * All Rights Reserved.
+ * Contributor(s):  ______________________________________.
+ ************************************************************************
+-->
+<!-- Logger configuration used in all build tasks -->
+<!-- Note that this config is also used in rebuild tasks executed from the Module Management window in the backoffice -->
+<Configuration packages="org.openbravo.utils">
+  <Loggers>
+    <Root level="info">
+      <AppenderRef ref="Console"/>
+
+      <!-- OBRebuildAppender is required for rebuilding from the GUI -->
+      <AppenderRef ref="OBRebuildAppender"/>
+    </Root>
+
+    <Logger name="org.hibernate" level="error"/>
+
+    <Logger name="reloadXml" level="error"/>
+
+    <!-- To debug a specific class/package: -->
+    <!-- <Logger name="org.openbravo.erpCommon.modules.ApplyModuleTask" level="debug"/> -->
+  </Loggers>
+
+  <Appenders>
+    <Console name="Console" target="SYSTEM_OUT">
+      <PatternLayout pattern="%-5r [%t] %-5p %c - %m%n"/>
+    </Console>
+
+    <OBRebuildAppender name="OBRebuildAppender"/>
+  </Appenders>
+</Configuration>
--- a/config/userconfig.xml.template	Wed Mar 07 12:45:04 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- *************************************************************************
- * The contents of this file are subject to the Openbravo Public License 
- * Version 1.1 (the "License"), being the Mozilla Public License 
- * version 1.1  with a permitted attribution clause ; you may not use 
- * this file except in compliance with the License. 
- * You may obtain a copy of the License at  
- * http://www.openbravo.com/legal/license.txt 
- * Software distributed under the License is distributed on an 
- * "AS IS" basis, WITHOUT WARRANTY OF  ANY KIND, either express or 
- * implied. See the License for the specific language governing rights 
- * and  limitations under the License. 
- * The Original Code is Openbravo ERP. 
- * The Initial Developer of the Original Code is Openbravo SLU 
- * All portions are Copyright (C) 2005-2007 Openbravo SLU 
- * All Rights Reserved. 
- * Contributor(s): Openbravo S.L.U.
- ************************************************************************
--->
-
-<!--<!DOCTYPE configuration SYSTEM "config.dtd">-->
-<!-- 
-     this file contains templates which allow an user easy 
-     configuration of Fop. Actually normally you don't need this configuration 
-     file, but if you need to change configuration, you should
-     always use this file and *not* config.xml. 
-     Usage: java org.apache.fop.apps.Fop -c userconfig.xml -fo fo-file -pdf pdf-file
--->
-
-
-<configuration>
-
-<!--  
-baseDir: normally the base directory is the directory where the fo file is 
-         located. if you want to specify your own, uncomment this entry.
-         This value can also be a URL. Actually, the value is converted to 
-         a URL.
--->
-<!-- 
-  <entry>
-    <key>baseDir</key>
-    <value></value>
-  </entry>
--->
-
-<!--  
-fontBaseDir: Similar to baseDir, except that this value is used for fonts. If
-         it isn't specified, the value from baseDir is used.
--->
-<!--
-  <entry>     
-    <key>fontBaseDir</key>      
-    <value>/tmp</value>    
-  </entry>
--->
-
-</configuration>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/legal/ASM_BSD_license.txt	Mon Feb 11 11:01:09 2019 +0100
@@ -0,0 +1,29 @@
+ASM is released under the following 3-Clause BSD License:
+
+ASM: a very small and fast Java bytecode manipulation framework
+Copyright (c) 2000-2011 INRIA, France Telecom
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+  notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+3. Neither the name of the copyright holders nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/legal/CDDL-1.0.txt	Mon Feb 11 11:01:09 2019 +0100
@@ -0,0 +1,263 @@
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+1. Definitions.
+
+   1.1. Contributor. means each individual or entity that creates or contributes to the creation of Modifications.
+
+   1.2. Contributor Version. means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
+
+   1.3. Covered Software. means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
+
+   1.4. Executable. means the Covered Software in any form other than Source Code.
+
+   1.5. Initial Developer. means the individual or entity that first makes Original Software available under this License.
+
+   1.6. Larger Work. means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
+
+   1.7. License. means this document.
+
+   1.8. Licensable. means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+
+   1.9. Modifications. means the Source Code and Executable form of any of the following:
+
+        A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
+
+        B. Any new file that contains any part of the Original Software or previous Modification; or
+
+        C. Any new file that is contributed or otherwise made available under the terms of this License.
+
+   1.10. Original Software. means the Source Code and Executable form of computer software code that is originally released under this License.
+
+   1.11. Patent Claims. means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+
+   1.12. Source Code. means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
+
+   1.13. You. (or .Your.) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, .You. includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, .control. means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
+
+2. License Grants.
+
+      2.1. The Initial Developer Grant.
+
+      Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
+
+         (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
+
+         (b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
+
+        (c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
+
+        (d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices.
+
+    2.2. Contributor Grant.
+
+    Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
+
+        (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
+
+        (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
+
+        (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
+
+        (d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+      3.1. Availability of Source Code.
+      Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.
+
+      3.2. Modifications.
+      The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
+
+      3.3. Required Notices.
+      You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
+
+      3.4. Application of Additional Terms.
+      You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients. rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+
+      3.5. Distribution of Executable Versions.
+      You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipient.s rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
+
+      3.6. Larger Works.
+      You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+      4.1. New Versions.
+      Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
+
+      4.2. Effect of New Versions.
+      You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward.
+
+      4.3. Modified Versions.
+      When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+   COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN .AS IS. BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+6. TERMINATION.
+
+      6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+      6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as .Participant.) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant.
+
+      6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+   UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY.S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+   The Covered Software is a .commercial item,. as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of .commercial computer software. (as that term is defined at 48 C.F.R. ? 252.227-7014(a)(1)) and .commercial computer software documentation. as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.
+
+9. MISCELLANEOUS.
+
+   This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction.s conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys. fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+   As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+   NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
+
+   The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California.
+
+
+The GNU General Public License (GPL) Version 2, June 1991
+
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.
+
+When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification follow.
+
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
+
+   a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
+
+   b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
+
+   c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
+
+3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
+
+   a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+
+   b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+
+   c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
+
+If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
+
+This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
+
+9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+
+How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
+
+   One line to give the program's name and a brief idea of what it does.
+
+   Copyright (C)
+
+   This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
+
+   Gnomovision version 69, Copyright (C) year name of author
+   Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:
+
+   Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+   signature of Ty Coon, 1 April 1989
+   Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.
+
+
+"CLASSPATH" EXCEPTION TO THE GPL VERSION 2
+
+Certain source files distributed by Sun Microsystems, Inc. are subject to the following clarification and special exception to the GPL Version 2, but only where Sun has expressly included in the particular source file's header the words
+
+"Sun designates this particular file as subject to the "Classpath" exception as provided by Sun in the License file that accompanied this code."
+
+Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License Version 2 cover the whole combination.
+
+As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module.? An independent module is a module which is not derived from or based on this library.? If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so.? If you do not wish to do so, delete this exception statement from your version.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/legal/CDDL-1.1.txt	Mon Feb 11 11:01:09 2019 +0100
@@ -0,0 +1,759 @@
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.1
+
+1. Definitions.
+
+    1.1. "Contributor" means each individual or entity that creates or
+    contributes to the creation of Modifications.
+
+    1.2. "Contributor Version" means the combination of the Original
+    Software, prior Modifications used by a Contributor (if any), and
+    the Modifications made by that particular Contributor.
+
+    1.3. "Covered Software" means (a) the Original Software, or (b)
+    Modifications, or (c) the combination of files containing Original
+    Software with files containing Modifications, in each case including
+    portions thereof.
+
+    1.4. "Executable" means the Covered Software in any form other than
+    Source Code.
+
+    1.5. "Initial Developer" means the individual or entity that first
+    makes Original Software available under this License.
+
+    1.6. "Larger Work" means a work which combines Covered Software or
+    portions thereof with code not governed by the terms of this License.
+
+    1.7. "License" means this document.
+
+    1.8. "Licensable" means having the right to grant, to the maximum
+    extent possible, whether at the time of the initial grant or
+    subsequently acquired, any and all of the rights conveyed herein.
+
+    1.9. "Modifications" means the Source Code and Executable form of
+    any of the following:
+
+    A. Any file that results from an addition to, deletion from or
+    modification of the contents of a file containing Original Software
+    or previous Modifications;
+
+    B. Any new file that contains any part of the Original Software or
+    previous Modification; or
+
+    C. Any new file that is contributed or otherwise made available
+    under the terms of this License.
+
+    1.10. "Original Software" means the Source Code and Executable form
+    of computer software code that is originally released under this
+    License.
+
+    1.11. "Patent Claims" means any patent claim(s), now owned or
+    hereafter acquired, including without limitation, method, process,
+    and apparatus claims, in any patent Licensable by grantor.
+
+    1.12. "Source Code" means (a) the common form of computer software
+    code in which modifications are made and (b) associated
+    documentation included in or with such code.
+
+    1.13. "You" (or "Your") means an individual or a legal entity
+    exercising rights under, and complying with all of the terms of,
+    this License. For legal entities, "You" includes any entity which
+    controls, is controlled by, or is under common control with You. For
+    purposes of this definition, "control" means (a) the power, direct
+    or indirect, to cause the direction or management of such entity,
+    whether by contract or otherwise, or (b) ownership of more than
+    fifty percent (50%) of the outstanding shares or beneficial
+    ownership of such entity.
+
+2. License Grants.
+
+    2.1. The Initial Developer Grant.
+
+    Conditioned upon Your compliance with Section 3.1 below and subject
+    to third party intellectual property claims, the Initial Developer
+    hereby grants You a world-wide, royalty-free, non-exclusive license:
+
+    (a) under intellectual property rights (other than patent or
+    trademark) Licensable by Initial Developer, to use, reproduce,
+    modify, display, perform, sublicense and distribute the Original
+    Software (or portions thereof), with or without Modifications,
+    and/or as part of a Larger Work; and
+
+    (b) under Patent Claims infringed by the making, using or selling of
+    Original Software, to make, have made, use, practice, sell, and
+    offer for sale, and/or otherwise dispose of the Original Software
+    (or portions thereof).
+
+    (c) The licenses granted in Sections 2.1(a) and (b) are effective on
+    the date Initial Developer first distributes or otherwise makes the
+    Original Software available to a third party under the terms of this
+    License.
+
+    (d) Notwithstanding Section 2.1(b) above, no patent license is
+    granted: (1) for code that You delete from the Original Software, or
+    (2) for infringements caused by: (i) the modification of the
+    Original Software, or (ii) the combination of the Original Software
+    with other software or devices.
+
+    2.2. Contributor Grant.
+
+    Conditioned upon Your compliance with Section 3.1 below and subject
+    to third party intellectual property claims, each Contributor hereby
+    grants You a world-wide, royalty-free, non-exclusive license:
+
+    (a) under intellectual property rights (other than patent or
+    trademark) Licensable by Contributor to use, reproduce, modify,
+    display, perform, sublicense and distribute the Modifications
+    created by such Contributor (or portions thereof), either on an
+    unmodified basis, with other Modifications, as Covered Software
+    and/or as part of a Larger Work; and
+
+    (b) under Patent Claims infringed by the making, using, or selling
+    of Modifications made by that Contributor either alone and/or in
+    combination with its Contributor Version (or portions of such
+    combination), to make, use, sell, offer for sale, have made, and/or
+    otherwise dispose of: (1) Modifications made by that Contributor (or
+    portions thereof); and (2) the combination of Modifications made by
+    that Contributor with its Contributor Version (or portions of such
+    combination).
+
+    (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective
+    on the date Contributor first distributes or otherwise makes the
+    Modifications available to a third party.
+
+    (d) Notwithstanding Section 2.2(b) above, no patent license is
+    granted: (1) for any code that Contributor has deleted from the
+    Contributor Version; (2) for infringements caused by: (i) third
+    party modifications of Contributor Version, or (ii) the combination
+    of Modifications made by that Contributor with other software
+    (except as part of the Contributor Version) or other devices; or (3)
+    under Patent Claims infringed by Covered Software in the absence of
+    Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+    3.1. Availability of Source Code.
+
+    Any Covered Software that You distribute or otherwise make available
+    in Executable form must also be made available in Source Code form
+    and that Source Code form must be distributed only under the terms
+    of this License. You must include a copy of this License with every
+    copy of the Source Code form of the Covered Software You distribute
+    or otherwise make available. You must inform recipients of any such
+    Covered Software in Executable form as to how they can obtain such
+    Covered Software in Source Code form in a reasonable manner on or
+    through a medium customarily used for software exchange.
+
+    3.2. Modifications.
+
+    The Modifications that You create or to which You contribute are
+    governed by the terms of this License. You represent that You
+    believe Your Modifications are Your original creation(s) and/or You
+    have sufficient rights to grant the rights conveyed by this License.
+
+    3.3. Required Notices.
+
+    You must include a notice in each of Your Modifications that
+    identifies You as the Contributor of the Modification. You may not
+    remove or alter any copyright, patent or trademark notices contained
+    within the Covered Software, or any notices of licensing or any
+    descriptive text giving attribution to any Contributor or the
+    Initial Developer.
+
+    3.4. Application of Additional Terms.
+
+    You may not offer or impose any terms on any Covered Software in
+    Source Code form that alters or restricts the applicable version of
+    this License or the recipients' rights hereunder. You may choose to
+    offer, and to charge a fee for, warranty, support, indemnity or
+    liability obligations to one or more recipients of Covered Software.
+    However, you may do so only on Your own behalf, and not on behalf of
+    the Initial Developer or any Contributor. You must make it
+    absolutely clear that any such warranty, support, indemnity or
+    liability obligation is offered by You alone, and You hereby agree
+    to indemnify the Initial Developer and every Contributor for any
+    liability incurred by the Initial Developer or such Contributor as a
+    result of warranty, support, indemnity or liability terms You offer.
+
+    3.5. Distribution of Executable Versions.
+
+    You may distribute the Executable form of the Covered Software under
+    the terms of this License or under the terms of a license of Your
+    choice, which may contain terms different from this License,
+    provided that You are in compliance with the terms of this License
+    and that the license for the Executable form does not attempt to
+    limit or alter the recipient's rights in the Source Code form from
+    the rights set forth in this License. If You distribute the Covered
+    Software in Executable form under a different license, You must make
+    it absolutely clear that any terms which differ from this License
+    are offered by You alone, not by the Initial Developer or
+    Contributor. You hereby agree to indemnify the Initial Developer and
+    every Contributor for any liability incurred by the Initial
+    Developer or such Contributor as a result of any such terms You offer.
+
+    3.6. Larger Works.
+
+    You may create a Larger Work by combining Covered Software with
+    other code not governed by the terms of this License and distribute
+    the Larger Work as a single product. In such a case, You must make
+    sure the requirements of this License are fulfilled for the Covered
+    Software.
+
+4. Versions of the License.
+
+    4.1. New Versions.
+
+    Oracle is the initial license steward and may publish revised and/or
+    new versions of this License from time to time. Each version will be
+    given a distinguishing version number. Except as provided in Section
+    4.3, no one other than the license steward has the right to modify
+    this License.
+
+    4.2. Effect of New Versions.
+
+    You may always continue to use, distribute or otherwise make the
+    Covered Software available under the terms of the version of the
+    License under which You originally received the Covered Software. If
+    the Initial Developer includes a notice in the Original Software
+    prohibiting it from being distributed or otherwise made available
+    under any subsequent version of the License, You must distribute and
+    make the Covered Software available under the terms of the version
+    of the License under which You originally received the Covered
+    Software. Otherwise, You may also choose to use, distribute or
+    otherwise make the Covered Software available under the terms of any
+    subsequent version of the License published by the license steward.
+
+    4.3. Modified Versions.
+
+    When You are an Initial Developer and You want to create a new
+    license for Your Original Software, You may create and use a
+    modified version of this License if You: (a) rename the license and
+    remove any references to the name of the license steward (except to
+    note that the license differs from this License); and (b) otherwise
+    make it clear that the license contains terms which differ from this
+    License.
+
+5. DISCLAIMER OF WARRANTY.
+
+    COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+    WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+    INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE
+    IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR
+    NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF
+    THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE
+    DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY
+    OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING,
+    REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN
+    ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS
+    AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+6. TERMINATION.
+
+    6.1. This License and the rights granted hereunder will terminate
+    automatically if You fail to comply with terms herein and fail to
+    cure such breach within 30 days of becoming aware of the breach.
+    Provisions which, by their nature, must remain in effect beyond the
+    termination of this License shall survive.
+
+    6.2. If You assert a patent infringement claim (excluding
+    declaratory judgment actions) against Initial Developer or a
+    Contributor (the Initial Developer or Contributor against whom You
+    assert such claim is referred to as "Participant") alleging that the
+    Participant Software (meaning the Contributor Version where the
+    Participant is a Contributor or the Original Software where the
+    Participant is the Initial Developer) directly or indirectly
+    infringes any patent, then any and all rights granted directly or
+    indirectly to You by such Participant, the Initial Developer (if the
+    Initial Developer is not the Participant) and all Contributors under
+    Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice
+    from Participant terminate prospectively and automatically at the
+    expiration of such 60 day notice period, unless if within such 60
+    day period You withdraw Your claim with respect to the Participant
+    Software against such Participant either unilaterally or pursuant to
+    a written agreement with Participant.
+
+    6.3. If You assert a patent infringement claim against Participant
+    alleging that the Participant Software directly or indirectly
+    infringes any patent where such claim is resolved (such as by
+    license or settlement) prior to the initiation of patent
+    infringement litigation, then the reasonable value of the licenses
+    granted by such Participant under Sections 2.1 or 2.2 shall be taken
+    into account in determining the amount or value of any payment or
+    license.
+
+    6.4. In the event of termination under Sections 6.1 or 6.2 above,
+    all end user licenses that have been validly granted by You or any
+    distributor hereunder prior to termination (excluding licenses
+    granted to You by any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+    UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+    (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
+    INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+    COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE
+    TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+    CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+    LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER
+    FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR
+    LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE
+    POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT
+    APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH
+    PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH
+    LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR
+    LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION
+    AND LIMITATION MAY NOT APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+    The Covered Software is a "commercial item," as that term is defined
+    in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
+    software" (as that term is defined at 48 C.F.R. \A7
+    252.227-7014(a)(1)) and "commercial computer software documentation"
+    as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent
+    with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4
+    (June 1995), all U.S. Government End Users acquire Covered Software
+    with only those rights set forth herein. This U.S. Government Rights
+    clause is in lieu of, and supersedes, any other FAR, DFAR, or other
+    clause or provision that addresses Government rights in computer
+    software under this License.
+
+9. MISCELLANEOUS.
+
+    This License represents the complete agreement concerning subject
+    matter hereof. If any provision of this License is held to be
+    unenforceable, such provision shall be reformed only to the extent
+    necessary to make it enforceable. This License shall be governed by
+    the law of the jurisdiction specified in a notice contained within
+    the Original Software (except to the extent applicable law, if any,
+    provides otherwise), excluding such jurisdiction's conflict-of-law
+    provisions. Any litigation relating to this License shall be subject
+    to the jurisdiction of the courts located in the jurisdiction and
+    venue specified in a notice contained within the Original Software,
+    with the losing party responsible for costs, including, without
+    limitation, court costs and reasonable attorneys' fees and expenses.
+    The application of the United Nations Convention on Contracts for
+    the International Sale of Goods is expressly excluded. Any law or
+    regulation which provides that the language of a contract shall be
+    construed against the drafter shall not apply to this License. You
+    agree that You alone are responsible for compliance with the United
+    States export administration regulations (and the export control
+    laws and regulation of any other countries) when You use, distribute
+    or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+    As between Initial Developer and the Contributors, each party is
+    responsible for claims and damages arising, directly or indirectly,
+    out of its utilization of rights under this License and You agree to
+    work with Initial Developer and Contributors to distribute such
+    responsibility on an equitable basis. Nothing herein is intended or
+    shall be deemed to constitute any admission of liability.
+
+------------------------------------------------------------------------
+
+NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION
+LICENSE (CDDL)
+
+The code released under the CDDL shall be governed by the laws of the
+State of California (excluding conflict-of-law provisions). Any
+litigation relating to this License shall be subject to the jurisdiction
+of the Federal Courts of the Northern District of California and the
+state courts of the State of California, with venue lying in Santa Clara
+County, California.
+
+
+
+  The GNU General Public License (GPL) Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+51 Franklin Street, Fifth Floor
+Boston, MA 02110-1335
+USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to
+share and change it. By contrast, the GNU General Public License is
+intended to guarantee your freedom to share and change free software--to
+make sure the software is free for all its users. This General Public
+License applies to most of the Free Software Foundation's software and
+to any other program whose authors commit to using it. (Some other Free
+Software Foundation software is covered by the GNU Library General
+Public License instead.) You can apply it to your programs, too.
+
+When we speak of free software, we are referring to freedom, not price.
+Our General Public Licenses are designed to make sure that you have the
+freedom to distribute copies of free software (and charge for this
+service if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs; and that you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone
+to deny you these rights or to ask you to surrender the rights. These
+restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis
+or for a fee, you must give the recipients all the rights that you have.
+You must make sure that they, too, receive or can get the source code.
+And you must show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+Finally, any free program is threatened constantly by software patents.
+We wish to avoid the danger that redistributors of a free program will
+individually obtain patent licenses, in effect making the program
+proprietary. To prevent this, we have made it clear that any patent must
+be licensed for everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and
+modification follow.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License applies to any program or other work which contains a
+notice placed by the copyright holder saying it may be distributed under
+the terms of this General Public License. The "Program", below, refers
+to any such program or work, and a "work based on the Program" means
+either the Program or any derivative work under copyright law: that is
+to say, a work containing the Program or a portion of it, either
+verbatim or with modifications and/or translated into another language.
+(Hereinafter, translation is included without limitation in the term
+"modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of running
+the Program is not restricted, and the output from the Program is
+covered only if its contents constitute a work based on the Program
+(independent of having been made by running the Program). Whether that
+is true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the Program's source
+code as you receive it, in any medium, provided that you conspicuously
+and appropriately publish on each copy an appropriate copyright notice
+and disclaimer of warranty; keep intact all the notices that refer to
+this License and to the absence of any warranty; and give any other
+recipients of the Program a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of
+it, thus forming a work based on the Program, and copy and distribute
+such modifications or work under the terms of Section 1 above, provided
+that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any part
+    thereof, to be licensed as a whole at no charge to all third parties
+    under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a notice
+    that there is no warranty (or else, saying that you provide a
+    warranty) and that users may redistribute the program under these
+    conditions, and telling the user how to view a copy of this License.
+    (Exception: if the Program itself is interactive but does not
+    normally print such an announcement, your work based on the Program
+    is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program, and
+can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based on
+the Program, the distribution of the whole must be on the terms of this
+License, whose permissions for other licensees extend to the entire
+whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of a
+storage or distribution medium does not bring the other work under the
+scope of this License.
+
+3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections 1
+    and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your cost
+    of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer to
+    distribute corresponding source code. (This alternative is allowed
+    only for noncommercial distribution and only if you received the
+    program in object code or executable form with such an offer, in
+    accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source code
+means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to control
+compilation and installation of the executable. However, as a special
+exception, the source code distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies the
+executable.
+
+If distribution of executable or object code is made by offering access
+to copy from a designated place, then offering equivalent access to copy
+the source code from the same place counts as distribution of the source
+code, even though third parties are not compelled to copy the source
+along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt otherwise
+to copy, modify, sublicense or distribute the Program is void, and will
+automatically terminate your rights under this License. However, parties
+who have received copies, or rights, from you under this License will
+not have their licenses terminated so long as such parties remain in
+full compliance.
+
+5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and all
+its terms and conditions for copying, distributing or modifying the
+Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further restrictions
+on the recipients' exercise of the rights granted herein. You are not
+responsible for enforcing compliance by third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot distribute
+so as to satisfy simultaneously your obligations under this License and
+any other pertinent obligations, then as a consequence you may not
+distribute the Program at all. For example, if a patent license would
+not permit royalty-free redistribution of the Program by all those who
+receive copies directly or indirectly through you, then the only way you
+could satisfy both it and this License would be to refrain entirely from
+distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is implemented
+by public license practices. Many people have made generous
+contributions to the wide range of software distributed through that
+system in reliance on consistent application of that system; it is up to
+the author/donor to decide if he or she is willing to distribute
+software through any other system and a licensee cannot impose that choice.
+
+This section is intended to make thoroughly clear what is believed to be
+a consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License may
+add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among countries
+not thus excluded. In such case, this License incorporates the
+limitation as if written in the body of this License.
+
+9. The Free Software Foundation may publish revised and/or new
+versions of the General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Program does not specify a version
+number of this License, you may choose any version ever published by the
+Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the
+author to ask for permission. For software which is copyrighted by the
+Free Software Foundation, write to the Free Software Foundation; we
+sometimes make exceptions for this. Our decision will be guided by the
+two goals of preserving the free status of all derivatives of our free
+software and of promoting the sharing and reuse of software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND,
+EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
+ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
+YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
+NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
+DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
+DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM
+(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
+INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
+THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
+OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program. It is safest to
+attach them to the start of each source file to most effectively convey
+the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    One line to give the program's name and a brief idea of what it does.
+    Copyright (C) <year> <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful, but
+    WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+    General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type
+    `show w'. This is free software, and you are welcome to redistribute
+    it under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the
+appropriate parts of the General Public License. Of course, the commands
+you use may be called something other than `show w' and `show c'; they
+could even be mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+    Yoyodyne, Inc., hereby disclaims all copyright interest in the
+    program `Gnomovision' (which makes passes at compilers) written by
+    James Hacker.
+
+    signature of Ty Coon, 1 April 1989
+    Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications
+with the library. If this is what you want to do, use the GNU Library
+General Public License instead of this License.
+
+#
+
+Certain source files distributed by Oracle America, Inc. and/or its
+affiliates are subject to the following clarification and special
+exception to the GPLv2, based on the GNU Project exception for its
+Classpath libraries, known as the GNU Classpath Exception, but only
+where Oracle has expressly included in the particular source file's
+header the words "Oracle designates this particular file as subject to
+the "Classpath" exception as provided by Oracle in the LICENSE file
+that accompanied this code."
+
+You should also note that Oracle includes multiple, independent
+programs in this software package. Some of those programs are provided
+under licenses deemed incompatible with the GPLv2 by the Free Software
+Foundation and others.  For example, the package includes programs
+licensed under the Apache License, Version 2.0.  Such programs are
+licensed to you under their original licenses.
+
+Oracle facilitates your further distribution of this package by adding
+the Classpath Exception to the necessary parts of its GPLv2 code, which
+permits you to use that code in combination with other independent
+modules not licensed under the GPLv2.  However, note that this would
+not permit you to commingle code under an incompatible license with
+Oracle's GPLv2 licensed code by, for example, cutting and pasting such
+code into a file also containing Oracle's GPLv2 licensed code and then
+distributing the result.  Additionally, if you were to remove the
+Classpath Exception from any of the files to which it applies and
+distribute the result, you would likely be required to license some or
+all of the other code in that distribution under the GPLv2 as well, and
+since the GPLv2 is incompatible with the license terms of some items
+included in the distribution by Oracle, removing the Classpath
+Exception could therefore effectively compromise your ability to
+further distribute the package.
+
+Proceed with caution and we recommend that you obtain the advice of a
+lawyer skilled in open source matters before removing the Classpath
+Exception or making modifications to this package which may
+subsequently be redistributed and/or involve the use of third party
+software.
+
+CLASSPATH EXCEPTION
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License version 2 cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from or
+based on this library.  If you modify this library, you may extend this
+exception to your version of the library, but you are not obligated to
+do so.  If you do not wish to do so, delete this exception statement
+from your version.
--- a/legal/Licensing.txt	Wed Mar 07 12:45:04 2018 +0100
+++ b/legal/Licensing.txt	Mon Feb 11 11:01:09 2019 +0100
@@ -67,7 +67,13 @@
 # Eclipse icons 
 # wsdl4j-1.5.1.jar
 Icons and files under the Eclipse Public License (license available at
-http://www.eclipse.org/legal/epl-v10.html
+http://www.eclipse.org/legal/epl-v10.html)
+
+# javax.persistence-api-2.2.jar
+Under the terms of the Eclipse Public License v 1.0 (license available at
+http://www.eclipse.org/legal/epl-v10.html) 
+and Eclipse Distribution License v 1.0 (license available at 
+http://www.eclipse.org/org/documents/edl-v10.php)
 
 # nekohtml.jar (CyberNeko HTML Parser)
 Under the CyberNeko Software License, Version 1.0 (license available at
@@ -83,31 +89,15 @@
 Copyright (c) 2007, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: (http://developer.yahoo.net/yui/license.txt)
 
 # ant-1.9.2.jar
-# ant-apache-log4j-1.9.2.jar
 # ant-launcher-1.9.2.jar
 # ant-nodeps.jar
-# avalon-framework-4.1.5.jar
 # axis-ant.jar
 # axis.jar
-# barcode4j-fop-ext-complete.jar 
-# batik-anim.jar
-# batik-awt-util.jar
-# batik-bridge.jar
-# batik-css.jar
-# batik-dom.jar
-# batik-ext.jar
-# batik-gvt.jar
-# batik-parser.jar
-# batik-script.jar
-# batik-svg-dom.jar
-# batik-svggen.jar
-# batik-util.jar
-# batik-xml.jar
 # catalina-ant.jar
 # commons-beanutils-1.8.3.jar
 # commons-betwixt-0.8.jar
 # commons-codec-1.11.jar
-# commons-collections-3.2.1.jar
+# commons-collections-3.2.2.jar
 # commons-dbcp-1.4.jar
 # commons-digester-1.8.1.jar
 # commons-fileupload-1.2.2.jar
@@ -115,21 +105,23 @@
 # commons-lang-2.6.jar
 # commons-logging-1.2.jar
 # commons-pool-1.5.6.jar
-# fop-1.1.jar
 # jakarta-oro-2.0.8.jar
 # jettison-1.3-patched.jar
-# log4j-1.2.16.jar
+# log4j-api-2.11.1.jar
+# log4j-core-2.11.1.jar
+# log4j-web-2.11.1.jar
+# log4j-slf4j-impl-2.11.1.jar
+# log4j-1.2-api-2.11.1.jar
 # quartz-1.6.2.jar
 # servlet-api.jar 
 # tika-core-0.9.jar
 # wstx-asl-3.0.2.jar
 # xercesImpl.jar
-# xmlgraphics-commons-1.5.jar
 
 All files under Apache Software License 2.0, available at
 http://www.apache.org/licenses/LICENSE-2.0
 
-# postgresql-9.4.1207.jre6.jar
+# postgresql-42.2.2.jre7.jar
 Under the BSD license, also available at http://jdbc.postgresql.org/license.html  
 
 # xstream-1.3.1.jar
@@ -165,7 +157,8 @@
 # poi-3.10.1.jar
 Under the Apache 2.0 license (included as Apache_poi_license.txt in this folder)
 
-# hibernate3-patched.jar
+# hibernate-core-5.3.2.Final.jar
+# hibernate-commons-annotations-5.0.4.Final.jar
 All files under the LGPL 2.1 (available at www.gnu.org/licenses/lgpl.html)
 
 # dom4j-1.6.1.jar
@@ -185,11 +178,10 @@
 Under MPL/GPL License (available at https://developer.mozilla.org/en/Rhino_License)
 ob-rhino-1.6R7.jar is the same code as js.jar repackaged to be available under org.openbravo
 
-# javassist-3.20.0-GA.jar
+# javassist-3.22.0-GA.jar
 Under MPL License (included as MPL-1.1.txt in this folder)
 
-# slf4j-api-1.6.1.jar
-# slf4j-log4j12-1.6.1.jar
+# slf4j-api-1.7.25.jar
 Under MIT license. (available at http://www.slf4j.org/license.html)
 
 # freemarker-2.3.16.jar
@@ -199,21 +191,11 @@
 - ojdbc6.jar under the OTN Development and Distribution
   License Agreement (in /legal folder and available at
   http://www.oracle.com/technology/software/popup-license/distribution-license.html)
-- hibernate-jpa-2.0-api-1.0.0.Final.jar
-  License Agreement available at:
-  http://fisheye.jboss.org/browse/Hibernate/jpa-api/tags/hibernate-jpa-2.0-api-1.0.0.Final/license.txt?r=16109&r=16109
 
-# jaxrpc.jar 
-# mail-1.4.4.jar 
+# jaxrpc.jar
 All files under the corresponding Sun Binary Code License. This is not free
 software, but provided under license from Sun Microsystems.
 
-# jta.jar. This software is subject to the Sun License Agreement and terms
-  set out in /legal/jta/ directory and also available at
-  https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewLicense-Start?LicenseUUID=aanACUFBI3YAAAEY1Z45AXiO&ProductUUID=gp_ACUFBpawAAAEYhHY5AXub
-Note: the software marked Java, JAVAX or Sun may not be modified in any
-way.
-
 # ejb-api-3.0.jar
 # jboss-interceptor-api-3.1.0-CR3.jar
 # jboss-ejb3-api-3.1.0.jar
@@ -221,7 +203,7 @@
 Under the LGPL license (included as LGPL-2.1.txt in this folder)
 
 # cal10n-api-0.7.7.jar
-# slf4j-ext-1.6.1.jar
+# slf4j-ext-1.7.25.jar
 Under the MIT license (available at http://www.slf4j.org/license.html)
 
 # cdi-api.jar
@@ -229,6 +211,7 @@
 # javax.inject.jar
 # jboss-interceptor-core-2.0.0.CR1.jar
 # jboss-interceptor-spi-2.0.0.CR1.jar
+# jboss-logging-3.3.2.Final.jar
 # weld-api.jar
 # weld-core-1.1.24.Final.jar
 # weld-servlet-core-1.1.24.Final.jar
@@ -260,14 +243,32 @@
 # httpcore-4.4.9.jar
 # httpclient-4.5.5.jar
 # httpmime-4.5.5.jar
-# guice-2.0.jar
 # tomcat-juli.jar
 # tomcat-jdbc.jar
+# classmate-1.3.4.jar
+# jandex-2.0.5.Final.jar
 Under the Apache 2.0 license (included as Apache_license-2.0.txt in this folder)
 
+# byte-buddy-1.8.12.jar
+Under the Apache 2.0 license (included as Apache_license-2.0.txt in this folder),
+note that Byte Buddy depends on the ASM library which is distributed under a BSD license (included as ASM_BSD_license.txt in this folder)
+
 # jslint4java-1.4.7.jar
 Under the New BSD license (available at http://www.opensource.org/licenses/bsd-license.php)
 
+# javax.annotation-api-1.2.jar
+# javax.xml.soap-api-1.3.7.jar
+# jboss-transaction-api_1.2_spec-1.1.1.Final.jar
+Under the CDDL license version 1.0 (license available at https://spdx.org/licenses/CDDL-1.0.html 
+or in the file CDDL-1.0.txt in this folder)
+
+# javax.activation-1.2.0.jar
+# jaxb-api-2.2.12.jar
+# jaxb-impl-2.2.6.jar
+# javax.mail-1.6.1.jar
+Under the CDDL license version 1.1 (license available at https://spdx.org/licenses/CDDL-1.1.html 
+or in the file CDDL-1.1.txt in this folder)
+
 # CSSMinimizer.java
 CSSMin Copyright License Agreement (BSD License), Copyright (c) 2011, Barry van Oudtshoorn
 The full license text is embedded within the CSSMinimizer.java file itself
--- a/legal/Sun_license_agreement.txt	Wed Mar 07 12:45:04 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,367 +0,0 @@
-Sun Microsystems, Inc. ("Sun") ENTITLEMENT for SOFTWARE
-
-Licensee/Company: Entity receiving Software.
-
-Effective Date: Date of delivery of the Software to
-You.
-
-Software: Java(TM) Transaction API (JTA) Specification
-1.1
-
-License Term: Perpetual (subject to termination under
-the SLA)
-
-Licensed Unit: Software Copy
-
-Licensed unit Count: Unlimited
-
-Permitted Uses:
-
-1. You may reproduce and use the Software for Your own
-Individual, Commercial, or Research and Instructional
-Use for the purposes of designing, developing,
-testing, and running Your applets and application
-("Programs").
-
-2. Subject to the terms and conditions of this
-Agreement and restrictions and exceptions set forth in
-the Software's documentation, You may reproduce and
-distribute portions of Software identified as a
-redistributable in the documentation
-("Redistributable"), provided that:
-
-(a) You distribute Redistributable complete and
-unmodified and only bundled as part of Your Programs,
-
-(b) Your Programs add significant and primary
-functionality to the Redistributable,
-
-(c) You distribute Redistributable for the sole
-purpose of running Your Programs,
-
-(d) You do not distribute additional software intended
-to replace any component(s) of the Redistributable,
-
-(e) You do not remove or alter any proprietary legends
-or notices contained in or on the Redistributable.
-
-(f) You only distribute the Redistributable subject to
-a license agreement that protects Sun's interests
-consistent with the terms contained in this Agreement,
-and
-
-(g) You agree to defend and indemnify Sun and its
-licensors from and against any damages, costs,
-liabilities, settlement amounts and/or expenses
-(including attorneys' fees) incurred in connection
-with any claim, lawsuit or action by any third party
-that arises or results from the use or distribution of
-any and all Programs and/or Redistributable.
-
-3. Java Technology Restrictions. You may not create,
-modify, or change the behavior of, or authorize your
-licensees to create, modify, or change the behavior
-of, classes, interfaces, or subpackages that are in
-any way identified as "java", "javax", "sun" or
-similar convention as specified by Sun in any naming
-convention designation.
-
-Sun Microsystems, Inc. ("Sun")
-SOFTWARE LICENSE AGREEMENT
-
-READ THE TERMS OF THIS AGREEMENT ("AGREEMENT")
-CAREFULLY BEFORE OPENING SOFTWARE MEDIA PACKAGE. BY
-OPENING SOFTWARE MEDIA PACKAGE, YOU AGREE TO THE TERMS
-OF THIS AGREEMENT. IF YOU ARE ACCESSING SOFTWARE
-ELECTRONICALLY, INDICATE YOUR ACCEPTANCE OF THESE
-TERMS BY SELECTING THE "ACCEPT" BUTTON AT THE END OF
-THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE
-TERMS, PROMPTLY RETURN THE UNUSED SOFTWARE TO YOUR
-PLACE OF PURCHASE FOR A REFUND OR, IF SOFTWARE IS
-ACCESSED ELECTRONICALLY, SELECT THE "DECLINE" (OR
-"EXIT") BUTTON AT THE END OF THIS AGREEMENT. IF YOU
-HAVE SEPARATELY AGREED TO LICENSE TERMS ("MASTER
-TERMS") FOR YOUR LICENSE TO THIS SOFTWARE, THEN
-SECTIONS 1-5 OF THIS AGREEMENT ("SUPPLEMENTAL LICENSE
-TERMS") SHALL SUPPLEMENT AND SUPERSEDE THE MASTER
-TERMS IN RELATION TO THIS SOFTWARE.
-
-1. Definitions.
-
-(a) "Entitlement" means the collective set of
-applicable documents authorized by Sun evidencing your
-obligation to pay associated fees (if any) for the
-license, associated Services, and the authorized scope
-of use of Software under this Agreement.
-
-(b) "Licensed Unit" means the unit of measure by
-which your use of Software and/or Service is licensed,
-as described in your Entitlement.
-
-(c) "Permitted Use" means the licensed Software
-use(s) authorized in this Agreement as specified in
-your Entitlement. The Permitted Use for any bundled
-Sun software not specified in your Entitlement will be
-evaluation use as provided in Section 3.
-
-(d) "Service" means the service(s) that Sun or its
-delegate will provide, if any, as selected in your
-Entitlement and as further described in the applicable
-service listings at www.sun.com/service/servicelist.
-
-(e) "Software" means the Sun software described in
-your Entitlement. Also, certain software may be
-included for evaluation use under Section 3.
-
-(f) "You" and "Your" means the individual or legal
-entity specified in the Entitlement, or for evaluation
-purposes, the entity performing the evaluation.
-
-2. License Grant and Entitlement.
-
-Subject to the terms of your Entitlement, Sun grants
-you a nonexclusive, nontransferable limited license to
-use Software for its Permitted Use for the license
-term. Your Entitlement will specify (a) Software
-licensed, (b) the Permitted Use, (c) the license term,
-and (d) the Licensed Units.
-
-Additionally, if your Entitlement includes Services,
-then it will also specify the (e) Service and (f)
-service term.
-
-If your rights to Software or Services are limited in
-duration and the date such rights begin is other than
-the purchase date, your Entitlement will provide that
-beginning date(s).
-
-The Entitlement may be delivered to you in various
-ways depending on the manner in which you obtain
-Software and Services, for example, the Entitlement
-may be provided in your receipt, invoice or your
-contract with Sun or authorized Sun reseller. It may
-also be in electronic format if you download Software.
-
-3. Permitted Use.
-
-As selected in your Entitlement, one or more of the
-following Permitted Uses will apply to your use of
-Software. Unless you have an Entitlement that
-expressly permits it, you may not use Software for any
-of the other Permitted Uses. If you don't have an
-Entitlement, or if your Entitlement doesn't cover
-additional software delivered to you, then such
-software is for your Evaluation Use.
-
-(a) Evaluation Use. You may evaluate Software
-internally for a period of 90 days from your first
-use.
-
-(b) Research and Instructional Use. You may use
-Software internally to design, develop and test, and
-also to provide instruction on such uses.
-
-(c) Individual Use. You may use Software internally
-for personal, individual use.
-
-(d) Commercial Use. You may use Software internally
-for your own commercial purposes.
-
-(e) Service Provider Use. You may make Software
-functionality accessible (but not by providing
-Software itself or through outsourcing services) to
-your end users in an extranet deployment, but not to
-your affiliated companies or to government agencies.
-
-4. Licensed Units.
-
-Your Permitted Use is limited to the number of
-Licensed Units stated in your Entitlement. If you
-require additional Licensed Units, you will need
-additional Entitlement(s).
-
-5. Restrictions.
-
-(a) The copies of Software provided to you under this
-Agreement are licensed, not sold, to you by Sun. Sun
-reserves all rights not expressly granted. (b) You may
-make a single archival copy of Software, but otherwise
-may not copy, modify, or distribute Software. However
-if the Sun documentation accompanying Software lists
-specific portions of Software, such as header files,
-class libraries, reference source code, and/or
-redistributable files, that may be handled
-differently, you may do so only as provided in the Sun
-documentation. (c) You may not rent, lease, lend or
-encumber Software. (d) Unless enforcement is
-prohibited by applicable law, you may not decompile,
-or reverse engineer Software. (e) The terms and
-conditions of this Agreement will apply to any
-Software updates, provided to you at Sun's discretion,
-that replace and/or supplement the original Software,
-unless such update contains a separate license. (f)
-You may not publish or provide the results of any
-benchmark or comparison tests run on Software to any
-third party without the prior written consent of Sun.
-(g) Software is confidential and copyrighted. (h)
-Unless otherwise specified, if Software is delivered
-with embedded or bundled software that enables
-functionality of Software, you may not use such
-software on a stand-alone basis or use any portion of
-such software to interoperate with any program(s)
-other than Software. (i) Software may contain programs
-that perform automated collection of system data
-and/or automated software updating services. System
-data collected through such programs may be used by
-Sun, its subcontractors, and its service delivery
-partners for the purpose of providing you with remote
-system services and/or improving Sun's software and
-systems. (j) Software is not designed, licensed or
-intended for use in the design, construction,
-operation or maintenance of any nuclear facility and
-Sun and its licensors disclaim any express or implied
-warranty of fitness for such uses. (k) No right, title
-or interest in or to any trademark, service mark, logo
-or trade name of Sun or its licensors is granted under
-this Agreement.
-
-6. Term and Termination.
-
-The license and service term are set forth in your
-Entitlement(s). Your rights under this Agreement will
-terminate immediately without notice from Sun if you
-materially breach it or take any action in derogation
-of Sun's and/or its licensors' rights to Software. Sun
-may terminate this Agreement should any Software
-become, or in Sun's reasonable opinion likely to
-become, the subject of a claim of intellectual
-property infringement or trade secret
-misappropriation. Upon termination, you will cease use
-of, and destroy, Software and confirm compliance in
-writing to Sun. Sections 1, 5, 6, 7, and 9-15 will
-survive termination of the Agreement.
-
-7. Java Compatibility and Open Source.
-
-Software may contain Java technology. You may not
-create additional classes to, or modifications of, the
-Java technology, except under compatibility
-requirements available under a separate agreement
-available at www.java.net.
-
-Sun supports and benefits from the global community of
-open source developers, and thanks the community for
-its important contributions and open standards-based
-technology, which Sun has adopted into many of its
-products.
-
-Please note that portions of Software may be provided
-with notices and open source licenses from such
-communities and third parties that govern the use of
-those portions, and any licenses granted hereunder do
-not alter any rights and obligations you may have
-under such open source licenses, however, the
-disclaimer of warranty and limitation of liability
-provisions in this Agreement will apply to all
-Software in this distribution.
-
-8. Limited Warranty.
-
-Sun warrants to you that for a period of 90 days from
-the date of purchase, as evidenced by a copy of the
-receipt, the media on which Software is furnished (if
-any) will be free of defects in materials and
-workmanship under normal use. Except for the
-foregoing, Software is provided "AS IS". Your
-exclusive remedy and Sun's entire liability under this
-limited warranty will be at Sun's option to replace
-Software media or refund the fee paid for Software.
-Some states do not allow limitations on certain
-implied warranties, so the above may not apply to you.
-This limited warranty gives you specific legal rights.
-You may have others, which vary from state to state.
-
-9. Disclaimer of Warranty.
-
-UNLESS SPECIFIED IN THIS AGREEMENT, ALL EXPRESS OR
-IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
-INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT
-ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT THESE
-DISCLAIMERS ARE HELD TO BE LEGALLY INVALID.
-
-10. Limitation of Liability.
-
-TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL
-SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE,
-PROFIT OR DATA, OR FOR SPECIAL, INDIRECT,
-CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
-CAUSED REGARDLESS OF THE THEORY OF LIABILITY, ARISING
-OUT OF OR RELATED TO THE USE OF OR INABILITY TO USE
-SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES. In no event will Sun's
-liability to you, whether in contract, tort (including
-negligence), or otherwise, exceed the amount paid by
-you for Software under this Agreement. The foregoing
-limitations will apply even if the above stated
-warranty fails of its essential purpose. Some states
-do not allow the exclusion of incidental or
-consequential damages, so some of the terms above may
-not be applicable to you.
-
-11. Export Regulations.
-
-All Software, documents, technical data, and any other
-materials delivered under this Agreement are subject
-to U.S. export control laws and may be subject to
-export or import regulations in other countries. You
-agree to comply strictly with these laws and
-regulations and acknowledge that you have the
-responsibility to obtain any licenses to export,
-re-export, or import as may be required after delivery
-to you.
-
-12. U.S. Government Restricted Rights.
-
-If Software is being acquired by or on behalf of the
-U.S. Government or by a U.S. Government prime
-contractor or subcontractor (at any tier), then the
-Government's rights in Software and accompanying
-documentation will be only as set forth in this
-Agreement; this is in accordance with 48 CFR 227.7201
-through 227.7202-4 (for Department of Defense (DOD)
-acquisitions) and with 48 CFR 2.101 and 12.212 (for
-non-DOD acquisitions).
-
-13. Governing Law.
-
-Any action related to this Agreement will be governed
-by California law and controlling U.S. federal law. No
-choice of law rules of any jurisdiction will apply.
-
-14. Severability.
-
-If any provision of this Agreement is held to be
-unenforceable, this Agreement will remain in effect
-with the provision omitted, unless omission would
-frustrate the intent of the parties, in which case
-this Agreement will immediately terminate.
-
-15. Integration.
-
-This Agreement, including any terms contained in your
-Entitlement, is the entire agreement between you and
-Sun relating to its subject matter. It supersedes all
-prior or contemporaneous oral or written
-communications, proposals, representations and
-warranties and prevails over any conflicting or
-additional terms of any quote, order, acknowledgment,
-or other communication between the parties relating to
-its subject matter during the term of this Agreement.
-No modification of this Agreement will be binding,
-unless in writing and signed by an authorized
-representative of each party.
-
-Please contact Sun Microsystems, Inc. 4150 Network
-Circle, Santa Clara, California 95054 if you have
-questions.
--- a/legal/jta/COPYRIGHT	Wed Mar 07 12:45:04 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-Copyright © 2006 Sun Microsystems, Inc.  All rights reserved.  
-
-Unpublished - rights reserved under the Copyright Laws of the United States.
-
-Sun Microsystems, Inc. has intellectual property rights relating to technology 
-embodied in the product that is described in this document. In particular, and 
-without limitation, these intellectual property rights may include one or more 
-of the U.S. patents listed at http://www.sun.com/patents and one or more 
-additional patents or pending patent applications in the U.S. and in other 
-countries.
-
-U.S. Government Rights - Commercial software.  Government users are subject 
-to the Sun Microsystems, Inc. standard license agreement and applicable 
-provisions of the FAR and its supplements.  
-
-Use is subject to license terms.  
-
-This distribution may include materials developed by third parties.
-
-Portions may be derived from Berkeley BSD systems, licensed from U. of CA.  
-Sun,  Sun Microsystems,  the Sun logo,  Java and  Solaris are trademarks or 
-registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries.
-
-
-Copyright © 2006 Sun Microsystems, Inc. Tous droits 
-réservés.
-
-Non publie - droits réservés selon la législation des 
-Etats-Unis sur le droit d'auteur.
-
-Sun Microsystems, Inc. détient les droits de propriété 
-intellectuels relatifs à la technologie incorporée dans le
-produit qui est décrit dans ce document. En particulier, et 
-ce sans limitation, ces droits de propriété intellectuelle 
-peuvent inclure un ou plus des brevets américains listés à 
-l'adresse http://www.sun.com/patents et un ou les brevets 
-supplémentaires ou les applications de brevet en attente 
-aux Etats - Unis et dans les autres pays.
-
-L'utilisation est soumise aux termes du contrat de licence.
-
-Cette distribution peut comprendre des composants 
-développés par des tierces parties.
-
-Des parties de ce produit pourront être dérivées des 
-systèmes Berkeley BSD licenciés par l'Université de 
-Californie.
-
-Sun, Sun Microsystems, le logo Sun, Java et Solaris sont 
-des marques de fabrique ou des marques déposées de 
-Sun Microsystems, Inc. aux Etats-Unis et dans d'autres pays.
--- a/legal/jta/DistributionREADME	Wed Mar 07 12:45:04 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-DistributionREADME 
-
-DISTRIBUTION BY DEVELOPERS.  Subject to the terms and conditions of the Software License Agreement and the obligations, restrictions, and exceptions set forth below, You may reproduce and distribute the portions of Software identified below ("each a Redistributable"), provided that you comply with the following (note that You may be entitled to reproduce and distribute other portions of the Software not defined here as a Redistributable under certain other licenses as described in the THIRDPARTYLICENSEREADME, if applicable):
-
-(a) You distribute the Redistributable complete and unmodified and only bundled as part of Your applets and applications ("Programs"), 
-
-(b) Your Programs add significant and primary functionality to the Software, 
-
-(c) You distribute Redistributable for the sole purpose of running your Programs,
-
-(d) You do not distribute additional software intended to replace any component(s) of the Redistributable,
-
-(e) You do not remove or alter any proprietary legends or notices contained in or on the Redistributable.
- 
-(f) You only distribute the Redistributable subject to a license agreement that protects Sun's interests consistent with the terms contained in the Software License Agreement, and
-
-(g) You agree to defend and indemnify Sun and its licensors from and against any damages, costs, liabilities, settlement amounts and/or expenses  (including attorneys' fees) incurred in connection with any claim, lawsuit or action by any third party that arises or results from the use or distribution of any and all Programs and/or Redistributable.  
-
-The following is Redistributable:
-
-Java(TM) Transaction API (JTA) Specification 1.1
-
-
--- a/legal/jta/JavaTransactionAPI_Entitlement(20070303).txt	Wed Mar 07 12:45:04 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-Sun Microsystems, Inc. ("Sun") ENTITLEMENT for SOFTWARE
-
-Licensee/Company: Entity receiving Software.
-
-Effective Date: Date of delivery of the Software to You.
-
-Software: Java(TM) Transaction API (JTA) Specification 1.1
-
-License Term:  Perpetual (subject to termination under the SLA)
-
-Licensed Unit: Software Copy
-
-Licensed unit Count: Unlimited
-
-Permitted Uses:   
-
-1. You may reproduce and use the Software for Your own Individual, Commercial, or Research and Instructional Use for the purposes of designing, developing, testing, and running Your applets and application ("Programs").
-
-2. Subject to the terms and conditions of this Agreement and restrictions and exceptions set forth in the Software's documentation, You may reproduce and distribute portions of Software identified as a redistributable in the documentation ("Redistributable"), provided that:
-
-(a) You distribute Redistributable complete and unmodified and only bundled as part of Your Programs, 
-
-(b) Your Programs add significant and primary functionality to the Redistributable, 
-
-(c) You distribute Redistributable for the sole purpose of running Your Programs,
-
-(d) You do not distribute additional software intended to replace any component(s) of the Redistributable,
-
-(e) You do not remove or alter any proprietary legends or notices contained in or on the Redistributable.
- 
-(f) You only distribute the Redistributable subject to a license agreement that protects Sun's interests consistent with the terms contained in this Agreement, and
-
-(g) You agree to defend and indemnify Sun and its licensors from and against any damages, costs, liabilities, settlement amounts and/or expenses  (including attorneys' fees) incurred in connection with any claim, lawsuit or action by any third party that arises or results from the use or distribution of any and all Programs and/or Redistributable.
-
-3. Java Technology Restrictions.  You may not create, modify, or change the behavior of, or authorize your licensees to create, modify, or change the behavior of, classes, interfaces, or subpackages that are in any way identified as "java", "javax", "sun" or similar convention as specified by Sun in any naming convention designation.
Binary file lib/runtime/ant-apache-log4j-1.9.2.jar has changed
Binary file lib/runtime/avalon-framework-4.1.5.jar has changed
Binary file lib/runtime/barcode4j-fop-ext-complete.jar has changed
Binary file lib/runtime/batik-anim.jar has changed
Binary file lib/runtime/batik-awt-util.jar has changed
Binary file lib/runtime/batik-bridge.jar has changed
Binary file lib/runtime/batik-css.jar has changed
Binary file lib/runtime/batik-dom.jar has changed
Binary file lib/runtime/batik-ext.jar has changed
Binary file lib/runtime/batik-gvt.jar has changed
Binary file lib/runtime/batik-parser.jar has changed
Binary file lib/runtime/batik-script.jar has changed
Binary file lib/runtime/batik-svg-dom.jar has changed
Binary file lib/runtime/batik-svggen.jar has changed
Binary file lib/runtime/batik-util.jar has changed
Binary file lib/runtime/batik-xml.jar has changed
Binary file lib/runtime/byte-buddy-1.8.12.jar has changed
Binary file lib/runtime/classmate-1.3.4.jar has changed
Binary file lib/runtime/commons-collections-3.2.1.jar has changed
Binary file lib/runtime/commons-collections-3.2.2.jar has changed
Binary file lib/runtime/fop-1.1.jar has changed
Binary file lib/runtime/hibernate-commons-annotations-5.0.4.Final.jar has changed
Binary file lib/runtime/hibernate-core-5.3.2.Final.jar has changed
Binary file lib/runtime/hibernate-jpa-2.0-api-1.0.0.Final.jar has changed
Binary file lib/runtime/hibernate3-patched.jar has changed
Binary file lib/runtime/jandex-2.0.5.Final.jar has changed
Binary file lib/runtime/javassist-3.20.0-GA.jar has changed
Binary file lib/runtime/javassist-3.22.0-GA.jar has changed
Binary file lib/runtime/javax.activation-1.2.0.jar has changed
Binary file lib/runtime/javax.annotation-api-1.2.jar has changed
Binary file lib/runtime/javax.mail-1.6.1.jar has changed
Binary file lib/runtime/javax.persistence-api-2.2.jar has changed
Binary file lib/runtime/javax.xml.soap-api-1.3.7.jar has changed
Binary file lib/runtime/jaxb-api-2.2.12.jar has changed
Binary file lib/runtime/jaxb-impl-2.2.6.jar has changed
Binary file lib/runtime/jboss-logging-3.3.2.Final.jar has changed
Binary file lib/runtime/jboss-transaction-api_1.2_spec-1.1.1.Final.jar has changed
Binary file lib/runtime/jta.jar has changed
Binary file lib/runtime/log4j-1.2-api-2.11.1.jar has changed
Binary file lib/runtime/log4j-1.2.16.jar has changed
Binary file lib/runtime/log4j-api-2.11.1.jar has changed
Binary file lib/runtime/log4j-core-2.11.1.jar has changed
Binary file lib/runtime/log4j-slf4j-impl-2.11.1.jar has changed
Binary file lib/runtime/log4j-web-2.11.1.jar has changed
Binary file lib/runtime/mail-1.4.4.jar has changed
Binary file lib/runtime/postgresql-42.2.2.jre7.jar has changed
Binary file lib/runtime/postgresql-9.4.1207.jre6.jar has changed
Binary file lib/runtime/slf4j-api-1.6.1.jar has changed
Binary file lib/runtime/slf4j-api-1.7.25.jar has changed
Binary file lib/runtime/slf4j-log4j12-1.6.1.jar has changed
Binary file lib/runtime/xmlgraphics-commons-1.5.jar has changed
--- a/log4j.lcf	Wed Mar 07 12:45:04 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-# Set root category priority to DEBUG and its only appender to A1.
-log4j.rootCategory=WARN, A1
-  
-# A1 is set to be a ConsoleAppender. 
-log4j.appender.A1=org.apache.log4j.ConsoleAppender
-  
-# A1 uses PatternLayout.
-log4j.appender.A1.layout=org.apache.log4j.PatternLayout
-log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c - %m%n
-
-log4j.category.org.openbravo.wad=DEBUG
--- a/modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_GEN_PAYMENTSCHEDULE_INV.xml	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_GEN_PAYMENTSCHEDULE_INV.xml	Mon Feb 11 11:01:09 2019 +0100
@@ -16,7 +16,7 @@
 * under the License.
 * The Original Code is Openbravo ERP.
 * The Initial Developer of the Original Code is Openbravo SLU
-* All portions are Copyright (C) 2010-2017 Openbravo SLU
+* All portions are Copyright (C) 2010-2018 Openbravo SLU
 * All Rights Reserved.
 * Contributor(s):  ______________________________________.
 ************************************************************************/
@@ -83,6 +83,8 @@
 v_PricePr NUMBER;
 v_isinvoicepaid CHAR(1):= 'N';
 v_IsCashVAT C_Invoice.IsCashVAT%TYPE;
+v_prepaymentamt NUMBER;
+v_hasPrepaymentToReturn BOOLEAN := false;
 
 TYPE RECORD IS REF CURSOR;
 Cur_Params RECORD;
@@ -95,6 +97,7 @@
 v_paymentamt NUMBER:=0;
 v_depositamt NUMBER:=0;
 v_transactiontype VARCHAR2(32);
+v_finalsettlementdate C_Invoice.FinalSettlement%TYPE;
 
 BEGIN
 
@@ -125,13 +128,13 @@
       C_BPartner_ID, DateInvoiced, totallines, fin_paymentmethod_id,
       fin_payment_priority_id, documentNo, poreference,
       c_project_id, c_campaign_id, c_activity_id, user1_id, user2_id, c_costcenter_id,
-      IsCashVAT
+      IsCashVAT, prepaymentamt
   INTO v_Client_ID, v_Org_ID, v_DocTypeTarget_ID, v_IsSOTrx,
       v_GrandTotal, v_PaymentTerm, v_PaymentRule, v_Currency_ID,
       v_BPartner_ID, v_DateInvoiced, v_totallines, v_PaymentMethod,
       v_PaymentPriority, v_documentno, v_poreference,
       v_project_id, v_campaign_id, v_activity_id, v_user1, v_user2, v_costcenter,
-      v_IsCashVAT
+      v_IsCashVAT, v_prepaymentamt
   FROM c_invoice
   WHERE c_invoice_id=p_record_id;
   
@@ -264,11 +267,18 @@
       INTO v_ConsumedGranTotal
       FROM fin_payment_schedule ps
       WHERE ps.c_invoice_id = p_record_id;
+
+      --When the Total Amount of the Invoice is 0 and nothing has been consumed yet for the Invoice
+      --but there is already a prepayment made for a related Order
+      --Related to Issue https://issues.openbravo.com/view.php?id=39415
+      IF (v_GrandTotal = 0 AND v_ConsumedGranTotal = 0 AND v_prepaymentamt <> 0) THEN
+        v_hasPrepaymentToReturn := true;
+      END IF;
             
       --Insert Payment Schedules for Invoices
       v_pendingAmount := v_GrandTotal - coalesce(v_ConsumedGranTotal, 0);
 
-      IF (v_pendingAmount <> 0) THEN
+      IF (v_pendingAmount <> 0 OR v_hasPrepaymentToReturn) THEN
 
         --get number of payment schedules expected for the invoice
         SELECT count(*) INTO v_paymentcount
@@ -613,6 +623,15 @@
       WHERE C_INVOICE_ID=P_RECORD_ID
         AND OUTSTANDINGAMT != 0;
 
+      IF(v_OutstandingAmount = 0) THEN
+        SELECT MAX(lastpayment)
+        INTO v_finalsettlementdate
+        FROM fin_payment_sched_inv_v
+        WHERE c_invoice_id = P_RECORD_ID;
+      ELSE
+        v_finalsettlementdate := NULL;
+      END IF;
+
       --Updating Payment Monitor values into C_INVOICE
       UPDATE C_INVOICE
       SET TOTALPAID = v_PaidAmount,
@@ -621,7 +640,7 @@
           DAYSTILLDUE = V_DayStillDue,
           LASTCALCULATEDONDATE = now(),
           ISPAID = CASE v_OutstandingAmount WHEN 0 THEN 'Y' ELSE 'N' END,
-          FINALSETTLEMENT = CASE v_OutstandingAmount WHEN 0 THEN now() ELSE NULL END
+          FINALSETTLEMENT = v_finalsettlementdate
       WHERE C_INVOICE_ID = P_RECORD_ID;
 
       -- Updating SO_CREDITUSED when Invoices are being processed
@@ -647,7 +666,8 @@
         v_ConvertedAmount := COALESCE(V_OutstandingAmount, 0) * v_creditmultiplier;
       end if;
       UPDATE C_BPARTNER
-      SET SO_CREDITUSED = COALESCE(SO_CREDITUSED,0) + v_ConvertedAmount
+      SET SO_CREDITUSED = COALESCE(SO_CREDITUSED,0) + v_ConvertedAmount,
+      UPDATED = now()
       WHERE C_BPARTNER_ID = v_BPartner_ID;
 
       -- Automatic creation of payment and financial transaction
@@ -989,7 +1009,8 @@
                   v_ConvertedAmount := (COALESCE(cur_paymentschedule.OUTSTANDINGAMT, 0) * v_creditmultiplier);
                 end if;
                 UPDATE C_BPARTNER
-                SET SO_CREDITUSED = COALESCE(SO_CREDITUSED,0) - v_ConvertedAmount
+                SET SO_CREDITUSED = COALESCE(SO_CREDITUSED,0) - v_ConvertedAmount,
+                UPDATED = now()
                 WHERE C_BPARTNER_ID = v_BPartner_ID;
               END IF;
               -- Automatic creation of financial transaction
@@ -1060,8 +1081,6 @@
 
   ELSIF (p_docaction = 'RE') THEN
     DECLARE
-      v_count NUMBER;
-      v_documentno VARCHAR2(40);
       v_PaymentPlanExpectedTotal NUMBER:= 0;
     BEGIN
       SELECT count(*), max(p.documentno)
@@ -1138,7 +1157,8 @@
         v_ConvertedAmount := ((v_PaymentPlanExpectedTotal - v_PaidAmount) * v_creditmultiplier);
       END IF;
       UPDATE C_BPARTNER
-         SET SO_CREDITUSED = COALESCE(SO_CREDITUSED,0) - v_convertedAmount
+         SET SO_CREDITUSED = COALESCE(SO_CREDITUSED,0) - v_convertedAmount,
+         UPDATED = now()
       WHERE C_BPARTNER_ID = v_BPartner_ID;
 
       -- Delete C_InvoiceTax_CashVAT records for this invoice
@@ -1157,9 +1177,6 @@
     END;
 
   ELSIF (p_docaction = 'RC') THEN
-    DECLARE
-      v_count NUMBER;
-      v_prepaymentamt NUMBER;
     BEGIN
       v_delete_paymentplan := TRUE;
       SELECT c_invoice_id INTO v_reversalinvoice_id
--- a/modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_GEN_PAYMENTSCHEDULE_ORD.xml	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_GEN_PAYMENTSCHEDULE_ORD.xml	Mon Feb 11 11:01:09 2019 +0100
@@ -16,7 +16,7 @@
 * under the License.
 * The Original Code is Openbravo ERP.
 * The Initial Developer of the Original Code is Openbravo SLU
-* All portions are Copyright (C) 2013-2015 Openbravo SLU
+* All portions are Copyright (C) 2013-2018 Openbravo SLU
 * All Rights Reserved.
 * Contributor(s):  ______________________________________.
 ************************************************************************/
@@ -97,7 +97,6 @@
 
     DECLARE
       v_payment_schedule_order VARCHAR2(32);
-      v_count NUMBER;
       v_pendingamount NUMBER;
       cur_invoicepayments RECORD;
     BEGIN
--- a/modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_ISPAYMENTCONFIRMED.xml	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_ISPAYMENTCONFIRMED.xml	Mon Feb 11 11:01:09 2019 +0100
@@ -19,7 +19,7 @@
 * under the License.
 * The Original Code is Openbravo ERP.
 * The Initial Developer of the Original Code is Openbravo SLU
-* All portions are Copyright (C) 2011-2016 Openbravo SLU
+* All portions are Copyright (C) 2011-2018 Openbravo SLU
 * All Rights Reserved.
 * Contributor(s):  ______________________________________.
 ************************************************************************/
@@ -106,6 +106,7 @@
 WHEN OTHERS THEN
   DBMS_OUTPUT.PUT_LINE('aprm_ispaymentconfirmed exception');
   RAISE;
+  RETURN NULL;
 END APRM_ISPAYMENTCONFIRMED
 ]]></body>
     </function>
--- a/modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_SEQNOINVPAIDSTATUS.xml	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_SEQNOINVPAIDSTATUS.xml	Mon Feb 11 11:01:09 2019 +0100
@@ -22,7 +22,7 @@
 * under the License.
 * The Original Code is Openbravo ERP.
 * The Initial Developer of the Original Code is Openbravo SLU
-* All portions are Copyright (C) 2015 Openbravo SLU
+* All portions are Copyright (C) 2015-2018 Openbravo SLU
 * All Rights Reserved.
 * Contributor(s):  ______________________________________.
 ************************************************************************/
@@ -43,6 +43,7 @@
 WHEN OTHERS THEN
   DBMS_OUTPUT.PUT_LINE('aprm_seqnumberinvoicepaidstatus exception');
   RAISE;
+  RETURN NULL;
 END APRM_SEQNOINVPAIDSTATUS
 ]]></body>
     </function>
--- a/modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_SEQNUMBERPAYMENTSTATUS.xml	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_SEQNUMBERPAYMENTSTATUS.xml	Mon Feb 11 11:01:09 2019 +0100
@@ -16,7 +16,7 @@
 * under the License.
 * The Original Code is Openbravo ERP.
 * The Initial Developer of the Original Code is Openbravo SLU
-* All portions are Copyright (C) 2014-2017 Openbravo SLU
+* All portions are Copyright (C) 2014-2018 Openbravo SLU
 * All Rights Reserved.
 * Contributor(s):  ______________________________________.
 ************************************************************************/
@@ -49,6 +49,7 @@
 WHEN OTHERS THEN
   DBMS_OUTPUT.PUT_LINE('aprm_seqnumberpaymentstatus exception');
   RAISE;
+  RETURN NULL;
 END APRM_SEQNUMBERPAYMENTSTATUS
 ]]></body>
     </function>
--- a/modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_TAX_PAYMENT.xml	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-db/database/model/functions/APRM_TAX_PAYMENT.xml	Mon Feb 11 11:01:09 2019 +0100
@@ -16,7 +16,7 @@
 * under the License.
 * The Original Code is Openbravo ERP.
 * The Initial Developer of the Original Code is Openbravo SLU
-* All portions are Copyright (C) 2010-2014 Openbravo SLU
+* All portions are Copyright (C) 2010-2018 Openbravo SLU
 * All Rights Reserved.
 * Contributor(s):  ______________________________________.
 ************************************************************************/
@@ -175,7 +175,8 @@
     WHERE C_TAXPAYMENT_ID = p_record_id;
     -- Updating SO_CREDITUSED when PAYMENT OCCUR
     UPDATE C_BPARTNER
-    SET SO_CREDITUSED = SO_CREDITUSED - COALESCE(p_amount, 0)
+    SET SO_CREDITUSED = SO_CREDITUSED - COALESCE(p_amount, 0),
+    UPDATED = now()
     WHERE C_BPARTNER_ID = v_BPartner_ID; 
 
     -- Automatic creation of financial transaction
--- a/modules/org.openbravo.advpaymentmngt/src-db/database/model/triggers/APRM_FIN_PMT_CHECK_TRG.xml	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-db/database/model/triggers/APRM_FIN_PMT_CHECK_TRG.xml	Mon Feb 11 11:01:09 2019 +0100
@@ -15,12 +15,13 @@
 * under the License.
 * The Original Code is Openbravo ERP.
 * The Initial Developer of the Original Code is Openbravo SLU
-* All portions are Copyright (C) 2010-2016 Openbravo SLU
+* All portions are Copyright (C) 2010-2019 Openbravo SLU
 * All Rights Reserved.
 * Contributor(s):  ______________________________________.
 *************************************************************************/
 
 v_DateNull DATE := TO_DATE('01-01-1900','DD-MM-YYYY');
+v_Count NUMBER:=0;
   
 BEGIN
    
@@ -51,6 +52,17 @@
       )) THEN
       RAISE_APPLICATION_ERROR(-20000, '@20501@');
     END IF;
+    IF(:OLD.PROCESSED='Y' AND :NEW.PROCESSED='N') THEN
+      SELECT COUNT(*)
+      INTO v_Count
+      FROM GL_JOURNALLINE
+      JOIN GL_JOURNAL ON GL_JOURNALLINE.GL_JOURNAL_ID = GL_JOURNAL.GL_JOURNAL_ID
+      WHERE GL_JOURNALLINE.FIN_PAYMENT_ID = :OLD.FIN_PAYMENT_ID
+      AND GL_JOURNAL.PROCESSED = 'Y';
+      IF(v_Count > 0) THEN
+        RAISE_APPLICATION_ERROR(-20000,'@APRM_ReactivatePaymentInGLJournalLine@');
+      END IF;
+    END IF;
   END IF;
   IF(INSERTING) THEN
    IF(:NEW.PROCESSED='Y') THEN
--- a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_FIELD.xml	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_FIELD.xml	Mon Feb 11 11:01:09 2019 +0100
@@ -374,7 +374,7 @@
 <!--04CFE3A53162449380A253DE0B814AEF-->  <AD_COLUMN_ID><![CDATA[F8F6A13C5682DC4DE040007F01000363]]></AD_COLUMN_ID>
 <!--04CFE3A53162449380A253DE0B814AEF-->  <IGNOREINWAD><![CDATA[N]]></IGNOREINWAD>
 <!--04CFE3A53162449380A253DE0B814AEF-->  <ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED>
-<!--04CFE3A53162449380A253DE0B814AEF-->  <DISPLAYLOGIC><![CDATA[@Processed@='Y' & (@showAddPayment@='Y' | @showAddPayment@ ='') & (@APRM_OrderIsPaid@='N' | @APRM_OrderIsPaid@ ='')]]></DISPLAYLOGIC>
+<!--04CFE3A53162449380A253DE0B814AEF-->  <DISPLAYLOGIC><![CDATA[@Processed@='Y' & (@showAddPayment@='Y' | @showAddPayment@ ='') & (@APRM_OrderIsPaid@='N' | @APRM_OrderIsPaid@ ='') & @GrandTotal@!0]]></DISPLAYLOGIC>
 <!--04CFE3A53162449380A253DE0B814AEF-->  <DISPLAYLENGTH><![CDATA[0]]></DISPLAYLENGTH>
 <!--04CFE3A53162449380A253DE0B814AEF-->  <ISREADONLY><![CDATA[N]]></ISREADONLY>
 <!--04CFE3A53162449380A253DE0B814AEF-->  <SEQNO><![CDATA[335]]></SEQNO>
@@ -21974,7 +21974,7 @@
 <!--F4A594CF81DA4C0DB3A81BBFF0305C12-->  <AD_COLUMN_ID><![CDATA[F8F6A13C5682DC4DE040007F01000363]]></AD_COLUMN_ID>
 <!--F4A594CF81DA4C0DB3A81BBFF0305C12-->  <IGNOREINWAD><![CDATA[N]]></IGNOREINWAD>
 <!--F4A594CF81DA4C0DB3A81BBFF0305C12-->  <ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED>
-<!--F4A594CF81DA4C0DB3A81BBFF0305C12-->  <DISPLAYLOGIC><![CDATA[@Processed@='Y' & (@showAddPayment@='Y' | @showAddPayment@ ='') & (@APRM_OrderIsPaid@='N' | @APRM_OrderIsPaid@ ='')]]></DISPLAYLOGIC>
+<!--F4A594CF81DA4C0DB3A81BBFF0305C12-->  <DISPLAYLOGIC><![CDATA[@Processed@='Y' & (@showAddPayment@='Y' | @showAddPayment@ ='') & (@APRM_OrderIsPaid@='N' | @APRM_OrderIsPaid@ ='') & @GrandTotal@!0]]></DISPLAYLOGIC>
 <!--F4A594CF81DA4C0DB3A81BBFF0305C12-->  <DISPLAYLENGTH><![CDATA[0]]></DISPLAYLENGTH>
 <!--F4A594CF81DA4C0DB3A81BBFF0305C12-->  <ISREADONLY><![CDATA[N]]></ISREADONLY>
 <!--F4A594CF81DA4C0DB3A81BBFF0305C12-->  <SEQNO><![CDATA[415]]></SEQNO>
--- a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MESSAGE.xml	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MESSAGE.xml	Mon Feb 11 11:01:09 2019 +0100
@@ -685,6 +685,18 @@
 <!--712C841E501642B881A998CCAC13E420-->  <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
 <!--712C841E501642B881A998CCAC13E420--></AD_MESSAGE>
 
+<!--768538CA5BA14C3CABCF921B1C63AAAD--><AD_MESSAGE>
+<!--768538CA5BA14C3CABCF921B1C63AAAD-->  <AD_MESSAGE_ID><![CDATA[768538CA5BA14C3CABCF921B1C63AAAD]]></AD_MESSAGE_ID>
+<!--768538CA5BA14C3CABCF921B1C63AAAD-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--768538CA5BA14C3CABCF921B1C63AAAD-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--768538CA5BA14C3CABCF921B1C63AAAD-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--768538CA5BA14C3CABCF921B1C63AAAD-->  <VALUE><![CDATA[APRM_PaymentAlreadyReversed]]></VALUE>
+<!--768538CA5BA14C3CABCF921B1C63AAAD-->  <MSGTEXT><![CDATA[This payment has been already reversed.]]></MSGTEXT>
+<!--768538CA5BA14C3CABCF921B1C63AAAD-->  <MSGTYPE><![CDATA[E]]></MSGTYPE>
+<!--768538CA5BA14C3CABCF921B1C63AAAD-->  <AD_MODULE_ID><![CDATA[A918E3331C404B889D69AA9BFAFB23AC]]></AD_MODULE_ID>
+<!--768538CA5BA14C3CABCF921B1C63AAAD-->  <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
+<!--768538CA5BA14C3CABCF921B1C63AAAD--></AD_MESSAGE>
+
 <!--76D4A0740BAD4274B8718A0AF2A1C9B4--><AD_MESSAGE>
 <!--76D4A0740BAD4274B8718A0AF2A1C9B4-->  <AD_MESSAGE_ID><![CDATA[76D4A0740BAD4274B8718A0AF2A1C9B4]]></AD_MESSAGE_ID>
 <!--76D4A0740BAD4274B8718A0AF2A1C9B4-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -1309,6 +1321,18 @@
 <!--C6F7E24F731242D49A73C8C1A835A252-->  <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
 <!--C6F7E24F731242D49A73C8C1A835A252--></AD_MESSAGE>
 
+<!--C9AB6E0AB571407E89EBB4BF2A56188A--><AD_MESSAGE>
+<!--C9AB6E0AB571407E89EBB4BF2A56188A-->  <AD_MESSAGE_ID><![CDATA[C9AB6E0AB571407E89EBB4BF2A56188A]]></AD_MESSAGE_ID>
+<!--C9AB6E0AB571407E89EBB4BF2A56188A-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--C9AB6E0AB571407E89EBB4BF2A56188A-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--C9AB6E0AB571407E89EBB4BF2A56188A-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--C9AB6E0AB571407E89EBB4BF2A56188A-->  <VALUE><![CDATA[APRM_ReactivatePaymentInGLJournalLine]]></VALUE>
+<!--C9AB6E0AB571407E89EBB4BF2A56188A-->  <MSGTEXT><![CDATA[To reactivate the payment, Unpost and unprocess G/L Journal of the G/L Journal Line in which payment is linked.]]></MSGTEXT>
+<!--C9AB6E0AB571407E89EBB4BF2A56188A-->  <MSGTYPE><![CDATA[E]]></MSGTYPE>
+<!--C9AB6E0AB571407E89EBB4BF2A56188A-->  <AD_MODULE_ID><![CDATA[A918E3331C404B889D69AA9BFAFB23AC]]></AD_MODULE_ID>
+<!--C9AB6E0AB571407E89EBB4BF2A56188A-->  <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
+<!--C9AB6E0AB571407E89EBB4BF2A56188A--></AD_MESSAGE>
+
 <!--CAB70EC8598D40E0BFFD7F0FB8538080--><AD_MESSAGE>
 <!--CAB70EC8598D40E0BFFD7F0FB8538080-->  <AD_MESSAGE_ID><![CDATA[CAB70EC8598D40E0BFFD7F0FB8538080]]></AD_MESSAGE_ID>
 <!--CAB70EC8598D40E0BFFD7F0FB8538080-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
--- a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml	Mon Feb 11 11:01:09 2019 +0100
@@ -6,7 +6,7 @@
 <!--A918E3331C404B889D69AA9BFAFB23AC-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
 <!--A918E3331C404B889D69AA9BFAFB23AC-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--A918E3331C404B889D69AA9BFAFB23AC-->  <NAME><![CDATA[Advanced Payables and Receivables Mngmt]]></NAME>
-<!--A918E3331C404B889D69AA9BFAFB23AC-->  <VERSION><![CDATA[3.0.33660]]></VERSION>
+<!--A918E3331C404B889D69AA9BFAFB23AC-->  <VERSION><![CDATA[3.0.35301]]></VERSION>
 <!--A918E3331C404B889D69AA9BFAFB23AC-->  <DESCRIPTION><![CDATA[Managing your finances with an ERP does not have to be difficult. Enjoy a radically improved user experience that combines the power of an enterprise grade financial application with the simplicity and ease of a web 2.0 personal accounting service.]]></DESCRIPTION>
 <!--A918E3331C404B889D69AA9BFAFB23AC-->  <HELP><![CDATA[Advanced Payables and Receivables Management simplifies and automates the business processes around the management of financial accounts, from the receipt and issue of payment, to the reconciliation of those events with bank statements.
 If you would like to help shape this module you are welcome to take part in the forum discussions or register feature requests or issues in the corresponding (Forum and Bug Tracking) sections in the Advanced Payables and Receivable project in the OB Forge.]]></HELP>
--- a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml	Mon Feb 11 11:01:09 2019 +0100
@@ -7,7 +7,7 @@
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  <AD_MODULE_ID><![CDATA[A918E3331C404B889D69AA9BFAFB23AC]]></AD_MODULE_ID>
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  <AD_DEPENDENT_MODULE_ID><![CDATA[5EB4F15C80684ACA904756BDC12ADBE5]]></AD_DEPENDENT_MODULE_ID>
-<!--89326AE95DAD449D85DFAB2C5B1C6683-->  <STARTVERSION><![CDATA[2.1.33660]]></STARTVERSION>
+<!--89326AE95DAD449D85DFAB2C5B1C6683-->  <STARTVERSION><![CDATA[2.1.35301]]></STARTVERSION>
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  <ISINCLUDED><![CDATA[N]]></ISINCLUDED>
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  <DEPENDANT_MODULE_NAME><![CDATA[User Interface Selector]]></DEPENDANT_MODULE_NAME>
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  <DEPENDENCY_ENFORCEMENT><![CDATA[MAJOR]]></DEPENDENCY_ENFORCEMENT>
@@ -21,7 +21,7 @@
 <!--B97FC854C6DD41E692161585645A900F-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--B97FC854C6DD41E692161585645A900F-->  <AD_MODULE_ID><![CDATA[A918E3331C404B889D69AA9BFAFB23AC]]></AD_MODULE_ID>
 <!--B97FC854C6DD41E692161585645A900F-->  <AD_DEPENDENT_MODULE_ID><![CDATA[0]]></AD_DEPENDENT_MODULE_ID>
-<!--B97FC854C6DD41E692161585645A900F-->  <STARTVERSION><![CDATA[3.0.33660]]></STARTVERSION>
+<!--B97FC854C6DD41E692161585645A900F-->  <STARTVERSION><![CDATA[3.0.35301]]></STARTVERSION>
 <!--B97FC854C6DD41E692161585645A900F-->  <ISINCLUDED><![CDATA[N]]></ISINCLUDED>
 <!--B97FC854C6DD41E692161585645A900F-->  <DEPENDANT_MODULE_NAME><![CDATA[core]]></DEPENDANT_MODULE_NAME>
 <!--B97FC854C6DD41E692161585645A900F-->  <DEPENDENCY_ENFORCEMENT><![CDATA[MAJOR]]></DEPENDENCY_ENFORCEMENT>
--- a/modules/org.openbravo.advpaymentmngt/src-util/buildvalidation/src/src/org/openbravo/advpaymentmngt/buildvalidation/TransactionsWithMissingDataData.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/buildvalidation/src/src/org/openbravo/advpaymentmngt/buildvalidation/TransactionsWithMissingDataData.java	Mon Feb 11 11:01:09 2019 +0100
@@ -3,7 +3,8 @@
 
 import java.sql.*;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -13,7 +14,7 @@
 import java.util.*;
 
 class TransactionsWithMissingDataData implements FieldProvider {
-static Logger log4j = Logger.getLogger(TransactionsWithMissingDataData.class);
+static Logger log4j = LogManager.getLogger();
   private String InitRecordNumber="0";
   public String documentno;
   public String finFinaccTransactionId;
--- a/modules/org.openbravo.advpaymentmngt/src-util/buildvalidation/src/src/org/openbravo/advpaymentmngt/buildvalidation/UniquePaymentForTransactionData.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/buildvalidation/src/src/org/openbravo/advpaymentmngt/buildvalidation/UniquePaymentForTransactionData.java	Mon Feb 11 11:01:09 2019 +0100
@@ -3,7 +3,8 @@
 
 import java.sql.*;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -13,7 +14,7 @@
 import java.util.*;
 
 class UniquePaymentForTransactionData implements FieldProvider {
-static Logger log4j = Logger.getLogger(UniquePaymentForTransactionData.class);
+static Logger log4j = LogManager.getLogger();
   private String InitRecordNumber="0";
   public String documentno;
   public String finPaymentId;
--- a/modules/org.openbravo.advpaymentmngt/src-util/buildvalidation/src/src/org/openbravo/advpaymentmngt/buildvalidation/UnpostRefundPaymentsData.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/buildvalidation/src/src/org/openbravo/advpaymentmngt/buildvalidation/UnpostRefundPaymentsData.java	Mon Feb 11 11:01:09 2019 +0100
@@ -3,7 +3,8 @@
 
 import java.sql.*;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -13,7 +14,7 @@
 import java.util.*;
 
 class UnpostRefundPaymentsData implements FieldProvider {
-static Logger log4j = Logger.getLogger(UnpostRefundPaymentsData.class);
+static Logger log4j = LogManager.getLogger();
   private String InitRecordNumber="0";
   public String adClientId;
   public String adOrgId;
--- a/modules/org.openbravo.advpaymentmngt/src-util/buildvalidation/src/src/org/openbravo/advpaymentmngt/buildvalidation/WrongPaymentScheduleDetailsCheckData.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/buildvalidation/src/src/org/openbravo/advpaymentmngt/buildvalidation/WrongPaymentScheduleDetailsCheckData.java	Mon Feb 11 11:01:09 2019 +0100
@@ -3,7 +3,8 @@
 
 import java.sql.*;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -13,7 +14,7 @@
 import java.util.*;
 
 class WrongPaymentScheduleDetailsCheckData implements FieldProvider {
-static Logger log4j = Logger.getLogger(WrongPaymentScheduleDetailsCheckData.class);
+static Logger log4j = LogManager.getLogger();
   private String InitRecordNumber="0";
   public String client;
   public String documentno;
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/org/openbravo/advpaymentmngt/modulescript/CreateAccountingConfiguration.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/org/openbravo/advpaymentmngt/modulescript/CreateAccountingConfiguration.java	Mon Feb 11 11:01:09 2019 +0100
@@ -21,7 +21,8 @@
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.UUID;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -31,7 +32,7 @@
 import org.openbravo.modulescript.OpenbravoVersion;
 
 public class CreateAccountingConfiguration extends ModuleScript {
-  private static final Logger log4j = Logger.getLogger(CreateAccountingConfiguration.class);
+  private static final Logger log4j = LogManager.getLogger();
 
   @Override
   // Inserting:
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/org/openbravo/advpaymentmngt/modulescript/CreateDocumentNoSequence.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/org/openbravo/advpaymentmngt/modulescript/CreateDocumentNoSequence.java	Mon Feb 11 11:01:09 2019 +0100
@@ -21,7 +21,8 @@
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.UUID;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/org/openbravo/advpaymentmngt/modulescript/DeleteWrongTransactions.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/org/openbravo/advpaymentmngt/modulescript/DeleteWrongTransactions.java	Mon Feb 11 11:01:09 2019 +0100
@@ -18,7 +18,8 @@
  */
 package org.openbravo.advpaymentmngt.modulescript;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import java.sql.Connection;
 import org.openbravo.utils.FormatUtilities;
 import org.openbravo.database.ConnectionProvider;
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/org/openbravo/advpaymentmngt/modulescript/LinkCreditPayments.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/org/openbravo/advpaymentmngt/modulescript/LinkCreditPayments.java	Mon Feb 11 11:01:09 2019 +0100
@@ -22,14 +22,15 @@
 
 import javax.servlet.ServletException;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.openbravo.database.ConnectionProvider;
 import org.openbravo.modulescript.ModuleScript;
 import org.openbravo.modulescript.ModuleScriptExecutionLimits;
 import org.openbravo.modulescript.OpenbravoVersion;
 
 public class LinkCreditPayments extends ModuleScript {
-  private static final Logger log4j = Logger.getLogger(LinkCreditPayments.class);
+  private static final Logger log4j = LogManager.getLogger();
 
   @Override
   public void execute() {
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/org/openbravo/advpaymentmngt/modulescript/UpdateGeneratedUsedCreditColumns.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/org/openbravo/advpaymentmngt/modulescript/UpdateGeneratedUsedCreditColumns.java	Mon Feb 11 11:01:09 2019 +0100
@@ -21,7 +21,8 @@
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.UUID;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/org/openbravo/advpaymentmngt/modulescript/UpdateReconciliationProcessButtonValue.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/org/openbravo/advpaymentmngt/modulescript/UpdateReconciliationProcessButtonValue.java	Mon Feb 11 11:01:09 2019 +0100
@@ -21,7 +21,8 @@
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.UUID;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/CreateAccountingConfigurationData.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/CreateAccountingConfigurationData.java	Mon Feb 11 11:01:09 2019 +0100
@@ -3,7 +3,8 @@
 
 import java.sql.*;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -13,7 +14,7 @@
 import java.util.*;
 
 class CreateAccountingConfigurationData implements FieldProvider {
-static Logger log4j = Logger.getLogger(CreateAccountingConfigurationData.class);
+static Logger log4j = LogManager.getLogger();
   private String InitRecordNumber="0";
   public String cAcctschemaId;
   public String adClientId;
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/CreateDocumentNoSequenceData.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/CreateDocumentNoSequenceData.java	Mon Feb 11 11:01:09 2019 +0100
@@ -3,7 +3,8 @@
 
 import java.sql.*;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -13,7 +14,7 @@
 import java.util.*;
 
 class CreateDocumentNoSequenceData implements FieldProvider {
-static Logger log4j = Logger.getLogger(CreateDocumentNoSequenceData.class);
+static Logger log4j = LogManager.getLogger();
   private String InitRecordNumber="0";
   public String tablename;
   public String client;
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/DeleteWrongTransactionsData.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/DeleteWrongTransactionsData.java	Mon Feb 11 11:01:09 2019 +0100
@@ -3,7 +3,8 @@
 
 import java.sql.*;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -13,7 +14,7 @@
 import java.util.*;
 
 class DeleteWrongTransactionsData implements FieldProvider {
-static Logger log4j = Logger.getLogger(DeleteWrongTransactionsData.class);
+static Logger log4j = LogManager.getLogger();
   private String InitRecordNumber="0";
   public String finPaymentId;
 
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/InitializeAPRMReadyPreferenceData.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/InitializeAPRMReadyPreferenceData.java	Mon Feb 11 11:01:09 2019 +0100
@@ -3,7 +3,8 @@
 
 import java.sql.*;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -13,7 +14,7 @@
 import java.util.*;
 
 class InitializeAPRMReadyPreferenceData implements FieldProvider {
-static Logger log4j = Logger.getLogger(InitializeAPRMReadyPreferenceData.class);
+static Logger log4j = LogManager.getLogger();
   private String InitRecordNumber="0";
   public String exist;
 
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/Issue28591UpdatePSDData.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/Issue28591UpdatePSDData.java	Mon Feb 11 11:01:09 2019 +0100
@@ -3,7 +3,8 @@
 
 import java.sql.*;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -13,7 +14,7 @@
 import java.util.*;
 
 class Issue28591UpdatePSDData implements FieldProvider {
-static Logger log4j = Logger.getLogger(Issue28591UpdatePSDData.class);
+static Logger log4j = LogManager.getLogger();
   private String InitRecordNumber="0";
   public String finPaymentScheduledetailId;
   public String outstandingamt;
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/LinkCreditPaymentsData.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/LinkCreditPaymentsData.java	Mon Feb 11 11:01:09 2019 +0100
@@ -3,7 +3,8 @@
 
 import java.sql.*;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -13,7 +14,7 @@
 import java.util.*;
 
 class LinkCreditPaymentsData implements FieldProvider {
-static Logger log4j = Logger.getLogger(LinkCreditPaymentsData.class);
+static Logger log4j = LogManager.getLogger();
   private String InitRecordNumber="0";
   public String finPaymentId;
   public String usedCredit;
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/UpdateCustomerBalanceData.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/UpdateCustomerBalanceData.java	Mon Feb 11 11:01:09 2019 +0100
@@ -3,7 +3,8 @@
 
 import java.sql.*;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -13,7 +14,7 @@
 import java.util.*;
 
 class UpdateCustomerBalanceData implements FieldProvider {
-static Logger log4j = Logger.getLogger(UpdateCustomerBalanceData.class);
+static Logger log4j = LogManager.getLogger();
   private String InitRecordNumber="0";
   public String cBpartnerId;
   public String customercredit;
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/UpdateGeneratedUsedCreditColumnsData.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/UpdateGeneratedUsedCreditColumnsData.java	Mon Feb 11 11:01:09 2019 +0100
@@ -3,7 +3,8 @@
 
 import java.sql.*;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -13,7 +14,7 @@
 import java.util.*;
 
 class UpdateGeneratedUsedCreditColumnsData implements FieldProvider {
-static Logger log4j = Logger.getLogger(UpdateGeneratedUsedCreditColumnsData.class);
+static Logger log4j = LogManager.getLogger();
   private String InitRecordNumber="0";
   public String rowCount;
   public String type;
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/UpdateMatchedDocumentData.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/UpdateMatchedDocumentData.java	Mon Feb 11 11:01:09 2019 +0100
@@ -3,7 +3,8 @@
 
 import java.sql.*;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -12,7 +13,7 @@
 import org.openbravo.data.UtilSql;
 
 class UpdateMatchedDocumentData implements FieldProvider {
-static Logger log4j = Logger.getLogger(UpdateMatchedDocumentData.class);
+static Logger log4j = LogManager.getLogger();
   private String InitRecordNumber="0";
   public String existpreference;
 
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/UpdatePaymentProcessedValueData.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/UpdatePaymentProcessedValueData.java	Mon Feb 11 11:01:09 2019 +0100
@@ -3,7 +3,8 @@
 
 import java.sql.*;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -13,7 +14,7 @@
 import java.util.*;
 
 class UpdatePaymentProcessedValueData implements FieldProvider {
-static Logger log4j = Logger.getLogger(UpdatePaymentProcessedValueData.class);
+static Logger log4j = LogManager.getLogger();
   private String InitRecordNumber="0";
   public String name;
 
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/UpdatePaymentScheduledetailData.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/UpdatePaymentScheduledetailData.java	Mon Feb 11 11:01:09 2019 +0100
@@ -3,7 +3,8 @@
 
 import java.sql.*;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -13,7 +14,7 @@
 import java.util.*;
 
 class UpdatePaymentScheduledetailData implements FieldProvider {
-static Logger log4j = Logger.getLogger(UpdatePaymentScheduledetailData.class);
+static Logger log4j = LogManager.getLogger();
   private String InitRecordNumber="0";
   public String finPaymentScheduledetailId;
   public String outstandingamt;
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/UpdateReconciliationProcessButtonValueData.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/UpdateReconciliationProcessButtonValueData.java	Mon Feb 11 11:01:09 2019 +0100
@@ -3,7 +3,8 @@
 
 import java.sql.*;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -13,7 +14,7 @@
 import java.util.*;
 
 class UpdateReconciliationProcessButtonValueData implements FieldProvider {
-static Logger log4j = Logger.getLogger(UpdateReconciliationProcessButtonValueData.class);
+static Logger log4j = LogManager.getLogger();
   private String InitRecordNumber="0";
   public String name;
 
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/UpdateReconciliationStatementProcessedValueData.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/UpdateReconciliationStatementProcessedValueData.java	Mon Feb 11 11:01:09 2019 +0100
@@ -3,7 +3,8 @@
 
 import java.sql.*;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -13,7 +14,7 @@
 import java.util.*;
 
 class UpdateReconciliationStatementProcessedValueData implements FieldProvider {
-static Logger log4j = Logger.getLogger(UpdateReconciliationStatementProcessedValueData.class);
+static Logger log4j = LogManager.getLogger();
   private String InitRecordNumber="0";
   public String name;
 
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/UpdateRecordId2ValueData.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/UpdateRecordId2ValueData.java	Mon Feb 11 11:01:09 2019 +0100
@@ -3,7 +3,8 @@
 
 import java.sql.*;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -13,7 +14,7 @@
 import java.util.*;
 
 class UpdateRecordId2ValueData implements FieldProvider {
-static Logger log4j = Logger.getLogger(UpdateRecordId2ValueData.class);
+static Logger log4j = LogManager.getLogger();
   private String InitRecordNumber="0";
   public String name;
 
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/UpdateTransactionBPExchangeRateData.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/UpdateTransactionBPExchangeRateData.java	Mon Feb 11 11:01:09 2019 +0100
@@ -3,7 +3,8 @@
 
 import java.sql.*;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -13,7 +14,7 @@
 import java.util.*;
 
 class UpdateTransactionBPExchangeRateData implements FieldProvider {
-static Logger log4j = Logger.getLogger(UpdateTransactionBPExchangeRateData.class);
+static Logger log4j = LogManager.getLogger();
   private String InitRecordNumber="0";
   public String name;
 
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/UpdateTransactionTypeTransactionTabData.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/UpdateTransactionTypeTransactionTabData.java	Mon Feb 11 11:01:09 2019 +0100
@@ -3,7 +3,8 @@
 
 import java.sql.*;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -13,7 +14,7 @@
 import java.util.*;
 
 class UpdateTransactionTypeTransactionTabData implements FieldProvider {
-static Logger log4j = Logger.getLogger(UpdateTransactionTypeTransactionTabData.class);
+static Logger log4j = LogManager.getLogger();
   private String InitRecordNumber="0";
   public String name;
 
--- a/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/WrongPaymentsFromJournalLineData.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src-util/modulescript/src/src/org/openbravo/advpaymentmngt/modulescript/WrongPaymentsFromJournalLineData.java	Mon Feb 11 11:01:09 2019 +0100
@@ -3,7 +3,8 @@
 
 import java.sql.*;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import javax.servlet.ServletException;
 
@@ -13,7 +14,7 @@
 import java.util.*;
 
 class WrongPaymentsFromJournalLineData implements FieldProvider {
-static Logger log4j = Logger.getLogger(WrongPaymentsFromJournalLineData.class);
+static Logger log4j = LogManager.getLogger();
   private String InitRecordNumber="0";
   public String adClientId;
   public String paymentinfo;
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/APRMActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/APRMActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -20,7 +20,8 @@
 
 import java.util.Map;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.codehaus.jettison.json.JSONException;
 import org.codehaus.jettison.json.JSONObject;
 import org.openbravo.client.kernel.BaseActionHandler;
@@ -29,7 +30,7 @@
 import org.openbravo.model.financialmgmt.payment.FinAccPaymentMethod;
 
 public class APRMActionHandler extends BaseActionHandler {
-  private static final Logger log = Logger.getLogger(APRMActionHandler.class);
+  private static final Logger log = LogManager.getLogger();
   private static final String BANK_TRANSITORY_CALLOUT_RESPONSE = "bankTransitoryCalloutResponse";
 
   @Override
@@ -53,8 +54,8 @@
   }
 
   void updatePaymentMethodConfiguration(String strfinFinancialAccountId) {
-    FIN_FinancialAccount account = OBDal.getInstance().get(FIN_FinancialAccount.class,
-        strfinFinancialAccountId);
+    FIN_FinancialAccount account = OBDal.getInstance()
+        .get(FIN_FinancialAccount.class, strfinFinancialAccountId);
 
     // Configure clearing account for all payment methods upon clearing event
     for (FinAccPaymentMethod paymentMethod : account.getFinancialMgmtFinAccPaymentMethodList()) {
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/APRMApplicationProvider.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/APRMApplicationProvider.java	Mon Feb 11 11:01:09 2019 +0100
@@ -35,20 +35,21 @@
     return null;
   }
 
+  @Override
   public List<ComponentResource> getGlobalComponentResources() {
     final List<ComponentResource> globalResources = new ArrayList<ComponentResource>();
-    globalResources.add(createStaticResource(
-        "web/org.openbravo.advpaymentmngt/js/ob-aprm-utilities.js", true));
-    globalResources.add(createStaticResource(
-        "web/org.openbravo.advpaymentmngt/js/ob-aprm-addPayment.js", true));
+    globalResources.add(
+        createStaticResource("web/org.openbravo.advpaymentmngt/js/ob-aprm-utilities.js", true));
+    globalResources.add(
+        createStaticResource("web/org.openbravo.advpaymentmngt/js/ob-aprm-addPayment.js", true));
     globalResources.add(createStaticResource(
         "web/org.openbravo.advpaymentmngt/js/ob-aprm-matchStatement.js", true));
     globalResources.add(createStaticResource(
         "web/org.openbravo.advpaymentmngt/js/ob-aprm-addTransaction.js", true));
     globalResources.add(createStaticResource(
         "web/org.openbravo.advpaymentmngt/js/ob-aprm-findTransaction.js", true));
-    globalResources.add(createStaticResource(
-        "web/org.openbravo.advpaymentmngt/js/ob-aprm-fundsTransfer.js", true));
+    globalResources.add(
+        createStaticResource("web/org.openbravo.advpaymentmngt/js/ob-aprm-fundsTransfer.js", true));
     return globalResources;
   }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ModifyPaymentPlanHook.java	Mon Feb 11 11:01:09 2019 +0100
@@ -0,0 +1,44 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.0  (the  "License"),  being   the  Mozilla   Public  License
+ * Version 1.1  with a permitted attribution clause; you may not  use this
+ * file except in compliance with the License. You  may  obtain  a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License  is  distributed  on  an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific  language  governing  rights  and  limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo SLU
+ * All portions are Copyright (C) 2018 Openbravo SLU
+ * All Rights Reserved.
+ * Contributor(s):  
+ *************************************************************************
+ */
+package org.openbravo.advpaymentmngt;
+
+import java.util.List;
+
+import org.openbravo.base.exception.OBException;
+import org.openbravo.model.financialmgmt.payment.FIN_PaymentSchedule;
+
+/***
+ * Abstract class created to implement hooks inside Modify Payment Plan process. All hooks in that
+ * process must extend this class so they implement the methods
+ * 
+ * @author Andy Armaignac Collazo
+ *
+ */
+public abstract class ModifyPaymentPlanHook {
+
+  /***
+   * Method to validate the modified payment schedule
+   * 
+   * @param modifiedPaymentSchedule
+   * 
+   * @throws OBException
+   */
+  public abstract void validatePaymentSchedule(List<FIN_PaymentSchedule> modifiedPaymentSchedule)
+      throws OBException;
+}
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -11,7 +11,7 @@
  * under the License.
  * The Original Code is Openbravo ERP.
  * The Initial Developer of the Original Code is Openbravo SLU
- * All portions are Copyright (C) 2015-2016 Openbravo SLU
+ * All portions are Copyright (C) 2015-2018 Openbravo SLU
  * All Rights Reserved.
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -19,10 +19,19 @@
 package org.openbravo.advpaymentmngt.actionHandler;
 
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
 
-import org.apache.log4j.Logger;
+import javax.enterprise.inject.Any;
+import javax.enterprise.inject.Instance;
+import javax.inject.Inject;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.codehaus.jettison.json.JSONArray;
 import org.codehaus.jettison.json.JSONException;
 import org.codehaus.jettison.json.JSONObject;
@@ -39,9 +48,12 @@
 import org.openbravo.service.json.JsonUtils;
 
 public class AddMultiplePaymentsHandler extends BaseProcessActionHandler {
-  private static final Logger log = Logger.getLogger(AddMultiplePaymentsHandler.class);
+  private static final Logger log = LogManager.getLogger();
   private static final SimpleDateFormat jsDateFormat = JsonUtils.createDateFormat();
   private static final String ACTION_PROCESS_TRANSACTION = "P";
+  @Inject
+  @Any
+  private Instance<AddMultiplePaymentsProcessAfterProcessHook> afterHooks;
 
   @Override
   protected JSONObject doExecute(Map<String, Object> parameters, String data) {
@@ -49,22 +61,40 @@
       final JSONObject jsonData = new JSONObject(data);
       final JSONObject jsonparams = jsonData.getJSONObject("_params");
 
-      final JSONArray selectedPayments = jsonparams.getJSONObject("payments").getJSONArray(
-          "_selection");
+      final JSONArray selectedPayments = jsonparams.getJSONObject("payments")
+          .getJSONArray("_selection");
       final Date statementDate = jsDateFormat.parse(jsonparams.getString("statementDate"));
       final Date dateAcct = jsDateFormat.parse(jsonparams.getString("dateAcct"));
       final String strAccountId = jsonData.getString("Fin_Financial_Account_ID");
 
       int selectedPaymentsLength = selectedPayments.length();
+
+      for (int i = 0; i < selectedPaymentsLength; i++) {
+        final JSONObject paymentJS = selectedPayments.getJSONObject(i);
+        createAndProcessTransactionFromPayment(paymentJS, statementDate, dateAcct, strAccountId);
+        OBDal.getInstance().getSession().clear();
+      }
+
+      List<AddMultiplePaymentsProcessAfterProcessHook> hooksPriority = new ArrayList<AddMultiplePaymentsProcessAfterProcessHook>();
+      for (AddMultiplePaymentsProcessAfterProcessHook hook : afterHooks) {
+        hooksPriority.add(hook);
+      }
+      Collections.sort(hooksPriority, new Comparator<AddMultiplePaymentsProcessAfterProcessHook>() {
+        @Override
+        public int compare(AddMultiplePaymentsProcessAfterProcessHook o1,
+            AddMultiplePaymentsProcessAfterProcessHook o2) {
+          return (int) Math.signum(o2.getPriority() - o1.getPriority());
+        }
+      });
+      for (AddMultiplePaymentsProcessAfterProcessHook hook : hooksPriority) {
+        selectedPaymentsLength = selectedPaymentsLength + hook.executeHook(jsonData);
+      }
+
       if (selectedPaymentsLength == 0) {
         // Validation error: No lines selected
         return getErrorMessage(OBMessageUtils.messageBD("APRM_NO_PAYMENTS_SELECTED"));
       }
 
-      for (int i = 0; i < selectedPaymentsLength; i++) {
-        final JSONObject paymentJS = selectedPayments.getJSONObject(i);
-        createAndProcessTransactionFromPayment(paymentJS, statementDate, dateAcct, strAccountId);
-      }
       // Success Message
       return getSuccessMessage(String.format(
           OBMessageUtils.messageBD("APRM_MULTIPLE_TRANSACTIONS_ADDED"), selectedPaymentsLength));
@@ -95,15 +125,14 @@
       final String paymentId = paymentJS.getString("id");
       log.debug("Creating transaction for FIN_Payment_ID: " + paymentId);
       final FIN_Payment payment = OBDal.getInstance().get(FIN_Payment.class, paymentId);
-      FIN_FinancialAccount account = OBDal.getInstance().get(FIN_FinancialAccount.class,
-          strAccountId);
+      FIN_FinancialAccount account = OBDal.getInstance()
+          .get(FIN_FinancialAccount.class, strAccountId);
 
       if (payment != null) {
         final FIN_FinaccTransaction transaction = TransactionsDao.createFinAccTransaction(payment);
         transaction.setTransactionDate(transactionDate);
         transaction.setDateAcct(acctDate);
         transaction.setAccount(account);
-        transaction.setLineNo(TransactionsDao.getTransactionMaxLineNo(account) + 10);
         FIN_TransactionProcess.doTransactionProcess(ACTION_PROCESS_TRANSACTION, transaction);
       }
     } finally {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsProcessAfterProcessHook.java	Mon Feb 11 11:01:09 2019 +0100
@@ -0,0 +1,31 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.1  (the  "License"),  being   the  Mozilla   Public  License
+ * Version 1.1  with a permitted attribution clause; you may not  use this
+ * file except in compliance with the License. You  may  obtain  a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License  is  distributed  on  an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific  language  governing  rights  and  limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo SLU
+ * All portions are Copyright (C) 2016 Openbravo SLU
+ * All Rights Reserved.
+ * Contributor(s):  ______________________________________.
+ ************************************************************************
+ */
+package org.openbravo.advpaymentmngt.actionHandler;
+
+import org.codehaus.jettison.json.JSONObject;
+
+public abstract class AddMultiplePaymentsProcessAfterProcessHook {
+  private int priority = 100;
+
+  public abstract int executeHook(JSONObject data);
+
+  public int getPriority() {
+    return priority;
+  }
+}
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddPaymentActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddPaymentActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -30,6 +30,8 @@
 import javax.servlet.ServletException;
 
 import org.apache.commons.lang.StringUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.codehaus.jettison.json.JSONArray;
 import org.codehaus.jettison.json.JSONException;
 import org.codehaus.jettison.json.JSONObject;
@@ -77,11 +79,9 @@
 import org.openbravo.service.db.DalConnectionProvider;
 import org.openbravo.service.db.DbUtility;
 import org.openbravo.service.json.JsonUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class AddPaymentActionHandler extends BaseProcessActionHandler {
-  final private static Logger log = LoggerFactory.getLogger(AddPaymentActionHandler.class);
+  final private static Logger log = LogManager.getLogger();
 
   @Override
   protected JSONObject doExecute(Map<String, Object> parameters, String content) {
@@ -106,7 +106,8 @@
       String strOrgId = null;
       if (jsonparams.has("ad_org_id") && jsonparams.get("ad_org_id") != JSONObject.NULL) {
         strOrgId = jsonparams.getString("ad_org_id");
-      } else if (jsonRequest.has("inpadOrgId") && jsonRequest.get("inpadOrgId") != JSONObject.NULL) {
+      } else if (jsonRequest.has("inpadOrgId")
+          && jsonRequest.get("inpadOrgId") != JSONObject.NULL) {
         strOrgId = jsonRequest.getString("inpadOrgId");
       }
       Organization org = OBDal.getInstance().get(Organization.class, strOrgId);
@@ -114,15 +115,15 @@
 
       // Action to do
       final String strActionId = jsonparams.getString("document_action");
-      final org.openbravo.model.ad.domain.List actionList = OBDal.getInstance().get(
-          org.openbravo.model.ad.domain.List.class, strActionId);
+      final org.openbravo.model.ad.domain.List actionList = OBDal.getInstance()
+          .get(org.openbravo.model.ad.domain.List.class, strActionId);
       final String strAction = actionList.getSearchKey();
 
       final String strCurrencyId = jsonparams.getString("c_currency_id");
       Currency currency = OBDal.getInstance().get(Currency.class, strCurrencyId);
       final String strBPartnerID = jsonparams.getString("received_from");
-      BusinessPartner businessPartner = OBDal.getInstance().get(BusinessPartner.class,
-          strBPartnerID);
+      BusinessPartner businessPartner = OBDal.getInstance()
+          .get(BusinessPartner.class, strBPartnerID);
       String strActualPayment = jsonparams.getString("actual_payment");
 
       // Format Date
@@ -243,8 +244,8 @@
 
   private FIN_Payment createNewPayment(JSONObject jsonparams, boolean isReceipt, Organization org,
       BusinessPartner bPartner, Date paymentDate, Currency currency, BigDecimal conversionRate,
-      BigDecimal convertedAmt, String strActualPayment) throws OBException, JSONException,
-      SQLException {
+      BigDecimal convertedAmt, String strActualPayment)
+      throws OBException, JSONException, SQLException {
 
     String strPaymentDocumentNo = jsonparams.getString("payment_documentno");
     String strReferenceNo = "";
@@ -252,18 +253,18 @@
       strReferenceNo = jsonparams.getString("reference_no");
     }
     String strFinancialAccountId = jsonparams.getString("fin_financial_account_id");
-    FIN_FinancialAccount finAccount = OBDal.getInstance().get(FIN_FinancialAccount.class,
-        strFinancialAccountId);
+    FIN_FinancialAccount finAccount = OBDal.getInstance()
+        .get(FIN_FinancialAccount.class, strFinancialAccountId);
     String strPaymentMethodId = jsonparams.getString("fin_paymentmethod_id");
-    FIN_PaymentMethod paymentMethod = OBDal.getInstance().get(FIN_PaymentMethod.class,
-        strPaymentMethodId);
+    FIN_PaymentMethod paymentMethod = OBDal.getInstance()
+        .get(FIN_PaymentMethod.class, strPaymentMethodId);
 
     boolean paymentDocumentEnabled = getDocumentConfirmation(finAccount, paymentMethod, isReceipt,
         strActualPayment, true);
     String strAction = (isReceipt ? "PRP" : "PPP");
     boolean documentEnabled = true;
-    if ((strAction.equals("PRD") || strAction.equals("PPW") || FIN_Utility
-        .isAutomaticDepositWithdrawn(finAccount, paymentMethod, isReceipt))
+    if ((strAction.equals("PRD") || strAction.equals("PPW")
+        || FIN_Utility.isAutomaticDepositWithdrawn(finAccount, paymentMethod, isReceipt))
         && new BigDecimal(strActualPayment).signum() != 0) {
       documentEnabled = paymentDocumentEnabled
           || getDocumentConfirmation(finAccount, paymentMethod, isReceipt, strActualPayment, false);
@@ -274,9 +275,10 @@
     DocumentType documentType = FIN_Utility.getDocumentType(org, isReceipt ? "ARR" : "APP");
     String strDocBaseType = documentType.getDocumentCategory();
 
-    OrganizationStructureProvider osp = OBContext.getOBContext().getOrganizationStructureProvider(
-        OBContext.getOBContext().getCurrentClient().getId());
-    boolean orgLegalWithAccounting = osp.getLegalEntityOrBusinessUnit(org).getOrganizationType()
+    OrganizationStructureProvider osp = OBContext.getOBContext()
+        .getOrganizationStructureProvider(OBContext.getOBContext().getCurrentClient().getId());
+    boolean orgLegalWithAccounting = osp.getLegalEntityOrBusinessUnit(org)
+        .getOrganizationType()
         .isLegalEntityWithAccounting();
     if (documentEnabled
         && !FIN_Utility.isPeriodOpen(OBContext.getOBContext().getCurrentClient().getId(),
@@ -339,7 +341,8 @@
         }
         // Manage negative amounts
         if ((remainingAmount.signum() > 0 && remainingAmount.compareTo(outstandingAmount) >= 0)
-            || (remainingAmount.signum() < 0 && remainingAmount.compareTo(outstandingAmount) <= 0)) {
+            || (remainingAmount.signum() < 0
+                && remainingAmount.compareTo(outstandingAmount) <= 0)) {
           assignAmount = outstandingAmount;
           remainingAmount = remainingAmount.subtract(outstandingAmount);
         } else {
@@ -398,13 +401,15 @@
         if (usedCreditAmt.compareTo(BigDecimal.ZERO) > 0) {
           // Set Credit description only when it is actually used
           final StringBuffer description = new StringBuffer();
-          if (creditPayment.getDescription() != null && !creditPayment.getDescription().equals("")) {
+          if (creditPayment.getDescription() != null
+              && !creditPayment.getDescription().equals("")) {
             description.append(creditPayment.getDescription()).append("\n");
           }
           description.append(String.format(OBMessageUtils.messageBD("APRM_CreditUsedPayment"),
               payment.getDocumentNo()));
-          String truncateDescription = (description.length() > 255) ? description.substring(0, 251)
-              .concat("...").toString() : description.toString();
+          String truncateDescription = (description.length() > 255)
+              ? description.substring(0, 251).concat("...").toString()
+              : description.toString();
           creditPayment.setDescription(truncateDescription);
           FIN_PaymentProcess.linkCreditPayment(payment, usedCreditAmt, creditPayment);
         }
@@ -413,8 +418,8 @@
     }
   }
 
-  private void addGLItems(FIN_Payment payment, JSONObject jsonparams) throws JSONException,
-      ServletException {
+  private void addGLItems(FIN_Payment payment, JSONObject jsonparams)
+      throws JSONException, ServletException {
     // Add GL Item lines
     JSONObject gLItemsGrid = jsonparams.getJSONObject("glitem");
     JSONArray addedGLITemsArray = gLItemsGrid.getJSONArray("_allRows");
@@ -504,14 +509,14 @@
 
       List<String> pdsIds = OBDao.getIDListFromOBObject(pd.getFINPaymentScheduleDetailList());
       for (String strPDSId : pdsIds) {
-        FIN_PaymentScheduleDetail psd = OBDal.getInstance().get(FIN_PaymentScheduleDetail.class,
-            strPDSId);
+        FIN_PaymentScheduleDetail psd = OBDal.getInstance()
+            .get(FIN_PaymentScheduleDetail.class, strPDSId);
 
         if (pd.getGLItem() == null) {
           List<FIN_PaymentScheduleDetail> outStandingPSDs = FIN_AddPayment.getOutstandingPSDs(psd);
           if (outStandingPSDs.size() == 0) {
-            FIN_PaymentScheduleDetail newOutstanding = (FIN_PaymentScheduleDetail) DalUtil.copy(
-                psd, false);
+            FIN_PaymentScheduleDetail newOutstanding = (FIN_PaymentScheduleDetail) DalUtil.copy(psd,
+                false);
             newOutstanding.setPaymentDetails(null);
             newOutstanding.setWriteoffAmount(BigDecimal.ZERO);
             newOutstanding.setAmount(psd.getAmount().add(psd.getWriteoffAmount()));
@@ -519,15 +524,17 @@
           } else {
             FIN_PaymentScheduleDetail outStandingPSD = outStandingPSDs.get(0);
             // First make sure outstanding amount is not equal zero
-            if (outStandingPSD.getAmount().add(psd.getAmount()).add(psd.getWriteoffAmount())
+            if (outStandingPSD.getAmount()
+                .add(psd.getAmount())
+                .add(psd.getWriteoffAmount())
                 .signum() == 0) {
               OBDal.getInstance().remove(outStandingPSD);
             } else {
               // update existing PD with difference
-              outStandingPSD.setAmount(outStandingPSD.getAmount().add(psd.getAmount())
-                  .add(psd.getWriteoffAmount()));
-              outStandingPSD.setDoubtfulDebtAmount(outStandingPSD.getDoubtfulDebtAmount().add(
-                  psd.getDoubtfulDebtAmount()));
+              outStandingPSD.setAmount(
+                  outStandingPSD.getAmount().add(psd.getAmount()).add(psd.getWriteoffAmount()));
+              outStandingPSD.setDoubtfulDebtAmount(
+                  outStandingPSD.getDoubtfulDebtAmount().add(psd.getDoubtfulDebtAmount()));
               OBDal.getInstance().save(outStandingPSD);
             }
           }
@@ -568,9 +575,8 @@
 
     OBError message = FIN_AddPayment.processPayment(vars, conn,
         (strAction.equals("PRP") || strAction.equals("PPP")) ? "P" : "D", payment, comingFrom);
-    String strNewPaymentMessage = OBMessageUtils.parseTranslation("@PaymentCreated@" + " "
-        + payment.getDocumentNo())
-        + ".";
+    String strNewPaymentMessage = OBMessageUtils
+        .parseTranslation("@PaymentCreated@" + " " + payment.getDocumentNo()) + ".";
     if (!"Error".equalsIgnoreCase(message.getType())) {
       message.setMessage(strNewPaymentMessage + " " + message.getMessage());
       message.setType(message.getType().toLowerCase());
@@ -601,8 +607,8 @@
     }
 
     OBError auxMessage = FIN_AddPayment.processPayment(vars, conn,
-        (strAction.equals("PRP") || strAction.equals("PPP")) ? "P" : "D", refundPayment,
-        comingFrom, strSelectedCreditLinesIds);
+        (strAction.equals("PRP") || strAction.equals("PPP")) ? "P" : "D", refundPayment, comingFrom,
+        strSelectedCreditLinesIds);
     if (newPayment && !"Error".equalsIgnoreCase(auxMessage.getType())) {
       final String strNewRefundPaymentMessage = OBMessageUtils
           .parseTranslation("@APRM_RefundPayment@" + ": " + refundPayment.getDocumentNo()) + ".";
@@ -625,8 +631,8 @@
     where.append(" where psd." + FIN_PaymentScheduleDetail.PROPERTY_ID + " in (:psdSet)");
     where.append(" order by psd." + FIN_PaymentScheduleDetail.PROPERTY_PAYMENTDETAILS);
     where.append(", abs(psd." + FIN_PaymentScheduleDetail.PROPERTY_AMOUNT + ")");
-    OBQuery<FIN_PaymentScheduleDetail> orderedPSDs = OBDal.getInstance().createQuery(
-        FIN_PaymentScheduleDetail.class, where.toString());
+    OBQuery<FIN_PaymentScheduleDetail> orderedPSDs = OBDal.getInstance()
+        .createQuery(FIN_PaymentScheduleDetail.class, where.toString());
     orderedPSDs.setNamedParameter("psdSet", psdSet);
     return orderedPSDs.list();
   }
@@ -677,8 +683,8 @@
     boolean confirmation = false;
     OBContext.setAdminMode(true);
     try {
-      OBCriteria<FinAccPaymentMethod> obCriteria = OBDal.getInstance().createCriteria(
-          FinAccPaymentMethod.class);
+      OBCriteria<FinAccPaymentMethod> obCriteria = OBDal.getInstance()
+          .createCriteria(FinAccPaymentMethod.class);
       obCriteria.add(Restrictions.eq(FinAccPaymentMethod.PROPERTY_ACCOUNT, finAccount));
       obCriteria.add(Restrictions.eq(FinAccPaymentMethod.PROPERTY_PAYMENTMETHOD, finPaymentMethod));
       obCriteria.setFilterOnReadableClients(false);
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddPaymentDisplayLogicActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddPaymentDisplayLogicActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -26,6 +26,8 @@
 
 import javax.servlet.http.HttpSession;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.codehaus.jettison.json.JSONArray;
 import org.codehaus.jettison.json.JSONObject;
 import org.openbravo.client.application.Parameter;
@@ -36,12 +38,9 @@
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.erpCommon.utility.OBMessageUtils;
 import org.openbravo.service.db.DbUtility;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class AddPaymentDisplayLogicActionHandler extends BaseActionHandler {
-  private static final Logger log = LoggerFactory
-      .getLogger(AddPaymentDisplayLogicActionHandler.class);
+  private static final Logger log = LogManager.getLogger();
 
   @Override
   protected final JSONObject execute(Map<String, Object> parameters, String data) {
@@ -110,4 +109,4 @@
     }
     return retval;
   }
-}
\ No newline at end of file
+}
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddPaymentDocumentNoActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddPaymentDocumentNoActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -40,8 +40,9 @@
       final String strOrganization = jsonData.getString("organization");
       if (StringUtils.isNotEmpty(strOrganization)) {
         Organization organization = OBDal.getInstance().get(Organization.class, strOrganization);
-        strDocNo = FIN_Utility.getDocumentNo(organization, jsonData.getString("issotrx").toString()
-            .equals("true") ? "ARR" : "APP", "FIN_Payment", false);
+        strDocNo = FIN_Utility.getDocumentNo(organization,
+            jsonData.getString("issotrx").toString().equals("true") ? "ARR" : "APP", "FIN_Payment",
+            false);
       }
       result.put("payment_documentno", "<" + strDocNo + ">");
       return result;
@@ -49,4 +50,4 @@
       throw new OBException(e);
     }
   }
-}
\ No newline at end of file
+}
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddPaymentOnProcessActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddPaymentOnProcessActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -22,6 +22,8 @@
 import java.util.Map;
 
 import org.apache.commons.lang.StringUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.codehaus.jettison.json.JSONArray;
 import org.codehaus.jettison.json.JSONObject;
 import org.openbravo.advpaymentmngt.utility.FIN_Utility;
@@ -32,11 +34,9 @@
 import org.openbravo.model.common.businesspartner.BusinessPartner;
 import org.openbravo.model.financialmgmt.payment.FIN_FinancialAccount;
 import org.openbravo.service.db.DbUtility;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class AddPaymentOnProcessActionHandler extends BaseActionHandler {
-  private static Logger log = LoggerFactory.getLogger(AddPaymentOnProcessActionHandler.class);
+  private static Logger log = LogManager.getLogger();
 
   @Override
   protected JSONObject execute(Map<String, Object> parameters, String data) {
@@ -47,15 +47,15 @@
       final JSONObject jsonData = new JSONObject(data);
       boolean isReceipt = "true".equals(jsonData.getString("issotrx"));
       String strFinFinancialAccountId = jsonData.getString("finFinancialAccount");
-      FIN_FinancialAccount finFinancialAccount = OBDal.getInstance().get(
-          FIN_FinancialAccount.class, strFinFinancialAccountId);
+      FIN_FinancialAccount finFinancialAccount = OBDal.getInstance()
+          .get(FIN_FinancialAccount.class, strFinFinancialAccountId);
       String strBusinessPartnerId = null;
 
       if (jsonData.get("receivedFrom") != JSONObject.NULL) {
 
         strBusinessPartnerId = jsonData.getString("receivedFrom");
-        BusinessPartner businessPartner = OBDal.getInstance().get(BusinessPartner.class,
-            strBusinessPartnerId);
+        BusinessPartner businessPartner = OBDal.getInstance()
+            .get(BusinessPartner.class, strBusinessPartnerId);
         if (FIN_Utility.isBlockedBusinessPartner(businessPartner.getId(), isReceipt, 4)) {
           String strThebusinessPartner = OBMessageUtils.parseTranslation("@ThebusinessPartner@");
           String strBusinessPartnerBlocked = OBMessageUtils
@@ -99,8 +99,8 @@
         for (int i = 0; i < selectedPSDs.length(); i++) {
           JSONObject psdRow = selectedPSDs.getJSONObject(i);
           strBusinessPartnerId = psdRow.getString("businessPartner");
-          BusinessPartner businessPartner = OBDal.getInstance().get(BusinessPartner.class,
-              strBusinessPartnerId);
+          BusinessPartner businessPartner = OBDal.getInstance()
+              .get(BusinessPartner.class, strBusinessPartnerId);
           if (FIN_Utility.isBlockedBusinessPartner(businessPartner.getId(), isReceipt, 4)) {
             String strThebusinessPartner = OBMessageUtils.parseTranslation("@ThebusinessPartner@");
             String strBusinessPartnerBlocked = OBMessageUtils
@@ -139,4 +139,4 @@
     }
     return result;
   }
-}
\ No newline at end of file
+}
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddPaymentOrganizationActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddPaymentOrganizationActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -41,8 +41,10 @@
       final String strOrganization = jsonData.getString("organization");
       if (StringUtils.isNotEmpty(strOrganization)) {
         Organization organization = OBDal.getInstance().get(Organization.class, strOrganization);
-        currency = OBContext.getOBContext().getOrganizationStructureProvider()
-            .getLegalEntity(organization).getCurrency();
+        currency = OBContext.getOBContext()
+            .getOrganizationStructureProvider()
+            .getLegalEntity(organization)
+            .getCurrency();
       }
       result.put("currency", currency.getId());
       result.put("currencyIdIdentifier", currency.getIdentifier());
@@ -51,4 +53,4 @@
       throw new OBException(e);
     }
   }
-}
\ No newline at end of file
+}
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddPaymentReloadLabelsActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddPaymentReloadLabelsActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -22,6 +22,8 @@
 import java.util.Map;
 
 import org.apache.commons.lang.StringUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.codehaus.jettison.json.JSONObject;
 import org.hibernate.criterion.Restrictions;
 import org.openbravo.client.application.Parameter;
@@ -34,12 +36,9 @@
 import org.openbravo.model.ad.ui.Element;
 import org.openbravo.model.ad.ui.ElementTrl;
 import org.openbravo.service.db.DbUtility;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class AddPaymentReloadLabelsActionHandler extends BaseActionHandler {
-  private static final Logger log = LoggerFactory
-      .getLogger(AddPaymentReloadLabelsActionHandler.class);
+  private static final Logger log = LogManager.getLogger();
 
   @Override
   protected JSONObject execute(Map<String, Object> parameters, String data) {
@@ -58,9 +57,11 @@
       final Language lang = OBContext.getOBContext().getLanguage();
 
       final Element businessPartnerElement = OBDal.getInstance()
-          .get(Parameter.class, strBusinessPartner).getApplicationElement();
+          .get(Parameter.class, strBusinessPartner)
+          .getApplicationElement();
       final Element financialAccountElement = OBDal.getInstance()
-          .get(Parameter.class, strFinancialAccount).getApplicationElement();
+          .get(Parameter.class, strFinancialAccount)
+          .getApplicationElement();
 
       values.put("businessPartner", businessPartnerElement.get(labelProperty));
       values.put("financialAccount", financialAccountElement.get(labelProperty));
@@ -104,4 +105,4 @@
     }
     return result;
   }
-}
\ No newline at end of file
+}
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddTransactionActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddTransactionActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -23,6 +23,8 @@
 import java.util.Map;
 
 import org.apache.commons.lang.StringUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.codehaus.jettison.json.JSONArray;
 import org.codehaus.jettison.json.JSONObject;
 import org.openbravo.advpaymentmngt.utility.APRM_MatchingUtility;
@@ -52,11 +54,9 @@
 import org.openbravo.service.db.DalConnectionProvider;
 import org.openbravo.service.db.DbUtility;
 import org.openbravo.service.json.JsonUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class AddTransactionActionHandler extends BaseProcessActionHandler {
-  private static final Logger log = LoggerFactory.getLogger(AddTransactionActionHandler.class);
+  private static final Logger log = LogManager.getLogger();
 
   @Override
   protected JSONObject doExecute(Map<String, Object> parameters, String content) {
@@ -72,8 +72,9 @@
       final String strTransactionType = params.getString("trxtype");
       final String strTransactionDate = params.getString("trxdate");
       final Date transactionDate = JsonUtils.createDateFormat().parse(strTransactionDate);
-      final String selectedPaymentId = params.has("fin_payment_id") ? params
-          .getString("fin_payment_id") : "";
+      final String selectedPaymentId = params.has("fin_payment_id")
+          ? params.getString("fin_payment_id")
+          : "";
       final String strGLItemId = params.has("c_glitem_id") ? params.getString("c_glitem_id") : "";
       final String strDepositAmount = params.getString("depositamt");
       final String strWithdrawalamt = params.getString("withdrawalamt");
@@ -100,9 +101,9 @@
   }
 
   private void createAndMatchTransaction(String strTabId, String strFinancialAccountId,
-      String selectedPaymentId, String strTransactionType, String strGLItemId,
-      Date transactionDate, String strFinBankStatementLineId, String strDepositAmount,
-      String strWithdrawalamt, String strDescription, JSONObject params) throws Exception {
+      String selectedPaymentId, String strTransactionType, String strGLItemId, Date transactionDate,
+      String strFinBankStatementLineId, String strDepositAmount, String strWithdrawalamt,
+      String strDescription, JSONObject params) throws Exception {
     final VariablesSecureApp vars = RequestContext.get().getVariablesSecureApp();
     final ConnectionProvider conn = new DalConnectionProvider(false);
 
@@ -110,8 +111,8 @@
       OBContext.setAdminMode(true);
 
       Organization organization = null;
-      final FIN_FinancialAccount account = OBDal.getInstance().get(FIN_FinancialAccount.class,
-          strFinancialAccountId);
+      final FIN_FinancialAccount account = OBDal.getInstance()
+          .get(FIN_FinancialAccount.class, strFinancialAccountId);
       String description = "";
       GLItem glItem = null;
       FIN_Payment payment = null;
@@ -133,8 +134,8 @@
       UserDimension2 user2 = null;
       Costcenter costcenter = null;
 
-      final FIN_BankStatementLine bankStatementLine = OBDal.getInstance().get(
-          FIN_BankStatementLine.class, strFinBankStatementLineId);
+      final FIN_BankStatementLine bankStatementLine = OBDal.getInstance()
+          .get(FIN_BankStatementLine.class, strFinBankStatementLineId);
       // Accounting Dimensions
       final String strElement_OT = params.getString("ad_org_id");
       organization = OBDal.getInstance().get(Organization.class, strElement_OT);
@@ -171,8 +172,9 @@
         paymentAmt = FIN_Utility.getPaymentAmount(payment.isReceipt(),
             payment.getFinancialTransactionAmount());
         isReceipt = payment.isReceipt();
-        String paymentDescription = StringUtils.isNotBlank(payment.getDescription()) ? payment
-            .getDescription().replace("\n", ". ") : "";
+        String paymentDescription = StringUtils.isNotBlank(payment.getDescription())
+            ? payment.getDescription().replace("\n", ". ")
+            : "";
         description = StringUtils.isNotBlank(strDescription) ? strDescription : paymentDescription;
         paymentCurrency = payment.getCurrency();
         convertRate = payment.getFinancialTransactionConvertRate();
@@ -183,15 +185,15 @@
         depositAmt = new BigDecimal(strDepositAmount);
         paymentAmt = new BigDecimal(strWithdrawalamt);
         isReceipt = (depositAmt.compareTo(paymentAmt) >= 0);
-        description = (StringUtils.isBlank(strDescription) || strDescription.equals("null")) ? OBMessageUtils
-            .messageBD("APRM_GLItem") + ": " + glItem.getName()
+        description = (StringUtils.isBlank(strDescription) || strDescription.equals("null"))
+            ? OBMessageUtils.messageBD("APRM_GLItem") + ": " + glItem.getName()
             : strDescription;
       } else { // Bank Fee or transaction without payment and gl item
         depositAmt = new BigDecimal(strDepositAmount);
         paymentAmt = new BigDecimal(strWithdrawalamt);
         isReceipt = (depositAmt.compareTo(paymentAmt) >= 0);
-        description = StringUtils.isBlank(strDescription) ? OBMessageUtils
-            .messageBD("APRM_BankFee") : strDescription;
+        description = StringUtils.isBlank(strDescription) ? OBMessageUtils.messageBD("APRM_BankFee")
+            : strDescription;
       }
 
       APRM_MatchingUtility.createAndMatchFinancialTransaction(strFinancialAccountId,
@@ -203,4 +205,4 @@
       OBContext.restorePreviousMode();
     }
   }
-}
\ No newline at end of file
+}
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddTransactionOnChangePaymentActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddTransactionOnChangePaymentActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -22,14 +22,14 @@
 import java.math.BigDecimal;
 import java.util.Map;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.codehaus.jettison.json.JSONObject;
 import org.openbravo.advpaymentmngt.utility.FIN_Utility;
 import org.openbravo.client.kernel.BaseActionHandler;
 import org.openbravo.dal.core.OBContext;
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.model.financialmgmt.payment.FIN_Payment;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Handler in Match Statement window | Add new transaction, that controls the Payment field on
@@ -37,8 +37,7 @@
  * 
  */
 public class AddTransactionOnChangePaymentActionHandler extends BaseActionHandler {
-  private static final Logger log = LoggerFactory
-      .getLogger(AddTransactionOnChangePaymentActionHandler.class);
+  private static final Logger log = LogManager.getLogger();
 
   @Override
   protected JSONObject execute(Map<String, Object> parameters, String data) {
@@ -82,4 +81,4 @@
     return result;
   }
 
-}
\ No newline at end of file
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/CheckExistsOverissueBinForRFCShipmentWH.java	Mon Feb 11 11:01:09 2019 +0100
@@ -0,0 +1,72 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.1  (the  "License"),  being   the  Mozilla   Public  License
+ * Version 1.1  with a permitted attribution clause; you may not  use this
+ * file except in compliance with the License. You  may  obtain  a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License  is  distributed  on  an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific  language  governing  rights  and  limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo SLU
+ * All portions are Copyright (C) 2018 Openbravo SLU
+ * All Rights Reserved.
+ * Contributor(s):  ______________________________________.
+ ************************************************************************
+ */
+
+package org.openbravo.advpaymentmngt.actionHandler;
+
+import java.util.Map;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.codehaus.jettison.json.JSONObject;
+import org.openbravo.client.kernel.BaseActionHandler;
+import org.openbravo.dal.service.OBDal;
+import org.openbravo.dal.service.OBQuery;
+import org.openbravo.model.common.enterprise.Locator;
+
+public class CheckExistsOverissueBinForRFCShipmentWH extends BaseActionHandler {
+  private static final Logger log = LogManager.getLogger();
+
+  @Override
+  protected JSONObject execute(Map<String, Object> parameters, String data) {
+    JSONObject result = new JSONObject();
+    JSONObject errorMessage = new JSONObject();
+    try {
+      final JSONObject jsonData = new JSONObject(data);
+      final String warehouseId = jsonData.getString("warehouseId");
+      Locator overIssueBin = getOverissueBinForWarehouse(warehouseId);
+      result.put("overissueBin", overIssueBin != null ? overIssueBin.getId() : "");
+      result.put("storageBin$_identifier",
+          overIssueBin != null ? overIssueBin.getIdentifier() : "");
+    } catch (Exception e) {
+      log.error("Error parsing JSON Object.", e);
+      try {
+        errorMessage = new JSONObject();
+        errorMessage.put("severity", "error");
+        errorMessage.put("title", "Error");
+        errorMessage.put("text", "");
+        result.put("message", errorMessage);
+        result.put("overissueBin", "");
+        result.put("storageBin$_identifier", "");
+      } catch (Exception e2) {
+        log.error("Message could not be built", e2);
+      }
+    }
+    return result;
+  }
+
+  private Locator getOverissueBinForWarehouse(String warehouseId) {
+    StringBuilder sbHQL = new StringBuilder(" as sb");
+    sbHQL.append(" where sb.warehouse.id = :warehouseId");
+    sbHQL.append(" and sb.inventoryStatus.overissue = true");
+    OBQuery<Locator> sbQuery = OBDal.getInstance().createQuery(Locator.class, sbHQL.toString());
+    sbQuery.setNamedParameter("warehouseId", warehouseId);
+    sbQuery.setMaxResult(1);
+    return sbQuery.uniqueResult();
+  }
+}
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/CheckRecordChangedActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/CheckRecordChangedActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -25,6 +25,8 @@
 import java.util.Date;
 import java.util.Map;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.codehaus.jettison.json.JSONException;
 import org.codehaus.jettison.json.JSONObject;
 import org.openbravo.client.kernel.BaseActionHandler;
@@ -34,11 +36,9 @@
 import org.openbravo.erpCommon.utility.OBMessageUtils;
 import org.openbravo.model.financialmgmt.payment.FIN_BankStatementLine;
 import org.openbravo.service.json.JsonUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class CheckRecordChangedActionHandler extends BaseActionHandler {
-  private static final Logger log = LoggerFactory.getLogger(CheckRecordChangedActionHandler.class);
+  private static final Logger log = LogManager.getLogger();
 
   @Override
   protected JSONObject execute(Map<String, Object> parameters, String data) {
@@ -55,8 +55,8 @@
         date = xmlDateTimeFormat.parse(dateStr);
       } catch (ParseException e) {
       }
-      final FIN_BankStatementLine bsline = OBDal.getInstance().get(FIN_BankStatementLine.class,
-          strBankStatementLineId);
+      final FIN_BankStatementLine bsline = OBDal.getInstance()
+          .get(FIN_BankStatementLine.class, strBankStatementLineId);
       Date bbddBSLUpdated = bsline.getUpdated();
       // Remove milliseconds to compare against updated from UI
       Calendar calendar = Calendar.getInstance();
@@ -87,4 +87,4 @@
     }
     return result;
   }
-}
\ No newline at end of file
+}
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/DoubtFulDebtPickEditLines.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/DoubtFulDebtPickEditLines.java	Mon Feb 11 11:01:09 2019 +0100
@@ -25,7 +25,8 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.codehaus.jettison.json.JSONArray;
 import org.codehaus.jettison.json.JSONException;
 import org.codehaus.jettison.json.JSONObject;
@@ -48,7 +49,7 @@
 import org.openbravo.service.db.DbUtility;
 
 public class DoubtFulDebtPickEditLines extends BaseProcessActionHandler {
-  private static final Logger log = Logger.getLogger(DoubtFulDebtPickEditLines.class);
+  private static final Logger log = LogManager.getLogger();
 
   @Override
   protected JSONObject doExecute(Map<String, Object> parameters, String content) {
@@ -66,8 +67,8 @@
       // FIN_Doubtful_Debt_Run_ID instead because it always contains the id of the selected doubtful
       // debt run. Issue 20585: https://issues.openbravo.com/view.php?id=20585
       final String strDoubtFulDebtRunId = jsonRequest.getString("FIN_Doubtful_Debt_Run_ID");
-      final DoubtfulDebtRun doubtfulDebtRun = OBDal.getInstance().get(DoubtfulDebtRun.class,
-          strDoubtFulDebtRunId);
+      final DoubtfulDebtRun doubtfulDebtRun = OBDal.getInstance()
+          .get(DoubtfulDebtRun.class, strDoubtFulDebtRunId);
 
       if (doubtfulDebtRun != null) {
         List<String> idList = OBDao.getIDListFromOBObject(doubtfulDebtRun.getFINDoubtfulDebtList());
@@ -99,7 +100,8 @@
 
   private JSONObject createDoubtfulDebt(DoubtfulDebtRun doubtfulDebtRun, JSONObject jsonRequest,
       List<String> idList) throws JSONException {
-    final JSONArray selectedLines = jsonRequest.getJSONObject("_params").getJSONObject("grid")
+    final JSONArray selectedLines = jsonRequest.getJSONObject("_params")
+        .getJSONObject("grid")
         .getJSONArray("_selection");
     DocumentType documentType = null;
     Currency currency = null;
@@ -117,8 +119,8 @@
         String strDebtdId = selectedLine.getString("fINDoubtfulDebt");
         String strPaymentSchedule = selectedLine.getString("finPaymentSchedule");
         String strCurrency = selectedLine.getString("currency");
-        FIN_PaymentSchedule paymentSchedule = (FIN_PaymentSchedule) OBDal.getInstance().getProxy(
-            FIN_PaymentSchedule.ENTITY_NAME, strPaymentSchedule);
+        FIN_PaymentSchedule paymentSchedule = (FIN_PaymentSchedule) OBDal.getInstance()
+            .getProxy(FIN_PaymentSchedule.ENTITY_NAME, strPaymentSchedule);
         boolean notExistsDebtLine = idList.contains(strDebtdId);
         if (notExistsDebtLine) {
           newDoubtfulDebt = OBDal.getInstance().get(DoubtfulDebt.class, strDebtdId);
@@ -187,8 +189,8 @@
     parameters.add(client.getId());
     parameters.add(organization.getId());
     parameters.add("DDB");
-    String strDocTypeId = (String) CallStoredProcedure.getInstance().call("AD_GET_DOCTYPE",
-        parameters, null);
+    String strDocTypeId = (String) CallStoredProcedure.getInstance()
+        .call("AD_GET_DOCTYPE", parameters, null);
     if (strDocTypeId == null || "".equals(strDocTypeId)) {
       throw new OBException("@APRM_DoubtfulDebtNoDocument@");
     }
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/FindTransactionsToMatchActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/FindTransactionsToMatchActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -23,6 +23,8 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.codehaus.jettison.json.JSONArray;
 import org.codehaus.jettison.json.JSONObject;
 import org.openbravo.advpaymentmngt.dao.TransactionsDao;
@@ -34,12 +36,9 @@
 import org.openbravo.model.financialmgmt.payment.FIN_FinancialAccount;
 import org.openbravo.model.financialmgmt.payment.FIN_Reconciliation;
 import org.openbravo.service.db.DbUtility;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class FindTransactionsToMatchActionHandler extends BaseActionHandler {
-  private static final Logger log = LoggerFactory
-      .getLogger(FindTransactionsToMatchActionHandler.class);
+  private static final Logger log = LogManager.getLogger();
 
   @Override
   protected JSONObject execute(Map<String, Object> parameters, String data) {
@@ -49,8 +48,8 @@
       OBContext.setAdminMode(true);
       final JSONObject jsonData = new JSONObject(data);
       final JSONObject params = jsonData.getJSONObject("_params");
-      final JSONArray selection = params.getJSONObject("findtransactiontomatch").getJSONArray(
-          "_selection");
+      final JSONArray selection = params.getJSONObject("findtransactiontomatch")
+          .getJSONArray("_selection");
 
       if (selection.length() > 0) {
         final String strBankLineId = params.getString("bankStatementLineId");
@@ -59,18 +58,18 @@
           selectedTransactionIds.add(selection.getJSONObject(i).getString("id"));
         }
 
-        final FIN_FinancialAccount account = OBDal.getInstance().get(FIN_FinancialAccount.class,
-            jsonData.getString("inpfinFinancialAccountId"));
+        final FIN_FinancialAccount account = OBDal.getInstance()
+            .get(FIN_FinancialAccount.class, jsonData.getString("inpfinFinancialAccountId"));
         final FIN_Reconciliation reconciliation = TransactionsDao.getLastReconciliation(account,
             "N");
-        final FIN_BankStatementLine bankStatementLine = OBDal.getInstance().get(
-            FIN_BankStatementLine.class, strBankLineId);
-        APRM_MatchingUtility.matchBankStatementLine(bankStatementLine,
-            selectedTransactionIds, reconciliation, null, true);
+        final FIN_BankStatementLine bankStatementLine = OBDal.getInstance()
+            .get(FIN_BankStatementLine.class, strBankLineId);
+        APRM_MatchingUtility.matchBankStatementLine(bankStatementLine, selectedTransactionIds,
+            reconciliation, null, true);
 
       } else {
-        final JSONArray actions = APRM_MatchingUtility.createMessageInProcessView(
-            "@APRM_SELECT_RECORD_ERROR@", "error");
+        final JSONArray actions = APRM_MatchingUtility
+            .createMessageInProcessView("@APRM_SELECT_RECORD_ERROR@", "error");
         result.put("responseActions", actions);
         result.put("retryExecution", true);
       }
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/FundsTransferActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/FundsTransferActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -27,6 +27,8 @@
 import java.util.Map;
 
 import org.apache.commons.lang.StringUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.codehaus.jettison.json.JSONObject;
 import org.openbravo.advpaymentmngt.dao.TransactionsDao;
 import org.openbravo.advpaymentmngt.process.FIN_TransactionProcess;
@@ -43,8 +45,6 @@
 import org.openbravo.model.financialmgmt.payment.FIN_FinaccTransaction;
 import org.openbravo.model.financialmgmt.payment.FIN_FinancialAccount;
 import org.openbravo.service.json.JsonUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * This class implements the ability to transfer funds among financial accounts in a simple and
@@ -54,7 +54,7 @@
  */
 public class FundsTransferActionHandler extends BaseProcessActionHandler {
   private static final String ERROR_IN_PROCESS = "Error in process";
-  private static final Logger log = LoggerFactory.getLogger(FundsTransferActionHandler.class);
+  private static final Logger log = LogManager.getLogger();
   private static final String BP_DEPOSIT = "BPD";
   private static final String BP_WITHDRAWAL = "BPW";
   private static final String BANK_FEE = "BF";
@@ -73,13 +73,13 @@
 
       // Account from
       String strAccountFrom = request.getString("inpfinFinancialAccountId");
-      FIN_FinancialAccount accountFrom = OBDal.getInstance().get(FIN_FinancialAccount.class,
-          strAccountFrom);
+      FIN_FinancialAccount accountFrom = OBDal.getInstance()
+          .get(FIN_FinancialAccount.class, strAccountFrom);
 
       // Account to
       String strAccountTo = jsonParams.getString("fin_financial_account_id");
-      FIN_FinancialAccount accountTo = OBDal.getInstance().get(FIN_FinancialAccount.class,
-          strAccountTo);
+      FIN_FinancialAccount accountTo = OBDal.getInstance()
+          .get(FIN_FinancialAccount.class, strAccountTo);
 
       // GL item
       String strGLItem = jsonParams.getString("glitem");
@@ -118,15 +118,21 @@
 
       return getResponseBuilder()
           .showMsgInProcessView(MessageType.ERROR, OBMessageUtils.messageBD("error"),
-              e.getMessage(), true).retryExecution().build();
+              e.getMessage(), true)
+          .retryExecution()
+          .build();
     } catch (Exception e) {
       log.error(ERROR_IN_PROCESS, e);
-      return getResponseBuilder().showMsgInProcessView(MessageType.ERROR,
-          OBMessageUtils.messageBD("error"), OBMessageUtils.messageBD("APRM_UnknownError")).build();
+      return getResponseBuilder()
+          .showMsgInProcessView(MessageType.ERROR, OBMessageUtils.messageBD("error"),
+              OBMessageUtils.messageBD("APRM_UnknownError"))
+          .build();
     }
     return getResponseBuilder()
         .showMsgInProcessView(MessageType.SUCCESS, OBMessageUtils.messageBD("success"),
-            OBMessageUtils.messageBD("APRM_TransferFundsSuccess")).refreshGrid().build();
+            OBMessageUtils.messageBD("APRM_TransferFundsSuccess"))
+        .refreshGrid()
+        .build();
   }
 
   /**
@@ -219,8 +225,8 @@
       OBDal.getInstance().flush();
       processTransactions(transactions);
 
-      WeldUtils.getInstanceFromStaticBeanManager(FundsTransferHookCaller.class).executeHook(
-          transactions);
+      WeldUtils.getInstanceFromStaticBeanManager(FundsTransferHookCaller.class)
+          .executeHook(transactions);
 
     } catch (Exception e) {
       String message = OBMessageUtils.parseTranslation(e.getMessage());
@@ -264,7 +270,8 @@
     }
     // If the user has access to the Organization of the Financial Account, the Transaction is
     // created for it. If not, the Organization of the context is used instead
-    if (OBContext.getOBContext().getWritableOrganizations()
+    if (OBContext.getOBContext()
+        .getWritableOrganizations()
         .contains(account.getOrganization().getId())) {
       trx.setOrganization(account.getOrganization());
     } else {
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/FundsTransferOnChangeDepositToActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/FundsTransferOnChangeDepositToActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -20,16 +20,15 @@
 
 import java.util.Map;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.codehaus.jettison.json.JSONObject;
 import org.openbravo.client.kernel.BaseActionHandler;
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.model.financialmgmt.payment.FIN_FinancialAccount;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class FundsTransferOnChangeDepositToActionHandler extends BaseActionHandler {
-  private static final Logger log = LoggerFactory
-      .getLogger(FundsTransferOnChangeDepositToActionHandler.class);
+  private static final Logger log = LogManager.getLogger();
 
   @Override
   protected JSONObject execute(Map<String, Object> parameters, String data) {
@@ -40,8 +39,8 @@
       String accountID = jsonData.getString("accountID");
 
       if (accountID != null) {
-        FIN_FinancialAccount account = OBDal.getInstance().get(FIN_FinancialAccount.class,
-            accountID);
+        FIN_FinancialAccount account = OBDal.getInstance()
+            .get(FIN_FinancialAccount.class, accountID);
 
         if (account != null) {
           result.put("currencyID", account.getCurrency().getId());
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/GLItemTransactionActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/GLItemTransactionActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -74,4 +74,4 @@
 
     return result;
   }
-}
\ No newline at end of file
+}
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/MatchStatementActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/MatchStatementActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -20,6 +20,8 @@
 
 import java.util.Map;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.codehaus.jettison.json.JSONObject;
 import org.openbravo.advpaymentmngt.dao.TransactionsDao;
 import org.openbravo.advpaymentmngt.utility.APRM_MatchingUtility;
@@ -34,11 +36,9 @@
 import org.openbravo.model.financialmgmt.payment.FIN_Reconciliation;
 import org.openbravo.service.db.DalConnectionProvider;
 import org.openbravo.service.db.DbUtility;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class MatchStatementActionHandler extends BaseProcessActionHandler {
-  private static final Logger log = LoggerFactory.getLogger(MatchStatementActionHandler.class);
+  private static final Logger log = LogManager.getLogger();
   private static final String OK_ACTION = "OK";
 
   @Override
@@ -49,12 +49,13 @@
       JSONObject jsonRequest = new JSONObject(content);
       final String strFinancialAccount = jsonRequest.getString("Fin_Financial_Account_ID");
       final String action = jsonRequest.getString("_buttonValue");
-      if (OK_ACTION.equals(action))
+      if (OK_ACTION.equals(action)) {
         return jsonResponse;
-      final FIN_FinancialAccount finAccount = OBDal.getInstance().get(FIN_FinancialAccount.class,
-          strFinancialAccount);
-      final FIN_Reconciliation lastReconciliation = TransactionsDao.getLastReconciliation(
-          finAccount, "N");
+      }
+      final FIN_FinancialAccount finAccount = OBDal.getInstance()
+          .get(FIN_FinancialAccount.class, strFinancialAccount);
+      final FIN_Reconciliation lastReconciliation = TransactionsDao
+          .getLastReconciliation(finAccount, "N");
       if (APRM_MatchingUtility.updateReconciliation(lastReconciliation, finAccount, true)) {
         final VariablesSecureApp vars = RequestContext.get().getVariablesSecureApp();
         final JSONObject msg = new JSONObject();
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/MatchStatementOnLoadActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/MatchStatementOnLoadActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -23,6 +23,8 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.codehaus.jettison.json.JSONArray;
 import org.codehaus.jettison.json.JSONObject;
 import org.hibernate.ScrollableResults;
@@ -40,12 +42,9 @@
 import org.openbravo.model.financialmgmt.payment.FIN_Reconciliation;
 import org.openbravo.model.financialmgmt.payment.MatchingAlgorithm;
 import org.openbravo.service.db.DbUtility;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class MatchStatementOnLoadActionHandler extends BaseActionHandler {
-  private static final Logger log = LoggerFactory
-      .getLogger(MatchStatementOnLoadActionHandler.class);
+  private static final Logger log = LogManager.getLogger();
 
   @Override
   protected JSONObject execute(Map<String, Object> parameters, String content) {
@@ -61,12 +60,12 @@
       boolean executeAutoMatchingAlgm = "true".equals(parameters.get("executeMatching")) ? true
           : false;
 
-      final FIN_FinancialAccount financialAccount = OBDal.getInstance().get(
-          FIN_FinancialAccount.class, strFinancialAccountId);
+      final FIN_FinancialAccount financialAccount = OBDal.getInstance()
+          .get(FIN_FinancialAccount.class, strFinancialAccountId);
 
       /* Get the right reconciliation */
-      FIN_Reconciliation reconciliation = TransactionsDao.getLastReconciliation(OBDal.getInstance()
-          .get(FIN_FinancialAccount.class, strFinancialAccountId), "N");
+      FIN_Reconciliation reconciliation = TransactionsDao.getLastReconciliation(
+          OBDal.getInstance().get(FIN_FinancialAccount.class, strFinancialAccountId), "N");
       if (reconciliation == null) {
         // Create a new reconciliation
         reconciliation = APRM_MatchingUtility.addNewDraftReconciliation(financialAccount);
@@ -92,8 +91,8 @@
           actions = APRM_MatchingUtility.createMessageInProcessView("@APRM_AutomaticMatchedLines@",
               "success", matchedLines);
         } else {
-          actions = APRM_MatchingUtility.createMessageInProcessView(
-              "@APRM_NoAutomaticMatchedLines@", "warning");
+          actions = APRM_MatchingUtility
+              .createMessageInProcessView("@APRM_NoAutomaticMatchedLines@", "warning");
         }
         jsonResponse.put("responseActions", actions);
       }
@@ -138,8 +137,8 @@
       bankLinesSR.close();
       i = 0;
       for (i = 0; i < bankLines.size(); i++) {
-        final FIN_BankStatementLine bankStatementLine = OBDal.getInstance().get(
-            FIN_BankStatementLine.class, bankLines.get(i));
+        final FIN_BankStatementLine bankStatementLine = OBDal.getInstance()
+            .get(FIN_BankStatementLine.class, bankLines.get(i));
         FIN_MatchedTransaction matched;
         // try to match if exception is thrown continue
         try {
@@ -149,9 +148,8 @@
         }
 
         FIN_FinaccTransaction transaction = matched.getTransaction();
-        if (transaction != null
-            && APRM_MatchingUtility.matchBankStatementLine(bankStatementLine, transaction,
-                reconciliation, matched.getMatchLevel(), false)) {
+        if (transaction != null && APRM_MatchingUtility.matchBankStatementLine(bankStatementLine,
+            transaction, reconciliation, matched.getMatchLevel(), false)) {
           excluded.add(transaction);
           matchedLines++;
           // Required to persist current matching so that it is not rollbacked afterwards because
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/MatchStatementOnLoadGetPreferenceActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/MatchStatementOnLoadGetPreferenceActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -20,6 +20,8 @@
 
 import java.util.Map;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.codehaus.jettison.json.JSONException;
 import org.codehaus.jettison.json.JSONObject;
 import org.openbravo.client.kernel.BaseActionHandler;
@@ -27,12 +29,9 @@
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.dal.service.OBQuery;
 import org.openbravo.model.ad.domain.Preference;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class MatchStatementOnLoadGetPreferenceActionHandler extends BaseActionHandler {
-  private static final Logger log = LoggerFactory
-      .getLogger(MatchStatementOnLoadGetPreferenceActionHandler.class);
+  private static final Logger log = LogManager.getLogger();
 
   @Override
   protected JSONObject execute(Map<String, Object> parameters, String content) {
@@ -43,8 +42,8 @@
       whereClause.append(" as p ");
       whereClause.append(" where p.userContact.id = :userId");
       whereClause.append("   and p.attribute = 'APRM_NoPersistInfoMessageInMatching' ");
-      OBQuery<Preference> query = OBDal.getInstance().createQuery(Preference.class,
-          whereClause.toString());
+      OBQuery<Preference> query = OBDal.getInstance()
+          .createQuery(Preference.class, whereClause.toString());
       query.setNamedParameter("userId", OBContext.getOBContext().getUser().getId());
       for (Preference preference : query.list()) {
         jsonResponse.put("preference", preference.getSearchKey());
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/ModifyPaymentPlanActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/ModifyPaymentPlanActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -11,7 +11,7 @@
  * under the License.
  * The Original Code is Openbravo ERP.
  * The Initial Developer of the Original Code is Openbravo SLU
- * All portions are Copyright (C) 2012-2017 Openbravo SLU
+ * All portions are Copyright (C) 2012-2018 Openbravo SLU
  * All Rights Reserved.
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -28,7 +28,8 @@
 import java.util.Map;
 
 import org.apache.commons.lang.StringUtils;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.codehaus.jettison.json.JSONArray;
 import org.codehaus.jettison.json.JSONException;
 import org.codehaus.jettison.json.JSONObject;
@@ -36,14 +37,13 @@
 import org.hibernate.exception.ConstraintViolationException;
 import org.openbravo.advpaymentmngt.dao.AdvPaymentMngtDao;
 import org.openbravo.advpaymentmngt.process.FIN_PaymentMonitorProcess;
-import org.openbravo.base.secureApp.VariablesSecureApp;
+import org.openbravo.base.weld.WeldUtils;
 import org.openbravo.client.application.ApplicationConstants;
 import org.openbravo.client.application.process.BaseProcessActionHandler;
 import org.openbravo.client.kernel.KernelUtils;
-import org.openbravo.dal.core.OBContext;
 import org.openbravo.dal.service.OBCriteria;
 import org.openbravo.dal.service.OBDal;
-import org.openbravo.erpCommon.utility.Utility;
+import org.openbravo.erpCommon.utility.OBMessageUtils;
 import org.openbravo.model.ad.ui.Field;
 import org.openbravo.model.common.invoice.Invoice;
 import org.openbravo.model.financialmgmt.payment.FIN_Payment;
@@ -51,13 +51,12 @@
 import org.openbravo.model.financialmgmt.payment.FIN_PaymentMethod;
 import org.openbravo.model.financialmgmt.payment.FIN_PaymentSchedule;
 import org.openbravo.model.financialmgmt.payment.FIN_PaymentScheduleDetail;
-import org.openbravo.service.db.DalConnectionProvider;
 import org.openbravo.service.json.JsonToDataConverter;
 
 public class ModifyPaymentPlanActionHandler extends BaseProcessActionHandler {
 
   private final AdvPaymentMngtDao dao = new AdvPaymentMngtDao();
-  private static final Logger log4j = Logger.getLogger(ModifyPaymentPlanActionHandler.class);
+  private static final Logger log4j = LogManager.getLogger();
 
   @Override
   /**
@@ -81,7 +80,7 @@
 
       // TODO:Review if we should allow this option
       // if (paidAnyAmount(invoice)) {
-      // return addMessage(jsonRequest, "@APRM_AlreadyPaidInvoice@", "error");
+      // return addMessage(jsonRequest, "APRM_AlreadyPaidInvoice", "error");
       // }
 
       String errorMsg = validateGridAmounts(gridRows, invoice);
@@ -91,7 +90,7 @@
       }
       if (!validateInvoiceAmounts(invoice)) {
         OBDal.getInstance().rollbackAndClose();
-        return addMessage(jsonRequest, "@APRM_ExistingPlanIsNotCorrect@", "error");
+        return addMessage(jsonRequest, "APRM_ExistingPlanIsNotCorrect", "error");
       }
 
       List<JSONObject> lToCreate = getNewRows(gridRows);
@@ -101,6 +100,9 @@
       HashMap<FIN_PaymentSchedule, BigDecimal> orders = getOrders(lToRemove, lToModify);
       HashMap<FIN_PaymentDetail, BigDecimal> canceledPSDs = getCanceledPSDs(lToRemove, lToModify);
 
+      WeldUtils.getInstanceFromStaticBeanManager(ModifyPaymentPlanHookCaller.class)
+          .validatePaymentSchedule(lToModify);
+
       removeRows(lToRemove, invoice);
       List<FIN_PaymentSchedule> createdPSs = createRows(lToCreate, invoice);
       createdPSs = modifyRows(lToModify, gridRows, invoice, createdPSs);
@@ -109,16 +111,17 @@
 
       if (!ordersSumsZero(orders, invoice.getFINPaymentScheduleList().get(0))) {
         OBDal.getInstance().rollbackAndClose();
-        return addMessage(jsonRequest, "@APRM_AmountNotFullyAllocated@", "error");
+        return addMessage(jsonRequest, "APRM_AmountNotFullyAllocated", "error");
       }
 
       if (!validateInvoiceAmounts(invoice)) {
         OBDal.getInstance().rollbackAndClose();
-        return addMessage(jsonRequest, "@APRM_AmountMismatch@", "error");
+        return addMessage(jsonRequest, "APRM_AmountMismatch", "error");
       }
+
       // As a final step, Payment Monitor information for this invoice is updated.
       FIN_PaymentMonitorProcess.updateInvoice(invoice);
-      return addMessage(jsonRequest, "@Success@", "success");
+      return addMessage(jsonRequest, "Success", "success");
     } catch (ConstraintViolationException e) {
       OBDal.getInstance().rollbackAndClose();
       log4j.error("Exception! " + e);
@@ -134,7 +137,7 @@
         }
       }
       try {
-        return addMessage(jsonRequest, "@" + constraint + "@", "error");
+        return addMessage(jsonRequest, constraint, "error");
       } catch (Exception ex) {
         log4j.error("Exception! " + ex);
         return jsonRequest;
@@ -143,7 +146,7 @@
       OBDal.getInstance().rollbackAndClose();
       log4j.error("Exception! " + e);
       try {
-        return addMessage(jsonRequest, "@ProcessRunError@", "error");
+        return addMessage(jsonRequest, "ProcessRunError", e.getMessage(), "error");
       } catch (Exception ex) {
         log4j.error("Exception! " + ex);
         return jsonRequest;
@@ -275,7 +278,8 @@
    * invoice
    * 
    */
-  private void assignCanceled(Invoice invoice, HashMap<FIN_PaymentDetail, BigDecimal> canceledPSDs) {
+  private void assignCanceled(Invoice invoice,
+      HashMap<FIN_PaymentDetail, BigDecimal> canceledPSDs) {
 
     for (FIN_PaymentSchedule ps : invoice.getFINPaymentScheduleList()) {
       Iterator<FIN_PaymentDetail> ite = canceledPSDs.keySet().iterator();
@@ -297,8 +301,8 @@
    * 
    */
   private boolean existsPaymentScheduleDetail(FIN_PaymentDetail pd) {
-    OBCriteria<FIN_PaymentScheduleDetail> obcPSD = OBDal.getInstance().createCriteria(
-        FIN_PaymentScheduleDetail.class);
+    OBCriteria<FIN_PaymentScheduleDetail> obcPSD = OBDal.getInstance()
+        .createCriteria(FIN_PaymentScheduleDetail.class);
     obcPSD.add(Restrictions.eq(FIN_PaymentScheduleDetail.PROPERTY_PAYMENTDETAILS, pd));
     obcPSD.setMaxResults(1);
     return obcPSD.uniqueResult() != null;
@@ -342,10 +346,10 @@
     List<FIN_PaymentSchedule> lPSsToReturn = createdPSs;
     for (FIN_PaymentSchedule invoicePS : lToModify) {
       // 1) Remove not paid payment schedule detail lines
-      OBCriteria<FIN_PaymentScheduleDetail> obcPSD = OBDal.getInstance().createCriteria(
-          FIN_PaymentScheduleDetail.class);
-      obcPSD.add(Restrictions.eq(FIN_PaymentScheduleDetail.PROPERTY_INVOICEPAYMENTSCHEDULE,
-          invoicePS));
+      OBCriteria<FIN_PaymentScheduleDetail> obcPSD = OBDal.getInstance()
+          .createCriteria(FIN_PaymentScheduleDetail.class);
+      obcPSD.add(
+          Restrictions.eq(FIN_PaymentScheduleDetail.PROPERTY_INVOICEPAYMENTSCHEDULE, invoicePS));
       obcPSD.add(Restrictions.isNull(FIN_PaymentScheduleDetail.PROPERTY_PAYMENTDETAILS));
       for (FIN_PaymentScheduleDetail psd : obcPSD.list()) {
         invoicePS.getFINPaymentScheduleDetailInvoicePaymentScheduleList().remove(psd);
@@ -363,8 +367,8 @@
       BigDecimal outstanding = new BigDecimal(modifiedGridRow.getString("outstanding"));
       Date dueDate = getJSDate(modifiedGridRow.getString("dueDate"));
       Date expectedDate = getJSDate(modifiedGridRow.getString("expectedDate"));
-      FIN_PaymentMethod pm = OBDal.getInstance().get(FIN_PaymentMethod.class,
-          modifiedGridRow.getString("paymentMethod"));
+      FIN_PaymentMethod pm = OBDal.getInstance()
+          .get(FIN_PaymentMethod.class, modifiedGridRow.getString("paymentMethod"));
       invoicePS.setOutstandingAmount(outstanding);
       invoicePS.setAmount(invoicePS.getPaidAmount().add(outstanding));
       invoicePS.setDueDate(dueDate);
@@ -420,8 +424,8 @@
     List<FIN_PaymentSchedule> lToReturn = new ArrayList<FIN_PaymentSchedule>();
     for (JSONObject jo : lToCreate) {
       BigDecimal outstanding = new BigDecimal(jo.getString("outstanding"));
-      FIN_PaymentMethod paymentMethod = OBDal.getInstance().get(FIN_PaymentMethod.class,
-          jo.getString("paymentMethod"));
+      FIN_PaymentMethod paymentMethod = OBDal.getInstance()
+          .get(FIN_PaymentMethod.class, jo.getString("paymentMethod"));
       String dueDate = jo.getString("dueDate");
       String expectedDate = jo.getString("expectedDate");
       FIN_PaymentSchedule invoicePS = dao.getNewPaymentSchedule(invoice.getClient(),
@@ -452,8 +456,8 @@
     for (FIN_PaymentSchedule ps : lDBRowsToDeleteOrModify) {
       for (FIN_PaymentScheduleDetail psd : ps
           .getFINPaymentScheduleDetailInvoicePaymentScheduleList()) {
-        FIN_Payment payment = (psd.getPaymentDetails() == null) ? null : psd.getPaymentDetails()
-            .getFinPayment();
+        FIN_Payment payment = (psd.getPaymentDetails() == null) ? null
+            : psd.getPaymentDetails().getFinPayment();
         if (!psd.isCanceled() && payment == null) {
           FIN_PaymentSchedule ops = psd.getOrderPaymentSchedule();
           BigDecimal amount = BigDecimal.ZERO;
@@ -500,8 +504,8 @@
    */
   private List<FIN_PaymentSchedule> getDatabaseRows(Invoice invoice) {
     List<FIN_PaymentSchedule> lQuery, lReturn = new ArrayList<FIN_PaymentSchedule>();
-    OBCriteria<FIN_PaymentSchedule> obcPS = OBDal.getInstance().createCriteria(
-        FIN_PaymentSchedule.class);
+    OBCriteria<FIN_PaymentSchedule> obcPS = OBDal.getInstance()
+        .createCriteria(FIN_PaymentSchedule.class);
     obcPS.add(Restrictions.eq(FIN_PaymentSchedule.PROPERTY_INVOICE, invoice));
     lQuery = obcPS.list();
     for (FIN_PaymentSchedule ps : lQuery) {
@@ -599,7 +603,8 @@
    * @throws JSONException
    */
   private boolean wasModified(FIN_PaymentSchedule ps, JSONObject jsonObject) throws JSONException {
-    if (new BigDecimal(jsonObject.getString("outstanding")).compareTo(ps.getOutstandingAmount()) != 0) {
+    if (new BigDecimal(jsonObject.getString("outstanding"))
+        .compareTo(ps.getOutstandingAmount()) != 0) {
       return true;
     }
     if (!jsonObject.getString("paymentMethod").equals(ps.getFinPaymentmethod().getId())) {
@@ -619,11 +624,12 @@
    * 
    */
   private static Date getJSDate(String strDate) {
-    if (strDate.equals(""))
+    if (strDate.equals("")) {
       return null;
+    }
     Field field = OBDal.getInstance().get(Field.class, "B6BB67AE51F31BEBE040A8C091666000");
-    Date date = (Date) JsonToDataConverter.convertJsonToPropertyValue(KernelUtils.getInstance()
-        .getPropertyFromColumn(field.getColumn()), strDate);
+    Date date = (Date) JsonToDataConverter.convertJsonToPropertyValue(
+        KernelUtils.getInstance().getPropertyFromColumn(field.getColumn()), strDate);
     return date;
   }
 
@@ -634,14 +640,23 @@
    */
   private JSONObject addMessage(JSONObject content, String strMessage, String strSeverity)
       throws JSONException {
+    return addMessage(content, "", strMessage, strSeverity);
+  }
+
+  /**
+   * Given a JSONObject to be returned, it adds a message to it
+   * 
+   * @throws JSONException
+   */
+  private JSONObject addMessage(JSONObject content, String strTitle, String strMessage,
+      String strSeverity) throws JSONException {
     JSONObject outPut = content;
     JSONObject message = new JSONObject();
     message.put("severity", strSeverity);
-    message.put("text", Utility.parseTranslation(new DalConnectionProvider(),
-        new VariablesSecureApp(OBContext.getOBContext().getUser().getId(), OBContext.getOBContext()
-            .getCurrentClient().getId(), OBContext.getOBContext().getCurrentOrganization().getId(),
-            OBContext.getOBContext().getRole().getId()), OBContext.getOBContext().getLanguage()
-            .getLanguage(), strMessage));
+    if (!StringUtils.isEmpty(strTitle)) {
+      message.put("title", OBMessageUtils.messageBD(strTitle));
+    }
+    message.put("text", OBMessageUtils.messageBD(strMessage));
     outPut.put("message", message);
     return outPut;
   }
@@ -681,18 +696,20 @@
    * @throws JSONException
    */
   private String validateGridAmounts(JSONArray gridRows, Invoice invoice) throws JSONException {
-    boolean positive = invoice.getFINPaymentScheduleList().get(0).getAmount()
+    boolean positive = invoice.getFINPaymentScheduleList()
+        .get(0)
+        .getAmount()
         .compareTo(BigDecimal.ZERO) >= 0;
     for (int indGrid = 0; indGrid < gridRows.length(); indGrid++) {
       JSONObject jo = gridRows.getJSONObject(indGrid);
       BigDecimal outstanding = new BigDecimal(jo.getString("outstanding"));
       BigDecimal awaitingExecution = new BigDecimal(jo.getString("awaitingExecutionAmount"));
       if (awaitingExecution.abs().compareTo(outstanding.abs()) > 0) {
-        return "@APRM_AwaitingExecutionAmountError@";
+        return "APRM_AwaitingExecutionAmountError";
       }
       if (outstanding.compareTo(BigDecimal.ZERO) != 0
           && (positive != (outstanding.compareTo(BigDecimal.ZERO) > 0))) {
-        return "@APRM_DifferentSignError@";
+        return "APRM_DifferentSignError";
       }
     }
     return null;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/ModifyPaymentPlanHookCaller.java	Mon Feb 11 11:01:09 2019 +0100
@@ -0,0 +1,45 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.1  (the  "License"),  being   the  Mozilla   Public  License
+ * Version 1.1  with a permitted attribution clause; you may not  use this
+ * file except in compliance with the License. You  may  obtain  a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License  is  distributed  on  an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific  language  governing  rights  and  limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo SLU
+ * All portions are Copyright (C) 2018 Openbravo SLU
+ * All Rights Reserved.
+ * Contributor(s):  ______________________________________.
+ ************************************************************************
+ */
+package org.openbravo.advpaymentmngt.actionHandler;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.enterprise.inject.Any;
+import javax.enterprise.inject.Instance;
+import javax.inject.Inject;
+
+import org.openbravo.advpaymentmngt.ModifyPaymentPlanHook;
+import org.openbravo.base.exception.OBException;
+import org.openbravo.model.financialmgmt.payment.FIN_PaymentSchedule;
+
+public class ModifyPaymentPlanHookCaller {
+
+  @Inject
+  @Any
+  private Instance<ModifyPaymentPlanHook> hooks;
+
+  public void validatePaymentSchedule(List<FIN_PaymentSchedule> modifiedPaymentSchedule)
+      throws OBException {
+    for (Iterator<ModifyPaymentPlanHook> procIter = hooks.iterator(); procIter.hasNext();) {
+      ModifyPaymentPlanHook proc = procIter.next();
+      proc.validatePaymentSchedule(modifiedPaymentSchedule);
+    }
+  }
+}
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/PaymentMethodMulticurrencyActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/PaymentMethodMulticurrencyActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -56,8 +56,8 @@
 
       if ("null".equals(currencyId) && !"null".equals(financialAccountId)
           && !"".equals(financialAccountId)) {
-        FIN_FinancialAccount financialAccount = OBDal.getInstance().get(FIN_FinancialAccount.class,
-            financialAccountId);
+        FIN_FinancialAccount financialAccount = OBDal.getInstance()
+            .get(FIN_FinancialAccount.class, financialAccountId);
         currencyId = financialAccount.getCurrency().getId();
         result.put("currencyIdIdentifier", financialAccount.getCurrency().getIdentifier());
         result.put("currencyId", currencyId);
@@ -80,10 +80,11 @@
         if (finAccPaymentMethod.getAccount().getCurrency().getId().equals(currencyId)) {
           result.put("conversionrate", 1);
         } else {
-          ConversionRate convRate = FinancialUtils.getConversionRate(paymentDate, OBDal
-              .getInstance().get(Currency.class, currencyId), finAccPaymentMethod.getAccount()
-              .getCurrency(), OBDal.getInstance().get(Organization.class, strOrgId), OBDal
-              .getInstance().get(Organization.class, strOrgId).getClient());
+          ConversionRate convRate = FinancialUtils.getConversionRate(paymentDate,
+              OBDal.getInstance().get(Currency.class, currencyId),
+              finAccPaymentMethod.getAccount().getCurrency(),
+              OBDal.getInstance().get(Organization.class, strOrgId),
+              OBDal.getInstance().get(Organization.class, strOrgId).getClient());
           if (convRate != null) {
             result.put("conversionrate", convRate.getMultipleRateBy());
           } else {
@@ -92,8 +93,8 @@
           }
         }
         result.put("currencyToId", finAccPaymentMethod.getAccount().getCurrency().getId());
-        result.put("currencyToIdentifier", finAccPaymentMethod.getAccount().getCurrency()
-            .getIdentifier());
+        result.put("currencyToIdentifier",
+            finAccPaymentMethod.getAccount().getCurrency().getIdentifier());
       } else {
         result.put("conversionrate", 1);
         result.put("currencyToId", currencyId);
@@ -110,8 +111,8 @@
       if (finAccPaymentMethod.getAccount().getCurrency().getId().equals(currencyId)) {
         return isSOTrx ? finAccPaymentMethod.isPayinAllow() : finAccPaymentMethod.isPayoutAllow();
       } else {
-        return isSOTrx ? finAccPaymentMethod.isPayinIsMulticurrency() : finAccPaymentMethod
-            .isPayoutIsMulticurrency();
+        return isSOTrx ? finAccPaymentMethod.isPayinIsMulticurrency()
+            : finAccPaymentMethod.isPayoutIsMulticurrency();
       }
     } else {
       return false;
@@ -122,8 +123,8 @@
       String financialAccountId) {
     OBContext.setAdminMode(true);
     try {
-      OBCriteria<FinAccPaymentMethod> obc = OBDal.getInstance().createCriteria(
-          FinAccPaymentMethod.class);
+      OBCriteria<FinAccPaymentMethod> obc = OBDal.getInstance()
+          .createCriteria(FinAccPaymentMethod.class);
       obc.setFilterOnReadableOrganization(false);
       obc.setMaxResults(1);
       obc.add(Restrictions.eq(FinAccPaymentMethod.PROPERTY_ACCOUNT,
@@ -135,4 +136,4 @@
       OBContext.restorePreviousMode();
     }
   }
-}
\ No newline at end of file
+}
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/PaymentProposalPickEditLines.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/PaymentProposalPickEditLines.java	Mon Feb 11 11:01:09 2019 +0100
@@ -24,7 +24,8 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.codehaus.jettison.json.JSONArray;
 import org.codehaus.jettison.json.JSONException;
 import org.codehaus.jettison.json.JSONObject;
@@ -41,7 +42,7 @@
 import org.openbravo.model.financialmgmt.payment.FIN_PaymentScheduleDetail;
 
 public class PaymentProposalPickEditLines extends BaseProcessActionHandler {
-  private static Logger log = Logger.getLogger(PaymentProposalPickEditLines.class);
+  private static Logger log = LogManager.getLogger();
 
   @Override
   protected JSONObject doExecute(Map<String, Object> parameters, String content) {
@@ -56,15 +57,16 @@
       // instead because it always contains the id of the selected order.
       // Issue 20585: https://issues.openbravo.com/view.php?id=20585
       final String strPaymentProposalId = jsonRequest.getString("Fin_Payment_Proposal_ID");
-      FIN_PaymentProposal paymentProposal = OBDal.getInstance().get(FIN_PaymentProposal.class,
-          strPaymentProposalId);
+      FIN_PaymentProposal paymentProposal = OBDal.getInstance()
+          .get(FIN_PaymentProposal.class, strPaymentProposalId);
       final String strPaymentMethodId = jsonRequest.getString("inpfinPaymentmethodId");
-      FIN_PaymentMethod paymentMethod = OBDal.getInstance().get(FIN_PaymentMethod.class,
-          strPaymentMethodId);
+      FIN_PaymentMethod paymentMethod = OBDal.getInstance()
+          .get(FIN_PaymentMethod.class, strPaymentMethodId);
 
-      List<String> idList = OBDao.getIDListFromOBObject(paymentProposal
-          .getFINPaymentPropDetailList());
-      HashMap<String, String> map = createPaymentProposalDetails(jsonRequest, paymentMethod, idList);
+      List<String> idList = OBDao
+          .getIDListFromOBObject(paymentProposal.getFINPaymentPropDetailList());
+      HashMap<String, String> map = createPaymentProposalDetails(jsonRequest, paymentMethod,
+          idList);
       jsonRequest = new JSONObject();
 
       JSONObject errorMessage = new JSONObject();
@@ -107,8 +109,8 @@
     JSONObject grid = jsonRequest.getJSONObject("_params").getJSONObject("grid");
     JSONArray selectedLines = grid.getJSONArray("_selection");
     final String strPaymentProposalId = jsonRequest.getString("Fin_Payment_Proposal_ID");
-    FIN_PaymentProposal paymentProposal = OBDal.getInstance().get(FIN_PaymentProposal.class,
-        strPaymentProposalId);
+    FIN_PaymentProposal paymentProposal = OBDal.getInstance()
+        .get(FIN_PaymentProposal.class, strPaymentProposalId);
     // if no lines selected don't do anything.
     if (selectedLines.length() == 0) {
       removeNonSelectedLines(idList, paymentProposal);
@@ -123,8 +125,8 @@
       BigDecimal paidAmount = new BigDecimal(selectedLine.getString("payment"));
 
       if (paidAmount.compareTo(BigDecimal.ZERO) != 0) {
-        FIN_PaymentMethod linePaymentMethod = OBDal.getInstance().get(FIN_PaymentMethod.class,
-            selectedLine.getString("paymentMethod"));
+        FIN_PaymentMethod linePaymentMethod = OBDal.getInstance()
+            .get(FIN_PaymentMethod.class, selectedLine.getString("paymentMethod"));
         if (!paymentMethod.equals(linePaymentMethod)) {
           differentPaymentMethod = "true";
         }
@@ -144,8 +146,8 @@
         newPPD.setCreatedBy(paymentProposal.getCreatedBy());
         newPPD.setUpdatedBy(paymentProposal.getUpdatedBy());
         newPPD.setFinPaymentProposal(paymentProposal);
-        newPPD.setFINPaymentScheduledetail(OBDal.getInstance().get(FIN_PaymentScheduleDetail.class,
-            selectedLine.getString("paymentScheduleDetail")));
+        newPPD.setFINPaymentScheduledetail(OBDal.getInstance()
+            .get(FIN_PaymentScheduleDetail.class, selectedLine.getString("paymentScheduleDetail")));
         BigDecimal difference = new BigDecimal(selectedLine.getString("difference"));
         boolean writeOff = selectedLine.getString("writeoff").equals("true");
         newPPD.setAmount(paidAmount);
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/ReceivedFromPaymentMethodActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/ReceivedFromPaymentMethodActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -39,8 +39,8 @@
     try {
       final JSONObject jsonData = new JSONObject(data);
       JSONObject result = new JSONObject();
-      FIN_FinancialAccount financialAccount = OBDal.getInstance().get(FIN_FinancialAccount.class,
-          jsonData.getString("financialAccount"));
+      FIN_FinancialAccount financialAccount = OBDal.getInstance()
+          .get(FIN_FinancialAccount.class, jsonData.getString("financialAccount"));
       FIN_PaymentMethod paymentMethod = null;
       String paymentMethodId = "";
       String paymentMethodName = "";
@@ -48,8 +48,8 @@
       if (financialAccount != null) {
         if (jsonData.has("receivedFrom") && jsonData.get("receivedFrom") != JSONObject.NULL) {
           final String receivedFrom = jsonData.getString("receivedFrom");
-          BusinessPartner businessPartner = OBDal.getInstance().get(BusinessPartner.class,
-              receivedFrom);
+          BusinessPartner businessPartner = OBDal.getInstance()
+              .get(BusinessPartner.class, receivedFrom);
           if (jsonData.getString("isSOTrx").toString().equals("true")) {
             paymentMethod = businessPartner.getPaymentMethod();
           } else {
@@ -57,8 +57,8 @@
           }
 
           if (paymentMethod != null) {
-            OBCriteria<FinAccPaymentMethod> criteria = OBDal.getInstance().createCriteria(
-                FinAccPaymentMethod.class);
+            OBCriteria<FinAccPaymentMethod> criteria = OBDal.getInstance()
+                .createCriteria(FinAccPaymentMethod.class);
             criteria.add(Restrictions.eq(FinAccPaymentMethod.PROPERTY_ACCOUNT, financialAccount));
             criteria
                 .add(Restrictions.eq(FinAccPaymentMethod.PROPERTY_PAYMENTMETHOD, paymentMethod));
@@ -82,4 +82,4 @@
       throw new OBException(e);
     }
   }
-}
\ No newline at end of file
+}
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/UnMatchSelectedTransactionsActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/UnMatchSelectedTransactionsActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -27,6 +27,8 @@
 import java.util.Map;
 
 import org.apache.commons.lang.StringUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.codehaus.jettison.json.JSONArray;
 import org.codehaus.jettison.json.JSONObject;
 import org.openbravo.advpaymentmngt.utility.APRM_MatchingUtility;
@@ -40,12 +42,9 @@
 import org.openbravo.service.db.DbUtility;
 import org.openbravo.service.json.JsonUtils;
 import org.openbravo.service.json.OBStaleObjectException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class UnMatchSelectedTransactionsActionHandler extends BaseActionHandler {
-  private static final Logger log = LoggerFactory
-      .getLogger(UnMatchSelectedTransactionsActionHandler.class);
+  private static final Logger log = LogManager.getLogger();
 
   @Override
   protected JSONObject execute(Map<String, Object> parameters, String data) {
@@ -71,8 +70,8 @@
         } else {
           try {
             Date date = xmlDateTimeFormat.parse(bankStatementLine.getString("bslUpdated"));
-            final FIN_BankStatementLine bsline = OBDal.getInstance().get(
-                FIN_BankStatementLine.class, bankStatementLine.getString("id"));
+            final FIN_BankStatementLine bsline = OBDal.getInstance()
+                .get(FIN_BankStatementLine.class, bankStatementLine.getString("id"));
             Date bbddBSLUpdated = bsline.getUpdated();
             // Remove milis
             Calendar calendar = Calendar.getInstance();
@@ -148,4 +147,4 @@
     }
     return result;
   }
-}
\ No newline at end of file
+}
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/UnMatchTransactionActionHandler.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/UnMatchTransactionActionHandler.java	Mon Feb 11 11:01:09 2019 +0100
@@ -25,6 +25,8 @@
 import java.util.Date;
 import java.util.Map;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.codehaus.jettison.json.JSONObject;
 import org.openbravo.advpaymentmngt.utility.APRM_MatchingUtility;
 import org.openbravo.client.kernel.BaseActionHandler;
@@ -37,11 +39,9 @@
 import org.openbravo.service.db.DbUtility;
 import org.openbravo.service.json.JsonUtils;
 import org.openbravo.service.json.OBStaleObjectException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class UnMatchTransactionActionHandler extends BaseActionHandler {
-  private static final Logger log = LoggerFactory.getLogger(UnMatchTransactionActionHandler.class);
+  private static final Logger log = LogManager.getLogger();
 
   @Override
   protected JSONObject execute(Map<String, Object> parameters, String data) {
@@ -58,8 +58,8 @@
         date = xmlDateTimeFormat.parse(dateStr);
       } catch (ParseException e) {
       }
-      final FIN_BankStatementLine bsline = OBDal.getInstance().get(FIN_BankStatementLine.class,
-          strBankStatementLineId);
+      final FIN_BankStatementLine bsline = OBDal.getInstance()
+          .get(FIN_BankStatementLine.class, strBankStatementLineId);
       Date bbddBSLUpdated = bsline.getUpdated();
       // Remove milis
       Calendar calendar = Calendar.getInstance();
@@ -93,4 +93,4 @@
     return result;
   }
 
-}
\ No newline at end of file
+}
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice.java	Mon Feb 11 11:01:09 2019 +0100
@@ -79,6 +79,7 @@
   private AdvPaymentMngtDao dao;
   private static final RequestFilter filterYesNo = new ValueListFilter("Y", "N", "");
 
+  @Override
   public void doPost(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
     VariablesSecureApp vars = new VariablesSecureApp(request);
@@ -87,8 +88,8 @@
     if (vars.commandIn("DEFAULT")) {
       String strWindowId = vars.getGlobalVariable("inpwindowId", "AddOrderOrInvoice|Window_ID");
       String strTabId = vars.getGlobalVariable("inpTabId", "AddOrderOrInvoice|Tab_ID");
-      String strPaymentId = vars.getGlobalVariable("inpfinPaymentId", strWindowId + "|"
-          + "FIN_Payment_ID");
+      String strPaymentId = vars.getGlobalVariable("inpfinPaymentId",
+          strWindowId + "|" + "FIN_Payment_ID");
       String strFinancialAccountId = vars.getStringParameter("inpfinFinancialAccountId");
 
       printPage(response, vars, strPaymentId, strWindowId, strTabId, strFinancialAccountId);
@@ -106,8 +107,8 @@
       String strSelectedPaymentDetails = vars.getInStringParameter("inpScheduledPaymentDetailId",
           "", null);
       boolean isReceipt = vars.getRequiredStringParameter("isReceipt").equals("Y");
-      Boolean showAlternativePM = "Y".equals(vars.getStringParameter("inpAlternativePaymentMethod",
-          filterYesNo));
+      Boolean showAlternativePM = "Y"
+          .equals(vars.getStringParameter("inpAlternativePaymentMethod", filterYesNo));
 
       printGrid(response, vars, strBusinessPartnerId, strPaymentId, strOrgId, strExpectedDateFrom,
           strExpectedDateTo, strDocumentType, strSelectedPaymentDetails, isReceipt,
@@ -119,14 +120,14 @@
         strBusinessPartnerId = vars.getRequestGlobalVariable("inpcBPartnerId", "");
       }
       if (!"".equals(strBusinessPartnerId)) {
-        BusinessPartner businessPartner = OBDal.getInstance().get(BusinessPartner.class,
-            strBusinessPartnerId);
+        BusinessPartner businessPartner = OBDal.getInstance()
+            .get(BusinessPartner.class, strBusinessPartnerId);
         if (FIN_Utility.isBlockedBusinessPartner(businessPartner.getId(), isReceipt, 4)) {
           businessPartnerBlocked(response, vars, businessPartner.getIdentifier());
         }
       } else {
-        String strSelectedScheduledPaymentDetailIds = vars.getInStringParameter(
-            "inpScheduledPaymentDetailId", "", null);
+        String strSelectedScheduledPaymentDetailIds = vars
+            .getInStringParameter("inpScheduledPaymentDetailId", "", null);
         if (!"".equals(strSelectedScheduledPaymentDetailIds)) {
           OBContext.setAdminMode(true);
           try {
@@ -158,8 +159,8 @@
         strAction = vars.getRequiredStringParameter("inpActionDocument");
       }
       String strPaymentId = vars.getRequiredStringParameter("inpfinPaymentId");
-      String strSelectedScheduledPaymentDetailIds = vars.getInStringParameter(
-          "inpScheduledPaymentDetailId", "", null);
+      String strSelectedScheduledPaymentDetailIds = vars
+          .getInStringParameter("inpScheduledPaymentDetailId", "", null);
       String strAddedGLItems = vars.getStringParameter("inpGLItems");
       JSONArray addedGLITemsArray = null;
       try {
@@ -180,18 +181,18 @@
       String strTabId = vars.getRequiredStringParameter("inpTabId");
       String strPaymentAmount = vars.getRequiredNumericParameter("inpActualPayment");
       String paymentCurrencyId = vars.getRequiredStringParameter("inpCurrencyId");
-      BigDecimal exchangeRate = new BigDecimal(vars.getRequiredNumericParameter("inpExchangeRate",
-          "1"));
-      BigDecimal convertedAmount = new BigDecimal(vars.getRequiredNumericParameter(
-          "inpActualConverted", strPaymentAmount));
+      BigDecimal exchangeRate = new BigDecimal(
+          vars.getRequiredNumericParameter("inpExchangeRate", "1"));
+      BigDecimal convertedAmount = new BigDecimal(
+          vars.getRequiredNumericParameter("inpActualConverted", strPaymentAmount));
       OBError message = null;
       // FIXME: added to access the FIN_PaymentSchedule and FIN_PaymentScheduleDetail tables to be
       // removed when new security implementation is done
       OBContext.setAdminMode();
       try {
 
-        List<FIN_PaymentScheduleDetail> selectedPaymentDetails = FIN_Utility.getOBObjectList(
-            FIN_PaymentScheduleDetail.class, strSelectedScheduledPaymentDetailIds);
+        List<FIN_PaymentScheduleDetail> selectedPaymentDetails = FIN_Utility
+            .getOBObjectList(FIN_PaymentScheduleDetail.class, strSelectedScheduledPaymentDetailIds);
         HashMap<String, BigDecimal> selectedPaymentDetailAmounts = getSelectedPaymentDetailsAndAmount(
             vars, strSelectedScheduledPaymentDetailIds);
 
@@ -286,12 +287,11 @@
               if (newPayment) {
                 final String strNewRefundPaymentMessage = Utility.parseTranslation(this, vars,
                     vars.getLanguage(),
-                    "@APRM_RefundPayment@" + ": " + refundPayment.getDocumentNo())
-                    + ".";
+                    "@APRM_RefundPayment@" + ": " + refundPayment.getDocumentNo()) + ".";
                 message.setMessage(strNewRefundPaymentMessage + " " + message.getMessage());
                 if (payment.getGeneratedCredit().compareTo(BigDecimal.ZERO) != 0) {
-                  payment.setDescription(payment.getDescription() + strNewRefundPaymentMessage
-                      + "\n");
+                  payment
+                      .setDescription(payment.getDescription() + strNewRefundPaymentMessage + "\n");
                   OBDal.getInstance().save(payment);
                   OBDal.getInstance().flush();
                 }
@@ -344,8 +344,8 @@
           // update outstanding amount
           List<FIN_PaymentScheduleDetail> outStandingPSDs = FIN_AddPayment.getOutstandingPSDs(psd);
           if (outStandingPSDs.size() == 0) {
-            FIN_PaymentScheduleDetail newOutstanding = (FIN_PaymentScheduleDetail) DalUtil.copy(
-                psd, false);
+            FIN_PaymentScheduleDetail newOutstanding = (FIN_PaymentScheduleDetail) DalUtil.copy(psd,
+                false);
             newOutstanding.setPaymentDetails(null);
             newOutstanding.setWriteoffAmount(BigDecimal.ZERO);
             OBDal.getInstance().save(newOutstanding);
@@ -356,10 +356,12 @@
               OBDal.getInstance().remove(outStandingPSDs.get(0));
             } else {
               // update existing PD with difference
-              outStandingPSDs.get(0).setAmount(
-                  outStandingPSDs.get(0).getAmount().add(psd.getAmount()));
-              outStandingPSDs.get(0).setDoubtfulDebtAmount(
-                  outStandingPSDs.get(0).getDoubtfulDebtAmount().add(psd.getDoubtfulDebtAmount()));
+              outStandingPSDs.get(0)
+                  .setAmount(outStandingPSDs.get(0).getAmount().add(psd.getAmount()));
+              outStandingPSDs.get(0)
+                  .setDoubtfulDebtAmount(outStandingPSDs.get(0)
+                      .getDoubtfulDebtAmount()
+                      .add(psd.getDoubtfulDebtAmount()));
               OBDal.getInstance().save(outStandingPSDs.get(0));
             }
             toRemovePDs.add(pd.getId());
@@ -371,8 +373,9 @@
       FIN_PaymentDetail pd = OBDal.getInstance().get(FIN_PaymentDetail.class, pdID);
       boolean hasPSD = pd.getFINPaymentScheduleDetailList().size() > 0;
       if (hasPSD) {
-        FIN_PaymentScheduleDetail psd = OBDal.getInstance().get(FIN_PaymentScheduleDetail.class,
-            pd.getFINPaymentScheduleDetailList().get(0).getId());
+        FIN_PaymentScheduleDetail psd = OBDal.getInstance()
+            .get(FIN_PaymentScheduleDetail.class,
+                pd.getFINPaymentScheduleDetailList().get(0).getId());
         pd.getFINPaymentScheduleDetailList().remove(psd);
         OBDal.getInstance().save(pd);
         OBDal.getInstance().remove(psd);
@@ -392,8 +395,8 @@
     }
   }
 
-  private void printPage(HttpServletResponse response, VariablesSecureApp vars,
-      String strPaymentId, String strWindowId, String strTabId, String strFinancialAccountId)
+  private void printPage(HttpServletResponse response, VariablesSecureApp vars, String strPaymentId,
+      String strWindowId, String strTabId, String strFinancialAccountId)
       throws IOException, ServletException {
     log4j.debug("Output: Add Payment button pressed on Make / Receipt Payment windows");
 
@@ -413,31 +416,35 @@
         if (payment.getBusinessPartner() != null) {
           discard[0] = "bpGridColumn";
         }
-        XmlDocument xmlDocument = xmlEngine.readXmlTemplate(
-            "org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice", discard)
+        XmlDocument xmlDocument = xmlEngine
+            .readXmlTemplate("org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice",
+                discard)
             .createXmlDocument();
 
         xmlDocument.setParameter("directory", "var baseDirectory = \"" + strReplaceWith + "/\";\n");
         xmlDocument.setParameter("language", "defaultLang=\"" + vars.getLanguage() + "\";");
         xmlDocument.setParameter("theme", vars.getTheme());
 
-        if (payment.isReceipt())
+        if (payment.isReceipt()) {
           xmlDocument.setParameter("title",
               Utility.messageBD(this, "APRM_AddPaymentIn", vars.getLanguage()));
-        else
+        } else {
           xmlDocument.setParameter("title",
               Utility.messageBD(this, "APRM_AddPaymentOut", vars.getLanguage()));
+        }
         xmlDocument.setParameter("dateDisplayFormat", vars.getSessionValue("#AD_SqlDateFormat"));
         if (payment.getBusinessPartner() != null) {
           xmlDocument.setParameter("businessPartner", payment.getBusinessPartner().getIdentifier());
           xmlDocument.setParameter("businessPartnerId", payment.getBusinessPartner().getId());
           xmlDocument.setParameter(
-              "credit",
-              dao.getCustomerCredit(payment.getBusinessPartner(), payment.isReceipt(),
-                  payment.getOrganization()).toString());
+              "credit", dao
+                  .getCustomerCredit(payment.getBusinessPartner(), payment.isReceipt(),
+                      payment.getOrganization())
+                  .toString());
           xmlDocument.setParameter("customerBalance",
-              payment.getBusinessPartner().getCreditUsed() != null ? payment.getBusinessPartner()
-                  .getCreditUsed().toString() : BigDecimal.ZERO.toString());
+              payment.getBusinessPartner().getCreditUsed() != null
+                  ? payment.getBusinessPartner().getCreditUsed().toString()
+                  : BigDecimal.ZERO.toString());
         } else {
           xmlDocument.setParameter("businessPartner", "");
           xmlDocument.setParameter("businessPartnerId", "");
@@ -453,33 +460,33 @@
         xmlDocument.setParameter("headerAmount", payment.getAmount().toString());
         xmlDocument.setParameter("isReceipt", (payment.isReceipt() ? "Y" : "N"));
         xmlDocument.setParameter("isSoTrx", (payment.isReceipt()) ? "Y" : "N");
-        if (payment.getBusinessPartner() == null
-            && (payment.getGeneratedCredit() == null || BigDecimal.ZERO.compareTo(payment
-                .getGeneratedCredit()) != 0)) {
+        if (payment.getBusinessPartner() == null && (payment.getGeneratedCredit() == null
+            || BigDecimal.ZERO.compareTo(payment.getGeneratedCredit()) != 0)) {
           payment.setGeneratedCredit(BigDecimal.ZERO);
           OBDal.getInstance().save(payment);
           OBDal.getInstance().flush();
         }
-        xmlDocument.setParameter("generatedCredit", payment.getGeneratedCredit() != null ? payment
-            .getGeneratedCredit().toString() : BigDecimal.ZERO.toString());
+        xmlDocument.setParameter("generatedCredit",
+            payment.getGeneratedCredit() != null ? payment.getGeneratedCredit().toString()
+                : BigDecimal.ZERO.toString());
 
         final Currency financialAccountCurrency = payment.getAccount().getCurrency();
         if (financialAccountCurrency != null) {
           xmlDocument.setParameter("financialAccountCurrencyId", financialAccountCurrency.getId());
           xmlDocument.setParameter("financialAccountCurrencyName",
               financialAccountCurrency.getISOCode());
-          xmlDocument.setParameter("financialAccountCurrencyPrecision", financialAccountCurrency
-              .getStandardPrecision().toString());
+          xmlDocument.setParameter("financialAccountCurrencyPrecision",
+              financialAccountCurrency.getStandardPrecision().toString());
         }
         xmlDocument.setParameter("exchangeRate",
-            payment.getFinancialTransactionConvertRate() == null ? "" : payment
-                .getFinancialTransactionConvertRate().toPlainString());
+            payment.getFinancialTransactionConvertRate() == null ? ""
+                : payment.getFinancialTransactionConvertRate().toPlainString());
         xmlDocument.setParameter("actualConverted",
-            payment.getFinancialTransactionAmount() == null ? "" : payment
-                .getFinancialTransactionAmount().toString());
+            payment.getFinancialTransactionAmount() == null ? ""
+                : payment.getFinancialTransactionAmount().toString());
         xmlDocument.setParameter("expectedConverted",
-            payment.getFinancialTransactionAmount() == null ? "" : payment
-                .getFinancialTransactionAmount().toPlainString());
+            payment.getFinancialTransactionAmount() == null ? ""
+                : payment.getFinancialTransactionAmount().toPlainString());
         xmlDocument.setParameter("currencyId", payment.getCurrency().getId());
         xmlDocument.setParameter("currencyName", payment.getCurrency().getISOCode());
 
@@ -496,8 +503,8 @@
               Utility.getContext(this, vars, "#AccessibleOrgTree", "AddPaymentFromInvoice"),
               Utility.getContext(this, vars, "#User_Client", "AddPaymentFromInvoice"), 0);
           Utility.fillSQLParameters(this, vars, null, comboTableData, "AddOrderOrInvoice", "");
-          xmlDocument
-              .setData("reportActionDocument", "liststructure", comboTableData.select(false));
+          xmlDocument.setData("reportActionDocument", "liststructure",
+              comboTableData.select(false));
           comboTableData = null;
         } catch (Exception ex) {
           throw new ServletException(ex);
@@ -512,26 +519,33 @@
         }
         final String strCentrally = Utility.getContext(this, vars,
             DimensionDisplayUtility.IsAcctDimCentrally, strWindowId);
-        final String strElement_BP = Utility.getContext(this, vars, DimensionDisplayUtility
-            .displayAcctDimensions(strCentrally, DimensionDisplayUtility.DIM_BPartner, doctype,
-                DimensionDisplayUtility.DIM_Header), strWindowId);
-        final String strElement_PR = Utility.getContext(this, vars, DimensionDisplayUtility
-            .displayAcctDimensions(strCentrally, DimensionDisplayUtility.DIM_Product, doctype,
-                DimensionDisplayUtility.DIM_Header), strWindowId);
-        final String strElement_PJ = Utility.getContext(this, vars, DimensionDisplayUtility
-            .displayAcctDimensions(strCentrally, DimensionDisplayUtility.DIM_Project, doctype,
-                DimensionDisplayUtility.DIM_Header), strWindowId);
+        final String strElement_BP = Utility.getContext(this, vars,
+            DimensionDisplayUtility.displayAcctDimensions(strCentrally,
+                DimensionDisplayUtility.DIM_BPartner, doctype, DimensionDisplayUtility.DIM_Header),
+            strWindowId);
+        final String strElement_PR = Utility.getContext(this, vars,
+            DimensionDisplayUtility.displayAcctDimensions(strCentrally,
+                DimensionDisplayUtility.DIM_Product, doctype, DimensionDisplayUtility.DIM_Header),
+            strWindowId);
+        final String strElement_PJ = Utility.getContext(this, vars,
+            DimensionDisplayUtility.displayAcctDimensions(strCentrally,
+                DimensionDisplayUtility.DIM_Project, doctype, DimensionDisplayUtility.DIM_Header),
+            strWindowId);
         final String strElement_AY = Utility.getContext(this, vars, "$Element_AY", strWindowId);
-        final String strElement_CC = Utility.getContext(this, vars, DimensionDisplayUtility
-            .displayAcctDimensions(strCentrally, DimensionDisplayUtility.DIM_CostCenter, doctype,
-                DimensionDisplayUtility.DIM_Header), strWindowId);
+        final String strElement_CC = Utility.getContext(this, vars,
+            DimensionDisplayUtility.displayAcctDimensions(strCentrally,
+                DimensionDisplayUtility.DIM_CostCenter, doctype,
+                DimensionDisplayUtility.DIM_Header),
+            strWindowId);
         final String strElement_MC = Utility.getContext(this, vars, "$Element_MC", strWindowId);
-        final String strElement_U1 = Utility.getContext(this, vars, DimensionDisplayUtility
-            .displayAcctDimensions(strCentrally, DimensionDisplayUtility.DIM_User1, doctype,
-                DimensionDisplayUtility.DIM_Header), strWindowId);
-        final String strElement_U2 = Utility.getContext(this, vars, DimensionDisplayUtility
-            .displayAcctDimensions(strCentrally, DimensionDisplayUtility.DIM_User2, doctype,
-                DimensionDisplayUtility.DIM_Header), strWindowId);
+        final String strElement_U1 = Utility.getContext(this, vars,
+            DimensionDisplayUtility.displayAcctDimensions(strCentrally,
+                DimensionDisplayUtility.DIM_User1, doctype, DimensionDisplayUtility.DIM_Header),
+            strWindowId);
+        final String strElement_U2 = Utility.getContext(this, vars,
+            DimensionDisplayUtility.displayAcctDimensions(strCentrally,
+                DimensionDisplayUtility.DIM_User2, doctype, DimensionDisplayUtility.DIM_Header),
+            strWindowId);
         xmlDocument.setParameter("strElement_BP", strElement_BP);
         xmlDocument.setParameter("strElement_PR", strElement_PR);
         xmlDocument.setParameter("strElement_PJ", strElement_PJ);
@@ -553,49 +567,57 @@
             glItem.put("finPaymentScheduleDetailId", psdGLItem.getId());
             // Amounts
             if (payment.isReceipt()) {
-              glItem.put("glitemPaidOutAmt", psdGLItem.getAmount().signum() < 0 ? psdGLItem
-                  .getAmount().abs() : BigDecimal.ZERO);
+              glItem.put("glitemPaidOutAmt",
+                  psdGLItem.getAmount().signum() < 0 ? psdGLItem.getAmount().abs()
+                      : BigDecimal.ZERO);
               glItem.put("glitemReceivedInAmt",
                   psdGLItem.getAmount().signum() > 0 ? psdGLItem.getAmount() : BigDecimal.ZERO);
             } else {
-              glItem.put("glitemReceivedInAmt", psdGLItem.getAmount().signum() < 0 ? psdGLItem
-                  .getAmount().abs() : BigDecimal.ZERO);
+              glItem.put("glitemReceivedInAmt",
+                  psdGLItem.getAmount().signum() < 0 ? psdGLItem.getAmount().abs()
+                      : BigDecimal.ZERO);
               glItem.put("glitemPaidOutAmt",
                   psdGLItem.getAmount().signum() > 0 ? psdGLItem.getAmount() : BigDecimal.ZERO);
             }
             // Accounting Dimensions
-            glItem.put("cBpartnerDim", psdGLItem.getBusinessPartner() != null ? psdGLItem
-                .getBusinessPartner().getId() : "");
-            glItem.put("cBpartnerDimDesc", psdGLItem.getBusinessPartner() != null ? psdGLItem
-                .getBusinessPartner().getIdentifier() : "");
-            glItem.put("mProductDim", psdGLItem.getProduct() != null ? psdGLItem.getProduct()
-                .getId() : "");
-            glItem.put("mProductDimDesc", psdGLItem.getProduct() != null ? psdGLItem.getProduct()
-                .getIdentifier() : "");
-            glItem.put("cProjectDim", psdGLItem.getProject() != null ? psdGLItem.getProject()
-                .getId() : "");
-            glItem.put("cProjectDimDesc", psdGLItem.getProject() != null ? psdGLItem.getProject()
-                .getIdentifier() : "");
-            glItem.put("cActivityDim", psdGLItem.getActivity() != null ? psdGLItem.getActivity()
-                .getId() : "");
-            glItem.put("cActivityDimDesc", psdGLItem.getActivity() != null ? psdGLItem
-                .getActivity().getIdentifier() : "");
-            glItem.put("cCostcenterDim", psdGLItem.getCostCenter() != null ? psdGLItem
-                .getCostCenter().getId() : "");
-            glItem.put("cCostcenterDimDesc", psdGLItem.getCostCenter() != null ? psdGLItem
-                .getCostCenter().getIdentifier() : "");
-            glItem.put("cCampaignDim", psdGLItem.getSalesCampaign() != null ? psdGLItem
-                .getSalesCampaign().getId() : "");
-            glItem.put("cCampaignDimDesc", psdGLItem.getSalesCampaign() != null ? psdGLItem
-                .getSalesCampaign().getIdentifier() : "");
-            glItem.put("user1Dim", psdGLItem.getStDimension() != null ? psdGLItem.getStDimension()
-                .getId() : "");
-            glItem.put("user1DimDesc", psdGLItem.getStDimension() != null ? psdGLItem
-                .getStDimension().getIdentifier() : "");
-            glItem.put("user2Dim", psdGLItem.getNdDimension() != null ? psdGLItem.getNdDimension()
-                .getId() : "");
-            glItem.put("user2DimDesc", psdGLItem.getNdDimension() != null ? psdGLItem
-                .getNdDimension().getIdentifier() : "");
+            glItem.put("cBpartnerDim",
+                psdGLItem.getBusinessPartner() != null ? psdGLItem.getBusinessPartner().getId()
+                    : "");
+            glItem.put("cBpartnerDimDesc",
+                psdGLItem.getBusinessPartner() != null
+                    ? psdGLItem.getBusinessPartner().getIdentifier()
+                    : "");
+            glItem.put("mProductDim",
+                psdGLItem.getProduct() != null ? psdGLItem.getProduct().getId() : "");
+            glItem.put("mProductDimDesc",
+                psdGLItem.getProduct() != null ? psdGLItem.getProduct().getIdentifier() : "");
+            glItem.put("cProjectDim",
+                psdGLItem.getProject() != null ? psdGLItem.getProject().getId() : "");
+            glItem.put("cProjectDimDesc",
+                psdGLItem.getProject() != null ? psdGLItem.getProject().getIdentifier() : "");
+            glItem.put("cActivityDim",
+                psdGLItem.getActivity() != null ? psdGLItem.getActivity().getId() : "");
+            glItem.put("cActivityDimDesc",
+                psdGLItem.getActivity() != null ? psdGLItem.getActivity().getIdentifier() : "");
+            glItem.put("cCostcenterDim",
+                psdGLItem.getCostCenter() != null ? psdGLItem.getCostCenter().getId() : "");
+            glItem.put("cCostcenterDimDesc",
+                psdGLItem.getCostCenter() != null ? psdGLItem.getCostCenter().getIdentifier() : "");
+            glItem.put("cCampaignDim",
+                psdGLItem.getSalesCampaign() != null ? psdGLItem.getSalesCampaign().getId() : "");
+            glItem.put("cCampaignDimDesc",
+                psdGLItem.getSalesCampaign() != null ? psdGLItem.getSalesCampaign().getIdentifier()
+                    : "");
+            glItem.put("user1Dim",
+                psdGLItem.getStDimension() != null ? psdGLItem.getStDimension().getId() : "");
+            glItem.put("user1DimDesc",
+                psdGLItem.getStDimension() != null ? psdGLItem.getStDimension().getIdentifier()
+                    : "");
+            glItem.put("user2Dim",
+                psdGLItem.getNdDimension() != null ? psdGLItem.getNdDimension().getId() : "");
+            glItem.put("user2DimDesc",
+                psdGLItem.getNdDimension() != null ? psdGLItem.getNdDimension().getIdentifier()
+                    : "");
             // DisplayLogics
             glItem.put("cBpartnerDimDisplayed", strElement_BP);
             glItem.put("mProductDimDisplayed", strElement_PR);
@@ -610,8 +632,8 @@
             log4j.error(e);
           }
         }
-        xmlDocument.setParameter("glItems", addedGLITemsArray.toString().replace("'", "")
-            .replaceAll("\"", "'"));
+        xmlDocument.setParameter("glItems",
+            addedGLITemsArray.toString().replace("'", "").replaceAll("\"", "'"));
         // If UsedCredit is not equal zero, check Use available credit
         xmlDocument.setParameter("useCredit", payment.getUsedCredit().signum() != 0 ? "Y" : "N");
 
@@ -649,10 +671,9 @@
   }
 
   private void printGrid(HttpServletResponse response, VariablesSecureApp vars,
-      String strBusinessPartnerId, String strPaymentId, String strOrgId,
-      String strExpectedDateFrom, String strExpectedDateTo, String strDocumentType,
-      String strSelectedPaymentDetails, boolean isReceipt, boolean showAlternativePM)
-      throws IOException, ServletException {
+      String strBusinessPartnerId, String strPaymentId, String strOrgId, String strExpectedDateFrom,
+      String strExpectedDateTo, String strDocumentType, String strSelectedPaymentDetails,
+      boolean isReceipt, boolean showAlternativePM) throws IOException, ServletException {
 
     log4j.debug("Output: Grid with pending payments");
     dao = new AdvPaymentMngtDao();
@@ -661,8 +682,9 @@
       discard[0] = "businessPartnerName";
     }
 
-    XmlDocument xmlDocument = xmlEngine.readXmlTemplate(
-        "org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentGrid", discard).createXmlDocument();
+    XmlDocument xmlDocument = xmlEngine
+        .readXmlTemplate("org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentGrid", discard)
+        .createXmlDocument();
 
     FIN_Payment payment = dao.getObject(FIN_Payment.class, strPaymentId);
 
@@ -673,8 +695,8 @@
       // Add payment schedule details related to orders or invoices to storedSchedulePaymentDetails
       OBContext.setAdminMode();
       try {
-        OBCriteria<FIN_PaymentScheduleDetail> obc = OBDal.getInstance().createCriteria(
-            FIN_PaymentScheduleDetail.class);
+        OBCriteria<FIN_PaymentScheduleDetail> obc = OBDal.getInstance()
+            .createCriteria(FIN_PaymentScheduleDetail.class);
         obc.add(Restrictions.in(FIN_PaymentScheduleDetail.PROPERTY_PAYMENTDETAILS,
             payment.getFINPaymentDetailList()));
         obc.add(Restrictions.or(
@@ -687,14 +709,14 @@
     }
     // Pending Payments from invoice
     final List<FIN_PaymentScheduleDetail> selectedScheduledPaymentDetails = FIN_AddPayment
-        .getSelectedPaymentDetails(
-            "true".equals(strFirstLoad) ? new ArrayList<FIN_PaymentScheduleDetail>(
-                storedScheduledPaymentDetails) : null, strSelectedPaymentDetails);
+        .getSelectedPaymentDetails("true".equals(strFirstLoad)
+            ? new ArrayList<FIN_PaymentScheduleDetail>(storedScheduledPaymentDetails)
+            : null, strSelectedPaymentDetails);
     // filtered scheduled payments list
     final List<FIN_PaymentScheduleDetail> filteredScheduledPaymentDetails = dao
         .getFilteredScheduledPaymentDetails(dao.getObject(Organization.class, strOrgId),
-            dao.getObject(BusinessPartner.class, strBusinessPartnerId), payment.getCurrency(),
-            null, null, FIN_Utility.getDate(strExpectedDateFrom),
+            dao.getObject(BusinessPartner.class, strBusinessPartnerId), payment.getCurrency(), null,
+            null, FIN_Utility.getDate(strExpectedDateFrom),
             FIN_Utility.getDate(DateTimeData.nDaysAfter(this, strExpectedDateTo, "1")), null, null,
             strDocumentType, "", showAlternativePM ? null : payment.getPaymentMethod(),
             selectedScheduledPaymentDetails, isReceipt);
@@ -708,8 +730,8 @@
         storedScheduledPaymentDetails);
     storedNotSelectedPSDs.removeAll(selectedScheduledPaymentDetails);
     // Add stored but not selected details which maps documenttype
-    filteredScheduledPaymentDetails.addAll(filterDocumenttype(storedNotSelectedPSDs,
-        strDocumentType));
+    filteredScheduledPaymentDetails
+        .addAll(filterDocumenttype(storedNotSelectedPSDs, strDocumentType));
 
     FieldProvider[] data = FIN_AddPayment.getShownScheduledPaymentDetails(vars,
         selectedScheduledPaymentDetails, filteredScheduledPaymentDetails, false, null,
@@ -729,8 +751,8 @@
               psd.getAmount().add(outstandingAmount).toPlainString());
           if ("true".equals(strFirstLoad)) {
             FieldProviderFactory.setField(data[i], "difference", outstandingAmount.toPlainString());
-            FieldProviderFactory
-                .setField(data[i], "paymentAmount", psd.getAmount().toPlainString());
+            FieldProviderFactory.setField(data[i], "paymentAmount",
+                psd.getAmount().toPlainString());
           }
         }
       }
@@ -776,46 +798,43 @@
       } else {
         Integer listIndex = amountsPerGroupingField.get(data[i].getField(groupingField));
         FieldProvider row = gridLines.get(listIndex);
-        FieldProviderFactory.setField(
-            row,
-            "finScheduledPaymentDetailId",
+        FieldProviderFactory.setField(row, "finScheduledPaymentDetailId",
             row.getField("finScheduledPaymentDetailId") + ","
                 + data[i].getField("finScheduledPaymentDetailId"));
-        FieldProviderFactory.setField(
-            row,
-            "finSelectedPaymentDetailId",
+        FieldProviderFactory.setField(row, "finSelectedPaymentDetailId",
             row.getField("finSelectedPaymentDetailId") + ","
                 + data[i].getField("finScheduledPaymentDetailId"));
-        FieldProviderFactory.setField(
-            row,
-            "outstandingAmount",
-            new BigDecimal(row.getField("outstandingAmount")).add(
-                new BigDecimal(data[i].getField("outstandingAmount"))).toString());
+        FieldProviderFactory.setField(row, "outstandingAmount",
+            new BigDecimal(row.getField("outstandingAmount"))
+                .add(new BigDecimal(data[i].getField("outstandingAmount")))
+                .toString());
         BigDecimal payAmount = BigDecimal.ZERO;
         if (!"".equals(row.getField("paymentAmount"))) {
           payAmount = new BigDecimal(row.getField("paymentAmount"));
         }
-        FieldProviderFactory.setField(
-            row,
-            "paymentAmount",
-            !"".equals(data[i].getField("paymentAmount")) ? payAmount.add(
-                new BigDecimal(data[i].getField("paymentAmount"))).toString() : (payAmount
-                .compareTo(BigDecimal.ZERO) == 0 ? "" : payAmount.toString()));
+        FieldProviderFactory.setField(row, "paymentAmount",
+            !"".equals(data[i].getField("paymentAmount"))
+                ? payAmount.add(new BigDecimal(data[i].getField("paymentAmount"))).toString()
+                : (payAmount.compareTo(BigDecimal.ZERO) == 0 ? "" : payAmount.toString()));
         if ("O".equals(strDocumenType)) {
           String strGroupedInvoicesNr = row.getField("invoiceNr");
-          FieldProviderFactory.setField(row, "invoiceNr", (strGroupedInvoicesNr.isEmpty() ? ""
-              : strGroupedInvoicesNr + ", ") + data[i].getField("invoiceNr"));
+          FieldProviderFactory.setField(row, "invoiceNr",
+              (strGroupedInvoicesNr.isEmpty() ? "" : strGroupedInvoicesNr + ", ")
+                  + data[i].getField("invoiceNr"));
           String invoiceNumber = row.getField("invoiceNr");
-          String invoiceNumberTrunc = (invoiceNumber.length() > 17) ? invoiceNumber
-              .substring(0, 14).concat("...").toString() : invoiceNumber;
+          String invoiceNumberTrunc = (invoiceNumber.length() > 17)
+              ? invoiceNumber.substring(0, 14).concat("...").toString()
+              : invoiceNumber;
           FieldProviderFactory.setField(row, "invoiceNrTrunc", invoiceNumberTrunc);
         } else if ("I".equals(strDocumenType)) {
           String strGroupedOrdersNr = row.getField("orderNr");
-          FieldProviderFactory.setField(row, "orderNr", (strGroupedOrdersNr.isEmpty() ? ""
-              : strGroupedOrdersNr + ", ") + data[i].getField("orderNr"));
+          FieldProviderFactory.setField(row, "orderNr",
+              (strGroupedOrdersNr.isEmpty() ? "" : strGroupedOrdersNr + ", ")
+                  + data[i].getField("orderNr"));
           String orderNumber = row.getField("orderNr");
-          String orderNumberTrunc = (orderNumber.length() > 17) ? orderNumber.substring(0, 14)
-              .concat("...").toString() : orderNumber;
+          String orderNumberTrunc = (orderNumber.length() > 17)
+              ? orderNumber.substring(0, 14).concat("...").toString()
+              : orderNumber;
           FieldProviderFactory.setField(row, "orderNrTrunc", orderNumberTrunc);
         }
       }
@@ -860,8 +879,8 @@
       while (psds.hasMoreTokens()) {
         psdSet.add(psds.nextToken());
       }
-      BigDecimal recordAmount = new BigDecimal(vars.getNumericParameter(
-          "inpPaymentAmount" + record, ""));
+      BigDecimal recordAmount = new BigDecimal(
+          vars.getNumericParameter("inpPaymentAmount" + record, ""));
       HashMap<String, BigDecimal> recordsAmounts = calculateAmounts(recordAmount, psdSet);
       selectedPaymentScheduleDetailsAmounts.putAll(recordsAmounts);
     }
@@ -877,7 +896,8 @@
    * @param psdSet
    *          : set of payment schedule details where to allocate the amount
    */
-  private HashMap<String, BigDecimal> calculateAmounts(BigDecimal recordAmount, Set<String> psdSet) {
+  private HashMap<String, BigDecimal> calculateAmounts(BigDecimal recordAmount,
+      Set<String> psdSet) {
     BigDecimal remainingAmount = recordAmount;
     HashMap<String, BigDecimal> recordsAmounts = new HashMap<String, BigDecimal>();
     // PSD needs to be properly ordered to ensure negative amounts are processed first
@@ -890,8 +910,8 @@
         List<FIN_PaymentScheduleDetail> outStandingPSDs = FIN_AddPayment
             .getOutstandingPSDs(paymentScheduleDetail);
         if (outStandingPSDs.size() > 0) {
-          outstandingAmount = paymentScheduleDetail.getAmount().add(
-              outStandingPSDs.get(0).getAmount());
+          outstandingAmount = paymentScheduleDetail.getAmount()
+              .add(outStandingPSDs.get(0).getAmount());
         } else {
           outstandingAmount = paymentScheduleDetail.getAmount();
         }
@@ -899,10 +919,11 @@
         outstandingAmount = paymentScheduleDetail.getAmount();
       }
       // Manage negative amounts
-      if ((remainingAmount.compareTo(BigDecimal.ZERO) > 0 && remainingAmount
-          .compareTo(outstandingAmount) >= 0)
-          || ((remainingAmount.compareTo(BigDecimal.ZERO) == -1 && outstandingAmount
-              .compareTo(BigDecimal.ZERO) == -1) && (remainingAmount.compareTo(outstandingAmount) <= 0))) {
+      if ((remainingAmount.compareTo(BigDecimal.ZERO) > 0
+          && remainingAmount.compareTo(outstandingAmount) >= 0)
+          || ((remainingAmount.compareTo(BigDecimal.ZERO) == -1
+              && outstandingAmount.compareTo(BigDecimal.ZERO) == -1)
+              && (remainingAmount.compareTo(outstandingAmount) <= 0))) {
         recordsAmounts.put(paymentScheduleDetail.getId(), outstandingAmount);
         remainingAmount = remainingAmount.subtract(outstandingAmount);
       } else {
@@ -915,8 +936,8 @@
   }
 
   private List<FIN_PaymentScheduleDetail> getOrderedPaymentScheduleDetails(Set<String> psdSet) {
-    OBCriteria<FIN_PaymentScheduleDetail> orderedPSDs = OBDal.getInstance().createCriteria(
-        FIN_PaymentScheduleDetail.class);
+    OBCriteria<FIN_PaymentScheduleDetail> orderedPSDs = OBDal.getInstance()
+        .createCriteria(FIN_PaymentScheduleDetail.class);
     orderedPSDs.add(Restrictions.in(FIN_PaymentScheduleDetail.PROPERTY_ID, psdSet));
     orderedPSDs.addOrderBy(FIN_PaymentScheduleDetail.PROPERTY_AMOUNT, true);
     return orderedPSDs.list();
@@ -927,7 +948,8 @@
     List<FIN_PaymentScheduleDetail> listIterator = new ArrayList<FIN_PaymentScheduleDetail>(
         storedNotSelectedPSDs);
     for (FIN_PaymentScheduleDetail paymentScheduleDetail : listIterator) {
-      if (paymentScheduleDetail.getInvoicePaymentSchedule() != null && "O".equals(strDocumentType)) {
+      if (paymentScheduleDetail.getInvoicePaymentSchedule() != null
+          && "O".equals(strDocumentType)) {
         storedNotSelectedPSDs.remove(paymentScheduleDetail);
       } else if (paymentScheduleDetail.getOrderPaymentSchedule() != null
           && "I".equals(strDocumentType)) {
@@ -952,6 +974,7 @@
     }
   }
 
+  @Override
   public String getServletInfo() {
     return "Servlet that presents the payment proposal";
     // end of getServletInfo() method
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromInvoice.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromInvoice.java	Mon Feb 11 11:01:09 2019 +0100
@@ -74,6 +74,7 @@
   private AdvPaymentMngtDao dao;
   private static final RequestFilter filterYesNo = new ValueListFilter("Y", "N", "");
 
+  @Override
   public void doPost(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
     VariablesSecureApp vars = new VariablesSecureApp(request);
@@ -104,8 +105,8 @@
       String strDocumentType = vars.getStringParameter("inpDocumentType", "");
       String strSelectedPaymentDetails = vars.getInStringParameter("inpScheduledPaymentDetailId",
           IsIDFilter.instance);
-      Boolean showAlternativePM = "Y".equals(vars.getStringParameter("inpAlternativePaymentMethod",
-          filterYesNo));
+      Boolean showAlternativePM = "Y"
+          .equals(vars.getStringParameter("inpAlternativePaymentMethod", filterYesNo));
       boolean isReceipt = vars.getRequiredStringParameter("isReceipt").equals("Y");
 
       printGrid(response, vars, strBPfromInvoiceId, strCurrencyId, strInvoiceId, strOrgId,
@@ -129,7 +130,8 @@
       boolean isReceipt = vars.getRequiredStringParameter("isReceipt").equals("Y");
       String strInvoiceId = vars.getRequestGlobalVariable("inpcInvoiceId", "");
       refreshFinancialAccountCombo(response, vars, strPaymentMethodId, strFinancialAccountId,
-          strOrgId, strCurrencyId, isReceipt, strPaymentDate, conversionRatePrecision, strInvoiceId);
+          strOrgId, strCurrencyId, isReceipt, strPaymentDate, conversionRatePrecision,
+          strInvoiceId);
     } else if (vars.commandIn("FILLFINANCIALACCOUNT")) {
       String strFinancialAccountId = vars.getRequestGlobalVariable("inpFinancialAccount", "");
       String strOrgId = vars.getRequestGlobalVariable("inpadOrgId", "");
@@ -148,8 +150,8 @@
 
     } else if (vars.commandIn("EXCHANGERATE")) {
       final String strCurrencyId = vars.getRequestGlobalVariable("inpCurrencyId", "");
-      final String strFinancialAccountCurrencyId = vars.getRequestGlobalVariable(
-          "inpFinancialAccountCurrencyId", "");
+      final String strFinancialAccountCurrencyId = vars
+          .getRequestGlobalVariable("inpFinancialAccountCurrencyId", "");
       final String strOrgId = vars.getRequestGlobalVariable("inpadOrgId", "");
       final String strPaymentDate = vars.getRequestGlobalVariable("inpPaymentDate", "");
       Organization org = OBDal.getInstance().get(Organization.class, strOrgId);
@@ -160,8 +162,8 @@
     } else if (vars.commandIn("BPARTNERBLOCK")) {
       boolean isReceipt = vars.getRequiredStringParameter("isReceipt").equals("Y");
       String strReceivedFromId = vars.getRequiredStringParameter("inpBusinessPartnerId");
-      BusinessPartner businessPartner = OBDal.getInstance().get(BusinessPartner.class,
-          strReceivedFromId);
+      BusinessPartner businessPartner = OBDal.getInstance()
+          .get(BusinessPartner.class, strReceivedFromId);
       if (FIN_Utility.isBlockedBusinessPartner(businessPartner.getId(), isReceipt, 4)) {
         businessPartnerBlocked(response, vars, businessPartner.getIdentifier());
       }
@@ -180,8 +182,8 @@
       String strFinancialAccountId = vars.getRequiredStringParameter("inpFinancialAccount");
       String strPaymentAmount = vars.getRequiredNumericParameter("inpActualPayment");
       String strPaymentDate = vars.getRequiredStringParameter("inpPaymentDate");
-      String strSelectedScheduledPaymentDetailIds = vars.getRequiredInParameter(
-          "inpScheduledPaymentDetailId", IsIDFilter.instance);
+      String strSelectedScheduledPaymentDetailIds = vars
+          .getRequiredInParameter("inpScheduledPaymentDetailId", IsIDFilter.instance);
       String strOrgId = vars.getRequiredStringParameter("inpadOrgId");
       String strDifferenceAction = "";
       String strDifference = vars.getNumericParameter("inpDifference", "0");
@@ -195,18 +197,18 @@
       String strTabId = vars.getRequiredStringParameter("inpTabId");
       String strReferenceNo = vars.getStringParameter("inpReferenceNo", "");
       String paymentCurrencyId = vars.getRequiredStringParameter("inpCurrencyId");
-      BigDecimal exchangeRate = new BigDecimal(vars.getRequiredNumericParameter("inpExchangeRate",
-          "1"));
-      BigDecimal convertedAmount = new BigDecimal(vars.getRequiredNumericParameter(
-          "inpActualConverted", strPaymentAmount));
-      BusinessPartner businessPartner = OBDal.getInstance().get(BusinessPartner.class,
-          strReceivedFromId);
-      PriceList priceList = isReceipt ? businessPartner.getPriceList() : businessPartner
-          .getPurchasePricelist();
-      FIN_FinancialAccount finAccount = OBDal.getInstance().get(FIN_FinancialAccount.class,
-          strFinancialAccountId);
-      FIN_PaymentMethod finPaymentMethod = OBDal.getInstance().get(FIN_PaymentMethod.class,
-          strPaymentMethodId);
+      BigDecimal exchangeRate = new BigDecimal(
+          vars.getRequiredNumericParameter("inpExchangeRate", "1"));
+      BigDecimal convertedAmount = new BigDecimal(
+          vars.getRequiredNumericParameter("inpActualConverted", strPaymentAmount));
+      BusinessPartner businessPartner = OBDal.getInstance()
+          .get(BusinessPartner.class, strReceivedFromId);
+      PriceList priceList = isReceipt ? businessPartner.getPriceList()
+          : businessPartner.getPurchasePricelist();
+      FIN_FinancialAccount finAccount = OBDal.getInstance()
+          .get(FIN_FinancialAccount.class, strFinancialAccountId);
+      FIN_PaymentMethod finPaymentMethod = OBDal.getInstance()
+          .get(FIN_PaymentMethod.class, strPaymentMethodId);
       boolean paymentDocumentEnabled = getDocumentConfirmation(this, finAccount, finPaymentMethod,
           isReceipt, strPaymentAmount, true);
       OBError message = null;
@@ -214,13 +216,13 @@
       // removed when new security implementation is done
       OBContext.setAdminMode();
       try {
-        if (isUseCredit
-            && !paymentCurrencyId
-                .equals((priceList != null) ? priceList.getCurrency().getId() : "")) {
+        if (isUseCredit && !paymentCurrencyId
+            .equals((priceList != null) ? priceList.getCurrency().getId() : "")) {
           String errorMsg = String.format(
               Utility.parseTranslation(this, vars, vars.getLanguage(), "@APRM_CreditCurrency@"),
-              priceList != null ? priceList.getCurrency().getISOCode() : Utility.parseTranslation(
-                  this, vars, vars.getLanguage(), "@APRM_CreditNoPricelistCurrency@"));
+              priceList != null ? priceList.getCurrency().getISOCode()
+                  : Utility.parseTranslation(this, vars, vars.getLanguage(),
+                      "@APRM_CreditNoPricelistCurrency@"));
           message = new OBError();
           message.setType("Error");
           message.setTitle("Error");
@@ -237,26 +239,24 @@
           parameters.add(strOrgId);
           parameters.add((isReceipt ? "ARR" : "APP"));
           // parameters.add(null);
-          String strDocTypeId = (String) CallStoredProcedure.getInstance().call("AD_GET_DOCTYPE",
-              parameters, null);
+          String strDocTypeId = (String) CallStoredProcedure.getInstance()
+              .call("AD_GET_DOCTYPE", parameters, null);
           boolean documentEnabled = true;
           String strDocBaseType = parameters.get(2).toString();
           boolean orgLegalWithAccounting = FIN_Utility.periodControlOpened(Invoice.TABLE_NAME,
               strInvoiceId, Invoice.TABLE_NAME + "_ID", "LE");
 
-          if ((strAction.equals("PRD") || strAction.equals("PPW") || FIN_Utility
-              .isAutomaticDepositWithdrawn(finAccount, finPaymentMethod, isReceipt))
+          if ((strAction.equals("PRD") || strAction.equals("PPW")
+              || FIN_Utility.isAutomaticDepositWithdrawn(finAccount, finPaymentMethod, isReceipt))
               && new BigDecimal(strPaymentAmount).compareTo(BigDecimal.ZERO) != 0) {
-            documentEnabled = paymentDocumentEnabled
-                || getDocumentConfirmation(this, finAccount, finPaymentMethod, isReceipt,
-                    strPaymentAmount, false);
+            documentEnabled = paymentDocumentEnabled || getDocumentConfirmation(this, finAccount,
+                finPaymentMethod, isReceipt, strPaymentAmount, false);
           } else {
             documentEnabled = paymentDocumentEnabled;
           }
 
-          if (documentEnabled
-              && !FIN_Utility.isPeriodOpen(vars.getClient(), strDocBaseType, strOrgId,
-                  strPaymentDate) && orgLegalWithAccounting) {
+          if (documentEnabled && !FIN_Utility.isPeriodOpen(vars.getClient(), strDocBaseType,
+              strOrgId, strPaymentDate) && orgLegalWithAccounting) {
             final OBError myMessage = Utility.translateError(this, vars, vars.getLanguage(),
                 Utility.messageBD(this, "PeriodNotAvailable", vars.getLanguage()));
             vars.setMessage(strTabId, myMessage);
@@ -287,8 +287,9 @@
                 (strAction.equals("PRP") || strAction.equals("PPP")) ? "P" : "D", payment);
             String strNewPaymentMessage = Utility.parseTranslation(this, vars, vars.getLanguage(),
                 "@PaymentCreated@" + " " + payment.getDocumentNo()) + ".";
-            if (!"Error".equalsIgnoreCase(message.getType()))
+            if (!"Error".equalsIgnoreCase(message.getType())) {
               message.setMessage(strNewPaymentMessage + " " + message.getMessage());
+            }
             if (strDifferenceAction.equals("refund")) {
               Boolean newPayment = !payment.getFINPaymentDetailList().isEmpty();
               FIN_Payment refundPayment = FIN_AddPayment.createRefundPayment(this, vars, payment,
@@ -298,12 +299,11 @@
               if (newPayment && !"Error".equalsIgnoreCase(auxMessage.getType())) {
                 final String strNewRefundPaymentMessage = Utility.parseTranslation(this, vars,
                     vars.getLanguage(),
-                    "@APRM_RefundPayment@" + ": " + refundPayment.getDocumentNo())
-                    + ".";
+                    "@APRM_RefundPayment@" + ": " + refundPayment.getDocumentNo()) + ".";
                 message.setMessage(strNewRefundPaymentMessage + " " + message.getMessage());
                 if (payment.getGeneratedCredit().compareTo(BigDecimal.ZERO) != 0) {
-                  payment.setDescription(payment.getDescription() + strNewRefundPaymentMessage
-                      + "\n");
+                  payment
+                      .setDescription(payment.getDescription() + strNewRefundPaymentMessage + "\n");
                   OBDal.getInstance().save(payment);
                   OBDal.getInstance().flush();
                 }
@@ -324,8 +324,9 @@
       }
 
       String strWindowPath = Utility.getTabURL(strTabId, "R", true);
-      if (strWindowPath.equals(""))
+      if (strWindowPath.equals("")) {
         strWindowPath = strDefaultServlet;
+      }
 
       vars.setMessage(strTabId, message);
       printPageClosePopUp(response, vars, strWindowPath);
@@ -347,8 +348,8 @@
     boolean confirmation = false;
     OBContext.setAdminMode();
     try {
-      OBCriteria<FinAccPaymentMethod> obCriteria = OBDal.getInstance().createCriteria(
-          FinAccPaymentMethod.class);
+      OBCriteria<FinAccPaymentMethod> obCriteria = OBDal.getInstance()
+          .createCriteria(FinAccPaymentMethod.class);
       obCriteria.add(Restrictions.eq(FinAccPaymentMethod.PROPERTY_ACCOUNT, finAccount));
       obCriteria.add(Restrictions.eq(FinAccPaymentMethod.PROPERTY_PAYMENTMETHOD, finPaymentMethod));
       obCriteria.setFilterOnReadableClients(false);
@@ -370,22 +371,25 @@
         }
       }
       for (FIN_FinancialAccountAccounting account : accounts) {
-        if (confirmation)
+        if (confirmation) {
           return confirmation;
+        }
         if (isReceipt) {
-          if (("INT").equals(uponUse) && account.getInTransitPaymentAccountIN() != null)
+          if (("INT").equals(uponUse) && account.getInTransitPaymentAccountIN() != null) {
             confirmation = true;
-          else if (("DEP").equals(uponUse) && account.getDepositAccount() != null)
+          } else if (("DEP").equals(uponUse) && account.getDepositAccount() != null) {
             confirmation = true;
-          else if (("CLE").equals(uponUse) && account.getClearedPaymentAccount() != null)
+          } else if (("CLE").equals(uponUse) && account.getClearedPaymentAccount() != null) {
             confirmation = true;
+          }
         } else {
-          if (("INT").equals(uponUse) && account.getFINOutIntransitAcct() != null)
+          if (("INT").equals(uponUse) && account.getFINOutIntransitAcct() != null) {
             confirmation = true;
-          else if (("WIT").equals(uponUse) && account.getWithdrawalAccount() != null)
+          } else if (("WIT").equals(uponUse) && account.getWithdrawalAccount() != null) {
             confirmation = true;
-          else if (("CLE").equals(uponUse) && account.getClearedPaymentAccountOUT() != null)
+          } else if (("CLE").equals(uponUse) && account.getClearedPaymentAccountOUT() != null) {
             confirmation = true;
+          }
         }
         // For payments with Amount ZERO always create an entry as no transaction will be created
         if (isPayment) {
@@ -404,27 +408,29 @@
   }
 
   private void printPage(HttpServletResponse response, VariablesSecureApp vars,
-      String strBPfromInvoice, String strBPfromInvoiceId, String strCurrencyId,
-      String strInvoiceId, String strOrgId, String strWindowId, String strTabId, boolean isReceipt,
+      String strBPfromInvoice, String strBPfromInvoiceId, String strCurrencyId, String strInvoiceId,
+      String strOrgId, String strWindowId, String strTabId, boolean isReceipt,
       int conversionRatePrecision) throws IOException, ServletException {
 
     log4j.debug("Output: Add Payment button pressed on Sales Invoice window");
     dao = new AdvPaymentMngtDao();
     BusinessPartner bp = OBDal.getInstance().get(BusinessPartner.class, strBPfromInvoiceId);
 
-    XmlDocument xmlDocument = xmlEngine.readXmlTemplate(
-        "org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromInvoice").createXmlDocument();
+    XmlDocument xmlDocument = xmlEngine
+        .readXmlTemplate("org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromInvoice")
+        .createXmlDocument();
 
     xmlDocument.setParameter("directory", "var baseDirectory = \"" + strReplaceWith + "/\";\n");
     xmlDocument.setParameter("language", "defaultLang=\"" + vars.getLanguage() + "\";");
     xmlDocument.setParameter("theme", vars.getTheme());
 
-    if (isReceipt)
+    if (isReceipt) {
       xmlDocument.setParameter("title",
           Utility.messageBD(this, "APRM_AddPaymentIn", vars.getLanguage()));
-    else
+    } else {
       xmlDocument.setParameter("title",
           Utility.messageBD(this, "APRM_AddPaymentOut", vars.getLanguage()));
+    }
     xmlDocument.setParameter("dateDisplayFormat", vars.getSessionValue("#AD_SqlDateFormat"));
     xmlDocument.setParameter("paymentDate", DateTimeData.today(this));
     xmlDocument.setParameter("businessPartner", strBPfromInvoice);
@@ -437,10 +443,9 @@
 
     try {
       OBContext.setAdminMode(true);
-      xmlDocument.setParameter(
-          "credit",
-          dao.getCustomerCredit(bp, isReceipt,
-              OBDal.getInstance().get(Organization.class, strOrgId)).toString());
+      xmlDocument.setParameter("credit", dao
+          .getCustomerCredit(bp, isReceipt, OBDal.getInstance().get(Organization.class, strOrgId))
+          .toString());
     } finally {
       OBContext.restorePreviousMode();
     }
@@ -451,8 +456,8 @@
     parameters.add(strOrgId);
     parameters.add((isReceipt ? "ARR" : "APP"));
     // parameters.add(null);
-    String strDocTypeId = (String) CallStoredProcedure.getInstance().call("AD_GET_DOCTYPE",
-        parameters, null);
+    String strDocTypeId = (String) CallStoredProcedure.getInstance()
+        .call("AD_GET_DOCTYPE", parameters, null);
     String strDocNo = Utility.getDocumentNo(this, vars, "AddPaymentFromInvoice", "FIN_Payment",
         strDocTypeId, strDocTypeId, false, false);
     xmlDocument.setParameter("documentNumber", "<" + strDocNo + ">");
@@ -543,8 +548,8 @@
           .getFinancialAccountCurrency(strFinancialAccountId);
       if (financialAccountCurrency != null) {
         xmlDocument.setParameter("financialAccountCurrencyId", financialAccountCurrency.getId());
-        xmlDocument.setParameter("financialAccountCurrencyPrecision", financialAccountCurrency
-            .getStandardPrecision().toString());
+        xmlDocument.setParameter("financialAccountCurrencyPrecision",
+            financialAccountCurrency.getStandardPrecision().toString());
       }
       BigDecimal exchangeRate = findExchangeRate(vars, paymentCurrency, financialAccountCurrency,
           new Date(), OBDal.getInstance().get(Organization.class, strOrgId),
@@ -608,8 +613,9 @@
     dao = new AdvPaymentMngtDao();
     String[] discard = { "businessPartnerName" };
 
-    XmlDocument xmlDocument = xmlEngine.readXmlTemplate(
-        "org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentGrid", discard).createXmlDocument();
+    XmlDocument xmlDocument = xmlEngine
+        .readXmlTemplate("org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentGrid", discard)
+        .createXmlDocument();
 
     Invoice inv = dao.getObject(Invoice.class, strInvoiceId);
 
@@ -641,8 +647,8 @@
   }
 
   private void refreshPaymentMethodCombo(HttpServletResponse response, String srtPaymentMethod,
-      String strFinancialAccountId, String strOrgId, boolean isReceipt) throws IOException,
-      ServletException {
+      String strFinancialAccountId, String strOrgId, boolean isReceipt)
+      throws IOException, ServletException {
     log4j.debug("Callout: Financial Account has changed to" + strFinancialAccountId);
 
     String paymentMethodComboHtml = FIN_Utility.getPaymentMethodList(srtPaymentMethod,
@@ -740,23 +746,24 @@
       throws IOException, ServletException {
     log4j.debug("Callout: Financial Account has changed to" + strFinancialAccountId);
 
-    FIN_PaymentMethod paymentMethod = OBDal.getInstance().get(FIN_PaymentMethod.class,
-        strPaymentMethod);
-    FIN_FinancialAccount financialAccount = OBDal.getInstance().get(FIN_FinancialAccount.class,
-        strFinancialAccountId);
+    FIN_PaymentMethod paymentMethod = OBDal.getInstance()
+        .get(FIN_PaymentMethod.class, strPaymentMethod);
+    FIN_FinancialAccount financialAccount = OBDal.getInstance()
+        .get(FIN_FinancialAccount.class, strFinancialAccountId);
     FinAccPaymentMethod finAccPaymentMethod = null;
 
     for (FinAccPaymentMethod finAccPaymentMethodItem : financialAccount
         .getFinancialMgmtFinAccPaymentMethodList()) {
-      if (finAccPaymentMethodItem.getPaymentMethod().getId()
+      if (finAccPaymentMethodItem.getPaymentMethod()
+          .getId()
           .equalsIgnoreCase(paymentMethod.getId())) {
         finAccPaymentMethod = finAccPaymentMethodItem;
       }
     }
     String processOprtionsComboHtml = null;
 
-    boolean forcedFinancialAccountTransaction = isReceipt ? finAccPaymentMethod
-        .isAutomaticDeposit() : finAccPaymentMethod.isAutomaticWithdrawn();
+    boolean forcedFinancialAccountTransaction = isReceipt ? finAccPaymentMethod.isAutomaticDeposit()
+        : finAccPaymentMethod.isAutomaticWithdrawn();
 
     try {
       ComboTableData comboTableData = new ComboTableData(vars, this, "LIST", "",
@@ -794,8 +801,8 @@
         if (conversionRateDoc == null) {
           exchangeRate = null;
         } else {
-          exchangeRate = conversionRateDoc.getRate().setScale(conversionRatePrecision,
-              RoundingMode.HALF_UP);
+          exchangeRate = conversionRateDoc.getRate()
+              .setScale(conversionRatePrecision, RoundingMode.HALF_UP);
         }
 
       }
@@ -805,8 +812,8 @@
         if (conversionRate == null) {
           exchangeRate = null;
         } else {
-          exchangeRate = conversionRate.getMultipleRateBy().setScale(conversionRatePrecision,
-              RoundingMode.HALF_UP);
+          exchangeRate = conversionRate.getMultipleRateBy()
+              .setScale(conversionRatePrecision, RoundingMode.HALF_UP);
         }
       }
     }
@@ -814,10 +821,10 @@
   }
 
   private boolean checkDocumentConversionRate(String documentId) {
-    OBCriteria<ConversionRateDoc> conversionRateDocCriteria = OBDal.getInstance().createCriteria(
-        ConversionRateDoc.class);
-    conversionRateDocCriteria.add(Restrictions.eq(ConversionRateDoc.PROPERTY_INVOICE, OBDal
-        .getInstance().get(Invoice.class, documentId)));
+    OBCriteria<ConversionRateDoc> conversionRateDocCriteria = OBDal.getInstance()
+        .createCriteria(ConversionRateDoc.class);
+    conversionRateDocCriteria.add(Restrictions.eq(ConversionRateDoc.PROPERTY_INVOICE,
+        OBDal.getInstance().get(Invoice.class, documentId)));
     if (conversionRateDocCriteria.count() > 0) {
       return true;
     } else {
@@ -839,6 +846,7 @@
     return FieldProviderFactory.getFieldProviderArray(result);
   }
 
+  @Override
   public String getServletInfo() {
     return "Servlet that presents the payment proposal";
     // end of getServletInfo() method
@@ -853,8 +861,8 @@
    * @param strFinAccId
    *          . Indicates the financial account id for the transaction.
    * @param strPmtMethodId
-   *          . Indicates the payment method id for the transaction.
-   * @return. Returns boolean value based on the automatic deposit or automatic withdrawn value.
+   *          . Indicates the payment method id for the transaction. @return. Returns boolean value
+   *          based on the automatic deposit or automatic withdrawn value.
    */
   private Boolean isForcedFinancialAccountTransaction(boolean isReceipt, String strFinAccId,
       String strPmtMethodId) {
@@ -862,8 +870,8 @@
         strFinAccId);
     FIN_PaymentMethod finPmtMethod = new AdvPaymentMngtDao().getObject(FIN_PaymentMethod.class,
         strPmtMethodId);
-    OBCriteria<FinAccPaymentMethod> psdFilter = OBDal.getInstance().createCriteria(
-        FinAccPaymentMethod.class);
+    OBCriteria<FinAccPaymentMethod> psdFilter = OBDal.getInstance()
+        .createCriteria(FinAccPaymentMethod.class);
     psdFilter.add(Restrictions.eq(FinAccPaymentMethod.PROPERTY_ACCOUNT, finAcc));
     psdFilter.add(Restrictions.eq(FinAccPaymentMethod.PROPERTY_PAYMENTMETHOD, finPmtMethod));
     for (FinAccPaymentMethod paymentMethod : psdFilter.list()) {
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromTransaction.java	Wed Mar 07 12:45:04 2018 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromTransaction.java	Mon Feb 11 11:01:09 2019 +0100
@@ -11,7 +11,7 @@
  * under the License.
  * The Original Code is Openbravo ERP.
  * The Initial Developer of the Original Code is Openbravo SLU
- * All portions are Copyright (C) 2010-2013 Openbravo SLU
+ * All portions are Copyright (C) 2010-2018 Openbravo SLU
  * All Rights Reserved.
  * Contributor(s): Enterprise Intelligence Systems (http://www.eintel.com.au).
  *************************************************************************
@@ -88,6 +88,7 @@
   private AdvPaymentMngtDao dao;
   private String exchangeRateFormat = "#,##0.######";
 
+  @Override
   public void doPost(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
     VariablesSecureApp vars = new VariablesSecureApp(request);
@@ -97,8 +98,8 @@
       final RequestFilter docTypeFilter = new ValueListFilter("RCIN", "PDOUT");
       final boolean isReceipt = vars.getRequiredStringParameter("inpDocumentType", docTypeFilter)
           .equals("RCIN");
-      final String strFinancialAccountId = vars.getRequiredStringParameter(
-          "inpFinFinancialAccountId", IsIDFilter.instance);
+      final String strFinancialAccountId = vars
+          .getRequiredStringParameter("inpFinFinancialAccountId", IsIDFilter.instance);
       String strFinBankStatementLineId = vars.getStringParameter("inpFinBankStatementLineId", "",
           IsIDFilter.instance);
       String strCurrencyId = vars.getRequestGlobalVariable("inpCurrencyId", "");
@@ -119,16 +120,16 @@
       final String strDocumentType = vars.getStringParameter("inpDocumentType", "");
       final String strCurrencyId = vars.getRequestGlobalVariable("inpCurrencyId", "");
       final String strDocumentNo = vars.getStringParameter("inpDocumentNo", "");
-      final String strSelectedPaymentDetails = vars.getInStringParameter(
-          "inpScheduledPaymentDetailId", IsIDFilter.instance);
+      final String strSelectedPaymentDetails = vars
+          .getInStringParameter("inpScheduledPaymentDetailId", IsIDFilter.instance);
       boolean isReceipt = vars.getRequiredStringParameter("isReceipt").equals("Y");
       final String strAmountFrom = vars.getNumericParameter("inpAmountFrom", "");
       final String strAmountTo = vars.getNumericParameter("inpAmountTo", "");
 
       printGrid(response, request, vars, strFinancialAccountId, strBusinessPartnerId,
-          strExpectedDateFrom, strExpectedDateTo, strTransDateFrom, strTransDateTo,
-          strDocumentType, strDocumentNo, strSelectedPaymentDetails, isReceipt, strCurrencyId,
-          strAmountFrom, strAmountTo);
+          strExpectedDateFrom, strExpectedDateTo, strTransDateFrom, strTransDateTo, strDocumentType,
+          strDocumentNo, strSelectedPaymentDetails, isReceipt, strCurrencyId, strAmountFrom,
+          strAmountTo);
 
     } else if (vars.commandIn("PAYMENTMETHODCOMBO")) {
       final String strBusinessPartnerId = vars.getRequestGlobalVariable("inpcBpartnerId", "");
@@ -145,8 +146,8 @@
       try {
         OBContext.setAdminMode(true);
         customerCredit = dao.getCustomerCredit(
-            OBDal.getInstance().get(BusinessPartner.class, strBusinessPartnerId), isReceipt, OBDal
-                .getInstance().get(Organization.class, strOrgId));
+            OBDal.getInstance().get(BusinessPartner.class, strBusinessPartnerId), isReceipt,
+            OBDal.getInstance().get(Organization.class, strOrgId));
       } finally {
         OBContext.restorePreviousMode();
       }
@@ -164,12 +165,12 @@
 
     } else if (vars.commandIn("EXCHANGERATE")) {
       final String strCurrencyId = vars.getRequestGlobalVariable("inpCurrencyId", "");
-      final String strFinancialAccountCurrencyId = vars.getRequestGlobalVariable(
-          "inpFinancialAccountCurrencyId", "");
+      final String strFinancialAccountCurrencyId = vars
+          .getRequestGlobalVariable("inpFinancialAccountCurrencyId", "");
       final String strPaymentDate = vars.getRequestGlobalVariable("inpPaymentDate", "");
       final String strFinancialAccountId = vars.getRequiredStringParameter("inpFinancialAccountId");
-      FIN_FinancialAccount fa = OBDal.getInstance().get(FIN_FinancialAccount.class,
-          strFinancialAccountId);
+      FIN_FinancialAccount fa = OBDal.getInstance()
+          .get(FIN_FinancialAccount.class, strFinancialAccountId);
       exchangeRateFormat = vars.getSessionValue("#FormatOutput|generalQtyRelation", "#,##0.######");
       refreshExchangeRate(response, strCurrencyId, strFinancialAccountCurrencyId, strPaymentDate,
           fa.getOrganization(), conversionRatePrecision);
@@ -177,14 +178,14 @@
       boolean isReceipt = vars.getRequiredStringParameter("isReceipt").equals("Y");
       final String strBusinessPartnerId = vars.getRequestGlobalVariable("inpcBpartnerId", "");
       if (!"".equals(strBusinessPartnerId)) {
-        BusinessPartner businessPartner = OBDal.getInstance().get(BusinessPartner.class,
-            strBusinessPartnerId);
+        BusinessPartner businessPartner = OBDal.getInstance()
+            .get(BusinessPartner.class, strBusinessPartnerId);
         if (FIN_Utility.isBlockedBusinessPartner(businessPartner.getId(), isReceipt, 4)) {
           businessPartnerBlocked(response, vars, businessPartner.getIdentifier());
         }
       } else {
-        String strSelectedScheduledPaymentDetailIds = vars.getInStringParameter(
-            "inpScheduledPaymentDetailId", "", null);
+        String strSelectedScheduledPaymentDetailIds = vars
+            .getInStringParameter("inpScheduledPaymentDetailId", "", null);
         if (!"".equals(strSelectedScheduledPaymentDetailIds)) {
           OBContext.setAdminMode(true);
           try {
@@ -221,8 +222,8 @@
       String strFinancialAccountId = vars.getRequiredStringParameter("inpFinancialAccountId");
       String strPaymentAmount = vars.getRequiredNumericParameter("inpActualPayment");
       String strPaymentDate = vars.getRequiredStringParameter("inpPaymentDate");
-      String strSelectedScheduledPaymentDetailIds = vars.getInParameter(
-          "inpScheduledPaymentDetailId", IsIDFilter.instance);
+      String strSelectedScheduledPaymentDetailIds = vars
+          .getInParameter("inpScheduledPaymentDetailId", IsIDFilter.instance);
       String strAddedGLItems = vars.getStringParameter("inpGLItems");
       JSONArray addedGLITemsArray = null;
       try {
@@ -235,22 +236,23 @@
       }
       String strDifferenceAction = vars.getStringParameter("inpDifferenceAction", "");
       BigDecimal refundAmount = BigDecimal.ZERO;
-      if (strDifferenceAction.equals("refund"))
+      if (strDifferenceAction.equals("refund")) {
         refundAmount = new BigDecimal(vars.getRequiredNumericParameter("inpDifference"));
+      }
       String strReferenceNo = vars.getStringParameter("inpReferenceNo", "");
       String paymentCurrencyId = vars.getRequiredStringParameter("inpCurrencyId");
-      BigDecimal exchangeRate = new BigDecimal(vars.getRequiredNumericParameter("inpExchangeRate",
-          "1"));
-      BigDecimal convertedAmount = new BigDecimal(vars.getRequiredNumericParameter(
-          "inpActualConverted", strPaymentAmount));
+      BigDecimal exchangeRate = new BigDecimal(
+          vars.getRequiredNumericParameter("inpExchangeRate", "1"));
+      BigDecimal convertedAmount = new BigDecimal(
+          vars.getRequiredNumericParameter("inpActualConverted", strPaymentAmount));
       OBError message = null;
       // FIXME: added to access the FIN_PaymentSchedule and FIN_PaymentScheduleDetail tables to be
       // removed when new security implementation is done
       OBContext.setAdminMode();
       try {
 
-        List<FIN_PaymentScheduleDetail> selectedPaymentDetails = FIN_Utility.getOBObjectList(
-            FIN_PaymentScheduleDetail.class, strSelectedScheduledPaymentDetailIds);
+        List<FIN_PaymentScheduleDetail> selectedPaymentDetails = FIN_Utility
+            .getOBObjectList(FIN_PaymentScheduleDetail.class, strSelectedScheduledPaymentDetailIds);
         HashMap<String, BigDecimal> selectedPaymentDetailAmounts = FIN_AddPayment
             .getSelectedPaymentDetailsAndAmount(vars, selectedPaymentDetails);
 
@@ -267,11 +269,12 @@
         final List<Object> parameters = new ArrayList<Object>();
         parameters.add(vars.getClient());
         parameters.add(dao.getObject(FIN_FinancialAccount.class, strFinancialAccountId)
-            .getOrganization().getId());
+            .getOrganization()
+            .getId());
         parameters.add((isReceipt ? "ARR" : "APP"));
         // parameters.add(null);
-        String strDocTypeId = (String) CallStoredProcedure.getInstance().call("AD_GET_DOCTYPE",
-            parameters, null);
+        String strDocTypeId = (String) CallStoredProcedure.getInstance()
+            .call("AD_GET_DOCTYPE", parameters, null);
 
         if (strPaymentDocumentNo.startsWith("<")) {
           // get DocumentNo
@@ -339,8 +342,8 @@
                 user2);
           }
         }
-        payment = FIN_AddPayment.savePayment(payment, isReceipt, null, null, null, null, null,
-            null, null, null, null, selectedPaymentDetails, selectedPaymentDetailAmounts,
+        payment = FIN_AddPayment.savePayment(payment, isReceipt, null, null, null, null, null, null,
+            null, null, null, selectedPaymentDetails, selectedPaymentDetailAmounts,
             strDifferenceAction.equals("writeoff"), strDifferenceAction.equals("refund"),
             dao.getObject(Currency.class, paymentCurrencyId), exchangeRate, convertedAmount);
 
@@ -365,9 +368,8 @@
             OBError auxMessage = FIN_AddPayment.processPayment(vars, this,
                 (strAction.equals("PRP") || strAction.equals("PPP")) ? "P" : "D", refundPayment);
             if (newPayment) {
-              final String strNewRefundPaymentMessage = Utility
-                  .parseTranslation(this, vars, vars.getLanguage(), "@APRM_RefundPayment@" + ": "
-                      + refundPayment.getDocumentNo())
+              final String strNewRefundPaymentMessage = Utility.parseTranslation(this, vars,
+                  vars.getLanguage(), "@APRM_RefundPayment@" + ": " + refundPayment.getDocumentNo())
                   + ".";
               message.setMessage(strNewRefundPaymentMessage + " " + message.getMessage());
               if (payment.getGeneratedCredit().compareTo(BigDecimal.ZERO) != 0) {
@@ -395,8 +397,9 @@
       }
 
       log4j.debug("Output: PopUp Response");
-      final XmlDocument xmlDocument = xmlEngine.readXmlTemplate(
-          "org/openbravo/base/secureApp/PopUp_Close_Refresh").createXmlDocument();
+      final XmlDocument xmlDocument = xmlEngine
+          .readXmlTemplate("org/openbravo/base/secureApp/PopUp_Close_Refresh")
+          .createXmlDocument();
       xmlDocument.setParameter("language", "defaultLang=\"" + vars.getLanguage() + "\";");
       response.setContentType("text/html; charset=UTF-8");
       final PrintWriter out = response.getWriter();
@@ -417,27 +420,29 @@
     final FIN_FinancialAccount financialAccount = dao.getObject(FIN_FinancialAccount.class,
         strFinancialAccountId);
 
-    XmlDocument xmlDocument = xmlEngine.readXmlTemplate(
-        "org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromTransaction")
+    XmlDocument xmlDocument = xmlEngine
+        .readXmlTemplate("org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromTransaction")
         .createXmlDocument();
 
     if (!strFinBankStatementLineId.isEmpty()) {
       FIN_BankStatementLine bsline = dao.getObject(FIN_BankStatementLine.class,
           strFinBankStatementLineId);
-      String actualPayment = (isReceipt) ? bsline.getCramount().subtract(bsline.getDramount())
-          .toString() : bsline.getDramount().subtract(bsline.getCramount()).toString();
+      String actualPayment = (isReceipt)
+          ? bsline.getCramount().subtract(bsline.getDramount()).toString()
+          : bsline.getDramount().subtract(bsline.getCramount()).toString();
       xmlDocument.setParameter("actualPayment", actualPayment);
       xmlDocument.setParameter("origActualPayment", actualPayment);
       if (bsline.getBusinessPartner() == null) {
-        OBCriteria<BusinessPartner> obcBP = OBDal.getInstance().createCriteria(
-            BusinessPartner.class);
+        OBCriteria<BusinessPartner> obcBP = OBDal.getInstance()
+            .createCriteria(BusinessPartner.class);
         obcBP.add(Restrictions.eq(BusinessPartner.PROPERTY_NAME, bsline.getBpartnername()));
         obcBP.setMaxResults(1);
         if (obcBP.list() != null && obcBP.list().size() > 0) {
           xmlDocument.setParameter("businessPartner", obcBP.list().get(0).getId());
           xmlDocument.setParameter("businessPartnerName", obcBP.list().get(0).getName());
-          defaultPaymentMethod = (obcBP.list().get(0).getPaymentMethod() != null) ? obcBP.list()
-              .get(0).getPaymentMethod().getId() : "";
+          defaultPaymentMethod = (obcBP.list().get(0).getPaymentMethod() != null)
+              ? obcBP.list().get(0).getPaymentMethod().getId()
+              : "";
         }
       } else {
         xmlDocument.setParameter("businessPartner", bsline.getBusinessPartner().getId());
@@ -445,15 +450,16 @@
       }
     }
     // Take payment date from the add transaction popup
-    xmlDocument.setParameter("paymentDate", strTransactionDate.isEmpty() ? DateTimeData.today(this)
-        : strTransactionDate);
+    xmlDocument.setParameter("paymentDate",
+        strTransactionDate.isEmpty() ? DateTimeData.today(this) : strTransactionDate);
 
-    if (isReceipt)
+    if (isReceipt) {
       xmlDocument.setParameter("title",
           Utility.messageBD(this, "APRM_AddPaymentIn", vars.getLanguage()));
-    else
+    } else {
       xmlDocument.setParameter("title",
           Utility.messageBD(this, "APRM_AddPaymentOut", vars.getLanguage()));
+    }
     xmlDocument.setParameter("directory", "var baseDirectory = \"" + strReplaceWith + "/\";\n");
     xmlDocument.setParameter("language", "defaultLang=\"" + vars.getLanguage() + "\";");
     xmlDocument.setParameter("theme", vars.getTheme());
@@ -461,10 +467,10 @@
     xmlDocument.setParameter("isSoTrx", (isReceipt) ? "Y" : "N");
     xmlDocument.setParameter("finBankStatementLineId", strFinBankStatementLineId);
     xmlDocument.setParameter("orgId", financialAccount.getOrganization().getId());
-    xmlDocument.setParameter("inheritedActualPayment", strFinBankStatementLineId.isEmpty() ? "N"
-        : "Y");
-    xmlDocument.setParameter("displayDoubtfulDebt", displayDoubtfulDebtAmount(isReceipt) ? "true"
-        : "false");
+    xmlDocument.setParameter("inheritedActualPayment",
+        strFinBankStatementLineId.isEmpty() ? "N" : "Y");
+    xmlDocument.setParameter("displayDoubtfulDebt",
+        displayDoubtfulDebtAmount(isReceipt) ? "true" : "false");
 
     // get DocumentNo
     final List<Object> parameters = new ArrayList<Object>();
@@ -472,13 +478,13 @@
     parameters.add(financialAccount.getOrganization().getId());
     parameters.add((isReceipt ? "ARR" : "APP"));
     // parameters.add(null);
-    String strDocTypeId = (String) CallStoredProcedure.getInstance().call("AD_GET_DOCTYPE",
-        parameters, null);
+    String strDocTypeId = (String) CallStoredProcedure.getInstance()
+        .call("AD_GET_DOCTYPE", parameters, null);
     String strDocNo = Utility.getDocumentNo(this, vars, "AddPaymentFromTransaction", "FIN_Payment",
         strDocTypeId, strDocTypeId, false, false);
     xmlDocument.setParameter("documentNumber", "<" + strDocNo + ">");
-    xmlDocument.setParameter("documentType", dao.getObject(DocumentType.class, strDocTypeId)
-        .getName());
+    xmlDocument.setParameter("documentType",
+        dao.getObject(DocumentType.class, strDocTypeId).getName());
 
     Currency paymentCurrency;
     if (strCurrencyId == null || strCurrencyId.isEmpty()) {
@@ -490,8 +496,7 @@
     xmlDocument.setParameter("currencyId", paymentCurrency.getId());
     try {
       ComboTableData comboTableData = new ComboTableData(vars, this, "TABLEDIR", "C_Currency_ID",
-          "", "",
-          Utility.getContext(this, vars, "#AccessibleOrgTree", "AddPaymentFromTransaction"),
+          "", "", Utility.getContext(this, vars, "#AccessibleOrgTree", "AddPaymentFromTransaction"),
           Utility.getContext(this, vars, "#User_Client", "AddPaymentFromTransaction"), 0);
       Utility.fillSQLParameters(this, vars, null, comboTableData, "AddPaymentFromTransaction",
           strCurrencyId);
@@ -509,8 +514,8 @@
       xmlDocument.setParameter("financialAccountCurrencyId", financialAccountCurrency.getId());
       try {
         OBContext.setAdminMode(true);
-        xmlDocument.setParameter("financialAccountCurrencyPrecision", financialAccountCurrency
-            .getStandardPrecision().toString());
+        xmlDocument.setParameter("financialAccountCurrencyPrecision",
+            financialAccountCurrency.getStandardPrecision().toString());
       } finally {
         OBContext.restorePreviousMode();
       }
@@ -558,8 +563,8 @@
     xmlDocument.setParameter("ActionDocument", (isReceipt ? "PRD" : "PPW"));
     try {
       ComboTableData comboTableData = new ComboTableData(vars, this, "LIST", "",
-          (isReceipt ? "F903F726B41A49D3860243101CEEBA25" : "F15C13A199A748F1B0B00E985A64C036"),
-          "", Utility.getContext(this, vars, "#AccessibleOrgTree", "AddPaymentFromTransaction"),
+          (isReceipt ? "F903F726B41A49D3860243101CEEBA25" : "F15C13A199A748F1B0B00E985A64C036"), "",
+          Utility.getContext(this, vars, "#AccessibleOrgTree", "AddPaymentFromTransaction"),
           Utility.getContext(this, vars, "#User_Client", "AddPaymentFromTransaction"), 0);
       Utility.fillSQLParameters(this, vars, null, comboTableData, "AddPaymentFromTransaction", "");
 
@@ -578,26 +583,32 @@
     }
     final String strCentrally = Utility.getContext(this, vars,
         DimensionDisplayUtility.IsAcctDimCentrally, strWindowId);
-    final String strElement_BP = Utility.getContext(this, vars, DimensionDisplayUtility
-        .displayAcctDimensions(strCentrally, DimensionDisplayUtility.DIM_BPartner, doctype,
-            DimensionDisplayUtility.DIM_Header), strWindowId);
-    final String strElement_PR = Utility.getContext(this, vars, DimensionDisplayUtility
-        .displayAcctDimensions(strCentrally, DimensionDisplayUtility.DIM_Product, doctype,
-            DimensionDisplayUtility.DIM_Header), strWindowId);
-    final String strElement_PJ = Utility.getContext(this, vars, DimensionDisplayUtility
-        .displayAcctDimensions(strCentrally, DimensionDisplayUtility.DIM_Project, doctype,
-            DimensionDisplayUtility.DIM_Header), strWindowId);
+    final String strElement_BP = Utility.getContext(this, vars,
+        DimensionDisplayUtility.displayAcctDimensions(strCentrally,
+            DimensionDisplayUtility.DIM_BPartner, doctype, DimensionDisplayUtility.DIM_Header),
+        strWindowId);
+    final String strElement_PR = Utility.getContext(this, vars,
+        DimensionDisplayUtility.displayAcctDimensions(strCentrally,
+            DimensionDisplayUtility.DIM_Product, doctype, DimensionDisplayUtility.DIM_Header),
+        strWindowId);
+    final String strElement_PJ = Utility.getContext(this, vars,
+        DimensionDisplayUtility.displayAcctDimensions(strCentrally,
+            DimensionDisplayUtility.DIM_Project, doctype, DimensionDisplayUtility.DIM_Header),
+        strWindowId);
     final String strElement_AY = Utility.getContext(this, vars, "$Element_AY", strWindowId);
-    final String strElement_CC = Utility.getContext(this, vars, DimensionDisplayUtility
-        .displayAcctDimensions(strCentrally, DimensionDisplayUtility.DIM_CostCenter, doctype,
-            DimensionDisplayUtility.DIM_Header), strWindowId);
+    final String strElement_CC = Utility.getContext(this, vars,
+        DimensionDisplayUtility.displayAcctDimensions(strCentrally,
+            DimensionDisplayUtility.DIM_CostCenter, doctype, DimensionDisplayUtility.DIM_Header),
+        strWindowId);
     final String strElement_MC = Utility.getContext(this, vars, "$Element_MC", strWindowId);
-    final String strElement_U1 = Utility.getContext(this, vars, DimensionDisplayUtility
-        .displayAcctDimensions(strCentrally, DimensionDisplayUtility.DIM_User1, doctype,
-            DimensionDisplayUtility.DIM_Header), strWindowId);
-    final String strElement_U2 = Utility.getContext(this, vars, DimensionDisplayUtility
-        .displayAcctDimensions(strCentrally, DimensionDisplayUtility.DIM_User2, doctype,
-            DimensionDisplayUtility.DIM_Header), strWindowId);
+    final String strElement_U1 = Utility.getContext(this, vars,
+        DimensionDisplayUtility.displayAcctDimensions(strCentrally,
+            DimensionDisplayUtility.DIM_User1, doctype, DimensionDisplayUtility.DIM_Header),
+        strWindowId);
+    final String strElement_U2 = Utility.getContext(this, vars,
+        DimensionDisplayUtility.displayAcctDimensions(strCentrally,
+            DimensionDisplayUtility.DIM_User2, doctype, DimensionDisplayUtility.DIM_Header),
+        strWindowId);
     xmlDocument.setParameter("strElement_BP", strElement_BP);
     xmlDocument.setParameter("strElement_PR", strElement_PR);
     xmlDocument.setParameter("strElement_PJ", strElement_PJ);
@@ -645,8 +656,9 @@
     FIN_FinancialAccount financialAccount = dao.getObject(FIN_FinancialAccount.class,
         strFinancialAccountId);
 
-    XmlDocument xmlDocument = xmlEngine.readXmlTemplate(
-        "org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromTransactionGrid")
+    XmlDocument xmlDocument = xmlEngine
+        .readXmlTemplate(
+            "org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromTransactionGrid")
         .createXmlDocument();
 
     // Pending Payments from invoice
@@ -698,8 +710,8 @@
       }
       obc.add(Restrictions.eq(Invoice.PROPERTY_PAYMENTCOMPLETE, true));