From ae27d03bf6a88dc479824742d33c3cada9b5e085 Mon Sep 17 00:00:00 2001
From: Arthur Coolen <coolen@astron.nl>
Date: Fri, 21 Apr 2006 12:01:31 +0000
Subject: [PATCH] BugID: 703 JAVA Interface to ParmDB class

---
 .gitattributes                                |   1 +
 .gitignore                                    |   1 +
 JAVA/CEP/jParmFacade/Makefile.am              |  11 +
 JAVA/CEP/jParmFacade/bootstrap                |   3 +
 JAVA/CEP/jParmFacade/build.xml                |  69 +++
 JAVA/CEP/jParmFacade/configure.in             |  84 +++
 JAVA/CEP/jParmFacade/include/Makefile.am      |   3 +
 .../include/jParmFacade/Makefile.am           |  17 +
 ...n_lofar_java_cep_jparmfacade_jParmFacade.h |  45 ++
 JAVA/CEP/jParmFacade/jParmFacade.spec.in      | 160 ++++++
 JAVA/CEP/jParmFacade/nbproject/.cvsignore     |   1 +
 JAVA/CEP/jParmFacade/nbproject/build-impl.xml | 541 ++++++++++++++++++
 .../jParmFacade/nbproject/genfiles.properties |   8 +
 .../jParmFacade/nbproject/project.properties  |  55 ++
 JAVA/CEP/jParmFacade/nbproject/project.xml    |  16 +
 JAVA/CEP/jParmFacade/src/Makefile.am          |  34 ++
 .../java/cep/jparmfacade/jParmFacade.java     |  45 ++
 ..._lofar_java_cep_jparmfacade_jParmFacade.cc | 208 +++++++
 JAVA/CEP/jParmFacade/test/Makefile.am         |  30 +
 JAVA/CEP/jParmFacade/test/tParmFacade.java    |  87 +++
 20 files changed, 1419 insertions(+)
 create mode 100644 JAVA/CEP/jParmFacade/Makefile.am
 create mode 100755 JAVA/CEP/jParmFacade/bootstrap
 create mode 100644 JAVA/CEP/jParmFacade/build.xml
 create mode 100644 JAVA/CEP/jParmFacade/configure.in
 create mode 100644 JAVA/CEP/jParmFacade/include/Makefile.am
 create mode 100644 JAVA/CEP/jParmFacade/include/jParmFacade/Makefile.am
 create mode 100644 JAVA/CEP/jParmFacade/include/jParmFacade/nl_astron_lofar_java_cep_jparmfacade_jParmFacade.h
 create mode 100644 JAVA/CEP/jParmFacade/jParmFacade.spec.in
 create mode 100644 JAVA/CEP/jParmFacade/nbproject/.cvsignore
 create mode 100644 JAVA/CEP/jParmFacade/nbproject/build-impl.xml
 create mode 100644 JAVA/CEP/jParmFacade/nbproject/genfiles.properties
 create mode 100644 JAVA/CEP/jParmFacade/nbproject/project.properties
 create mode 100644 JAVA/CEP/jParmFacade/nbproject/project.xml
 create mode 100644 JAVA/CEP/jParmFacade/src/Makefile.am
 create mode 100644 JAVA/CEP/jParmFacade/src/nl/astron/lofar/java/cep/jparmfacade/jParmFacade.java
 create mode 100644 JAVA/CEP/jParmFacade/src/nl_astron_lofar_java_cep_jparmfacade_jParmFacade.cc
 create mode 100644 JAVA/CEP/jParmFacade/test/Makefile.am
 create mode 100644 JAVA/CEP/jParmFacade/test/tParmFacade.java

diff --git a/.gitattributes b/.gitattributes
index 94256d23627..d95588878bf 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -156,6 +156,7 @@ Demo/CEP/TFlopCorrelator/TFC_GUI/plot2.png -text
 Demo/CEP/TFlopCorrelator/TFC_GUI/plot3.png -text
 Demo/CEP/TFlopCorrelator/TFC_GUI/src/tfc_gui/startTFC.sh -text svneol=native#application/octet-stream
 Demo/CEP/TFlopCorrelator/TFC_GUI/startTFC.sh -text svneol=native#application/octet-stream
+JAVA/CEP/jParmFacade/nbproject/.cvsignore -text
 JAVA/GUI/Plotter/.cvsignore -text
 JAVA/GUI/Plotter/doc/Plotter.EAP -text
 JAVA/GUI/Plotter/nbproject/.cvsignore -text
diff --git a/.gitignore b/.gitignore
index 5667c9edbf2..620e64f850d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+JAVA/CEP/jParmFacade/nbproject/private
 JAVA/GUI/Plotter/build
 JAVA/GUI/Plotter/dist
 JAVA/GUI/Plotter/nbproject/private
diff --git a/JAVA/CEP/jParmFacade/Makefile.am b/JAVA/CEP/jParmFacade/Makefile.am
new file mode 100644
index 00000000000..ddcc5198050
--- /dev/null
+++ b/JAVA/CEP/jParmFacade/Makefile.am
@@ -0,0 +1,11 @@
+SUBDIRS=src test include
+
+DISTCHECK_CONFIGURE_FLAGS=\
+      --with-common=$(prefix)
+
+EXTRA_DIST = \
+      Makefile.common \
+      jParmFacade.spec \
+      autoconf_share/compiletool
+
+include $(top_srcdir)/Makefile.common
diff --git a/JAVA/CEP/jParmFacade/bootstrap b/JAVA/CEP/jParmFacade/bootstrap
new file mode 100755
index 00000000000..06f18cde1db
--- /dev/null
+++ b/JAVA/CEP/jParmFacade/bootstrap
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+../../../autoconf_share/bootstrap ../../../autoconf_share
diff --git a/JAVA/CEP/jParmFacade/build.xml b/JAVA/CEP/jParmFacade/build.xml
new file mode 100644
index 00000000000..9a4c5f7aa29
--- /dev/null
+++ b/JAVA/CEP/jParmFacade/build.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- You may freely edit this file. See commented blocks below for -->
+<!-- some examples of how to customize the build. -->
+<!-- (If you delete it and reopen the project it will be recreated.) -->
+<project name="jParmFacade" default="default" basedir=".">
+    <description>Builds, tests, and runs the project jParmFacade.</description>
+    <import file="nbproject/build-impl.xml"/>
+    <!--
+
+    There exist several targets which are by default empty and which can be 
+    used for execution of your tasks. These targets are usually executed 
+    before and after some main targets. They are: 
+
+      -pre-init:                 called before initialization of project properties
+      -post-init:                called after initialization of project properties
+      -pre-compile:              called before javac compilation
+      -post-compile:             called after javac compilation
+      -pre-compile-single:       called before javac compilation of single file
+      -post-compile-single:      called after javac compilation of single file
+      -pre-compile-test:         called before javac compilation of JUnit tests
+      -post-compile-test:        called after javac compilation of JUnit tests
+      -pre-compile-test-single:  called before javac compilation of single JUnit test
+      -post-compile-test-single: called after javac compilation of single JUunit test
+      -pre-jar:                  called before JAR building
+      -post-jar:                 called after JAR building
+      -post-clean:               called after cleaning build products
+
+    (Targets beginning with '-' are not intended to be called on their own.)
+
+    Example of inserting an obfuscator after compilation could look like this:
+
+        <target name="-post-compile">
+            <obfuscate>
+                <fileset dir="${build.classes.dir}"/>
+            </obfuscate>
+        </target>
+
+    For list of available properties check the imported 
+    nbproject/build-impl.xml file. 
+
+
+    Another way to customize the build is by overriding existing main targets.
+    The targets of interest are: 
+
+      -init-macrodef-javac:     defines macro for javac compilation
+      -init-macrodef-junit:     defines macro for junit execution
+      -init-macrodef-debug:     defines macro for class debugging
+      -init-macrodef-java:      defines macro for class execution
+      -do-jar-with-manifest:    JAR building (if you are using a manifest)
+      -do-jar-without-manifest: JAR building (if you are not using a manifest)
+      run:                      execution of project 
+      -javadoc-build:           Javadoc generation
+      test-report:              JUnit report generation
+
+    An example of overriding the target for project execution could look like this:
+
+        <target name="run" depends="jParmFacade-impl.jar">
+            <exec dir="bin" executable="launcher.exe">
+                <arg file="${dist.jar}"/>
+            </exec>
+        </target>
+
+    Notice that the overridden target depends on the jar target and not only on 
+    the compile target as the regular run target does. Again, for a list of available 
+    properties which you can use, check the target you are overriding in the
+    nbproject/build-impl.xml file. 
+
+    -->
+</project>
diff --git a/JAVA/CEP/jParmFacade/configure.in b/JAVA/CEP/jParmFacade/configure.in
new file mode 100644
index 00000000000..823b5a23593
--- /dev/null
+++ b/JAVA/CEP/jParmFacade/configure.in
@@ -0,0 +1,84 @@
+dnl
+dnl Process this file with autoconf to produce a configure script.
+dnl
+AC_INIT
+dnl AC_CONFIG_AUX_DIR(config)
+dnl AM_CONFIG_HEADER(config/config.h)
+AM_CONFIG_HEADER(config.h)
+AM_INIT_AUTOMAKE(jParmFacade, 1.0, no-define)
+
+dnl Initialize for LOFAR (may set compilers)
+lofar_INIT
+
+dnl Checks for programs.
+AC_PROG_AWK
+AC_PROG_YACC
+AC_PROG_CC
+AC_PROG_CXX
+AM_PROG_LEX
+AC_PROG_INSTALL
+AC_PROG_LN_S
+dnl AC_DISABLE_SHARED
+AC_PROG_LIBTOOL
+
+dnl Checks for libraries.
+
+dnl dnl Replace `main' with a function in -lfl:
+dnl AC_CHECK_LIB(fl, main)
+dnl dnl Replace `main' with a function in -lcosev_r:
+dnl AC_CHECK_LIB(cosev_r, main)
+dnl dnl Replace `main' with a function in -lcosnm_r:
+dnl AC_CHECK_LIB(cosnm_r, main)
+dnl dnl Replace `main' with a function in -lorb_r:
+dnl AC_CHECK_LIB(orb_r, main)
+dnl dnl Replace `main' with a function in -lpthread:
+dnl AC_CHECK_LIB(pthread, main)
+dnl dnl Replace `main' with a function in -lvport_r:
+dnl AC_CHECK_LIB(vport_r, main)
+
+dnl Checks for header files.
+AC_HEADER_STDC
+AC_CHECK_HEADERS(unistd.h)
+
+dnl Checks for typedefs, structures, and compiler characteristics.
+AC_C_CONST
+AC_TYPE_SIZE_T
+
+dnl Checks for library functions.
+AC_FUNC_VPRINTF
+
+dnl
+dnl Check for LOFAR specific things
+dnl
+dnl lofar_BLITZ
+dnl lofar_MPI
+lofar_GENERAL
+lofar_INTERNAL(CEP/BB/ParmDB,ParmDB,,1,ParmDB/ParmDB.h,,)
+lofar_INTERNAL(CEP/BB/BBS3,BBS3,,1,BBS3/MNS/MeqFunklet.h,,)
+lofar_INTERNAL(CEP/BB/ParmFacade,ParmFacade,,1,ParmFacade/ParmFacade.h,,)
+lofar_INTERNAL(CEP/BB/MS,MS,,1,MS/MSDesc.h,bbms)
+lofar_INTERNAL(CEP/CEPFrame,CEPFrame,,1,CEPFrame/DataManager.h)
+lofar_INTERNAL(CEP/tinyCEP,tinyCEP,,1,tinyCEP/TinyDataManager.h,,)
+lofar_INTERNAL(LCS/ACC/PLC,PLC,,1,PLC/ProcessControl.h,,)
+lofar_INTERNAL(LCS/ACC/APS,APS,,1,APS/ParameterSet.h)
+lofar_INTERNAL(LCS/databases/TransportPostgres,TransportPostgres,,1,TransportPostgres/DH_DB.h,,)
+lofar_INTERNAL(LCS/Transport,Transport,,1,Transport/TransportHolder.h,,)
+lofar_INTERNAL(LCS/Blob,Blob,,1,Blob/BlobHeader.h,,)
+lofar_INTERNAL(LCS/Common,Common,,1,Common/LofarTypedefs.h,,)
+
+lofar_EXTERNAL(pq,,libpq-fe.h, pq, /usr/local/pgsql)
+lofar_EXTERNAL(pqxx,2.5.5,pqxx/pqxx, pqxx)
+lofar_AIPSPP(1,"-lms -lmeasures -ltables -lscimath -lscimath_f -lcasa")
+lofar_LAPACK(1)
+lofar_EXTERNAL(boost,1,boost/logic/tribool.hpp,"")
+dnl
+dnl Output Makefiles
+dnl
+AC_OUTPUT(
+include/Makefile
+include/jParmFacade/Makefile
+src/Makefile
+test/Makefile
+Makefile
+jParmFacade.spec
+)
diff --git a/JAVA/CEP/jParmFacade/include/Makefile.am b/JAVA/CEP/jParmFacade/include/Makefile.am
new file mode 100644
index 00000000000..0606522e7d2
--- /dev/null
+++ b/JAVA/CEP/jParmFacade/include/Makefile.am
@@ -0,0 +1,3 @@
+SUBDIRS	= jParmFacade
+
+include $(top_srcdir)/Makefile.common
diff --git a/JAVA/CEP/jParmFacade/include/jParmFacade/Makefile.am b/JAVA/CEP/jParmFacade/include/jParmFacade/Makefile.am
new file mode 100644
index 00000000000..89c34adf157
--- /dev/null
+++ b/JAVA/CEP/jParmFacade/include/jParmFacade/Makefile.am
@@ -0,0 +1,17 @@
+# if HAVE_SHMEM
+# SUBDIRS = shmem .
+# endif
+
+INSTHDRS = nl_astron_lofar_java_cep_jparmfacade_jParmFacade.h
+
+NOINSTHDRS =
+
+TCCHDRS =
+
+nobase_pkginclude_HEADERS = $(INSTHDRS) $(TCCHDRS)
+
+noinst_HEADERS = $(NOINSTHDRS)
+
+DOCHDRS = $(INSTHDRS) $(NOINSTHDRS)
+
+include $(top_srcdir)/Makefile.common
diff --git a/JAVA/CEP/jParmFacade/include/jParmFacade/nl_astron_lofar_java_cep_jparmfacade_jParmFacade.h b/JAVA/CEP/jParmFacade/include/jParmFacade/nl_astron_lofar_java_cep_jparmfacade_jParmFacade.h
new file mode 100644
index 00000000000..909e5761ecd
--- /dev/null
+++ b/JAVA/CEP/jParmFacade/include/jParmFacade/nl_astron_lofar_java_cep_jparmfacade_jParmFacade.h
@@ -0,0 +1,45 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class nl_astron_lofar_java_cep_jparmfacade_jParmFacade */
+
+#ifndef _Included_nl_astron_lofar_java_cep_jparmfacade_jParmFacade
+#define _Included_nl_astron_lofar_java_cep_jparmfacade_jParmFacade
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class:     nl_astron_lofar_java_cep_jparmfacade_jParmFacade
+ * Method:    initParmFacade
+ * Signature: (Ljava/lang/String;)V
+ */
+JNIEXPORT void JNICALL Java_nl_astron_lofar_java_cep_jparmfacade_jParmFacade_initParmFacade
+  (JNIEnv *, jobject, jstring);
+
+/*
+ * Class:     nl_astron_lofar_java_cep_jparmfacade_jParmFacade
+ * Method:    getRange
+ * Signature: (Ljava/lang/String;)Ljava/util/Vector;
+ */
+JNIEXPORT jobject JNICALL Java_nl_astron_lofar_java_cep_jparmfacade_jParmFacade_getRange
+  (JNIEnv *, jobject, jstring);
+
+/*
+ * Class:     nl_astron_lofar_java_cep_jparmfacade_jParmFacade
+ * Method:    getNames
+ * Signature: (Ljava/lang/String;)Ljava/util/Vector;
+ */
+JNIEXPORT jobject JNICALL Java_nl_astron_lofar_java_cep_jparmfacade_jParmFacade_getNames
+  (JNIEnv *, jobject, jstring);
+
+/*
+ * Class:     nl_astron_lofar_java_cep_jparmfacade_jParmFacade
+ * Method:    getValues
+ * Signature: (Ljava/lang/String;DDIDDI)Ljava/util/HashMap;
+ */
+JNIEXPORT jobject JNICALL Java_nl_astron_lofar_java_cep_jparmfacade_jParmFacade_getValues
+  (JNIEnv *, jobject, jstring, jdouble, jdouble, jint, jdouble, jdouble, jint);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/JAVA/CEP/jParmFacade/jParmFacade.spec.in b/JAVA/CEP/jParmFacade/jParmFacade.spec.in
new file mode 100644
index 00000000000..f053bd89130
--- /dev/null
+++ b/JAVA/CEP/jParmFacade/jParmFacade.spec.in
@@ -0,0 +1,160 @@
+# -*- Mode:rpm-spec -*-
+# jParmFacade.spec.in
+#
+
+##############################################################################
+#
+# Preamble
+#
+##############################################################################
+
+Summary: jParmFacade is ... brief description ...
+
+%define release @RPM_RELEASE@
+%define version @VERSION@
+%define pkgname @PACKAGE@
+%define pkgdir %{pkgname}-%{version}-%{release}
+%define prefix /opt/lofar
+%define configure_args @RPM_CONFIGURE_ARGS@
+##define build_kernel_version @BUILD_KERNEL_VERSION@
+
+Name: %{pkgname}
+Version: %{version}
+Release: %{release}
+Copyright: LGPL
+Group: Application/System
+Source: %{pkgname}-%{version}.tar.gz
+BuildRoot: %{_tmppath}/%{pkgdir}-root
+URL: http://www.astron.nl
+Prefix: %{prefix}
+BuildArchitectures: i386 # Target platforms, i.e., i586
+##Requires: Common = 1.2   ## define dependent packages here
+Packager: %{packager}
+Distribution: The LOFAR project
+Vendor: ASTRON
+
+AutoReqProv: no
+
+%description
+
+jParmFacade ... more detailed description ...
+
+##############################################################################
+#
+# prep
+#
+##############################################################################
+%prep
+echo $prefix
+
+# create the build directory, untar the source
+%setup
+
+##############################################################################
+#
+# build
+#
+##############################################################################
+%build
+./configure %{configure_args} --prefix=%{prefix} && make
+
+##############################################################################
+#
+# install
+#
+##############################################################################
+%install
+# To make things work with BUILDROOT
+if [ "$RPM_BUILD_ROOT" != "%{_tmppath}/%{pkgdir}-root" ]
+then
+  echo
+  echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+  echo @                                                                    @
+  echo @  RPM_BUILD_ROOT is not what I expected.  Please clean it yourself. @
+  echo @                                                                    @
+  echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+  echo
+else
+  echo Cleaning RPM_BUILD_ROOT: "$RPM_BUILD_ROOT"
+  rm -rf "$RPM_BUILD_ROOT"
+fi
+mkdir -p $RPM_BUILD_ROOT%{prefix}
+make DESTDIR="$RPM_BUILD_ROOT" install
+
+#uninstall
+
+##############################################################################
+#
+# verify
+#
+##############################################################################
+#verify
+
+##############################################################################
+#
+# clean
+#
+##############################################################################
+%clean
+# Call me paranoid, but I do not want to be responsible for nuking
+# someone's harddrive!
+if [ "$RPM_BUILD_ROOT" != "%{_tmppath}/%{pkgdir}-root" ]
+then
+  echo
+  echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+  echo @                                                                    @
+  echo @  RPM_BUILD_ROOT is not what I expected.  Please clean it yourself. @
+  echo @                                                                    @
+  echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+  echo
+else
+  echo Cleaning RPM_BUILD_ROOT: "$RPM_BUILD_ROOT"
+  rm -rf "$RPM_BUILD_ROOT"
+fi
+
+##############################################################################
+#
+# files
+#
+##############################################################################
+
+# empty 'files' means all distributed files
+%files
+%defattr(-, root, root)
+%{prefix}
+
+# Your application file list goes here
+# %{prefix}/lib/lib*.so*
+
+# Documentation
+# doc COPYING ChangeLog README AUTHORS NEWS
+# doc doc/*
+
+# link the module to the correct path
+%post 
+
+# before uninstall
+%preun
+
+# after uninstall
+%postun
+
+##############################################################################
+#
+# package devel
+#
+##############################################################################
+
+#package devel
+#Summary: Development files for %{pkgname}
+#Group: Applications/System
+#description devel
+#Development files for %{pkgname}.
+
+#files devel
+
+# Your development files go here
+# Programmers documentation goes here
+#doc doc
+
+# end of file
diff --git a/JAVA/CEP/jParmFacade/nbproject/.cvsignore b/JAVA/CEP/jParmFacade/nbproject/.cvsignore
new file mode 100644
index 00000000000..3e18ebf09ec
--- /dev/null
+++ b/JAVA/CEP/jParmFacade/nbproject/.cvsignore
@@ -0,0 +1 @@
+private
diff --git a/JAVA/CEP/jParmFacade/nbproject/build-impl.xml b/JAVA/CEP/jParmFacade/nbproject/build-impl.xml
new file mode 100644
index 00000000000..d9b615550db
--- /dev/null
+++ b/JAVA/CEP/jParmFacade/nbproject/build-impl.xml
@@ -0,0 +1,541 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+*** GENERATED FROM project.xml - DO NOT EDIT  ***
+***         EDIT ../build.xml INSTEAD         ***
+
+For the purpose of easier reading the script
+is divided into following sections:
+
+  - initialization
+  - compilation
+  - jar
+  - execution
+  - debugging
+  - javadoc
+  - junit compilation
+  - junit execution
+  - junit debugging
+  - applet
+  - cleanup
+
+-->
+<project name="jParmFacade-impl" default="default" basedir=".." xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:j2seproject2="http://www.netbeans.org/ns/j2se-project/2" xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1">
+    <target name="default" depends="test,jar,javadoc" description="Build and test whole project."/>
+    <!-- 
+    ======================
+    INITIALIZATION SECTION 
+    ======================
+    -->
+    <target name="-pre-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="-init-private" depends="-pre-init">
+        <property file="nbproject/private/private.properties"/>
+    </target>
+    <target name="-init-user" depends="-pre-init,-init-private">
+        <property file="${user.properties.file}"/>
+        <!-- The two properties below are usually overridden -->
+        <!-- by the active platform. Just a fallback. -->
+        <property name="default.javac.source" value="1.4"/>
+        <property name="default.javac.target" value="1.4"/>
+    </target>
+    <target name="-init-project" depends="-pre-init,-init-private,-init-user">
+        <property file="nbproject/project.properties"/>
+    </target>
+    <target name="-do-init" depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property">
+        <available file="${manifest.file}" property="manifest.available"/>
+        <condition property="manifest.available+main.class">
+            <and>
+                <isset property="manifest.available"/>
+                <isset property="main.class"/>
+                <not>
+                    <equals arg1="${main.class}" arg2="" trim="true"/>
+                </not>
+            </and>
+        </condition>
+        <condition property="manifest.available+main.class+mkdist.available">
+            <and>
+                <istrue value="${manifest.available+main.class}"/>
+                <isset property="libs.CopyLibs.classpath"/>
+            </and>
+        </condition>
+        <condition property="have.tests">
+            <or>
+                <available file="${test.src.dir}"/>
+            </or>
+        </condition>
+        <condition property="have.sources">
+            <or>
+                <available file="${src.dir}"/>
+            </or>
+        </condition>
+        <condition property="netbeans.home+have.tests">
+            <and>
+                <isset property="netbeans.home"/>
+                <isset property="have.tests"/>
+            </and>
+        </condition>
+        <condition property="no.javadoc.preview">
+            <isfalse value="${javadoc.preview}"/>
+        </condition>
+        <property name="run.jvmargs" value=""/>
+        <property name="javac.compilerargs" value=""/>
+        <property name="work.dir" value="${basedir}"/>
+        <condition property="no.deps">
+            <and>
+                <istrue value="${no.dependencies}"/>
+            </and>
+        </condition>
+        <property name="javac.debug" value="true"/>
+        <property name="javadoc.preview" value="true"/>
+    </target>
+    <target name="-post-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="-init-check" depends="-pre-init,-init-private,-init-user,-init-project,-do-init">
+        <fail unless="src.dir">Must set src.dir</fail>
+        <fail unless="test.src.dir">Must set test.src.dir</fail>
+        <fail unless="build.dir">Must set build.dir</fail>
+        <fail unless="dist.dir">Must set dist.dir</fail>
+        <fail unless="build.classes.dir">Must set build.classes.dir</fail>
+        <fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
+        <fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
+        <fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
+        <fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
+        <fail unless="dist.jar">Must set dist.jar</fail>
+    </target>
+    <target name="-init-macrodef-property">
+        <macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute name="name"/>
+            <attribute name="value"/>
+            <sequential>
+                <property name="@{name}" value="${@{value}}"/>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-javac">
+        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute name="srcdir" default="${src.dir}"/>
+            <attribute name="destdir" default="${build.classes.dir}"/>
+            <attribute name="classpath" default="${javac.classpath}"/>
+            <attribute name="debug" default="${javac.debug}"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <javac srcdir="@{srcdir}" destdir="@{destdir}" debug="@{debug}" deprecation="${javac.deprecation}" source="${javac.source}" target="${javac.target}" includeantruntime="false">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <compilerarg line="${javac.compilerargs}"/>
+                    <customize/>
+                </javac>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-junit">
+        <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute name="includes" default="**/*Test.java"/>
+            <sequential>
+                <junit showoutput="true" fork="true" dir="${basedir}" failureproperty="tests.failed" errorproperty="tests.failed">
+                    <batchtest todir="${build.test.results.dir}">
+                        <fileset dir="${test.src.dir}" includes="@{includes}"/>
+                    </batchtest>
+                    <classpath>
+                        <path path="${run.test.classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper type="glob" from="test-sys-prop.*" to="*"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-nbjpda">
+        <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute name="name" default="${main.class}"/>
+            <attribute name="classpath" default="${debug.classpath}"/>
+            <attribute name="stopclassname" default=""/>
+            <sequential>
+                <nbjpdastart transport="dt_socket" addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                </nbjpdastart>
+            </sequential>
+        </macrodef>
+        <macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute name="dir" default="${build.classes.dir}"/>
+            <sequential>
+                <nbjpdareload>
+                    <fileset includes="${fix.includes}*.class" dir="@{dir}"/>
+                </nbjpdareload>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-debug">
+        <macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute name="classname" default="${main.class}"/>
+            <attribute name="classpath" default="${debug.classpath}"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java fork="true" classname="@{classname}" dir="${work.dir}">
+                    <jvmarg value="-Xdebug"/>
+                    <jvmarg value="-Xnoagent"/>
+                    <jvmarg value="-Djava.compiler=none"/>
+                    <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper type="glob" from="run-sys-prop.*" to="*"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-java">
+        <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute name="classname" default="${main.class}"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java fork="true" classname="@{classname}" dir="${work.dir}">
+                    <jvmarg line="${run.jvmargs}"/>
+                    <classpath>
+                        <path path="${run.classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper type="glob" from="run-sys-prop.*" to="*"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-presetdef-jar">
+        <presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <jar jarfile="${dist.jar}" compress="${jar.compress}">
+                <j2seproject1:fileset dir="${build.classes.dir}"/>
+            </jar>
+        </presetdef>
+    </target>
+    <target name="init" depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar"/>
+    <!--
+    ===================
+    COMPILATION SECTION
+    ===================
+    -->
+    <target name="deps-jar" depends="init" unless="no.deps"/>
+    <target name="-pre-pre-compile" depends="init,deps-jar">
+        <mkdir dir="${build.classes.dir}"/>
+    </target>
+    <target name="-pre-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="-do-compile" depends="init,deps-jar,-pre-pre-compile,-pre-compile" if="have.sources">
+        <j2seproject3:javac/>
+        <copy todir="${build.classes.dir}">
+            <fileset dir="${src.dir}" excludes="${build.classes.excludes}"/>
+        </copy>
+    </target>
+    <target name="-post-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="compile" depends="init,deps-jar,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project."/>
+    <target name="-pre-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="-do-compile-single" depends="init,deps-jar,-pre-pre-compile">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <j2seproject3:javac>
+            <customize>
+                <patternset includes="${javac.includes}"/>
+            </customize>
+        </j2seproject3:javac>
+    </target>
+    <target name="-post-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="compile-single" depends="init,deps-jar,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single"/>
+    <!--
+    ====================
+    JAR BUILDING SECTION
+    ====================
+    -->
+    <target name="-pre-pre-jar" depends="init">
+        <dirname property="dist.jar.dir" file="${dist.jar}"/>
+        <mkdir dir="${dist.jar.dir}"/>
+    </target>
+    <target name="-pre-jar">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="-do-jar-without-manifest" depends="init,compile,-pre-pre-jar,-pre-jar" unless="manifest.available">
+        <j2seproject1:jar/>
+    </target>
+    <target name="-do-jar-with-manifest" depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" unless="manifest.available+main.class">
+        <j2seproject1:jar manifest="${manifest.file}"/>
+    </target>
+    <target name="-do-jar-with-mainclass" depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class" unless="manifest.available+main.class+mkdist.available">
+        <j2seproject1:jar manifest="${manifest.file}">
+            <j2seproject1:manifest>
+                <j2seproject1:attribute name="Main-Class" value="${main.class}"/>
+            </j2seproject1:manifest>
+        </j2seproject1:jar>
+        <echo>To run this application from the command line without Ant, try:</echo>
+        <property name="build.classes.dir.resolved" location="${build.classes.dir}"/>
+        <property name="dist.jar.resolved" location="${dist.jar}"/>
+        <pathconvert property="run.classpath.with.dist.jar">
+            <path path="${run.classpath}"/>
+            <map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
+        </pathconvert>
+        <echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
+    </target>
+    <target name="-do-jar-with-libraries" depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class+mkdist.available">
+        <property name="build.classes.dir.resolved" location="${build.classes.dir}"/>
+        <pathconvert property="run.classpath.without.build.classes.dir">
+            <path path="${run.classpath}"/>
+            <map from="${build.classes.dir.resolved}" to=""/>
+        </pathconvert>
+        <pathconvert property="jar.classpath" pathsep=" ">
+            <path path="${run.classpath.without.build.classes.dir}"/>
+            <chainedmapper>
+                <flattenmapper/>
+                <globmapper from="*" to="lib/*"/>
+            </chainedmapper>
+        </pathconvert>
+        <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" name="copylibs" classpath="${libs.CopyLibs.classpath}"/>
+        <copylibs manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}" jarfile="${dist.jar}" compress="${jar.compress}">
+            <fileset dir="${build.classes.dir}"/>
+            <manifest>
+                <attribute name="Main-Class" value="${main.class}"/>
+                <attribute name="Class-Path" value="${jar.classpath}"/>
+            </manifest>
+        </copylibs>
+        <echo>To run this application from the command line without Ant, try:</echo>
+        <property name="dist.jar.resolved" location="${dist.jar}"/>
+        <echo>java -jar "${dist.jar.resolved}"</echo>
+    </target>
+    <target name="-post-jar">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="jar" depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-post-jar" description="Build JAR."/>
+    <!--
+    =================
+    EXECUTION SECTION
+    =================
+    -->
+    <target name="run" depends="init,compile" description="Run a main class.">
+        <j2seproject1:java>
+            <customize>
+                <arg line="${application.args}"/>
+            </customize>
+        </j2seproject1:java>
+    </target>
+    <target name="run-single" depends="init,compile-single">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <j2seproject1:java classname="${run.class}"/>
+    </target>
+    <!--
+    =================
+    DEBUGGING SECTION
+    =================
+    -->
+    <target name="-debug-start-debugger" if="netbeans.home" depends="init">
+        <j2seproject1:nbjpdastart name="${debug.class}"/>
+    </target>
+    <target name="-debug-start-debuggee" depends="init,compile">
+        <j2seproject3:debug>
+            <customize>
+                <arg line="${application.args}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target name="debug" if="netbeans.home" depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE."/>
+    <target name="-debug-start-debugger-stepinto" if="netbeans.home" depends="init">
+        <j2seproject1:nbjpdastart stopclassname="${main.class}"/>
+    </target>
+    <target name="debug-stepinto" if="netbeans.home" depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee"/>
+    <target name="-debug-start-debuggee-single" if="netbeans.home" depends="init,compile-single">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <j2seproject3:debug classname="${debug.class}"/>
+    </target>
+    <target name="debug-single" if="netbeans.home" depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single"/>
+    <target name="-pre-debug-fix" depends="init">
+        <fail unless="fix.includes">Must set fix.includes</fail>
+        <property name="javac.includes" value="${fix.includes}.java"/>
+    </target>
+    <target name="-do-debug-fix" if="netbeans.home" depends="init,-pre-debug-fix,compile-single">
+        <j2seproject1:nbjpdareload/>
+    </target>
+    <target name="debug-fix" if="netbeans.home" depends="init,-pre-debug-fix,-do-debug-fix"/>
+    <!--
+    ===============
+    JAVADOC SECTION
+    ===============
+    -->
+    <target name="-javadoc-build" depends="init">
+        <mkdir dir="${dist.javadoc.dir}"/>
+        <javadoc destdir="${dist.javadoc.dir}" source="${javac.source}" notree="${javadoc.notree}" use="${javadoc.use}" nonavbar="${javadoc.nonavbar}" noindex="${javadoc.noindex}" splitindex="${javadoc.splitindex}" author="${javadoc.author}" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}" private="${javadoc.private}" additionalparam="${javadoc.additionalparam}" failonerror="true" useexternalfile="true">
+            <classpath>
+                <path path="${javac.classpath}"/>
+            </classpath>
+            <sourcepath>
+                <pathelement location="${src.dir}"/>
+            </sourcepath>
+            <packageset dir="${src.dir}" includes="*/**"/>
+            <fileset dir="${src.dir}" includes="*.java"/>
+        </javadoc>
+    </target>
+    <target name="-javadoc-browse" if="netbeans.home" unless="no.javadoc.preview" depends="init,-javadoc-build">
+        <nbbrowse file="${dist.javadoc.dir}/index.html"/>
+    </target>
+    <target name="javadoc" depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc."/>
+    <!--
+    =========================
+    JUNIT COMPILATION SECTION
+    =========================
+    -->
+    <target name="-pre-pre-compile-test" if="have.tests" depends="init,compile">
+        <mkdir dir="${build.test.classes.dir}"/>
+    </target>
+    <target name="-pre-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="-do-compile-test" if="have.tests" depends="init,compile,-pre-pre-compile-test,-pre-compile-test">
+        <j2seproject3:javac srcdir="${test.src.dir}" destdir="${build.test.classes.dir}" debug="true" classpath="${javac.test.classpath}"/>
+        <copy todir="${build.test.classes.dir}">
+            <fileset dir="${test.src.dir}" excludes="**/*.java"/>
+        </copy>
+    </target>
+    <target name="-post-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="compile-test" depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test"/>
+    <target name="-pre-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="-do-compile-test-single" if="have.tests" depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <j2seproject3:javac srcdir="${test.src.dir}" destdir="${build.test.classes.dir}" debug="true" classpath="${javac.test.classpath}">
+            <customize>
+                <patternset includes="${javac.includes}"/>
+            </customize>
+        </j2seproject3:javac>
+        <copy todir="${build.test.classes.dir}">
+            <fileset dir="${test.src.dir}" excludes="**/*.java"/>
+        </copy>
+    </target>
+    <target name="-post-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="compile-test-single" depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single"/>
+    <!--
+    =======================
+    JUNIT EXECUTION SECTION
+    =======================
+    -->
+    <target name="-pre-test-run" if="have.tests" depends="init">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target name="-do-test-run" if="have.tests" depends="init,compile-test,-pre-test-run">
+        <j2seproject3:junit/>
+    </target>
+    <target name="-post-test-run" if="have.tests" depends="init,compile-test,-pre-test-run,-do-test-run">
+        <fail if="tests.failed">Some tests failed; see details above.</fail>
+    </target>
+    <target name="test-report" if="have.tests" depends="init"/>
+    <target name="-test-browse" if="netbeans.home+have.tests" depends="init"/>
+    <target name="test" depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests."/>
+    <target name="-pre-test-run-single" if="have.tests" depends="init">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target name="-do-test-run-single" if="have.tests" depends="init,compile-test-single,-pre-test-run-single">
+        <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
+        <j2seproject3:junit includes="${test.includes}"/>
+    </target>
+    <target name="-post-test-run-single" if="have.tests" depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single">
+        <fail if="tests.failed">Some tests failed; see details above.</fail>
+    </target>
+    <target name="test-single" depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test."/>
+    <!--
+    =======================
+    JUNIT DEBUGGING SECTION
+    =======================
+    -->
+    <target name="-debug-start-debuggee-test" if="have.tests" depends="init,compile-test">
+        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
+        <j2seproject3:debug classname="junit.textui.TestRunner" classpath="${debug.test.classpath}">
+            <customize>
+                <arg line="${test.class}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target name="-debug-start-debugger-test" if="netbeans.home+have.tests" depends="init,compile-test">
+        <j2seproject1:nbjpdastart name="${test.class}" classpath="${debug.test.classpath}"/>
+    </target>
+    <target name="debug-test" depends="init,compile-test,-debug-start-debugger-test,-debug-start-debuggee-test"/>
+    <target name="-do-debug-fix-test" if="netbeans.home" depends="init,-pre-debug-fix,compile-test-single">
+        <j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
+    </target>
+    <target name="debug-fix-test" if="netbeans.home" depends="init,-pre-debug-fix,-do-debug-fix-test"/>
+    <!--
+    =========================
+    APPLET EXECUTION SECTION
+    =========================
+    -->
+    <target name="run-applet" depends="init,compile-single">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <j2seproject1:java classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </j2seproject1:java>
+    </target>
+    <!--
+    =========================
+    APPLET DEBUGGING  SECTION
+    =========================
+    -->
+    <target name="-debug-start-debuggee-applet" if="netbeans.home" depends="init,compile-single">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <j2seproject3:debug classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target name="debug-applet" if="netbeans.home" depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet"/>
+    <!--
+    ===============
+    CLEANUP SECTION
+    ===============
+    -->
+    <target name="deps-clean" depends="init" unless="no.deps"/>
+    <target name="-do-clean" depends="init">
+        <delete dir="${build.dir}"/>
+        <delete dir="${dist.dir}"/>
+    </target>
+    <target name="-post-clean">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="clean" depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products."/>
+</project>
diff --git a/JAVA/CEP/jParmFacade/nbproject/genfiles.properties b/JAVA/CEP/jParmFacade/nbproject/genfiles.properties
new file mode 100644
index 00000000000..2f411630fd2
--- /dev/null
+++ b/JAVA/CEP/jParmFacade/nbproject/genfiles.properties
@@ -0,0 +1,8 @@
+build.xml.data.CRC32=1fc8ec8b
+build.xml.script.CRC32=396fe1e4
+build.xml.stylesheet.CRC32=d5b6853a
+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=1fc8ec8b
+nbproject/build-impl.xml.script.CRC32=0d8554a3
+nbproject/build-impl.xml.stylesheet.CRC32=99b91518
diff --git a/JAVA/CEP/jParmFacade/nbproject/project.properties b/JAVA/CEP/jParmFacade/nbproject/project.properties
new file mode 100644
index 00000000000..2002d2e9437
--- /dev/null
+++ b/JAVA/CEP/jParmFacade/nbproject/project.properties
@@ -0,0 +1,55 @@
+application.args=
+build.classes.dir=${build.dir}/classes
+build.classes.excludes=**/*.java,**/*.form
+# This directory is removed when the project is cleaned:
+build.dir=build
+build.generated.dir=${build.dir}/generated
+# Only compile against the classpath explicitly listed here:
+build.sysclasspath=ignore
+build.test.classes.dir=${build.dir}/test/classes
+build.test.results.dir=${build.dir}/test/results
+debug.classpath=\
+    ${run.classpath}
+debug.test.classpath=\
+    ${run.test.classpath}
+# This directory is removed when the project is cleaned:
+dist.dir=dist
+dist.jar=${dist.dir}/jParmFacade.jar
+dist.javadoc.dir=${dist.dir}/javadoc
+jar.compress=false
+javac.classpath=
+# Space-separated list of extra javac options
+javac.compilerargs=
+javac.deprecation=false
+javac.source=1.5
+javac.target=1.5
+javac.test.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}:\
+    ${libs.junit.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+main.class=nl.astron.lofar.java.cep.jparmfacade.tParmFacade
+meta.inf.dir=${src.dir}/META-INF
+platform.active=default_platform
+run.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}
+# Space-separated list of JVM arguments used when running the project
+# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
+# or test-sys-prop.name=value to set system properties for unit tests):
+run.jvmargs=
+run.test.classpath=\
+    ${javac.test.classpath}:\
+    ${build.test.classes.dir}
+src.dir=src
+test.src.dir=test
diff --git a/JAVA/CEP/jParmFacade/nbproject/project.xml b/JAVA/CEP/jParmFacade/nbproject/project.xml
new file mode 100644
index 00000000000..a8fdc17b35c
--- /dev/null
+++ b/JAVA/CEP/jParmFacade/nbproject/project.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.java.j2seproject</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/j2se-project/3">
+            <name>jParmFacade</name>
+            <minimum-ant-version>1.6.5</minimum-ant-version>
+            <source-roots>
+                <root id="src.dir"/>
+            </source-roots>
+            <test-roots>
+                <root id="test.src.dir"/>
+            </test-roots>
+        </data>
+    </configuration>
+</project>
diff --git a/JAVA/CEP/jParmFacade/src/Makefile.am b/JAVA/CEP/jParmFacade/src/Makefile.am
new file mode 100644
index 00000000000..a8064c8658e
--- /dev/null
+++ b/JAVA/CEP/jParmFacade/src/Makefile.am
@@ -0,0 +1,34 @@
+# if HAVE_SHMEM
+# SUBDIRS = shmem .
+# endif
+
+lib_LTLIBRARIES         = libjparmfacade.la
+
+libjparmfacade_la_SOURCES = $(DOCHDRS) \
+			    nl_astron_lofar_java_cep_jparmfacade_jParmFacade.cc
+
+# AM_YFLAGS               = -d -p KeyParse
+# AM_LFLAGS               = -PKeyTokenize
+# LEX_OUTPUT_ROOT         = lex.KeyTokenize
+
+if HAVE_SHMEM
+libjparmfacade_la_LIBADD     = $(prefix)/lib/libshmem.la
+endif
+
+bin_PROGRAMS =
+
+# Lines to build a program prg
+#prg_SOURCES		= prg.cc
+#prg_LDADD		= libjparmfacade.la
+#prg_DEPENDENCIES	= libjparmfacade.la $(LOFAR_DEPEND)
+
+glishdir = $(libexecdir)/glish
+dist_glish_SCRIPTS = 
+
+pythondir = $(bindir)
+dist_python_SCRIPTS = 
+
+scriptdir = $(bindir)
+dist_script_SCRIPTS = 
+
+include $(top_srcdir)/Makefile.common
diff --git a/JAVA/CEP/jParmFacade/src/nl/astron/lofar/java/cep/jparmfacade/jParmFacade.java b/JAVA/CEP/jParmFacade/src/nl/astron/lofar/java/cep/jparmfacade/jParmFacade.java
new file mode 100644
index 00000000000..c6fe5c4922e
--- /dev/null
+++ b/JAVA/CEP/jParmFacade/src/nl/astron/lofar/java/cep/jparmfacade/jParmFacade.java
@@ -0,0 +1,45 @@
+/*
+ * jParmFacade.java  JNI Interface base class for the CEP/BB/ParmFacade class
+ *
+ * Created on April 18, 2006, 9:54 AM
+ *
+ */
+
+package nl.astron.lofar.java.cep.jparmfacade;
+
+import java.util.HashMap;
+import java.util.Vector;
+
+/**
+ *
+ * @author coolen
+ */
+public class jParmFacade {
+    
+    /** Creates a new instance of jParmFacade */
+    public jParmFacade(String tableName) {
+        initParmFacade(tableName);
+    }
+    
+    // Make a connection to the given ParmTable.
+    private native void initParmFacade (String tableName);
+    
+    // Get the domain range (as startx,endx,starty,endy) of the given
+    // parameters in the table.
+    // This is the minimum start value and maximum end value for all parameters.
+    // An empty name pattern is the same as * (all parm names).
+    public native Vector<Double> getRange(String parmNamePattern);
+    
+    // Get parameter names in the table matching the pattern.
+    // An empty name pattern is the same as * (all parm names).
+    public native Vector<String> getNames(String parmNamePattern);
+    
+
+    // Get the parameter values for the given parameters and domain.
+    // The domain is given by the start and end values, while the grid is
+    // given by nx and ny.
+    public native HashMap<String,Vector<Double>> getValues(String parmNamePattern,
+            double startx, double endx, int nx,
+            double starty, double endy, int ny);
+    
+}
diff --git a/JAVA/CEP/jParmFacade/src/nl_astron_lofar_java_cep_jparmfacade_jParmFacade.cc b/JAVA/CEP/jParmFacade/src/nl_astron_lofar_java_cep_jparmfacade_jParmFacade.cc
new file mode 100644
index 00000000000..fe9c69a6540
--- /dev/null
+++ b/JAVA/CEP/jParmFacade/src/nl_astron_lofar_java_cep_jparmfacade_jParmFacade.cc
@@ -0,0 +1,208 @@
+//#  nl_astron_lofar_java_cep_jparmfacade_jParmFacade.cc: Manages the 
+//#              connection with the parameter database.
+//#
+//#  Copyright (C) 2005-2007
+//#  ASTRON (Netherlands Foundation for Research in Astronomy)
+//#  P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, seg@astron.nl
+//#
+//#  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
+//#
+
+//# Always #include <lofar_config.h> first!
+#include <lofar_config.h>
+
+#include <jni.h>
+#include <jParmFacade/nl_astron_lofar_java_cep_jparmfacade_jParmFacade.h>
+#include <ParmFacade/ParmFacade.h>
+#include <iostream>
+
+using namespace LOFAR::ParmDB;
+using namespace std;
+
+ParmFacade* theirPF;
+
+/*
+ * Class:     nl_astron_lofar_java_cep_jparmfacade_jParmFacade
+ * Method:    initParmFacade
+ * Signature: (Ljava/lang/String;)V
+ */
+JNIEXPORT void JNICALL Java_nl_astron_lofar_java_cep_jparmfacade_jParmFacade_initParmFacade(JNIEnv *env, jobject, jstring tableName) {
+  const char* tablename = env->GetStringUTFChars(tableName, 0);
+  const string t(tablename);
+
+  try {
+    theirPF = new ParmFacade(t);
+  } catch (exception &ex) {
+    cout << "Exception during new ParmFacade(" << t << ") : "<< ex.what() << endl;
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+    //    env->ExceptionClear();
+  }
+  env->ReleaseStringUTFChars(tableName,tablename);
+}
+
+/*
+ * Class:     nl_astron_lofar_java_cep_jparmfacade_jParmFacade
+ * Method:    getRange
+ * Signature: (Ljava/lang/String;)Ljava/util/Vector;
+ */
+JNIEXPORT jobject JNICALL Java_nl_astron_lofar_java_cep_jparmfacade_jParmFacade_getRange  (JNIEnv *env, jobject, jstring parmNamePattern) {
+
+  jboolean isCopy;
+  const char* pattern = env->GetStringUTFChars (parmNamePattern, &isCopy);
+  vector<double> rangeList;
+  try {
+    rangeList = theirPF->getRange(pattern);
+
+  } catch (exception &ex) {
+    cout << "Exception during getRange("<< pattern << "): "<< ex.what() << endl;
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+    //    env->ExceptionClear();
+  }
+  
+  env->ReleaseStringUTFChars (parmNamePattern, pattern);
+
+  vector<double>::iterator rangeIterator;
+
+  // Construct java Vector
+  jobject rangeVector;
+  jclass class_Vector = env->FindClass("java/util/Vector");
+  jmethodID mid_Vector_cons = env->GetMethodID(class_Vector, "<init>", "()V");
+  rangeVector = env->NewObject(class_Vector, mid_Vector_cons);
+  jmethodID mid_Vector_add = env->GetMethodID(class_Vector, "add", "(Ljava/lang/Object;)Z");
+
+  // Double
+  jobject jDouble;
+  jclass class_Double = env->FindClass ("java/lang/Double");
+  jmethodID mid_Double_cons = env->GetMethodID (class_Double, "<init>", "(D)V");
+
+  for (rangeIterator = rangeList.begin(); rangeIterator != rangeList.end(); rangeIterator++) {
+    jDouble = env->NewObject (class_Double, mid_Double_cons, *rangeIterator);
+
+    env->CallObjectMethod(rangeVector, mid_Vector_add, jDouble);
+  }
+  return rangeVector;
+}
+
+
+/*
+ * Class:     nl_astron_lofar_java_cep_jParmFacade_jparmfacade
+ * Method:    getNames
+ * Signature: (Ljava/lang/String;)Ljava/util/Vector;
+ */
+JNIEXPORT jobject JNICALL Java_nl_astron_lofar_java_cep_jparmfacade_jParmFacade_getNames  (JNIEnv *env, jobject, jstring parmNamePattern) {
+
+  jboolean isCopy;
+  const char* pattern = env->GetStringUTFChars (parmNamePattern, &isCopy);
+  vector<string> nameList;
+  try {
+    nameList = theirPF->getNames(pattern);
+  } catch (exception &ex) {
+    cout << "Exception during getNames("<< pattern << "): "<< ex.what() << endl;
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+    //    env->ExceptionClear();
+  }
+
+  env->ReleaseStringUTFChars (parmNamePattern, pattern);
+
+  vector<string>::iterator nameIterator;
+
+  // Construct java Vector
+  jobject nameVector;
+  jclass class_Vector = env->FindClass("java/util/Vector");
+  jmethodID mid_Vector_cons = env->GetMethodID(class_Vector, "<init>", "()V");
+  nameVector = env->NewObject(class_Vector, mid_Vector_cons);
+  jmethodID mid_Vector_add = env->GetMethodID(class_Vector, "add", "(Ljava/lang/Object;)Z");
+
+  jstring jstr;
+  for (nameIterator = nameList.begin(); nameIterator != nameList.end(); nameIterator++) {
+    jstr = env->NewStringUTF (((string)*nameIterator).c_str());
+    env->CallObjectMethod(nameVector, mid_Vector_add, jstr);
+  }
+  return nameVector;
+}
+
+
+
+/*
+ * Class:     nl_astron_lofar_java_cep_jparmfacade_jParmFacade
+ * Method:    getValues
+ * Signature: (Ljava/lang/String;DDIDDI)Ljava/util/HashMap;
+ */
+JNIEXPORT jobject JNICALL Java_nl_astron_lofar_java_cep_jparmfacade_jParmFacade_getValues (JNIEnv *env, jobject, jstring parmNamePattern, jdouble startx, jdouble endx, jint nx, jdouble starty, jdouble endy, jint ny) {
+
+  jboolean isCopy;
+  const char* pattern = env->GetStringUTFChars (parmNamePattern, &isCopy);
+  map<string,vector<double> > valMap;
+  try {
+    valMap = theirPF->getValues(pattern,startx,endx,nx,starty,endy,ny);
+  } catch (exception ex) {
+    cout << "Exception during getValues("<< pattern << "," << startx << ","
+	 << endx << "," << nx << "," << starty << "," << endy << "," << ny 
+	 << ") : "<< ex.what() << endl;
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+    //    env->ExceptionClear();
+  }
+
+  env->ReleaseStringUTFChars (parmNamePattern, pattern);
+
+
+
+  // Construct java Map
+  jobject result;
+  jclass mapClass, doubleClass, vectorClass;
+  jmethodID mapInit, mapPut, vectorAdd, doubleInit, vectorInit;
+    
+  mapClass = env->FindClass("java/util/HashMap");
+  mapInit = env->GetMethodID(mapClass, "<init>", "()V");
+  result = env->NewObject(mapClass, mapInit);
+  mapPut= env->GetMethodID(mapClass, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
+  
+  // Construct java Double
+  jobject jDouble;
+  doubleClass = env->FindClass ("java/lang/Double");
+  doubleInit = env->GetMethodID (doubleClass, "<init>", "(D)V");
+
+
+  // Loop through map and convert to HashMap
+
+  for (map<string,vector<double> >::const_iterator valIter=valMap.begin();
+         valIter != valMap.end();
+         valIter++) {
+
+    // Construct java Vector
+    jobject valVector;
+    vectorClass = env->FindClass("java/util/Vector");
+    vectorInit = env->GetMethodID(vectorClass, "<init>", "()V");
+    valVector = env->NewObject(vectorClass, vectorInit);
+    vectorAdd = env->GetMethodID(vectorClass, "add", "(Ljava/lang/Object;)Z");
+
+
+      for (vector<double>::const_iterator iter=valIter->second.begin();
+         iter != valIter->second.end();
+         iter++) {
+	
+        jDouble = env->NewObject (doubleClass, doubleInit, *iter);
+
+	env->CallObjectMethod(valVector, vectorAdd, jDouble);
+      }
+
+
+      env->CallObjectMethod(result, mapPut, env->NewStringUTF(valIter->first.c_str()),valVector);
+	
+    }
+ 
+  return result;
+}
+
diff --git a/JAVA/CEP/jParmFacade/test/Makefile.am b/JAVA/CEP/jParmFacade/test/Makefile.am
new file mode 100644
index 00000000000..7f87d74dc97
--- /dev/null
+++ b/JAVA/CEP/jParmFacade/test/Makefile.am
@@ -0,0 +1,30 @@
+check_PROGRAMS        =
+
+# programs to run through supplied checktools
+CHECKTOOLPROGS        =
+#ENDCHECKTOOLPROGS
+
+# scripts used to run tests
+TESTSCRIPTS           =
+
+# scripts and possible programs to run tests
+TESTS	              = $(TESTSCRIPTS)
+
+XFAIL_TESTS           =
+
+# all files (.run, .stdout, .in, .log_prop, etc.) needed to run tests
+EXTRA_DIST            = $(TESTSCRIPTS)
+
+# Lines to build a test program testprg
+#testprg_SOURCES		= testprg.cc
+#testprg_LDADD			= ../src/libjparmfacade.la
+#testprg_DEPENDENCIES		= ../src/libjparmfacade.la $(LOFAR_DEPEND)
+
+TESTS_ENVIRONMENT		= lofar_sharedir=$(lofar_sharedir) \
+				  srcdir=$(srcdir) \
+				  LOFARROOT=$(LOFARROOT) \
+				  LOFARDATAROOT=$(LOFARDATAROOT) \
+				  MPIBIN=$(MPIBIN)
+
+
+include $(top_srcdir)/Makefile.common
diff --git a/JAVA/CEP/jParmFacade/test/tParmFacade.java b/JAVA/CEP/jParmFacade/test/tParmFacade.java
new file mode 100644
index 00000000000..bea92b66e98
--- /dev/null
+++ b/JAVA/CEP/jParmFacade/test/tParmFacade.java
@@ -0,0 +1,87 @@
+/* 
+ * tParmFacade.java: test program for class jParmFacade
+ *
+ * Created on April 19, 2006, 11:05 AM
+ *
+ * Copyright (C) 2006
+ * ASTRON (Netherlands Foundation for Research in Astronomy)
+ * P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, seg@astron.nl
+ *
+ * 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
+ *
+ */
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Vector;
+import nl.astron.lofar.java.cep.jparmfacade.jParmFacade;
+
+/**
+ *
+ * @author coolen
+ */
+public class tParmFacade {
+
+    static {
+        System.loadLibrary("jparmfacade");
+    }
+ 
+
+    public static void main(String[] args) {
+        tParmFacade tPF = new tParmFacade();
+        String parmTable="tParmFacade.in_mep1";
+        
+        if (args.length <  1) {
+            System.out.println("Run as: tParmFacade parmtable");
+            tPF.test(parmTable);
+        } else {
+            parmTable=args[0];
+            System.out.println("Running with parmTable: "+parmTable);
+        
+            tPF.test(parmTable);
+        }
+     }
+    
+    /** Creates a new instance of tParmFacade */
+    private void test(String parmTable) {
+        System.out.println("Testing with table: "+parmTable);
+        try {
+            // create a jParmFacade
+            jParmFacade aPF = new jParmFacade(parmTable);
+        
+            if (aPF ==  null) {
+                System.out.println("Error starting ParmFacade");
+                return;
+            }
+        
+            Vector<String> names = aPF.getNames("");
+            System.out.println("Names: " + names);
+            Vector<Double> range = aPF.getRange("");
+            System.out.println("Range: " + range);
+            HashMap<String,Vector<Double> > values = aPF.getValues ("*",
+							range.elementAt(0), range.elementAt(1), 4,
+							range.elementAt(2), range.elementAt(3), 2);
+            
+            Iterator it = values.keySet().iterator();
+            while (it.hasNext()) {  
+                String key = (String)it.next();
+                System.out.println(key + "  <->  " + values.get(key));
+            }
+        } catch (Exception ex) {
+            System.out.println("Unexpected exception: " + ex);
+            return;
+        }
+    }
+}
-- 
GitLab