Skip to content
Snippets Groups Projects
Commit ae27d03b authored by Arthur Coolen's avatar Arthur Coolen
Browse files

BugID: 703

JAVA Interface to ParmDB class
parent 347e1767
No related branches found
No related tags found
No related merge requests found
Showing
with 1419 additions and 0 deletions
...@@ -156,6 +156,7 @@ Demo/CEP/TFlopCorrelator/TFC_GUI/plot2.png -text ...@@ -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/plot3.png -text
Demo/CEP/TFlopCorrelator/TFC_GUI/src/tfc_gui/startTFC.sh -text svneol=native#application/octet-stream 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 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/.cvsignore -text
JAVA/GUI/Plotter/doc/Plotter.EAP -text JAVA/GUI/Plotter/doc/Plotter.EAP -text
JAVA/GUI/Plotter/nbproject/.cvsignore -text JAVA/GUI/Plotter/nbproject/.cvsignore -text
......
JAVA/CEP/jParmFacade/nbproject/private
JAVA/GUI/Plotter/build JAVA/GUI/Plotter/build
JAVA/GUI/Plotter/dist JAVA/GUI/Plotter/dist
JAVA/GUI/Plotter/nbproject/private JAVA/GUI/Plotter/nbproject/private
......
SUBDIRS=src test include
DISTCHECK_CONFIGURE_FLAGS=\
--with-common=$(prefix)
EXTRA_DIST = \
Makefile.common \
jParmFacade.spec \
autoconf_share/compiletool
include $(top_srcdir)/Makefile.common
#!/bin/sh
../../../autoconf_share/bootstrap ../../../autoconf_share
<?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>
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
)
SUBDIRS = jParmFacade
include $(top_srcdir)/Makefile.common
# 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
/* 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
# -*- 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
private
This diff is collapsed.
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
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
<?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>
# 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
/*
* 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);
}
//# 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;
}
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
/*
* 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;
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment