From 4fb74d6cce935c813fa0bb1407d82fd663c3459e Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Fri, 12 Jun 2015 01:18:16 +0000 Subject: [PATCH] Reimplementando módulo java --- configure.ac | 2 ++ src/java/Makefile.in | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/java/jni3270.cbp | 45 +++++++++++++++++++++++++++++++++++++++++++++ src/java/terminal.java | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 257 insertions(+), 0 deletions(-) create mode 100644 src/java/Makefile.in create mode 100644 src/java/jni3270.cbp create mode 100644 src/java/terminal.java diff --git a/configure.ac b/configure.ac index 4b12567..be40954 100644 --- a/configure.ac +++ b/configure.ac @@ -667,6 +667,8 @@ AC_CONFIG_FILES([ mac/pw3270.bundle src/php/Makefile src/php/php3270.h + src/java/Makefile + ]) dnl Output the generated config.status script. diff --git a/src/java/Makefile.in b/src/java/Makefile.in new file mode 100644 index 0000000..d6d53e5 --- /dev/null +++ b/src/java/Makefile.in @@ -0,0 +1,133 @@ +# +# "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 +# (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a +# aplicativos mainframe. Registro no INPI sob o nome G3270. +# +# Copyright (C) <2008> +# +# Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob +# os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela +# Free Software Foundation. +# +# Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER +# GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO +# A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para +# obter mais detalhes. +# +# Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este +# programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple +# Place, Suite 330, Boston, MA, 02111-1307, USA +# +# Contatos: +# +# perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) +# erico.mendonca@gmail.com (Erico Mascarenhas de Mendonça) +# + +PACKAGE_NAME=@PACKAGE_NAME@ +SOURCES= + +#---[ Paths ]------------------------------------------------------------------ + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +bindir=@bindir@ +sbindir=@sbindir@ +libdir=@libdir@ +includedir=@includedir@ +sysconfdir=@sysconfdir@ + +#---[ Tools ]------------------------------------------------------------------ + +CXX=@CXX@ +MKDIR=@MKDIR_P@ +INSTALL=@INSTALL@ +INSTALL_DATA=@INSTALL_DATA@ +INSTALL_PROGRAM=@INSTALL_PROGRAM@ +JAVAC=@JAVAC@ +JAVAH=@JAVAH@ +JAR=@JAR@ +JDK_HOME=@JDK_HOME@ +JRE_HOME=@JRE_HOME@ + +#---[ Paths ]------------------------------------------------------------------ + +OBJDIR = .obj +BINDIR = .bin + +OBJDBG = $(OBJDIR)/Debug +BINDBG = $(BINDIR)/Debug + +OBJRLS = $(OBJDIR)/Release +BINRLS = $(BINDIR)/Release + +#---[ lib3270 common class ]--------------------------------------------------- + +DEBUG_CFLAGS=-DDEBUG=1 -g -Wall +PW3270_CFLAGS=-I../include +CLASSLIBDIR=../classlib +include $(CLASSLIBDIR)/class.mak + +#---[ Build options ]---------------------------------------------------------- + +CXXFLAGS=@CXXFLAGS@ @DLL_CFLAGS@ + +#---[ Rules ]------------------------------------------------------------------ + +$(OBJDBG)/%.o: %.cc Makefile jni3270.h + @echo " CC `basename $@`" + @mkdir -p `dirname $@` + @$(CXX) -DDEBUG=1 $(CXXFLAGS) -o $@ -c $< + +$(OBJRLS)/%.o: %.cc Makefile jni3270.h + @echo " CC `basename $@`" + @mkdir -p `dirname $@` + @$(CXX) -DNDEBUG=1 $(CXXFLAGS) -o $@ -c $< + +$(BINDIR)/java/$(PACKAGE)/%.class: %.java + @echo $< ... + @mkdir -p `dirname $@` + $(JAVAC) -encoding utf-8 -cp $(BINDIR)/java -sourcepath $(PWD) -d $(BINDIR)/java $^ + +#---[ Release targets ]-------------------------------------------------------- + +all: $(BINRLS)/jni3270@DLLEXT@ + +Release: $(BINRLS)/jni3270@DLLEXT@ + +$(BINRLS)/jni3270@DLLEXT@: $(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC)@OBJEXT@) \ + $(CLASS_RELEASE_OBJECTS) + @echo " LD `basename $@`" + @$(MKDIR) `dirname $@` + $(CXX) @SYSDLL_FLAGS@ $(LDFLAGS) $(OO_LDFLAGS) -o $@ $^ $(CLASS_LIBS) + + +#---[ Debug targets ]---------------------------------------------------------- + +Debug: $(BINDBG)/jni3270@DLLEXT@ + +$(BINDBG)/jni3270@DLLEXT@: $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC)@OBJEXT@) \ + $(CLASS_DEBUG_OBJECTS) + @echo " LD `basename $@`" + @$(MKDIR) `dirname $@` + @$(CXX) @SYSDLL_FLAGS@ $(LDFLAGS) $(OO_LDFLAGS) -o $@ $^ $(CLASS_LIBS) + + +run: $(BINDBG)/jni3270@DLLEXT@ + +#---[ Misc targets ]----------------------------------------------------------- + +jni3270.h: $(BINDIR)/java/$(PACKAGE)/terminal.class + @echo $< ... + @mkdir -p `dirname $@` + @$(JAVAH) -o $@ -classpath $(BINDIR)/java $(PACKAGE).terminal + + +install: $(BINRLS)/jni3270@DLLEXT@ + +cleanDebug: clean + +clean: + @rm -fr $(OBJDIR) + @rm -fr $(BINDIR) + @rm -f jni3270.h diff --git a/src/java/jni3270.cbp b/src/java/jni3270.cbp new file mode 100644 index 0000000..b893dc9 --- /dev/null +++ b/src/java/jni3270.cbp @@ -0,0 +1,45 @@ + + + + + + diff --git a/src/java/terminal.java b/src/java/terminal.java new file mode 100644 index 0000000..9c548ee --- /dev/null +++ b/src/java/terminal.java @@ -0,0 +1,77 @@ +/* + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a + * aplicativos mainframe. Registro no INPI sob o nome G3270. + * + * Copyright (C) <2008> + * + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela + * Free Software Foundation. + * + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para + * obter mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este + * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple + * Place, Suite 330, Boston, MA, 02111-1307, USA + * + * Este programa está nomeado como lib3270.java e possui - linhas de código. + * + * Contatos: + * + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) + * + */ + +package pw3270; + +public class terminal +{ + /* Get library/extension info */ + public native String getVersion(); + public native String getRevision(); + + /* Connect/Disconnect */ + public native int Connect( String uri, int timeout ); + public native int Disconnect(); + public native int getConnectionState(); + + /* Get Status */ + public native boolean isConnected(); + public native boolean isTerminalReady(); + public native String getEncoding(); + + /* Get/Query Screen contents */ + public native String getScreenContentAt(int row, int col, int size); + public native String getScreenContent(); + public native boolean queryStringAt(int row, int col, String key); + + /* Actions/Screen changes */ + public native int sendEnterKey(); + public native int setStringAt(int row, int col, String str); + public native int sendPFKey(int key); + + /* Waiting */ + public native int wait(int seconds); + public native int waitForTerminalReady(int timeout); + public native int waitForStringAt(int row, int col, String key, int timeout); + + /* Non-native methods */ + public int Connect(String hostinfo) + { + int rc = Connect(hostinfo,10); + if(rc != 0) + return rc; + return waitForTerminalReady(10); + } + + static + { + System.loadLibrary("jni3270"); + } + +}; -- libgit2 0.21.2