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