From 15ccd105da1ec3827478854e953a3ea2b16a08f9 Mon Sep 17 00:00:00 2001
From: Michał Lenart <michall@ipipan.waw.pl>
Date: Mon, 18 Aug 2014 11:07:10 +0000
Subject: [PATCH] - zmiana nazwy pakietu javowego z pl.waw.ipipan.morfeusz na pl.sgjp.morfeusz - różne poprawki w README, testach wrappera pythonowego (ustawianie PYTHONPATH) i w wrapperze Javowym (javadoc dla aggl i praet)

---
 README                                                               |  4 +++-
 morfeusz/wrappers/java/CMakeLists.txt                                |  8 ++++----
 morfeusz/wrappers/java/JMorfeuszTest.java                            | 10 +++++-----
 morfeusz/wrappers/java/pl/sgjp/morfeusz/app/App.java                 | 23 +++++++++++++++++++++++
 morfeusz/wrappers/java/pl/sgjp/morfeusz/app/MorfeuszUtils.java       | 28 ++++++++++++++++++++++++++++
 morfeusz/wrappers/java/pl/waw/ipipan/morfeusz/app/App.java           | 23 -----------------------
 morfeusz/wrappers/java/pl/waw/ipipan/morfeusz/app/MorfeuszUtils.java | 28 ----------------------------
 morfeusz/wrappers/morfeusz_java.i                                    | 43 +++++++++++++++++++++++++------------------
 morfeusz/wrappers/python/CMakeLists.txt                              | 32 +++++++++++++++++---------------
 test-darwin.sh                                                       |  2 +-
 testPythonWrapper.sh                                                 |  3 ++-
 11 files changed, 108 insertions(+), 96 deletions(-)
 create mode 100644 morfeusz/wrappers/java/pl/sgjp/morfeusz/app/App.java
 create mode 100644 morfeusz/wrappers/java/pl/sgjp/morfeusz/app/MorfeuszUtils.java
 delete mode 100644 morfeusz/wrappers/java/pl/waw/ipipan/morfeusz/app/App.java
 delete mode 100644 morfeusz/wrappers/java/pl/waw/ipipan/morfeusz/app/MorfeuszUtils.java

diff --git a/README b/README
index bed9f41..484bb7f 100644
--- a/README
+++ b/README
@@ -50,7 +50,9 @@ Testing
 To compile and run tests you must have cppunit library installed.
 To test if everything is working type:
 
-make build-tests
+make
+make package-java ### to also test Java wrapper
+make package-python ### to also test Python wrapper
 make test
 
 If some tests fail, you can see errors by invoking:
diff --git a/morfeusz/wrappers/java/CMakeLists.txt b/morfeusz/wrappers/java/CMakeLists.txt
index b3dfcba..7f052b8 100644
--- a/morfeusz/wrappers/java/CMakeLists.txt
+++ b/morfeusz/wrappers/java/CMakeLists.txt
@@ -11,11 +11,11 @@ include_directories (${CMAKE_SOURCE_DIR}/morfeusz)
 set (SWIG_JAVA_OUTFILE "${CMAKE_CURRENT_BINARY_DIR}/swigJAVA.cpp")
 file (COPY pl DESTINATION .)
 
-set (JAVA_SRC_DIR "${CMAKE_CURRENT_BINARY_DIR}/pl/waw/ipipan/morfeusz")
+set (JAVA_SRC_DIR "${CMAKE_CURRENT_BINARY_DIR}/pl/sgjp/morfeusz")
 
 add_custom_command (
     OUTPUT ${SWIG_JAVA_OUTFILE}
-    COMMAND swig -java -c++ -package pl.waw.ipipan.morfeusz  -o ${SWIG_JAVA_OUTFILE} -outdir ${JAVA_SRC_DIR} ${CMAKE_SOURCE_DIR}/morfeusz/wrappers/morfeusz.i
+    COMMAND swig -java -c++ -package pl.sgjp.morfeusz  -o ${SWIG_JAVA_OUTFILE} -outdir ${JAVA_SRC_DIR} ${CMAKE_SOURCE_DIR}/morfeusz/wrappers/morfeusz.i
     DEPENDS libmorfeusz
 )
 add_custom_target(generate-java-wrapper ALL
@@ -56,7 +56,7 @@ endif ()
 file(GLOB_RECURSE JAVA_SOURCES "${JAVA_SRC_DIR}" "${JAVA_SRC_DIR}/*.java")
 add_jar (jmorfeusz
     SOURCES "${JAVA_SOURCES}"
-    ENTRY_POINT pl/waw/ipipan/morfeusz/app/App
+    ENTRY_POINT pl/sgjp/morfeusz/app/App
     DEPENDS libjmorfeusz generate-java-wrapper)
 
 add_custom_target(generate-javadoc
@@ -66,7 +66,7 @@ add_custom_target(generate-javadoc
         -windowtitle "JMorfeusz - Morfeusz Java binding"
         -use
         -link http://docs.oracle.com/javase/7/docs/api/
-        pl.waw.ipipan.morfeusz
+        pl.sgjp.morfeusz
     DEPENDS jmorfeusz)
 
 add_custom_target(package-javadoc
diff --git a/morfeusz/wrappers/java/JMorfeuszTest.java b/morfeusz/wrappers/java/JMorfeuszTest.java
index 8fa5798..ec4a54a 100644
--- a/morfeusz/wrappers/java/JMorfeuszTest.java
+++ b/morfeusz/wrappers/java/JMorfeuszTest.java
@@ -10,11 +10,11 @@ import static org.junit.Assert.*;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
-import pl.waw.ipipan.morfeusz.Morfeusz;
-import pl.waw.ipipan.morfeusz.MorfeuszUsage;
-import pl.waw.ipipan.morfeusz.MorfeuszException;
-import pl.waw.ipipan.morfeusz.MorphInterpretation;
-import pl.waw.ipipan.morfeusz.ResultsIterator;
+import pl.sgjp.morfeusz.Morfeusz;
+import pl.sgjp.morfeusz.MorfeuszUsage;
+import pl.sgjp.morfeusz.MorfeuszException;
+import pl.sgjp.morfeusz.MorphInterpretation;
+import pl.sgjp.morfeusz.ResultsIterator;
 
 /**
  *
diff --git a/morfeusz/wrappers/java/pl/sgjp/morfeusz/app/App.java b/morfeusz/wrappers/java/pl/sgjp/morfeusz/app/App.java
new file mode 100644
index 0000000..782f6ba
--- /dev/null
+++ b/morfeusz/wrappers/java/pl/sgjp/morfeusz/app/App.java
@@ -0,0 +1,23 @@
+package pl.sgjp.morfeusz.app;
+
+import pl.sgjp.morfeusz.Morfeusz;
+import pl.sgjp.morfeusz.MorfeuszUsage;
+import pl.sgjp.morfeusz.ResultsIterator;
+
+/**
+ * Hello world!
+ *
+ */
+public class App {
+
+    public static void main(String[] args) {
+        System.err.println("Working Directory=" +
+              System.getProperty("user.dir"));
+        System.err.println("java.library.path="+System.getProperty("java.library.path"));
+        Morfeusz morfeusz = Morfeusz.createInstance(MorfeuszUsage.ANALYSE_ONLY);
+        ResultsIterator it = morfeusz.analyseAsIterator("Ala ma kota i żółć.");
+        while (it.hasNext()) {
+            System.out.println(MorfeuszUtils.getInterpretationString(it.next(), morfeusz));
+        }
+    }
+}
diff --git a/morfeusz/wrappers/java/pl/sgjp/morfeusz/app/MorfeuszUtils.java b/morfeusz/wrappers/java/pl/sgjp/morfeusz/app/MorfeuszUtils.java
new file mode 100644
index 0000000..3af1060
--- /dev/null
+++ b/morfeusz/wrappers/java/pl/sgjp/morfeusz/app/MorfeuszUtils.java
@@ -0,0 +1,28 @@
+package pl.sgjp.morfeusz.app;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import pl.sgjp.morfeusz.MorphInterpretation;
+import pl.sgjp.morfeusz.Morfeusz;
+
+/**
+ *
+ * @author mlenart
+ */
+public class MorfeuszUtils {
+
+    public static String getInterpretationString(MorphInterpretation interp, Morfeusz morfeusz) {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        PrintStream ps = new PrintStream(baos);
+        ps.printf("%d %d %s %s %s %s", 
+                interp.getStartNode(),
+                interp.getEndNode(),
+                interp.getOrth(),
+                interp.getLemma(),
+                morfeusz.getIdResolver().getTag(interp.getTagId()),
+                morfeusz.getIdResolver().getName(interp.getNameId()),
+                morfeusz.getIdResolver().getLabelsAsString(interp.getLabelsId()));
+        ps.flush();
+        return baos.toString();
+    }
+}
diff --git a/morfeusz/wrappers/java/pl/waw/ipipan/morfeusz/app/App.java b/morfeusz/wrappers/java/pl/waw/ipipan/morfeusz/app/App.java
deleted file mode 100644
index 943d503..0000000
--- a/morfeusz/wrappers/java/pl/waw/ipipan/morfeusz/app/App.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package pl.waw.ipipan.morfeusz.app;
-
-import pl.waw.ipipan.morfeusz.Morfeusz;
-import pl.waw.ipipan.morfeusz.MorfeuszUsage;
-import pl.waw.ipipan.morfeusz.ResultsIterator;
-
-/**
- * Hello world!
- *
- */
-public class App {
-
-    public static void main(String[] args) {
-        System.err.println("Working Directory=" +
-              System.getProperty("user.dir"));
-        System.err.println("java.library.path="+System.getProperty("java.library.path"));
-        Morfeusz morfeusz = Morfeusz.createInstance(MorfeuszUsage.ANALYSE_ONLY);
-        ResultsIterator it = morfeusz.analyseAsIterator("Ala ma kota i żółć.");
-        while (it.hasNext()) {
-            System.out.println(MorfeuszUtils.getInterpretationString(it.next(), morfeusz));
-        }
-    }
-}
diff --git a/morfeusz/wrappers/java/pl/waw/ipipan/morfeusz/app/MorfeuszUtils.java b/morfeusz/wrappers/java/pl/waw/ipipan/morfeusz/app/MorfeuszUtils.java
deleted file mode 100644
index 9a8bee2..0000000
--- a/morfeusz/wrappers/java/pl/waw/ipipan/morfeusz/app/MorfeuszUtils.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package pl.waw.ipipan.morfeusz.app;
-
-import java.io.ByteArrayOutputStream;
-import java.io.PrintStream;
-import pl.waw.ipipan.morfeusz.MorphInterpretation;
-import pl.waw.ipipan.morfeusz.Morfeusz;
-
-/**
- *
- * @author mlenart
- */
-public class MorfeuszUtils {
-
-    public static String getInterpretationString(MorphInterpretation interp, Morfeusz morfeusz) {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        PrintStream ps = new PrintStream(baos);
-        ps.printf("%d %d %s %s %s %s", 
-                interp.getStartNode(),
-                interp.getEndNode(),
-                interp.getOrth(),
-                interp.getLemma(),
-                morfeusz.getIdResolver().getTag(interp.getTagId()),
-                morfeusz.getIdResolver().getName(interp.getNameId()),
-                morfeusz.getIdResolver().getLabelsAsString(interp.getLabelsId()));
-        ps.flush();
-        return baos.toString();
-    }
-}
diff --git a/morfeusz/wrappers/morfeusz_java.i b/morfeusz/wrappers/morfeusz_java.i
index 2d8e408..7e39944 100644
--- a/morfeusz/wrappers/morfeusz_java.i
+++ b/morfeusz/wrappers/morfeusz_java.i
@@ -135,6 +135,9 @@ import java.util.ArrayList;
 %}
 
 %rename(_dictionarySearchPaths) morfeusz::Morfeusz::dictionarySearchPaths;
+%rename(_getAvailableAgglOptions) morfeusz::Morfeusz::getAvailableAgglOptions;
+%rename(_getAvailablePraetOptions) morfeusz::Morfeusz::getAvailablePraetOptions;
+
 %rename(_getLabels) morfeusz::IdResolver::getLabels;
 %ignore morfeusz::FileFormatException;
 
@@ -148,7 +151,7 @@ import java.util.ArrayList;
         return $null;
     }
     catch(morfeusz::MorfeuszException & e) {
-        jclass clazz = jenv->FindClass("pl/waw/ipipan/morfeusz/MorfeuszException");
+        jclass clazz = jenv->FindClass("pl/sgjp/morfeusz/MorfeuszException");
         jenv->ThrowNew(clazz, e.what());
         return $null;
     }
@@ -164,22 +167,6 @@ import java.util.ArrayList;
     }
 }
 
-//%javaexception("java.io.IOException") morfeusz::Morfeusz::setGeneratorDictionary {
-//    try {
-//        $action
-//    }
-//    catch(morfeusz::FileFormatException & e) {
-//        jclass clazz = jenv->FindClass("java/io/IOException");
-//        jenv->ThrowNew(clazz, "Invalid file format");
-//        return $null;
-//    }
-//    catch(std::ios_base::failure & e) {
-//        jclass clazz = jenv->FindClass("java/io/IOException");
-//        jenv->ThrowNew(clazz, e.what());
-//        return $null;
-//    }
-//}
-
 %javaexception("java.util.NoSuchElementException") morfeusz::ResultsIterator::next {
     try {
         $action
@@ -196,7 +183,7 @@ import java.util.ArrayList;
         $action
     }
     catch(const morfeusz::MorfeuszException& e) {
-        jclass clazz = jenv->FindClass("pl/waw/ipipan/morfeusz/MorfeuszException");
+        jclass clazz = jenv->FindClass("pl/sgjp/morfeusz/MorfeuszException");
         jenv->ThrowNew(clazz, e.what());
         return $null;
     }
@@ -272,6 +259,24 @@ import java.util.ArrayList;
     public static List<String> getDictionarySearchPaths() {
         return get_dictionarySearchPaths();
     }
+    
+    /**
+     * Get list of possible agglutination rules.
+     * 
+     * @return modifiable list of paths
+     */
+    public List<String> getAvailableAgglOptions() {
+        return java.util.Collections.unmodifiableList(_getAvailableAgglOptions());
+    }
+    
+    /**
+     * Get list of possible past-tense segmentation rules.
+     * 
+     * @return modifiable list of paths
+     */
+    public List<String> getAvailablePraetOptions() {
+        return java.util.Collections.unmodifiableList(_getAvailablePraetOptions());
+    }
 %}
 
 %typemap(javacode) morfeusz::ResultsIterator %{
@@ -307,6 +312,8 @@ import java.util.ArrayList;
 
 // should be overwritten by getDictionarySearchPaths() in typemap(javacode)
 %javamethodmodifiers morfeusz::Morfeusz::dictionarySearchPaths "private";
+%javamethodmodifiers morfeusz::Morfeusz::getAvailableAgglOptions "private";
+%javamethodmodifiers morfeusz::Morfeusz::getAvailablePraetOptions "private";
 
 // should be overwritten by getLabels() in typemap(javacode)
 %javamethodmodifiers morfeusz::IdResolver::getLabels "private";
diff --git a/morfeusz/wrappers/python/CMakeLists.txt b/morfeusz/wrappers/python/CMakeLists.txt
index 35d5bd3..5ec93fb 100644
--- a/morfeusz/wrappers/python/CMakeLists.txt
+++ b/morfeusz/wrappers/python/CMakeLists.txt
@@ -44,7 +44,7 @@ add_custom_target (build_python_wrapper
 add_custom_target (pymorfeusz
         DEPENDS generate_python_wrapper generate_python_setup_file libmorfeusz build_python_wrapper)
 
-if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+if (UNIX)
     add_custom_target (install-python
         COMMAND python ${SETUP_PY} install --home=${CMAKE_INSTALL_PREFIX}
         DEPENDS pymorfeusz
@@ -55,20 +55,22 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
     )
     set (PACKAGE_DEPENDS "package-python-bin")
     
-    add_custom_target (package-python-deb-sdist
-        COMMAND python ${SETUP_PY} --command-packages=stdeb.command sdist_dsc --depends "${CPACK_DEBIAN_PACKAGE_NAME}" --copyright-file "${PROJECT_SOURCE_DIR}/License.txt"
-        DEPENDS pymorfeusz
-    )
-    add_custom_target (package-python-deb-build
-        COMMAND debuild -us -uc
-        WORKING_DIRECTORY deb_dist/morfeusz2-${PYMORFEUSZ_VERSION}
-        DEPENDS package-python-deb-sdist
-    )
-    add_custom_target(package-python-deb
-        COMMAND mkdir -p "${TARGET_DIR}" && cp ${CMAKE_CURRENT_BINARY_DIR}/deb_dist/python-morfeusz2*.deb "${TARGET_DIR}"
-        DEPENDS package-python-deb-build
-    )
-    list (APPEND PACKAGE_DEPENDS package-python-deb)
+    if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+        add_custom_target (package-python-deb-sdist
+            COMMAND python ${SETUP_PY} --command-packages=stdeb.command sdist_dsc --depends "${CPACK_DEBIAN_PACKAGE_NAME}" --copyright-file "${PROJECT_SOURCE_DIR}/License.txt"
+            DEPENDS pymorfeusz
+        )
+        add_custom_target (package-python-deb-build
+            COMMAND debuild -us -uc
+            WORKING_DIRECTORY deb_dist/morfeusz2-${PYMORFEUSZ_VERSION}
+            DEPENDS package-python-deb-sdist
+        )
+        add_custom_target(package-python-deb
+            COMMAND mkdir -p "${TARGET_DIR}" && cp ${CMAKE_CURRENT_BINARY_DIR}/deb_dist/python-morfeusz2*.deb "${TARGET_DIR}"
+            DEPENDS package-python-deb-build
+        )
+        list (APPEND PACKAGE_DEPENDS package-python-deb)
+    endif ()
     add_custom_target (package-python
         DEPENDS pymorfeusz ${PACKAGE_DEPENDS})
 elseif (${CMAKE_SYSTEM_NAME} MATCHES "Windows" AND NOT CMAKE_CROSSCOMPILING)
diff --git a/test-darwin.sh b/test-darwin.sh
index e7d835b..e97821b 100644
--- a/test-darwin.sh
+++ b/test-darwin.sh
@@ -5,7 +5,7 @@ set -exo pipefail
 cd morfeusz
 echo 'Ala ma kota i żółć' | DYLD_LIBRARY_PATH=. ./morfeusz
 cd ../jmorfeusz
-DYLD_LIBRARY_PATH=../morfeusz:. java -cp *.jar pl.waw.ipipan.morfeusz.app.App
+DYLD_LIBRARY_PATH=../morfeusz:. java -cp *.jar pl.sgjp.morfeusz.app.App
 cd ../pymorfeusz
 DYLD_LIBRARY_PATH=../morfeusz:. python test.py
 cd ..
diff --git a/testPythonWrapper.sh b/testPythonWrapper.sh
index 4c73897..988225c 100755
--- a/testPythonWrapper.sh
+++ b/testPythonWrapper.sh
@@ -2,5 +2,6 @@
 echo "testing python wrapper"
 PROJECT_BINARY_DIR=$1
 export LD_LIBRARY_PATH="$PROJECT_BINARY_DIR/morfeusz:$PROJECT_BINARY_DIR/morfeusz/wrappers/python/build/lib.linux-x86_64-2.7"
-export PYTHONPATH="$PROJECT_BINARY_DIR/morfeusz/wrappers/python/build/lib.linux-x86_64-2.7"
+export PYTHONPATH=`find "$PROJECT_BINARY_DIR" -name _morfeusz2.so -print -quit | xargs dirname`
+echo $PYTHONPATH
 python test.py
--
libgit2 0.22.2