Daniel Quathamer
2 years ago
6717 changed files with 963890 additions and 3 deletions
@ -0,0 +1,922 @@
@@ -0,0 +1,922 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<classpath> |
||||
<classpathentry kind="src" path="src"/> |
||||
<classpathentry kind="src" path="test-src"/> |
||||
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry exported="true" kind="con" path="GROOVY_SUPPORT"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry exported="true" kind="con" path="GROOVY_DSL_SUPPORT"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib_ext/servlet-api.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/activation-1.1.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/aopalliance-1.0.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/asm-3.1.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/aspectjrt-1.6.8.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/aspectjweaver-1.6.8.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/avalon-framework-4.2.0.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/batik-all-1.10.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/bliki-core-3.0.17.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/cewolf-0.10.1.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/cglib-2.2.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/cglib-nodep-2.2.2.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/clover-3.3.0.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-beanutils-1.8.0.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-cli-1.2.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-codec-1.10.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-collections4-4.1.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-collections-3.1.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-dbcp-1.2.2.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-digester-1.7.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-el-1.0.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-fileupload-1.0.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-httpclient-3.1.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-io-1.4.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-javaflow-20060411.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-lang3-3.4.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-lang3-3.4-javadoc.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-lang-2.4.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-logging-1.1.1.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-logging-api.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-math-1.2.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-pool-1.4.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-validator-1.0.2.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-vfs2-2.1-20150824.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/commons-vfs-1.0.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/connect.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/dbforms2.5.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/dom4j-1.6.1.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/dsn.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/eigenbase-properties-1.1.0.10924.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/eigenbase-resgen-1.3.0.11873.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/eigenbase-xom-1.3.0.11999.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/enunciate-core-annotations-1.25.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/enunciate-core-rt-1.25.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/enunciate-jaxws-ri-rt-1.25.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/enunciate-jersey-rt-1.25.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/enunciate-rt-1.25.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/enunciate-spring3-app-rt-1.25.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/enunciate-spring-jaxws-rt-1.25.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/fop-2.2.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/freemarker.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/groovy-all-2.3.6.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/guava-16.0.1.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/h2-1.4.181.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/hamcrest-core-1.3.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/hosu.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/hsqldb1.7.2sx.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/httpunit.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/ifxjdbc.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/imap.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/inspector.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/iText-2.1.7.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jackson-core-asl-1.9.3.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jackson-jaxrs-1.9.3.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jackson-mapper-asl-1.9.3.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jackson-xc-1.9.3.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jakarta-regexp-1.5.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/janino-2.5.16.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jasperreports-6.7.0.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jasperreports-fonts-6.7.0.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jasperreports-functions-6.7.0.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/javacc-5.0.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/java_cup.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/javacup-10k.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jaxb-api-2.1.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jaxb-impl-2.2.3.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jaxen-1.1.6.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jaxws-api-2.1.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jaxws-rt-2.1.7.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jaxws-spring-1.8.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jcommon-1.0.15.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jdom-1.1.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jdom-2.0.6.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jersey-core-1.11.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jersey-server-1.11.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jersey-servlet-1.11.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jersey-spring-1.11.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jettison-1.2.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jfor-0.7.2rc1.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jfreechart-1.0.12.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jh.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jlfgr-1.0.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/joda-time-2.4.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/joolapdbservlet.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/js-1.7R3.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/JSAP-2.1.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jsr311-api-1.1.1.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jstl-1.2.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jug-lgpl-2.0.0.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/junit-4.11.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/jxl-2.6.10.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/kettle-core-6.0.0.0-353.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/kettle-engine-6.0.0.0-353.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/libbase-6.0.0.0-353.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/liberation-fonts-jasperreports_extension.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/liberation-fonts-ttf.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/libformula-6.0.0.0-353.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/logkit-1.0.1.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/mail-1.4.4.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/mailapi.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/maven-findbugs-plugin-0.8.4.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/maven-sourceforge-plugin-1.3.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/maven-taglib-plugin-1.2.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/maxq-0.95dev.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/metastore-6.0.0.0-353.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/mimepull-1.3.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/mockito-all-1.10.19.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/mondrian-3.6-SNAPSHOT.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/nekohtml-0.9.3.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/olap4j-1.2.0-SNAPSHOT.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/olap4j-xmla-1.2.0-SNAPSHOT.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/org-netbeans-core.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/oro-2.0.8.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/pl_generator.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/poi-3.17.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/poi-examples-3.17.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/poi-excelant-3.17.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/poi-ooxml-3.17.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/poi-ooxml-schemas-3.17.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/poi-scratchpad-3.17.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/pop3.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/postgresql-9.2-1002.jdbc4.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/resolver-20050927.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/saiku-web-2.5.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/saxon8.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/saxon8-dom.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/saxon8-jdom.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/saxon8-sql.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/saxon8-xom.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/saxon8-xpath.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/sdf_generator.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/sis_util.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/slf4j-api-1.6.1.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/slf4j-log4j12-1.6.1.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/smtp.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/spring-aop-3.0.3.RELEASE.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/spring-asm-3.0.3.RELEASE.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/spring-beans-3.0.3.RELEASE.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/spring-context-3.0.3.RELEASE.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/spring-context-support-3.0.3.RELEASE.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/spring-core-3.0.3.RELEASE.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/spring-expression-3.0.3.RELEASE.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/spring-jdbc-3.0.3.RELEASE.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/spring-ldap-core-1.3.0.RELEASE.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/spring-security-acl-3.0.3.RELEASE.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/spring-security-config-3.0.3.RELEASE.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/spring-security-core-3.0.3.RELEASE.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/spring-security-ldap-3.0.3.RELEASE.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/spring-security-taglibs-3.0.3.RELEASE.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/spring-security-web-3.0.3.RELEASE.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/spring-test-3.0.3.RELEASE.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/spring-tx-3.0.3.RELEASE.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/spring-web-3.0.3.RELEASE.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/spring-webmvc-3.0.3.RELEASE.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/stax-api-1.0.1.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/stax-ex-1.2.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/streambuffer-0.9.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/validation-api-1.0.0.GA.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/wstx-asl-3.2.3.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/xalan2-6-0.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/xbean-spring-2.7.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/xercesImpl-2.7.0.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/xml-apis-1.3.04.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/xml-apis-ext-1.3.04.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/xmlbeans-2.3.0.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="/home/superx/git/kern/superx/WEB-INF/lib/xmlgraphics-commons-2.3.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="superx/WEB-INF/lib/log4j-1.2-api-2.16.0.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="superx/WEB-INF/lib/log4j-api-2.16.0.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="superx/WEB-INF/lib/log4j-core-2.16.0.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="superx/WEB-INF/lib/saiku-service-2.5-excelpatch.jar"> |
||||
<attributes> |
||||
<attribute name="module" value="true"/> |
||||
</attributes> |
||||
</classpathentry> |
||||
<classpathentry kind="lib" path="superx/WEB-INF/lib_ext/servlet-api.jar"/> |
||||
<classpathentry kind="output" path="superx/WEB-INF/classes"/> |
||||
</classpath> |
@ -0,0 +1,42 @@
@@ -0,0 +1,42 @@
|
||||
# ignore all log files |
||||
*.log |
||||
*.err |
||||
*.log.* |
||||
|
||||
|
||||
# ignore all CVS + sub dirs |
||||
*CVS/ |
||||
|
||||
# ignore java classes |
||||
*classes/ |
||||
|
||||
# ignore files in directory rohdaten |
||||
superx/WEB-INF/conf/edustore/db/module/*/rohdaten/unl/*.unl |
||||
superx/WEB-INF/conf/edustore/db/install/rohdaten/unl/*.unl |
||||
|
||||
# ignore temporary files |
||||
*.tmp |
||||
*.tmp.sql |
||||
temp.xml |
||||
tmp.fo |
||||
|
||||
# ignore auto generated files |
||||
db.properties |
||||
dbforms-config.xml |
||||
superx/WEB-INF/dbforms-config.old |
||||
superx.datum |
||||
|
||||
# ignore iReport Designer |
||||
*.jasper |
||||
|
||||
# ignore /dist/* |
||||
*dist/ |
||||
|
||||
# ignore swap files |
||||
superx/WEB-INF/reports/swap_* |
||||
|
||||
src/edustore/edustore_*.xml |
||||
|
||||
# ignore eclipse settings |
||||
.settings/org.eclipse.ltk.core.refactoring.prefs |
||||
/WEB-INF/ |
@ -0,0 +1,36 @@
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<projectDescription> |
||||
<name>eduStore_superX</name> |
||||
<comment></comment> |
||||
<projects> |
||||
</projects> |
||||
<buildSpec> |
||||
<buildCommand> |
||||
<name>org.eclipse.jdt.core.javabuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>org.eclipse.babel.editor.rbeBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
</buildSpec> |
||||
<natures> |
||||
<nature>org.eclipse.jdt.groovy.core.groovyNature</nature> |
||||
<nature>org.eclipse.jdt.core.javanature</nature> |
||||
<nature>com.sysdeo.eclipse.tomcat.tomcatnature</nature> |
||||
<nature>com.jaspersoft.studio.babel.editor.rbeNature</nature> |
||||
</natures> |
||||
<filteredResources> |
||||
<filter> |
||||
<id>1459344926910</id> |
||||
<name></name> |
||||
<type>10</type> |
||||
<matcher> |
||||
<id>org.eclipse.ui.ide.multiFilter</id> |
||||
<arguments>1.0-name-matches-false-false-dist</arguments> |
||||
</matcher> |
||||
</filter> |
||||
</filteredResources> |
||||
</projectDescription> |
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
---------------------------------------------------------------------------- |
||||
Wissenswertes zum |
||||
|
||||
SuperX-Modul kern Version 4.9 für POSTGRES |
||||
|
||||
15.08.2022 |
||||
|
||||
|
||||
|
||||
---------------------------------------------------------------------------- |
||||
Dieses Archiv erweitert das Data Warehouse System SuperX um das Modul "kern" |
||||
|
||||
Installationsanleitung im Verzeichnis doc/kern_modul/admin/index.htm (Dort auch Link zu PDF-Version) |
||||
|
||||
---------------------------------------------------------------------------- |
||||
Diese Software nutzt Anwendungen der Apache-Software-Foundation (APACHE_LICENSE). |
||||
Lizenzbedingungen zu SuperX finden Sie in der Datei lizenz.txt |
||||
---------------------------------------------------------------------------- |
||||
|
||||
(c) 15.08.2022 Daniel Quathamer danielq@memtext.de |
||||
www.superx-projekt.de |
@ -0,0 +1,248 @@
@@ -0,0 +1,248 @@
|
||||
CampusSource · AGB und Lizenz |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Allgemeine Geschäftsbedingungen (AGB) und Lizenz |
||||
|
||||
|
||||
|
||||
|
||||
Mit CampusSource wird die Nutzung universitärer Entwicklungen durch Dritte zu |
||||
den Bedingungen der General GNU Public Licence (GPL) ermöglicht, die eine der |
||||
bekanntesten Opensource-Lizenzen ist. |
||||
Die GPL ist eine Lizenz, die dem amerikanischen Recht, nicht jedoch dem |
||||
deutschen Recht genügt. So sind einige Passagen der GPL nach dem deutschen Recht |
||||
nicht wirksam. CampusSource hat aus diesem Grunde Allgemeine |
||||
Geschäftsbedingungen formuliert, die die Interpretation der GPL unter deutschem |
||||
Recht vornimmt und ergänzt. |
||||
|
||||
|
||||
|
||||
Allgemeine Geschäftsbedingungen für die |
||||
Nutzung der Software der Initiative CampusSource |
||||
|
||||
|
||||
1. Vorbemerkung |
||||
Diese Allgemeinen Geschäftsbedingungen regeln die Rechtsbeziehungen zwischen dem |
||||
Land Nordrhein-Westfalen, vertreten durch die FernUniversität Hagen, diese |
||||
wiederum vertreten durch die Geschäftsstelle der Initiative CampusSource bei der |
||||
FernUniversität Hagen, Universitätsstraße 11, D-58097 Hagen (im Folgenden |
||||
»Lizenzgeber« genannt) und dem Nutzer (im Folgenden »Lizenznehmer« genannt) der |
||||
CampusSource-Software. Sie sind ebenso wie die GNU General Public License (siehe |
||||
dazu Abschnitt 4 »Lizenz«) Bestandteil des zwischen dem Lizenzgeber und dem |
||||
Lizenznehmer geschlossenen Vertrages. |
||||
Die GNU General Public License (im Folgenden GPL genannt) finden Sie im Internet |
||||
unter www.gnu.org/copyleft/gpl.html, eine deutsche Übersetzung unter |
||||
www.gnu.de/gpl-ger.html. |
||||
|
||||
|
||||
|
||||
2. Vertragsgegenstand |
||||
Gegenstand des Vertragsangebotes des Lizenzgebers ist die auf diesem Server |
||||
befindliche Software des CampusSource-Projektes (im Folgenden »Software« |
||||
genannt) und dazugehöriges Begleitmaterial. |
||||
Der Lizenzgeber bietet dem Lizenznehmer nach erfolgter Registrierung die |
||||
folgenden Leistungen an: |
||||
Der Lizenzgeber verschafft dem Lizenznehmer die Möglichkeit, auf |
||||
elektronischem Weg Zugang zur Software, deren Dokumentation und zu |
||||
Erfahrungsberichten zu erhalten und sich einen Überblick über das |
||||
Softwareangebot zu verschaffen. |
||||
|
||||
|
||||
Der Lizenzgeber gestattet dem Lizenznehmer, die Software physikalisch |
||||
downzuloaden. |
||||
|
||||
|
||||
Der Lizenzgeber überträgt die in Abschnitt 4 »Lizenz« näher bezeichneten |
||||
Nutzungsrechte auf den Lizenznehmer. |
||||
|
||||
|
||||
Lizenzgeber und Lizenznehmer sind sich einig darüber, dass die Inanspruchnahme |
||||
der unter 1.) bis 3.) angebotenen Leistungen unentgeltlich, schenkungsweise |
||||
erfolgen soll. Dies bedeutet jedoch nicht, dass der Lizenzgeber irgendwelche |
||||
durch die Nutzung des Angebots entstandenen Kosten übernimmt. |
||||
Sofern der Lizenznehmer die Software bearbeitet und diese Bearbeitung Dritten |
||||
zugänglich macht, ist er verpflichtet, dem Lizenzgeber auch eine Kopie der |
||||
Bearbeitung kostenlos zukommen zu lassen, oder, sofern die Bearbeitung |
||||
öffentlich und kostenlos zugänglich ist, dem Lizenzgeber die Quelle mitzuteilen. |
||||
Die in diesen Allgemeinen Geschäftsbedingungen festgelegten Nebenpflichten |
||||
stellen keine Gegenleistung im Sinne des Bürgerlichen Rechts dar und sind für |
||||
den Lizenznehmer verbindlich. Nicht Gegenstand des Vertrages sind irgendeine |
||||
Form von Softwareinstallation, Softwarepflege oder Beratung im Zusammenhang mit |
||||
der Software. Insbesondere wird durch die mit der Software beigefügte oder für |
||||
die Software bereitgestellte Information oder Dokumentation kein |
||||
Beratungsvertrag angeboten. Wenn Sie solche Dienstleistungen wünschen, wenden |
||||
Sie sich an die Geschäftsstelle der Initiative CampusSource. |
||||
Der Lizenzgeber behält sich vor, das Leistungsangebot jederzeit einzustellen. |
||||
Bezüglich bereits empfangener Leistungen bleiben die Verpflichtungen beider |
||||
Parteien hiervon unberührt, insbesondere entfallen dadurch nicht die in diesen |
||||
Allgemeinen Geschäftsbedingungen festgelegten Nebenpflichten des Lizenznehmers. |
||||
Diese Allgemeinen Geschäftsbedingungen gelten auch dann, wenn der Lizenznehmer |
||||
das oben genannte Leistungspaket nur teilweise in Anspruch nimmt. |
||||
|
||||
|
||||
|
||||
3. Sorgfaltspflichten des Lizenznehmers |
||||
Der Lizenznehmer ist verpflichtet, sein Passwort sorgfältig aufzubewahren und |
||||
Dritten nicht zugänglich zu machen. Der Lizenznehmer haftet für alle Schäden, |
||||
die aus der Verletzung dieser Sorgfaltspflicht entstehen. |
||||
|
||||
|
||||
|
||||
4. Lizenz |
||||
Die Nutzungsrechte, welche der Lizenznehmer erhält, ergeben sich aus der GNU |
||||
General Public License. Diese Nutzungsrechte sind dinglich - im Sinne des |
||||
Urheberrechts - mit der Software verknüpft und gelten auch dann, wenn der |
||||
Lizenznehmer keine Kenntnis davon nimmt. Die GNU General Public License (im |
||||
Folgenden GPL genannt) finden Sie im Internet unter |
||||
www.gnu.org/copyleft/gpl.html, eine deutsche Übersetzung unter |
||||
www.gnu.de/gpl-ger.html. |
||||
Die GPL ist zu dem Zweck entworfen worden, dass Sie die unter diese Lizenz |
||||
gestellte Software weitergeben und verändern dürfen. Wenn Sie die Software |
||||
verändern und weitergeben, müssen Sie den Quellcode der bearbeiteten Software |
||||
wieder unter die GPL stellen und den Quellcode zugänglich machen, so dass auch |
||||
andere von Ihrem Werk profitieren, wie auch Sie von der erhaltenen Software |
||||
profitiert haben. Auf diese Art und Weise soll ein System von jedermann frei |
||||
zugänglicher Software geschaffen werden. |
||||
Der Lizenzgeber weist den Lizenznehmer darauf hin, dass die GPL in den USA |
||||
entworfen wurde und daher einige Bestimmungen nach deutschem Recht nicht wirksam |
||||
sind oder in Deutschland rechtlich anders beurteilt werden als in den USA: |
||||
Die Formulierung »You may charge a fee for the physical act of transferring a |
||||
copy« in Abschnitt 1 der GPL ist nach deutschem Recht so zu verstehen, dass |
||||
nur eine angemessene, marktübliche Gegenleistung für die Anfertigung einer |
||||
Kopie verlangt werden darf. Sofern eine das marktübliche überschreitende |
||||
Gegenleistung für das Anfertigen von Kopien verlangt werden würde, hätte dies |
||||
neben einer möglichen Lizenzverletzung zur Folge, dass die durch die |
||||
kostenlose Weitergabe bestehende Haftungsprivilegierung wegfallen könnte und |
||||
der Lizenznehmer wie ein Verkäufer oder Unternehmer (Werkvertrag) bei Mängeln |
||||
auf Schadensersatz haftet. |
||||
|
||||
|
||||
Abschnitt 11 und 12 der GPL (Haftungsausschluss) verstoßen gegen das »Gesetz |
||||
zur Regelung des Rechts der Allgemeinen Geschäftsbedingungen« (AGBG) und sind |
||||
nach deutschem Recht unwirksam. An ihre Stelle treten die entsprechenden |
||||
Bestimmungen des Bürgerlichen Rechts §§ 521ff. (Haftung des Schenkers). |
||||
|
||||
|
||||
Es folgt eine kurze unvollständige Zusammenfassung der GPL. Der Lizenznehmer ist |
||||
verpflichtet, die weiterführenden und präziseren Bestimmungen der GPL zu |
||||
beachten. Der Lizenznehmer wird darauf hingewiesen, dass die GPL einige |
||||
(auflösende) Bedingungen enthält, bei deren Verletzung die dem Lizenznehmer |
||||
übertragenen Nutzungsrechte automatisch ohne jeden Widerruf erlöschen und eine |
||||
weitere Nutzung des Programms zu einer (strafbaren) Urheberrechtsverletzung |
||||
wird. |
||||
Die Lizenz erlaubt dem Lizenznehmer das Ausführen der Programme zu jedem |
||||
Zweck. Gesetzliche Einschränkungen werden hiervon nicht berührt. |
||||
|
||||
|
||||
Der Lizenznehmer darf unveränderte Kopien des Quellcodes anfertigen und |
||||
weiterverbreiten, unter der Bedingung, dass mit der Kopie ein entsprechender |
||||
Urheberrechtsvermerk sowie ein Haftungsausschluß veröffentlicht wird und dass |
||||
alle die GPL betreffenden Hinweise unverändert weitergegeben werden. Ein |
||||
Entgelt darf nur für die Anfertigung von Kopien oder für das Anbieten einer |
||||
Garantie genommen werden. Näheres enthält § 1 GPL. |
||||
|
||||
|
||||
Der Lizenznehmer darf das Programm verändern und die so entstandene |
||||
Bearbeitung unter der Bedingung vervielfältigen und verbreiten, dass er einen |
||||
auffälligen Vermerk über die vorgenommenen Modifizierungen anbringt, die |
||||
Kopien der Bearbeitung ohne Lizenzgebühren unter den Bedingungen der GPL |
||||
verbreitet und dafür sorgt, dass das Programm bei interaktiver Nutzung einen |
||||
Urheberrechtsvermerk ausgibt. Näheres regelt § 2 GPL. |
||||
|
||||
|
||||
Der Lizenznehmer darf das Programm oder eine Bearbeitung als Objectcode oder |
||||
in ausführbarer Form unter Berücksichtigung der letzten beiden Abschnitte |
||||
unter der Bedingung vervielfältigen und verbreiten, dass er den Quelltext |
||||
beifügt oder eine der in § 3 GPL genannten Alternativen erfüllt. Näheres |
||||
regelt § 3 GPL. |
||||
|
||||
|
||||
Sollte dem Lizenznehmer infolge eines Gerichtsurteils oder durch einen |
||||
gerichtlichen Vergleich Bedingungen auferlegt werden, die der GPL |
||||
widersprechen, so entbindet dies den Lizenznehmer nicht von der Einhaltung der |
||||
GPL. Näheres regelt § 7 GPL. |
||||
|
||||
|
||||
Wenn die Verbreitung oder die Benutzung des Programms in bestimmten Staaten |
||||
durch Patent- oder Urheberrecht eingeschränkt ist, kann der Lizenznehmer bei |
||||
der Verbreitung des Programms durch einen entsprechenden Vermerk bestimmen, |
||||
dass die Verbreitung des Programms in bestimmten Staaten ausgeschlossen ist. |
||||
Näheres regelt § 8 GPL. |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
5. Schutzrechte Dritter |
||||
Der Lizenzgeber geht davon aus, dass der Besitz und der vertragsgemäße Gebrauch |
||||
der Software keine Schutzrechte Dritter für den Bereich der BRD beeinträchtigt. |
||||
Im Zusammenhang mit einer möglichen Beeinträchtigung der Schutzrechte Dritter |
||||
werden die folgenden Nebenpflichten vereinbart: |
||||
Der Lizenznehmer verpflichtet sich, dass er weder für sich noch im Auftrag |
||||
eines Dritten die Software zu dem Zweck verwendet, diese nach |
||||
Schutzrechtsverletzungen zu untersuchen oder untersuchen zu lassen. |
||||
|
||||
|
||||
Der Lizenznehmer verpflichtet sich, den Lizenzgeber unverzüglich zu |
||||
benachrichtigen, wenn Dritte Schutzrechtsverletzungen geltend machen. |
||||
|
||||
|
||||
Hat der Lizenznehmer den Eindruck, dass die Software Patente oder andere |
||||
Schutzrechte Dritter verletzt, so ist er verpflichtet, den Lizenzgeber |
||||
unverzüglich schriftlich unter Beifügung einer genauen Beschreibung der |
||||
Verletzungshandlung zu unterrichten. Es ist dem Lizenznehmer untersagt, andere |
||||
natürliche oder juristische Personen ohne schriftliches Einverständnis des |
||||
Lizenzgebers zu informieren. |
||||
|
||||
|
||||
Bei Verletzung einer der obigen Nebenpflichten verpflichtet sich der |
||||
Lizenznehmer, dem Lizenzgeber Schadensersatz für alle durch die Verletzung |
||||
entstandenen Schäden (einschließlich der Prozeßkosten) zu leisten. Ist die |
||||
Verletzung einer solchen Nebenpflicht festgestellt, so genügt es, wenn der |
||||
Lizenzgeber plausibel darlegt, dass der Schaden durch die Verletzung entstanden |
||||
ist. Den Lizenznehmer trifft die volle Beweislast für das Gegenteil. Der |
||||
Lizenznehmer verpflichtet sich, dem Lizenzgeber alle Auskünfte im Zusammenhang |
||||
mit der Verletzung einer der obigen Nebenpflichten zu erteilen. |
||||
Der Lizenzgeber weist darauf hin, dass zur CampusSource-Software nicht die |
||||
Software anderer Hersteller gehört, mit der die CampusSource-Software |
||||
zusammenarbeiten kann oder die für den Betrieb der CampusSource-Software |
||||
notwendigerweise vorhanden sein muss, wie z. B. WWW-Server, |
||||
Funktionsbibliotheken, Werkzeugsysteme und Datenbankmanagementsysteme. Die |
||||
Lizenzen für diese Software müssen vom jeweiligen Hersteller separat erworben |
||||
werden. Die GPL gilt für diese Software in der Regel nicht. |
||||
|
||||
|
||||
|
||||
6. Datenschutz |
||||
Der Lizenzgeber verpflichtet sich, bezüglich der bei der Registrierung |
||||
angegebenen Daten die einschlägigen landes- und bundesrechtlichen |
||||
Datenschutzbestimmungen einzuhalten. Alle Verbindungen zu diesem Server im |
||||
Download- und Registrierbereich werden in einem LOG-File aufgezeichnet. |
||||
|
||||
|
||||
|
||||
7. Schriftform |
||||
Alle Nebenabreden, die zwischen dem Lizenzgeber und dem Lizenznehmer |
||||
abgeschlossen werden, bedürfen der Schriftform. Eine Abänderung oder Aufhebung |
||||
dieser Klausel bedarf ebenfalls der Schriftform. |
||||
|
||||
|
||||
|
||||
8. Gerichtsstand |
||||
Gerichtsstand für alle Streitigkeiten aus diesem Vertrag ist Hagen, sofern der |
||||
Lizenznehmer Kaufmann, eine juristische Person des öffentlichen Rechts oder ein |
||||
öffentlich-rechtliches Sondervermögen ist. |
||||
Die Parteien vereinbaren die Anwendung deutschen Rechts. Sollte nach |
||||
Internationalem Verfahrensrecht die Zuständigkeit eines deutschen Gerichts |
||||
möglich sein, so vereinbaren die Parteien die Zuständigkeit der deutschen |
||||
Gerichtsbarkeit und innerhalb Deutschlands die Zuständigkeit des Amtsgerichtes |
||||
bzw. Landgerichtes Hagen. Bezüglich der in Abschnitt 5 »Schutzrechte Dritter« |
||||
festgelegten Nebenpflichten des Lizenznehmers kann der Lizenzgeber abweichend |
||||
von Satz 3 ein beliebiges international zuständiges Gericht anrufen. |
||||
© 2000 CampusSource Alle Rechte vorbehalten |
||||
|
||||
|
||||
|
@ -0,0 +1,65 @@
@@ -0,0 +1,65 @@
|
||||
|
||||
# Buttons |
||||
button.cancel=Cancel |
||||
button.confirm=Confirm |
||||
button.reset=Reset |
||||
button.save=Save |
||||
button.delete=Delete |
||||
button.delete.confirm=Do you really want to remove this entry? |
||||
button.update=Update |
||||
button.nav.new=New |
||||
button.nav.copy=Copy |
||||
button.addnew=Add a new entry |
||||
button.edit=Edit |
||||
button.nav.first=<< First |
||||
button.nav.last= Last >> |
||||
button.nav.next= Next > |
||||
button.nav.previous=< Previous |
||||
button.submit=Submit |
||||
|
||||
|
||||
# Messages |
||||
msg.yes=Yes |
||||
msg.no=No |
||||
msg.null=[Null] |
||||
|
||||
# Menus |
||||
menu.list.displayname=List |
||||
menu.list.readonly.displayname=List read-only |
||||
menu.login.displayname=Login |
||||
menu.logout.displayname=Logout |
||||
menu.admin.displayname=Administration |
||||
|
||||
|
||||
# DBforms use |
||||
dbforms.select.sort.ascending=Ascending |
||||
dbforms.select.sort.descending=Descending |
||||
dbforms.select.sort.none=None |
||||
|
||||
|
||||
# Errors |
||||
errors.footer= |
||||
errors.header=<h3><font color="red">Validation Error</font></h3>You must correct the following error(s) before proceeding: |
||||
errors.ioException=I/O exception rendering error messages: {0} |
||||
error.database.missing=<li>User database is missing, cannot validate logon credentials</li> |
||||
errors.required={0} is required. |
||||
errors.minlength={0} can not be less than {1} characters. |
||||
errors.maxlength={0} can not be greater than {1} characters. |
||||
errors.invalid={0} is invalid. |
||||
|
||||
errors.byte={0} must be an byte. |
||||
errors.short={0} must be an short. |
||||
errors.integer={0} must be an integer. |
||||
errors.long={0} must be an long. |
||||
errors.float={0} must be an float. |
||||
errors.double={0} must be an double. |
||||
|
||||
errors.date={0} is not a date. |
||||
errors.test.date={0} is not a test date. |
||||
|
||||
errors.range={0} is not in the range {1} through {2}. |
||||
errors.creditcard={0} is not a valid credit card number. |
||||
errors.phone={0} is not a valid phone number ({1}). |
||||
errors.email={0} is an invalid e-mail address. |
||||
|
||||
|
@ -0,0 +1,74 @@
@@ -0,0 +1,74 @@
|
||||
|
||||
# Buttons |
||||
button.cancel=Abbrechen |
||||
button.confirm=Bestätigen |
||||
button.reset=Zurücksetzen |
||||
button.save=Sichern |
||||
button.update=Speichern |
||||
button.delete=Löschen |
||||
button.delete.confirm=Wollen Sie den Eintrag wirklich löschen? |
||||
button.submit=Abschicken |
||||
button.addnew=Einfügen |
||||
|
||||
button.nav.new=Neu |
||||
button.nav.copy=Kopieren |
||||
button.edit=Bearbeiten |
||||
button.nav.first=<< Erster |
||||
button.nav.last= Letzter >> |
||||
button.nav.next= Nächster > |
||||
button.nav.previous=< Vorheriger |
||||
|
||||
|
||||
# DBforms use |
||||
dbforms.select.sort.ascending=Ascendant |
||||
dbforms.select.sort.descending=Descendant |
||||
dbforms.select.sort.none=Aucun |
||||
|
||||
# Messages |
||||
msg.yes=Ja |
||||
msg.no=Nein |
||||
msg.null=--leer-- |
||||
|
||||
# Menus |
||||
menu.list.displayname=List |
||||
menu.list.readonly.displayname=List read-only |
||||
menu.login.displayname=Login |
||||
menu.logout.displayname=Logout |
||||
menu.admin.displayname=Administration |
||||
|
||||
|
||||
# DBforms use |
||||
dbforms.select.sort.ascending=Ascending |
||||
dbforms.select.sort.descending=Descending |
||||
dbforms.select.sort.none=None |
||||
|
||||
|
||||
# Errors |
||||
errors.footer= |
||||
errors.header=<h3><font color="red">Validation Error</font></h3>You must correct the following error(s) before proceeding: |
||||
errors.ioException=I/O exception rendering error messages: {0} |
||||
error.database.missing=<li>User database is missing, cannot validate logon credentials</li> |
||||
errors.required={0} ist ein Pflichtfeld. |
||||
errors.minlength={0} can not be less than {1} characters. |
||||
errors.maxlength={0} can not be greater than {1} characters. |
||||
errors.invalid={0} is invalid. |
||||
|
||||
errors.byte={0} must be an byte. |
||||
errors.short={0} must be an short. |
||||
errors.integer={0} must be an integer. |
||||
errors.long={0} must be an long. |
||||
errors.float={0} must be an float. |
||||
errors.double={0} must be an double. |
||||
|
||||
errors.date={0} is not a date. |
||||
errors.test.date={0} is not a test date. |
||||
|
||||
errors.range={0} is not in the range {1} through {2}. |
||||
errors.creditcard={0} is not a valid credit card number. |
||||
errors.phone={0} is not a valid phone number ({1}). |
||||
errors.email={0} is an invalid e-mail address. |
||||
|
||||
|
||||
#HRK |
||||
studium.heading1=ee |
||||
|
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
# $Id: LocalStrings_en.properties,v 1.1 2000/08/17 00:57:52 horwat Exp $ |
||||
|
||||
# Default localized resources for SuperX servlets |
||||
# This locale is en_US |
||||
|
||||
superx.login=SuperX Login |
||||
superx.welcome=Welcome |
||||
superx.denied=Session timeout reached, or no valid authorization for |
||||
superx.logintext=Please login again |
||||
superx.cookietext=Please make sure your Browser accepts Cookies from this site. |
||||
|
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
# $Id: LocalStrings_de.properties,v 1.1 2000/08/17 00:57:52 horwat Exp $ |
||||
|
||||
# Default localized resources for SuperX servlets |
||||
# This locale is de_DE |
||||
|
||||
superx.login=SuperX Login |
||||
superx.welcome=Willkommen |
||||
superx.denied=Session-Timeout erreicht, oder keine gültige Authentifizierung für |
||||
superx.logintext=Bitte melden Sie sich neu an. |
||||
superx.cookietext=Bitte stellen Sie sicher, dass Ihr Browser Cookies von diesem Server erlaubt. |
||||
superx.deniednouser=Sie sind nicht mehr am System angemeldet. |
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
# $Id: LocalStrings_en.properties,v 1.1 2000/08/17 00:57:52 horwat Exp $ |
||||
|
||||
# Default localized resources for SuperX servlets |
||||
# This locale is en_US |
||||
|
||||
superx.login=SuperX Login |
||||
superx.welcome=Welcome |
||||
superx.denied=Session timeout reached, or no valid authorization for |
||||
superx.logintext=Please login again. |
||||
superx.cookietext=Please make sure your Browser accepts Cookies from this site. |
||||
superx.deniednouser=You are not logged in any more. |
@ -0,0 +1 @@
@@ -0,0 +1 @@
|
||||
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger |
@ -0,0 +1,31 @@
@@ -0,0 +1,31 @@
|
||||
package de.memtext.baseobjects; |
||||
|
||||
/** |
||||
* |
||||
* @author MB |
||||
* */ |
||||
public class ActivatableItem implements ActivatableItemI { |
||||
private static final long serialVersionUID = 1; |
||||
private boolean isActive; |
||||
/** |
||||
* |
||||
*/ |
||||
public ActivatableItem() { |
||||
super(); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see de.memtext.baseobjects.ActivatableItemI#isActive() |
||||
*/ |
||||
public boolean isActive() { |
||||
return isActive; |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see de.memtext.baseobjects.ActivatableItemI#setActive(boolean) |
||||
*/ |
||||
public void setActive(boolean isActive) { |
||||
this.isActive=isActive; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
|
||||
package de.memtext.baseobjects; |
||||
|
||||
/** |
||||
* |
||||
* @author MB |
||||
* */ |
||||
public interface ActivatableItemI { |
||||
boolean isActive(); |
||||
void setActive(boolean isActive); |
||||
} |
@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
|
||||
package de.memtext.baseobjects; |
||||
|
||||
public class ComparableObject extends NamedObject implements Comparable { |
||||
private int sortNr; |
||||
private static final long serialVersionUID = 1; |
||||
|
||||
public ComparableObject(String name, int sortNr) { |
||||
super(name); |
||||
this.sortNr = sortNr; |
||||
} |
||||
|
||||
public int compareTo(Object o) { |
||||
int result = 0; |
||||
if (getSortNr() < ((ComparableObject) o).getSortNr()) |
||||
result = -1; |
||||
if (getSortNr() > ((ComparableObject) o).getSortNr()) |
||||
result = 1; |
||||
return result; |
||||
} |
||||
|
||||
public int getSortNr() { |
||||
return sortNr; |
||||
} |
||||
|
||||
public boolean equals(Object o) { |
||||
boolean result = false; |
||||
ComparableObject comp = (ComparableObject) o; |
||||
if (this.getName().equals(comp.getName()) |
||||
&& this.getSortNr() == comp.getSortNr()) |
||||
result = true; |
||||
|
||||
return result; |
||||
} |
||||
|
||||
public void setSortNr(int sortNr) { |
||||
this.sortNr = sortNr; |
||||
} |
||||
} |
||||
|
||||
//Created on 22.10.2004 at 16:20:48
|
@ -0,0 +1,50 @@
@@ -0,0 +1,50 @@
|
||||
package de.memtext.baseobjects; |
||||
|
||||
import java.util.Collection; |
||||
import java.util.LinkedList; |
||||
|
||||
/** |
||||
* |
||||
* @author MB |
||||
* List with different behaviour when setting items, |
||||
* when index higher than count of elements doesn't throw |
||||
* Exception, but adds as many nulls as necessary up to the |
||||
* right count of elements and then sets the indicated position to |
||||
* the new value |
||||
* |
||||
* * If for example a value for column 5 is to be stored, but the data List only |
||||
* contains values for column 1 and 2, for column 3 and 4 null values are stored. |
||||
|
||||
* */ |
||||
public class DataList extends LinkedList { |
||||
private static final long serialVersionUID = 1; |
||||
|
||||
/** |
||||
* |
||||
*/ |
||||
public DataList() { |
||||
super(); |
||||
} |
||||
|
||||
/** |
||||
* @param c |
||||
*/ |
||||
public DataList(Collection c) { |
||||
super(c); |
||||
|
||||
} |
||||
/** |
||||
* If for example a value for column 5 is to be stored, but the data List only |
||||
* contains values for column 1 and 2, for column 3 and 4 null values are stored. |
||||
|
||||
*/ |
||||
public Object set(int index, Object o) { |
||||
while (index > this.size() - 1) { |
||||
this.add(null); |
||||
} |
||||
Object previous = this.get(index); |
||||
super.set(index, o); |
||||
return previous; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,18 @@
@@ -0,0 +1,18 @@
|
||||
package de.memtext.baseobjects; |
||||
|
||||
import java.awt.event.MouseAdapter; |
||||
import java.awt.event.MouseEvent; |
||||
|
||||
public abstract class DoubleClickMouseListener extends MouseAdapter { |
||||
|
||||
public DoubleClickMouseListener() { |
||||
super(); |
||||
} |
||||
public final void mousePressed(MouseEvent e) { |
||||
if (e.getClickCount() == 2) doubleClickOccured(); |
||||
} |
||||
protected abstract void doubleClickOccured() ; |
||||
|
||||
|
||||
} |
||||
//Created on 16.03.2004 at 15:51:43
|
@ -0,0 +1,50 @@
@@ -0,0 +1,50 @@
|
||||
package de.memtext.baseobjects; |
||||
|
||||
import java.io.Serializable; |
||||
|
||||
/** |
||||
* |
||||
* @author MB |
||||
* */ |
||||
public class IdObject implements IdObjectI,Serializable { |
||||
private Object id; |
||||
private static final long serialVersionUID = 1; |
||||
public IdObject() { |
||||
|
||||
} |
||||
public IdObject(Object id) { |
||||
setId(id); |
||||
|
||||
} |
||||
|
||||
/** |
||||
* @return |
||||
*/ |
||||
public Object getId() { |
||||
return id; |
||||
} |
||||
|
||||
|
||||
|
||||
/** |
||||
* @param object |
||||
*/ |
||||
public void setId(Object object) { |
||||
id = object; |
||||
} |
||||
|
||||
public String toString() |
||||
{ |
||||
return "id:"+getId(); |
||||
} |
||||
/** |
||||
* Provides a deep copy |
||||
*/ |
||||
public Object clone() throws CloneNotSupportedException { |
||||
if (id!=null&&!(id instanceof String)&&!(id instanceof Integer)) |
||||
throw new CloneNotSupportedException(" You have to check in IdObject.clone if deep copying is necessary for class "+id.getClass()); |
||||
|
||||
IdObject cl=new IdObject(this.getId()); |
||||
return cl; |
||||
} |
||||
} |
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
package de.memtext.baseobjects; |
||||
/** |
||||
* @see de.memtext.util.TreeUtils for a method creating key list (1,2,4) from nodes |
||||
*/ |
||||
public interface IdObjectI { |
||||
public Object getId(); |
||||
public void setId(Object id); |
||||
|
||||
} |
||||
|
||||
//Created on 30.01.2004 at 13:03:06
|
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
package de.memtext.baseobjects; |
||||
|
||||
|
||||
/** |
||||
* For classes up in the hierarchy which need a name in some context |
||||
* but shouldn't pass it on to inheriting classes |
||||
*/ |
||||
public final class NameDecorator implements NamedObjectI{ |
||||
private Object object; |
||||
private String name; |
||||
public NameDecorator(String name,Object object) { |
||||
this.name=name; |
||||
this.object=object; |
||||
} |
||||
public String getName() { |
||||
return name; |
||||
} |
||||
public void setName(String name) { |
||||
this.name=name; |
||||
} |
||||
|
||||
public Object getObject() |
||||
{ |
||||
return object; |
||||
} |
||||
} |
||||
|
||||
//Created on 25.11.2003 at 14:49:50
|
@ -0,0 +1,83 @@
@@ -0,0 +1,83 @@
|
||||
package de.memtext.baseobjects; |
||||
|
||||
import java.io.Serializable; |
||||
|
||||
import de.memtext.util.EqualsUtil; |
||||
import de.memtext.util.HashCodeUtil; |
||||
|
||||
/** |
||||
* |
||||
* @author MB |
||||
*/ |
||||
public class NamedIdObject extends NamedObject implements NamedIdObjectI, |
||||
Serializable { |
||||
private Object id; |
||||
private static final long serialVersionUID = 1; |
||||
public NamedIdObject() { |
||||
} |
||||
|
||||
public NamedIdObject(NamedObjectI namedObject) { |
||||
setName(namedObject.getName()); |
||||
} |
||||
|
||||
public NamedIdObject(Object id, String name) { |
||||
setId(id); |
||||
setName(name); |
||||
} |
||||
|
||||
/** |
||||
* @return |
||||
*/ |
||||
public Object getId() { |
||||
return id; |
||||
} |
||||
|
||||
/** |
||||
* @param object |
||||
*/ |
||||
public void setId(Object id) { |
||||
this.id = id; |
||||
} |
||||
|
||||
public String toString() { |
||||
return getId() + " - " + getName(); |
||||
} |
||||
public boolean equals(Object o) |
||||
{ |
||||
boolean result=false; |
||||
if (o instanceof NamedIdObject) |
||||
{ |
||||
NamedIdObject o2=(NamedIdObject)o; |
||||
result=EqualsUtil.areEqual(this.getId(),o2.getId())&&EqualsUtil.areEqual(this.getName(),o2.getName()); |
||||
|
||||
|
||||
} |
||||
return result; |
||||
} |
||||
public int hashCode(){ |
||||
int result = HashCodeUtil.SEED; |
||||
//collect the contributions of various fields
|
||||
result = HashCodeUtil.hash(result, getId()); |
||||
result = HashCodeUtil.hash(result, getName()); |
||||
|
||||
return result; |
||||
} |
||||
/** |
||||
* Provides a deep copy |
||||
*/ |
||||
public Object clone() throws CloneNotSupportedException { |
||||
|
||||
NamedIdObject cl = new NamedIdObject((NamedObject) super.clone()); |
||||
|
||||
if (id != null && !(id instanceof String) && !(id instanceof Integer)) |
||||
throw new CloneNotSupportedException( |
||||
" You have to check in NamedIdObject.clone if deep copying is necessary for class " |
||||
+ id.getClass()); |
||||
|
||||
if (this.id != null) |
||||
cl.setId(id); |
||||
return cl; |
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
|
||||
package de.memtext.baseobjects; |
||||
|
||||
/** |
||||
* |
||||
* @author MB |
||||
* */ |
||||
public interface NamedIdObjectI extends NamedObjectI, IdObjectI{ |
||||
|
||||
|
||||
} |
@ -0,0 +1,91 @@
@@ -0,0 +1,91 @@
|
||||
package de.memtext.baseobjects; |
||||
|
||||
import java.io.Serializable; |
||||
|
||||
import de.memtext.tree.KeyParentEqualException; |
||||
import de.memtext.util.EqualsUtil; |
||||
import de.memtext.util.HashCodeUtil; |
||||
|
||||
public class NamedIdObjectWithParent extends NamedIdObject implements |
||||
NamedIdObjectWithParentI, Serializable { |
||||
private Object parentKey; |
||||
private static final long serialVersionUID = 1; |
||||
public NamedIdObjectWithParent() { |
||||
super(); |
||||
} |
||||
|
||||
public NamedIdObjectWithParent(NamedIdObjectI namedIdObject) { |
||||
setId(namedIdObject.getId()); |
||||
setName(namedIdObject.getName()); |
||||
} |
||||
|
||||
public NamedIdObjectWithParent(Object id, String name) { |
||||
super(id, name); |
||||
} |
||||
|
||||
public NamedIdObjectWithParent(Object id, String name, Object parentKey) |
||||
throws KeyParentEqualException { |
||||
super(id, name); |
||||
setParentKey(parentKey); |
||||
} |
||||
|
||||
public Object getParentKey() { |
||||
return parentKey; |
||||
} |
||||
|
||||
public void setParentKey(Object parentKey) throws KeyParentEqualException { |
||||
this.parentKey = parentKey; |
||||
if ((getId() == null && getParentKey() == null) |
||||
|| (getId() != null && getId().equals(getParentKey()))) |
||||
throw new KeyParentEqualException((NamedIdObjectWithParentI) this); |
||||
} |
||||
//TODO aufteilen auf übergeordnete Objekte
|
||||
public boolean equals(Object obj) { |
||||
|
||||
if ( this == obj ) return true; |
||||
if ( obj == null || obj.getClass() != this.getClass() ) return false; |
||||
|
||||
NamedIdObjectWithParent i2=(NamedIdObjectWithParent)obj; |
||||
return |
||||
EqualsUtil.areEqual(this.getId(), i2.getId()) && |
||||
EqualsUtil.areEqual(this.getName(), i2.getName()) && |
||||
EqualsUtil.areEqual(this.getParentKey(), i2.getParentKey()); |
||||
|
||||
|
||||
} |
||||
|
||||
/* |
||||
* @see java.lang.Object#hashCode() |
||||
*/ |
||||
public int hashCode() { |
||||
int result = HashCodeUtil.SEED; |
||||
result = HashCodeUtil.hash(result, getId()); |
||||
result = HashCodeUtil.hash(result, getName()); |
||||
result = HashCodeUtil.hash(result, getParentKey()); |
||||
return result ; |
||||
} |
||||
/** |
||||
* Provides a deep copy |
||||
*/ |
||||
public Object clone() throws CloneNotSupportedException { |
||||
|
||||
NamedIdObjectWithParent cl = new NamedIdObjectWithParent( |
||||
(NamedIdObject) super.clone()); |
||||
|
||||
if (parentKey != null && !(parentKey instanceof String) |
||||
&& !(parentKey instanceof Integer)) |
||||
throw new CloneNotSupportedException( |
||||
" You have to check in NamedIdObjectWithParent.clone if deep copying is necessary for class " |
||||
+ parentKey.getClass()); |
||||
|
||||
if (this.parentKey != null) |
||||
try { |
||||
cl.setParentKey(this.parentKey); |
||||
} catch (KeyParentEqualException e) { |
||||
throw new CloneNotSupportedException("Cloning didn't work" + e); |
||||
} |
||||
return cl; |
||||
} |
||||
} |
||||
|
||||
//Created on 18.11.2003
|
@ -0,0 +1,9 @@
@@ -0,0 +1,9 @@
|
||||
package de.memtext.baseobjects; |
||||
|
||||
import de.memtext.tree.KeyParentEqualException; |
||||
|
||||
public interface NamedIdObjectWithParentI extends NamedIdObjectI { |
||||
public Object getParentKey(); |
||||
public void setParentKey(Object parentKey) throws KeyParentEqualException; |
||||
} |
||||
//Created on 18.11.2003
|
@ -0,0 +1,49 @@
@@ -0,0 +1,49 @@
|
||||
package de.memtext.baseobjects; |
||||
|
||||
import java.io.Serializable; |
||||
|
||||
/** |
||||
* |
||||
* @author MB |
||||
* */ |
||||
public class NamedObject implements NamedObjectI,Serializable { |
||||
private String name; |
||||
private static final long serialVersionUID = 1; |
||||
/** |
||||
* |
||||
*/ |
||||
|
||||
public NamedObject() { |
||||
|
||||
} |
||||
public NamedObject(String name) { |
||||
setName(name); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* @return |
||||
*/ |
||||
public String getName() { |
||||
return name; |
||||
} |
||||
|
||||
|
||||
|
||||
/** |
||||
* @param string |
||||
*/ |
||||
public void setName(String string) { |
||||
name = string; |
||||
} |
||||
public String toString() { |
||||
return name; |
||||
} |
||||
|
||||
/** |
||||
* Provides a deep copy |
||||
*/ |
||||
protected Object clone() throws CloneNotSupportedException { |
||||
return new NamedObject(this.getName()); |
||||
} |
||||
} |
@ -0,0 +1,13 @@
@@ -0,0 +1,13 @@
|
||||
package de.memtext.baseobjects; |
||||
|
||||
/** |
||||
* |
||||
* @author MB |
||||
* */ |
||||
public interface NamedObjectI { |
||||
|
||||
public String getName(); |
||||
|
||||
public void setName(String name); |
||||
public String toString(); |
||||
} |
@ -0,0 +1,32 @@
@@ -0,0 +1,32 @@
|
||||
package de.memtext.baseobjects; |
||||
/** |
||||
* This class holds information about a string that is to be |
||||
* searched for and another string that the former is to be |
||||
* replaced with. |
||||
* By default both are empty strings. |
||||
*/ |
||||
public class SearchReplaceTextHolder { |
||||
private String searchText="", replaceText=""; |
||||
public SearchReplaceTextHolder() { |
||||
super(); |
||||
} |
||||
|
||||
public String getReplaceText() { |
||||
return replaceText; |
||||
} |
||||
|
||||
public String getSearchText() { |
||||
return searchText; |
||||
} |
||||
|
||||
public void setReplaceText(String string) { |
||||
replaceText = string; |
||||
} |
||||
|
||||
public void setSearchText(String string) { |
||||
searchText = string; |
||||
} |
||||
|
||||
} |
||||
|
||||
//Created on 04.02.2004 at 11:40:47
|
@ -0,0 +1,86 @@
@@ -0,0 +1,86 @@
|
||||
package de.memtext.baseobjects; |
||||
|
||||
import java.io.Serializable; |
||||
import java.util.ArrayList; |
||||
import java.util.Iterator; |
||||
import java.util.List; |
||||
|
||||
import de.memtext.rights.Rights; |
||||
|
||||
/** |
||||
* stellt einen User dar, könnte sicherer gemacht werden mit |
||||
* defensive Copying |
||||
* @author MB |
||||
* */ |
||||
public class User extends NamedIdObject implements Serializable { |
||||
private List groupMembershipIds = new ArrayList(5); |
||||
private String passwd; |
||||
|
||||
private Rights rights; |
||||
private boolean isAdmin=false; |
||||
private static final long serialVersionUID = 1; |
||||
public User() { |
||||
setName(""); |
||||
setPasswd(""); |
||||
} |
||||
public User(String username, String passwd) { |
||||
setName(username); |
||||
setPasswd(passwd); |
||||
|
||||
} |
||||
|
||||
public User(String username, Integer userid) { |
||||
super(userid,username); |
||||
if (userid == null) |
||||
throw new IllegalArgumentException("No user without userid allowed"); |
||||
} |
||||
public User(String username) { |
||||
setName(username); |
||||
} |
||||
/** |
||||
* @param groupmemberships |
||||
*/ |
||||
public void addAllGroupmembershipsById(List groupmemberships) { |
||||
groupMembershipIds.addAll(groupmemberships); |
||||
} |
||||
public void addGroupMembershipById(Integer groupid) { |
||||
groupMembershipIds.add(groupid); |
||||
} |
||||
|
||||
public String getPasswd() { |
||||
return passwd; |
||||
} |
||||
|
||||
|
||||
|
||||
public Iterator groupmembershipIdIterator() { |
||||
return groupMembershipIds.iterator(); |
||||
} |
||||
public void removeGroupMembershipById(Integer groupid) { |
||||
groupMembershipIds.remove(groupid); |
||||
} |
||||
|
||||
public void setPasswd(String pwd) { |
||||
passwd = pwd; |
||||
} |
||||
|
||||
|
||||
public String toString() |
||||
{ |
||||
|
||||
return getName(); |
||||
} |
||||
public Rights getRights() { |
||||
return rights; |
||||
} |
||||
public void setRights(Rights rights) { |
||||
this.rights = rights; |
||||
} |
||||
public boolean isAdmin() { |
||||
return isAdmin; |
||||
} |
||||
public void setAdmin(boolean isAdmin) { |
||||
this.isAdmin = isAdmin; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,321 @@
@@ -0,0 +1,321 @@
|
||||
package de.memtext.baseobjects.coll; |
||||
|
||||
import java.io.Serializable; |
||||
import java.util.Collection; |
||||
import java.util.Iterator; |
||||
import java.util.LinkedList; |
||||
import java.util.List; |
||||
import java.util.ListIterator; |
||||
|
||||
import de.memtext.baseobjects.ActivatableItemI; |
||||
|
||||
/** |
||||
* |
||||
* @author MB |
||||
* */ |
||||
public class ActivatableItemList implements List,Serializable { |
||||
private List collect = new LinkedList(); |
||||
private static final long serialVersionUID = 1; |
||||
/** |
||||
* |
||||
*/ |
||||
public ActivatableItemList() { |
||||
super(); |
||||
} |
||||
|
||||
public Iterator activeItemIterator() { |
||||
return getActiveItems().iterator(); |
||||
} |
||||
|
||||
public Collection getActiveItems() { |
||||
Collection result = new LinkedList(); |
||||
for (Iterator iter = this.iterator(); iter.hasNext();) { |
||||
ActivatableItemI element = (ActivatableItemI) iter.next(); |
||||
if (element.isActive()) |
||||
result.add(element); |
||||
} |
||||
return result; |
||||
} |
||||
public void setAllActive(boolean active) { |
||||
for (Iterator iter = this.iterator(); iter.hasNext();) { |
||||
ActivatableItemI element = (ActivatableItemI) iter.next(); |
||||
element.setActive(active); |
||||
} |
||||
} |
||||
public boolean isAllActive() { |
||||
boolean result = true; |
||||
for (Iterator iter = this.iterator(); iter.hasNext();) { |
||||
ActivatableItemI element = (ActivatableItemI) iter.next(); |
||||
if (!element.isActive()) { |
||||
result = false; |
||||
break; |
||||
} |
||||
} |
||||
return result; |
||||
} |
||||
public boolean isAllDeactivated() { |
||||
boolean result = true; |
||||
for (Iterator iter = this.iterator(); iter.hasNext();) { |
||||
ActivatableItemI element = (ActivatableItemI) iter.next(); |
||||
if (element.isActive()) { |
||||
result = false; |
||||
break; |
||||
} |
||||
} |
||||
return result; |
||||
} |
||||
public int activeCount() { |
||||
int count = 0; |
||||
for (Iterator iter = this.iterator(); iter.hasNext();) { |
||||
ActivatableItemI element = (ActivatableItemI) iter.next(); |
||||
if (element.isActive()) |
||||
count++; |
||||
} |
||||
return count; |
||||
} |
||||
public int deactivatedCount() { |
||||
|
||||
int count = 0; |
||||
for (Iterator iter = this.iterator(); iter.hasNext();) { |
||||
ActivatableItemI element = (ActivatableItemI) iter.next(); |
||||
if (!element.isActive()) |
||||
count++; |
||||
} |
||||
return count; |
||||
|
||||
} |
||||
public ActivatableItemI getActiveItem(int pos) { |
||||
ActivatableItemI result = null; |
||||
int i = 0; |
||||
|
||||
for (Iterator it = activeItemIterator(); it.hasNext();) { |
||||
ActivatableItemI element = (ActivatableItemI) it.next(); |
||||
if (i == pos) { |
||||
result = element; |
||||
break; |
||||
} |
||||
i++; |
||||
} |
||||
if (result == null) |
||||
throw new RuntimeException("not found"); |
||||
|
||||
return result; |
||||
} |
||||
/** |
||||
* |
||||
* @return null if all deactivated |
||||
*/ |
||||
public ActivatableItemI getFirstActive() { |
||||
ActivatableItemI result = null; |
||||
for (Iterator iter = this.iterator(); iter.hasNext();) { |
||||
ActivatableItemI element = (ActivatableItemI) iter.next(); |
||||
if (element.isActive()) { |
||||
result = element; |
||||
break; |
||||
} |
||||
} |
||||
return result; |
||||
} |
||||
/** |
||||
* |
||||
* @return null if all active |
||||
*/ |
||||
public ActivatableItemI getFirstDeactivated() { |
||||
ActivatableItemI result = null; |
||||
for (Iterator iter = this.iterator(); iter.hasNext();) { |
||||
ActivatableItemI element = (ActivatableItemI) iter.next(); |
||||
if (!element.isActive()) { |
||||
result = element; |
||||
break; |
||||
} |
||||
} |
||||
return result; |
||||
} |
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#size() |
||||
*/ |
||||
public int size() { |
||||
return collect.size(); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#isEmpty() |
||||
*/ |
||||
public boolean isEmpty() { |
||||
return collect.isEmpty(); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#contains(java.lang.Object) |
||||
*/ |
||||
public boolean contains(Object o) { |
||||
return collect.contains(o); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#iterator() |
||||
*/ |
||||
public Iterator iterator() { |
||||
return collect.iterator(); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#toArray() |
||||
*/ |
||||
public Object[] toArray() { |
||||
return collect.toArray(); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#toArray(java.lang.Object[]) |
||||
*/ |
||||
public Object[] toArray(Object[] a) { |
||||
return collect.toArray(a); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#containsAll(java.util.Collection) |
||||
*/ |
||||
public boolean containsAll(Collection c) { |
||||
return collect.containsAll(c); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#addAll(java.util.Collection) |
||||
*/ |
||||
public boolean addAll(Collection c) { |
||||
for (Iterator iter = c.iterator(); iter.hasNext();) { |
||||
Object element = iter.next(); |
||||
if (!(element instanceof ActivatableItemI)) |
||||
throw new IllegalArgumentException("only Activatable items"); |
||||
|
||||
} |
||||
return collect.addAll(c); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#removeAll(java.util.Collection) |
||||
*/ |
||||
public boolean removeAll(Collection c) { |
||||
return collect.removeAll(c); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#retainAll(java.util.Collection) |
||||
*/ |
||||
public boolean retainAll(Collection c) { |
||||
for (Iterator iter = c.iterator(); iter.hasNext();) { |
||||
Object element = iter.next(); |
||||
if (!(element instanceof ActivatableItemI)) |
||||
throw new IllegalArgumentException("only Activatable items"); |
||||
|
||||
} |
||||
return collect.retainAll(c); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#clear() |
||||
*/ |
||||
public void clear() { |
||||
collect.clear(); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#add(java.lang.Object) |
||||
*/ |
||||
public boolean add(Object o) { |
||||
if (!(o instanceof ActivatableItemI)) |
||||
throw new IllegalArgumentException("only Activatable items"); |
||||
return collect.add(o); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#remove(java.lang.Object) |
||||
*/ |
||||
public boolean remove(Object o) { |
||||
return collect.remove(o); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.List#addAll(int, java.util.Collection) |
||||
*/ |
||||
public boolean addAll(int index, Collection c) { |
||||
for (Iterator iter = c.iterator(); iter.hasNext();) { |
||||
Object element = iter.next(); |
||||
if (!(element instanceof ActivatableItemI)) |
||||
throw new IllegalArgumentException("only Activatable items"); |
||||
|
||||
} |
||||
return collect.addAll(c); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.List#get(int) |
||||
*/ |
||||
public Object get(int index) { |
||||
return collect.get(index); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.List#set(int, java.lang.Object) |
||||
*/ |
||||
public Object set(int index, Object element) { |
||||
if (!(element instanceof ActivatableItemI)) |
||||
throw new IllegalArgumentException("only Activatable items"); |
||||
return collect.set(index, element); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.List#add(int, java.lang.Object) |
||||
*/ |
||||
public void add(int index, Object element) { |
||||
if (!(element instanceof ActivatableItemI)) |
||||
throw new IllegalArgumentException("only Activatable items"); |
||||
collect.add(index, element); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.List#remove(int) |
||||
*/ |
||||
public Object remove(int index) { |
||||
return collect.remove(index); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.List#indexOf(java.lang.Object) |
||||
*/ |
||||
public int indexOf(Object o) { |
||||
return collect.indexOf(o); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.List#lastIndexOf(java.lang.Object) |
||||
*/ |
||||
public int lastIndexOf(Object o) { |
||||
return collect.lastIndexOf(o); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.List#listIterator() |
||||
*/ |
||||
public ListIterator listIterator() { |
||||
return collect.listIterator(); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.List#listIterator(int) |
||||
*/ |
||||
public ListIterator listIterator(int index) { |
||||
return collect.listIterator(index); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.List#subList(int, int) |
||||
*/ |
||||
public List subList(int fromIndex, int toIndex) { |
||||
return collect.subList(fromIndex, toIndex); |
||||
} |
||||
public String toString() { |
||||
return "ActivatableItemsList " + size() + " items"; |
||||
} |
||||
} |
@ -0,0 +1,125 @@
@@ -0,0 +1,125 @@
|
||||
package de.memtext.baseobjects.coll; |
||||
|
||||
import java.io.Serializable; |
||||
import java.util.Collection; |
||||
import java.util.Iterator; |
||||
import java.util.LinkedList; |
||||
|
||||
/** |
||||
* Basis for the collections, but default the used collection is a |
||||
* linkedList, subclasses may change to use a list or set |
||||
* @author MB |
||||
* */ |
||||
public class BaseObjectCollection implements Collection,Serializable { |
||||
protected Collection collect; |
||||
private static final long serialVersionUID = 1; |
||||
public BaseObjectCollection() { |
||||
super(); |
||||
collect = new LinkedList(); |
||||
} |
||||
|
||||
|
||||
|
||||
public int size() { |
||||
return collect.size(); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#isEmpty() |
||||
*/ |
||||
public boolean isEmpty() { |
||||
return collect.isEmpty(); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#contains(java.lang.Object) |
||||
*/ |
||||
public boolean contains(Object o) { |
||||
return collect.contains(o); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#iterator() |
||||
*/ |
||||
public Iterator iterator() { |
||||
return collect.iterator(); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#toArray() |
||||
*/ |
||||
public Object[] toArray() { |
||||
return collect.toArray(); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#toArray(java.lang.Object[]) |
||||
*/ |
||||
public Object[] toArray(Object[] a) { |
||||
return collect.toArray(a); |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#containsAll(java.util.Collection) |
||||
*/ |
||||
public boolean containsAll(Collection c) { |
||||
return collect.containsAll(c); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#addAll(java.util.Collection) |
||||
*/ |
||||
public boolean addAll(Collection c) { |
||||
return collect.addAll(c); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#removeAll(java.util.Collection) |
||||
*/ |
||||
public boolean removeAll(Collection c) { |
||||
return collect.removeAll(c); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#retainAll(java.util.Collection) |
||||
*/ |
||||
public boolean retainAll(Collection c) { |
||||
return collect.retainAll(c); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#clear() |
||||
*/ |
||||
public void clear() { |
||||
collect.clear(); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#add(java.lang.Object) |
||||
*/ |
||||
public boolean add(Object o) { |
||||
if (o==null) throw new IllegalArgumentException("can't add null value"); |
||||
return collect.add(o); |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see java.util.Collection#remove(java.lang.Object) |
||||
*/ |
||||
public boolean remove(Object o) { |
||||
return collect.remove(o); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Only shallow copy |
||||
*/ |
||||
protected Object clone() throws CloneNotSupportedException { |
||||
BaseObjectCollection c=new BaseObjectCollection(); |
||||
c.addAll(this); |
||||
return c; |
||||
} |
||||
} |
||||
//Created on 30.1.2004
|
@ -0,0 +1,108 @@
@@ -0,0 +1,108 @@
|
||||
package de.memtext.baseobjects.coll; |
||||
|
||||
import java.io.Serializable; |
||||
import java.util.Collection; |
||||
import java.util.Iterator; |
||||
|
||||
import de.memtext.baseobjects.IdObjectI; |
||||
import de.memtext.util.StringUtils; |
||||
|
||||
/** |
||||
* |
||||
* @author MB |
||||
* */ |
||||
public class IdObjectCollection |
||||
extends BaseObjectCollection |
||||
implements Collection ,Serializable{ |
||||
private static final long serialVersionUID = 1; |
||||
public IdObjectCollection() { |
||||
super(); |
||||
} |
||||
/** |
||||
* |
||||
* @param id |
||||
* @return object |
||||
* @throws IllegalArgumentException if nothing found |
||||
*/ |
||||
public IdObjectI getById(Object id) { |
||||
IdObjectI test, result = null; |
||||
for (Iterator it = collect.iterator(); it.hasNext();) { |
||||
test = (IdObjectI) it.next(); |
||||
if ((id == null && test.getId() == null) |
||||
|| (test.getId() != null && test.getId().equals(id))) { |
||||
result = test; |
||||
break; |
||||
} |
||||
} |
||||
if (result == null) |
||||
throw new IllegalArgumentException( |
||||
"No element with id " + id + " found!"); |
||||
return result; |
||||
} |
||||
/** |
||||
* like '12','34','343' |
||||
* useful for creating sqls like where x in (...) |
||||
* @return |
||||
*/ |
||||
public String getIdsApostropheString() { |
||||
StringBuffer result = new StringBuffer(); |
||||
IdObjectI test; |
||||
for (Iterator it = collect.iterator(); it.hasNext();) { |
||||
test = (IdObjectI) it.next(); |
||||
result.append("'" + test.getId() + "',"); |
||||
} |
||||
StringUtils.deleteLastChar(result); |
||||
return result.toString(); |
||||
} |
||||
public boolean containsItemWithId(Object id) { |
||||
boolean result = false; |
||||
IdObjectI test; |
||||
for (Iterator it = collect.iterator(); it.hasNext();) { |
||||
test = (IdObjectI) it.next(); |
||||
if (test.getId().equals(id)) { |
||||
result = true; |
||||
break; |
||||
} |
||||
} |
||||
return result; |
||||
} |
||||
/** |
||||
* Checks if the collection contains only the ids given in the param collection ids |
||||
* @param Collection ids |
||||
* @return |
||||
*/ |
||||
public boolean consistsOfIds(Collection ids) { |
||||
|
||||
if (this.size() != ids.size()) |
||||
return false; |
||||
boolean result = true; |
||||
for (Iterator it = ids.iterator(); it.hasNext();) { |
||||
Object id = it.next(); |
||||
try { |
||||
Object dummy = getById(id); |
||||
} catch (IllegalArgumentException e) { |
||||
result = false; |
||||
break; |
||||
} |
||||
} |
||||
return result; |
||||
} |
||||
|
||||
public boolean add(Object o) { |
||||
if (o == null) |
||||
throw new IllegalArgumentException("can't add null value"); |
||||
if (!(o instanceof IdObjectI)) |
||||
throw new IllegalArgumentException("only named IdObjects allowed"); |
||||
return collect.add(o); |
||||
} |
||||
|
||||
/** |
||||
* Only shallow copy |
||||
*/ |
||||
protected Object clone() throws CloneNotSupportedException { |
||||
IdObjectCollection c=new IdObjectCollection(); |
||||
c.addAll(this); |
||||
return c; |
||||
} |
||||
} |
||||
//Created on 30.1.2004
|
@ -0,0 +1,84 @@
@@ -0,0 +1,84 @@
|
||||
package de.memtext.baseobjects.coll; |
||||
|
||||
import java.util.Collection; |
||||
import java.util.Iterator; |
||||
import java.util.LinkedList; |
||||
import java.util.List; |
||||
import java.util.ListIterator; |
||||
|
||||
import de.memtext.baseobjects.IdObjectI; |
||||
import de.memtext.util.StringUtils; |
||||
|
||||
/** |
||||
* |
||||
* @author MB |
||||
* */ |
||||
public class IdObjectList extends IdObjectCollection implements List { |
||||
private static final long serialVersionUID = 1; |
||||
public IdObjectList() { |
||||
super(); |
||||
collect=new LinkedList(); |
||||
} |
||||
|
||||
|
||||
public Object get(int pos) |
||||
{ |
||||
return ((List)collect).get(pos); |
||||
} |
||||
|
||||
public boolean addAll(int arg0, Collection arg1) { |
||||
return ((List)collect).addAll(arg0,arg1); |
||||
} |
||||
|
||||
public Object set(int arg0, Object arg1) { |
||||
return ((List)collect).set(arg0,arg1); |
||||
} |
||||
|
||||
public void add(int pos, Object arg1) { |
||||
((List)collect).add(pos,arg1); |
||||
} |
||||
|
||||
public Object remove(int arg0) { |
||||
return ((List)collect).remove(arg0); |
||||
} |
||||
|
||||
|
||||
public ListIterator listIterator(int arg0) { |
||||
return ((List)collect).listIterator(arg0); |
||||
} |
||||
|
||||
public List subList(int arg0, int arg1) { |
||||
return ((List)collect).subList(arg0,arg1); |
||||
} |
||||
|
||||
public int indexOf(Object arg0) { |
||||
return ((List)collect).indexOf(arg0); |
||||
} |
||||
|
||||
public int lastIndexOf(Object arg0) { |
||||
return ((List)collect).lastIndexOf(arg0); |
||||
} |
||||
|
||||
public ListIterator listIterator() { |
||||
return ((List)collect).listIterator(); |
||||
} |
||||
public String toString() |
||||
{ |
||||
StringBuffer result=new StringBuffer("idobject list:"); |
||||
for (Iterator it = this.iterator(); it.hasNext();) { |
||||
IdObjectI element = (IdObjectI) it.next(); |
||||
result.append(element.toString()+","); |
||||
} |
||||
StringUtils.getLastChar(result); |
||||
return result.toString(); |
||||
} |
||||
/** |
||||
* Only shallow copy |
||||
*/ |
||||
protected Object clone() throws CloneNotSupportedException { |
||||
IdObjectList c=new IdObjectList(); |
||||
c.addAll(this); |
||||
return c; |
||||
} |
||||
} |
||||
//Created on 30.1.2004
|
@ -0,0 +1,24 @@
@@ -0,0 +1,24 @@
|
||||
package de.memtext.baseobjects.coll; |
||||
|
||||
import java.util.HashSet; |
||||
import java.util.Set; |
||||
|
||||
public class IdObjectSet extends IdObjectCollection implements Set { |
||||
private static final long serialVersionUID = 1; |
||||
public IdObjectSet() { |
||||
super(); |
||||
collect=new HashSet(); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Only shallow copy |
||||
*/ |
||||
protected Object clone() throws CloneNotSupportedException { |
||||
IdObjectSet c=new IdObjectSet(); |
||||
c.addAll(this); |
||||
return c; |
||||
} |
||||
} |
||||
|
||||
//Created on 30.1.2004
|
@ -0,0 +1,138 @@
@@ -0,0 +1,138 @@
|
||||
package de.memtext.baseobjects.coll; |
||||
|
||||
import java.io.Serializable; |
||||
import java.util.Collection; |
||||
import java.util.Iterator; |
||||
|
||||
import de.memtext.baseobjects.NamedIdObject; |
||||
import de.memtext.baseobjects.NamedIdObjectI; |
||||
import de.memtext.util.EqualsUtil; |
||||
import de.memtext.util.StringUtils; |
||||
|
||||
/** |
||||
* |
||||
* @author MB |
||||
*/ |
||||
public class NamedIdObjectCollection extends NamedObjectCollection implements |
||||
Collection, Serializable { |
||||
private static final long serialVersionUID = 1; |
||||
public NamedIdObjectCollection() { |
||||
super(); |
||||
} |
||||
|
||||
/** |
||||
* |
||||
* @param id |
||||
* @return object |
||||
* @throws IllegalArgumentException |
||||
* if nothing found |
||||
*/ |
||||
public NamedIdObjectI getById(Object id) { |
||||
NamedIdObjectI test, result = null; |
||||
for (Iterator it = collect.iterator(); it.hasNext();) { |
||||
test = (NamedIdObjectI) it.next(); |
||||
if ((id == null && test.getId() == null) |
||||
|| (test.getId() != null && test.getId().equals(id))) { |
||||
result = test; |
||||
break; |
||||
} |
||||
} |
||||
if (result == null) |
||||
throw new IllegalArgumentException("No element with id " + id |
||||
+ " found!"); |
||||
return result; |
||||
} |
||||
|
||||
/** |
||||
* like '12','34','343' useful for creating sqls like where x in (...) |
||||
* |
||||
* @return |
||||
*/ |
||||
public String getIdsApostropheString() { |
||||
StringBuffer result = new StringBuffer(); |
||||
NamedIdObjectI test; |
||||
for (Iterator it = collect.iterator(); it.hasNext();) { |
||||
test = (NamedIdObjectI) it.next(); |
||||
result.append("'" + test.getId() + "',"); |
||||
} |
||||
StringUtils.deleteLastChar(result); |
||||
return result.toString(); |
||||
} |
||||
|
||||
public boolean containsItemWithName(String name) { |
||||
boolean result = false; |
||||
NamedIdObjectI test; |
||||
for (Iterator it = collect.iterator(); it.hasNext();) { |
||||
test = (NamedIdObjectI) it.next(); |
||||
if (test.getName().equals(name)) { |
||||
result = true; |
||||
break; |
||||
} |
||||
} |
||||
return result; |
||||
} |
||||
|
||||
public boolean containsItemWithId(Object id) { |
||||
boolean result = false; |
||||
NamedIdObjectI test; |
||||
for (Iterator it = collect.iterator(); it.hasNext();) { |
||||
test = (NamedIdObjectI) it.next(); |
||||
if (EqualsUtil.areEqual(test.getId(),id)) { |
||||
result = true; |
||||
break; |
||||
} |
||||
} |
||||
return result; |
||||
} |
||||
|
||||
/** |
||||
* Checks if the collection contains only the ids given in the param |
||||
* collection ids |
||||
* |
||||
* @param Collection |
||||
* ids |
||||
* @return |
||||
*/ |
||||
public boolean consistsOfIds(Collection ids) { |
||||
|
||||
if (this.size() != ids.size()) |
||||
return false; |
||||
boolean result = true; |
||||
for (Iterator it = ids.iterator(); it.hasNext();) { |
||||
Object id = it.next(); |
||||
try { |
||||
Object dummy = getById(id); |
||||
} catch (IllegalArgumentException e) { |
||||
result = false; |
||||
break; |
||||
} |
||||
} |
||||
return result; |
||||
} |
||||
|
||||
public boolean add(Object o) { |
||||
if (o == null) |
||||
throw new IllegalArgumentException("can't add null value"); |
||||
if (!(o instanceof NamedIdObjectI)) |
||||
throw new IllegalArgumentException("only named IdObjects allowed"); |
||||
return collect.add(o); |
||||
} |
||||
|
||||
public String toString() { |
||||
StringBuffer result = new StringBuffer(size() + " NamedIdObjects: "); |
||||
for (Iterator it = this.iterator(); it.hasNext();) { |
||||
NamedIdObjectI element = (NamedIdObjectI) it.next(); |
||||
result.append(element + " - "); |
||||
} |
||||
return result.toString(); |
||||
} |
||||
|
||||
/** |
||||
* Only shallow copy |
||||
*/ |
||||
protected Object clone() throws CloneNotSupportedException { |
||||
NamedIdObjectCollection c=new NamedIdObjectCollection(); |
||||
c.addAll(this); |
||||
return c; |
||||
} |
||||
} |
@ -0,0 +1,71 @@
@@ -0,0 +1,71 @@
|
||||
package de.memtext.baseobjects.coll; |
||||
|
||||
import java.util.Collection; |
||||
import java.util.LinkedList; |
||||
import java.util.List; |
||||
import java.util.ListIterator; |
||||
|
||||
/** |
||||
* |
||||
* @author MB |
||||
* */ |
||||
public class NamedIdObjectList extends NamedIdObjectCollection implements List { |
||||
private static final long serialVersionUID = 1; |
||||
public NamedIdObjectList() { |
||||
super(); |
||||
collect=new LinkedList(); |
||||
} |
||||
|
||||
|
||||
public Object get(int pos) |
||||
{ |
||||
return ((List)collect).get(pos); |
||||
} |
||||
|
||||
public boolean addAll(int arg0, Collection arg1) { |
||||
return ((List)collect).addAll(arg0,arg1); |
||||
} |
||||
|
||||
public Object set(int arg0, Object arg1) { |
||||
return ((List)collect).set(arg0,arg1); |
||||
} |
||||
|
||||
public void add(int pos, Object arg1) { |
||||
((List)collect).add(pos,arg1); |
||||
} |
||||
|
||||
public Object remove(int arg0) { |
||||
return ((List)collect).remove(arg0); |
||||
} |
||||
|
||||
|
||||
public ListIterator listIterator(int arg0) { |
||||
return ((List)collect).listIterator(arg0); |
||||
} |
||||
|
||||
public List subList(int arg0, int arg1) { |
||||
return ((List)collect).subList(arg0,arg1); |
||||
} |
||||
|
||||
public int indexOf(Object arg0) { |
||||
return ((List)collect).indexOf(arg0); |
||||
} |
||||
|
||||
public int lastIndexOf(Object arg0) { |
||||
return ((List)collect).lastIndexOf(arg0); |
||||
} |
||||
|
||||
public ListIterator listIterator() { |
||||
return ((List)collect).listIterator(); |
||||
} |
||||
|
||||
/** |
||||
* Only shallow copy |
||||
*/ |
||||
protected Object clone() throws CloneNotSupportedException { |
||||
NamedIdObjectList c=new NamedIdObjectList(); |
||||
c.addAll(this); |
||||
return c; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,35 @@
@@ -0,0 +1,35 @@
|
||||
package de.memtext.baseobjects.coll; |
||||
|
||||
import java.util.HashSet; |
||||
import java.util.Set; |
||||
|
||||
public class NamedIdObjectSet extends NamedIdObjectCollection implements Set { |
||||
private static final long serialVersionUID = 1; |
||||
/** |
||||
* Default uses a HashSet internally; |
||||
* |
||||
*/ |
||||
public NamedIdObjectSet() { |
||||
super(); |
||||
collect=new HashSet(); |
||||
} |
||||
/** |
||||
* |
||||
* @param set the implementation of Set interface to use internally |
||||
*/ |
||||
public NamedIdObjectSet(Set set) { |
||||
super(); |
||||
collect=set; |
||||
} |
||||
|
||||
/** |
||||
* Only shallow copy |
||||
*/ |
||||
protected Object clone() throws CloneNotSupportedException { |
||||
NamedIdObjectSet c=new NamedIdObjectSet(); |
||||
c.addAll(this); |
||||
return c; |
||||
} |
||||
} |
||||
|
||||
//Created on 03.12.2003
|
@ -0,0 +1,82 @@
@@ -0,0 +1,82 @@
|
||||
package de.memtext.baseobjects.coll; |
||||
|
||||
import java.util.Collection; |
||||
import java.util.Iterator; |
||||
|
||||
import de.memtext.baseobjects.NamedIdObject; |
||||
import de.memtext.baseobjects.NamedIdObjectI; |
||||
import de.memtext.baseobjects.NamedIdObjectWithParent; |
||||
import de.memtext.baseobjects.NamedIdObjectWithParentI; |
||||
import de.memtext.util.EqualsUtil; |
||||
|
||||
public class NamedIdObjectWithParentCollection |
||||
extends NamedIdObjectCollection |
||||
implements Collection { |
||||
private static final long serialVersionUID = 1; |
||||
public NamedIdObjectWithParentCollection() { |
||||
super(); |
||||
} |
||||
|
||||
public boolean containsItemWithParent(Object parent) { |
||||
boolean result = false; |
||||
NamedIdObjectWithParentI test; |
||||
for (Iterator it = collect.iterator(); it.hasNext();) { |
||||
test = (NamedIdObjectWithParentI) it.next(); |
||||
if (EqualsUtil.areEqual(test.getParentKey(),parent)) { |
||||
result = true; |
||||
break; |
||||
} |
||||
} |
||||
return result; |
||||
} |
||||
/** |
||||
* get a collection with all objects in the collection that have a |
||||
* given parentKey |
||||
* @param parentKey |
||||
* @return collection if concrete object is a NamedIdObjectWithParentList also |
||||
* returns a NamedIdObjectWithParentList, same for NamedIdObjectWithParentSet |
||||
* makes casting possible |
||||
*/ |
||||
public NamedIdObjectWithParentCollection getByParent(Object parentKey) { |
||||
NamedIdObjectWithParentCollection result = |
||||
new NamedIdObjectWithParentCollection(); |
||||
if (this instanceof NamedIdObjectWithParentList) |
||||
result = new NamedIdObjectWithParentList(); |
||||
if (this instanceof NamedIdObjectWithParentSet) |
||||
result = new NamedIdObjectWithParentSet(); |
||||
|
||||
for (Iterator it = this.iterator(); it.hasNext();) { |
||||
NamedIdObjectWithParentI element = |
||||
(NamedIdObjectWithParentI) it.next(); |
||||
if (EqualsUtil.areEqual(element.getParentKey(),parentKey)) |
||||
result.add(element); |
||||
} |
||||
return result; |
||||
} |
||||
|
||||
public int countItemsWithParent(Object parent) |
||||
{ |
||||
return getByParent(parent).size(); |
||||
|
||||
} |
||||
public String toString() |
||||
{ |
||||
StringBuffer result=new StringBuffer(size()+" NamedIdObjectsWithParent: "); |
||||
for (Iterator it = this.iterator(); it.hasNext();) { |
||||
NamedIdObjectWithParentI element = (NamedIdObjectWithParentI) it.next(); |
||||
result.append(element+" - "); |
||||
} |
||||
return result.toString(); |
||||
} |
||||
|
||||
/** |
||||
* Only shallow copy |
||||
*/ |
||||
protected Object clone() throws CloneNotSupportedException { |
||||
NamedIdObjectWithParentCollection c=new NamedIdObjectWithParentCollection(); |
||||
c.addAll(this); |
||||
return c; |
||||
} |
||||
} |
||||
|
||||
//Created on 18.11.2003
|
@ -0,0 +1,66 @@
@@ -0,0 +1,66 @@
|
||||
package de.memtext.baseobjects.coll; |
||||
|
||||
import java.util.Collection; |
||||
import java.util.LinkedList; |
||||
import java.util.List; |
||||
import java.util.ListIterator; |
||||
|
||||
public class NamedIdObjectWithParentList extends NamedIdObjectWithParentCollection implements List { |
||||
private static final long serialVersionUID = 1; |
||||
public NamedIdObjectWithParentList() { |
||||
super(); |
||||
collect=new LinkedList(); |
||||
} |
||||
public Object get(int pos) |
||||
{ |
||||
return ((List)collect).get(pos); |
||||
} |
||||
|
||||
public boolean addAll(int arg0, Collection arg1) { |
||||
return ((List)collect).addAll(arg0,arg1); |
||||
} |
||||
|
||||
public Object set(int arg0, Object arg1) { |
||||
return ((List)collect).set(arg0,arg1); |
||||
} |
||||
|
||||
public void add(int pos, Object arg1) { |
||||
((List)collect).add(pos,arg1); |
||||
} |
||||
|
||||
public Object remove(int arg0) { |
||||
return ((List)collect).remove(arg0); |
||||
} |
||||
|
||||
|
||||
public ListIterator listIterator(int arg0) { |
||||
return ((List)collect).listIterator(arg0); |
||||
} |
||||
|
||||
public List subList(int arg0, int arg1) { |
||||
return ((List)collect).subList(arg0,arg1); |
||||
} |
||||
|
||||
public int indexOf(Object arg0) { |
||||
return ((List)collect).indexOf(arg0); |
||||
} |
||||
|
||||
public int lastIndexOf(Object arg0) { |
||||
return ((List)collect).lastIndexOf(arg0); |
||||
} |
||||
|
||||
public ListIterator listIterator() { |
||||
return ((List)collect).listIterator(); |
||||
} |
||||
/** |
||||
* Only shallow copy |
||||
*/ |
||||
protected Object clone() throws CloneNotSupportedException { |
||||
NamedIdObjectWithParentList c=new NamedIdObjectWithParentList(); |
||||
c.addAll(this); |
||||
return c; |
||||
} |
||||
} |
||||
|
||||
|
||||
//Created on 18.11.2003
|
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
package de.memtext.baseobjects.coll; |
||||
|
||||
import java.util.HashSet; |
||||
import java.util.Set; |
||||
|
||||
public class NamedIdObjectWithParentSet extends NamedIdObjectWithParentCollection implements Set { |
||||
private static final long serialVersionUID = 1; |
||||
public NamedIdObjectWithParentSet() { |
||||
super(); |
||||
collect=new HashSet(); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Only shallow copy |
||||
*/ |
||||
protected Object clone() throws CloneNotSupportedException { |
||||
NamedIdObjectWithParentCollection c=new NamedIdObjectWithParentSet(); |
||||
c.addAll(this); |
||||
return c; |
||||
} |
||||
} |
||||
|
||||
|
||||
//Created on 03.12.2003
|
@ -0,0 +1,102 @@
@@ -0,0 +1,102 @@
|
||||
package de.memtext.baseobjects.coll; |
||||
|
||||
import java.io.Serializable; |
||||
import java.util.Collection; |
||||
import java.util.Iterator; |
||||
|
||||
import de.memtext.baseobjects.NamedObjectI; |
||||
import de.memtext.util.EqualsUtil; |
||||
import de.memtext.util.StringUtils; |
||||
|
||||
/** |
||||
* |
||||
* @author MB |
||||
* */ |
||||
public class NamedObjectCollection |
||||
extends BaseObjectCollection |
||||
implements Collection,Serializable { |
||||
private static final long serialVersionUID = 1; |
||||
|
||||
public NamedObjectCollection() { |
||||
super(); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Tries to find an element with the given name |
||||
* @param name |
||||
* @return first element with given name |
||||
* @throws IllegalArgumentException if nothing found |
||||
*/public NamedObjectI getByName(String name) { |
||||
NamedObjectI test, result = null; |
||||
for (Iterator it = collect.iterator(); it.hasNext();) { |
||||
test = (NamedObjectI) it.next(); |
||||
if (test.getName().equals(name)) { |
||||
result = test; |
||||
break; |
||||
} |
||||
} |
||||
if (result == null) |
||||
throw new IllegalArgumentException( |
||||
"No element with name " + name + " found."); |
||||
return result; |
||||
} |
||||
/** |
||||
* like '12','34','343' |
||||
* useful for creating sqls like where x in (...) |
||||
* @return '' if collection is empty |
||||
*/ |
||||
|
||||
public String getNamesApostropheString() { |
||||
StringBuffer result = new StringBuffer(); |
||||
NamedObjectI test; |
||||
for (Iterator it = collect.iterator(); it.hasNext();) { |
||||
test = (NamedObjectI) it.next(); |
||||
result.append("'" + test.getName() + "',"); |
||||
} |
||||
StringUtils.deleteLastChar(result); |
||||
if (result.length() == 0) |
||||
result.append("''"); |
||||
return result.toString(); |
||||
} |
||||
|
||||
public boolean containsItemWithName(String name) { |
||||
boolean result = false; |
||||
NamedObjectI test; |
||||
for (Iterator it = collect.iterator(); it.hasNext();) { |
||||
test = (NamedObjectI) it.next(); |
||||
if (EqualsUtil.areEqual(test.getName(),name)) |
||||
{ |
||||
result = true; |
||||
break; |
||||
} |
||||
} |
||||
return result; |
||||
} |
||||
|
||||
public boolean add(Object o) { |
||||
if (o == null) |
||||
throw new IllegalArgumentException("can't add null value"); |
||||
if (!(o instanceof NamedObjectI)) |
||||
throw new IllegalArgumentException("only named Objects allowed"); |
||||
return collect.add(o); |
||||
} |
||||
public String toString() |
||||
{ |
||||
StringBuffer result=new StringBuffer(size()+" NamedObjects: "); |
||||
for (Iterator it = this.iterator(); it.hasNext();) { |
||||
NamedObjectI element = (NamedObjectI) it.next(); |
||||
result.append(element+" - "); |
||||
} |
||||
return result.toString(); |
||||
} |
||||
|
||||
/** |
||||
* Only shallow copy |
||||
*/ |
||||
protected Object clone() throws CloneNotSupportedException { |
||||
NamedObjectCollection c=new NamedObjectCollection(); |
||||
c.addAll(this); |
||||
return c; |
||||
} |
||||
} |
@ -0,0 +1,70 @@
@@ -0,0 +1,70 @@
|
||||
package de.memtext.baseobjects.coll; |
||||
|
||||
import java.util.Collection; |
||||
import java.util.LinkedList; |
||||
import java.util.List; |
||||
import java.util.ListIterator; |
||||
|
||||
|
||||
/** |
||||
* |
||||
* @author MB |
||||
* */ |
||||
public class NamedObjectList extends NamedObjectCollection implements List { |
||||
private static final long serialVersionUID = 1; |
||||
public NamedObjectList() { |
||||
super(); |
||||
collect = new LinkedList(); |
||||
} |
||||
|
||||
public Object get(int pos) |
||||
{ |
||||
return ((List)collect).get(pos); |
||||
} |
||||
|
||||
public boolean addAll(int arg0, Collection arg1) { |
||||
return ((List)collect).addAll(arg0,arg1); |
||||
} |
||||
|
||||
public Object set(int arg0, Object arg1) { |
||||
return ((List)collect).set(arg0,arg1); |
||||
} |
||||
|
||||
public void add(int pos, Object arg1) { |
||||
((List)collect).add(pos,arg1); |
||||
} |
||||
|
||||
public Object remove(int arg0) { |
||||
return ((List)collect).remove(arg0); |
||||
} |
||||
|
||||
|
||||
public ListIterator listIterator(int arg0) { |
||||
return ((List)collect).listIterator(arg0); |
||||
} |
||||
|
||||
public List subList(int arg0, int arg1) { |
||||
return ((List)collect).subList(arg0,arg1); |
||||
} |
||||
|
||||
public int indexOf(Object arg0) { |
||||
return ((List)collect).indexOf(arg0); |
||||
} |
||||
|
||||
public int lastIndexOf(Object arg0) { |
||||
return ((List)collect).lastIndexOf(arg0); |
||||
} |
||||
|
||||
public ListIterator listIterator() { |
||||
return ((List)collect).listIterator(); |
||||
} |
||||
|
||||
/** |
||||
* Only shallow copy |
||||
*/ |
||||
protected Object clone() throws CloneNotSupportedException { |
||||
NamedObjectCollection c=new NamedObjectList(); |
||||
c.addAll(this); |
||||
return c; |
||||
} |
||||
} |
@ -0,0 +1,29 @@
@@ -0,0 +1,29 @@
|
||||
package de.memtext.baseobjects.coll; |
||||
|
||||
import java.util.HashSet; |
||||
import java.util.Set; |
||||
|
||||
public class NamedObjectSet extends NamedObjectCollection implements Set { |
||||
private static final long serialVersionUID = 1; |
||||
public NamedObjectSet() { |
||||
super(); |
||||
collect=new HashSet(); |
||||
} |
||||
|
||||
public NamedObjectSet(Set set) { |
||||
super(); |
||||
if (set==null)throw new IllegalArgumentException("set must not be null"); |
||||
collect=set; |
||||
} |
||||
|
||||
/** |
||||
* Only shallow copy |
||||
*/ |
||||
protected Object clone() throws CloneNotSupportedException { |
||||
NamedObjectCollection c=new NamedObjectSet(); |
||||
c.addAll(this); |
||||
return c; |
||||
} |
||||
} |
||||
|
||||
//Created on 02.12.2003 at 19:08:30
|
@ -0,0 +1,89 @@
@@ -0,0 +1,89 @@
|
||||
package de.memtext.buttons; |
||||
|
||||
import java.util.Enumeration; |
||||
|
||||
import javax.swing.ButtonGroup; |
||||
import javax.swing.ButtonModel; |
||||
import javax.swing.JLabel; |
||||
import javax.swing.JPanel; |
||||
import javax.swing.JRadioButton; |
||||
|
||||
public class ButtonGroupPanel extends JPanel { |
||||
ButtonGroup group = new ButtonGroup(); |
||||
ButtonWithValue hiddenNoSelectionButton = new ButtonWithValue("", null); |
||||
|
||||
public ButtonGroupPanel() { |
||||
this(null); |
||||
} |
||||
public ButtonGroupPanel(String header) { |
||||
super(); |
||||
if (header != null) |
||||
this.add(new JLabel(header)); |
||||
|
||||
hiddenNoSelectionButton.setVisible(false); |
||||
hiddenNoSelectionButton.setSelected(true); |
||||
group.add(hiddenNoSelectionButton); |
||||
} |
||||
public void addCategory(String label, Object value,boolean isSelected) { |
||||
ButtonWithValue b = new ButtonWithValue(label, value); |
||||
this.add(b); |
||||
group.add(b); |
||||
b.setSelected(isSelected); |
||||
} |
||||
public void addCategory(String label, Object value) { |
||||
addCategory(label, value,false); |
||||
} |
||||
|
||||
public void addCategory(String label, int i) { |
||||
addCategory(label, new Integer(i)); |
||||
} |
||||
public void addCategory(String label, int i,boolean isSelected) { |
||||
addCategory(label, new Integer(i),isSelected); |
||||
} |
||||
/** |
||||
* If you pass null as an argument no element will be selected |
||||
* @param label |
||||
*/ |
||||
public void setSelected(String label) { |
||||
if (label == null) |
||||
hiddenNoSelectionButton.setSelected(true); |
||||
else |
||||
for (Enumeration en = group.getElements(); |
||||
en.hasMoreElements(); |
||||
) { |
||||
ButtonWithValue b = (ButtonWithValue) en.nextElement(); |
||||
if (b.getText().equals(label)) { |
||||
b.doClick(); |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
|
||||
public Object getSelectedValue() { |
||||
ButtonWithValue selectedButton=null; |
||||
for (Enumeration en = group.getElements(); |
||||
en.hasMoreElements(); |
||||
) { |
||||
ButtonWithValue b = (ButtonWithValue) en.nextElement(); |
||||
if (b.isSelected()) { |
||||
selectedButton=b; |
||||
break; |
||||
} |
||||
} |
||||
return selectedButton.getValue(); |
||||
} |
||||
class ButtonWithValue extends JRadioButton { |
||||
private Object value; |
||||
ButtonWithValue(String label, Object value) { |
||||
super(label); |
||||
this.value = value; |
||||
} |
||||
Object getValue() { |
||||
return value; |
||||
} |
||||
|
||||
} |
||||
|
||||
} |
||||
|
||||
//Created on 17.02.2004 at 13:40:06
|
@ -0,0 +1,39 @@
@@ -0,0 +1,39 @@
|
||||
package de.memtext.buttons; |
||||
|
||||
import javax.swing.JButton; |
||||
|
||||
/** |
||||
* @author MB |
||||
* |
||||
* JButtons not as static variables, because can be used in different |
||||
* places in one application, setting one be invisible would make all invisible |
||||
*/ |
||||
public class Standard { |
||||
|
||||
/** |
||||
* Constructor for Standard. |
||||
*/ |
||||
private Standard() { |
||||
super(); |
||||
} |
||||
|
||||
public static JButton getCopy() |
||||
{ |
||||
|
||||
JButton copy=new JButton(de.memtext.icons.MBStandardIcons.getCopy()); |
||||
copy.setToolTipText("Kopieren"); |
||||
copy.setActionCommand("copy"); |
||||
return copy; |
||||
|
||||
} |
||||
public static JButton getCopyWithText() |
||||
{ |
||||
|
||||
JButton copy=new JButton("Kopieren",de.memtext.icons.MBStandardIcons.getCopy()); |
||||
copy.setToolTipText("Kopieren"); |
||||
copy.setActionCommand("copy"); |
||||
return copy; |
||||
|
||||
} |
||||
|
||||
} |
@ -0,0 +1,43 @@
@@ -0,0 +1,43 @@
|
||||
/* |
||||
* Copyright (c) 2001-2004, The HSQL Development Group All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or without |
||||
* modification, are permitted provided that the following conditions are met: |
||||
* |
||||
* Redistributions of source code must retain the above copyright notice, this |
||||
* list of conditions and the following disclaimer. |
||||
* |
||||
* Redistributions in binary form must reproduce the above copyright notice, |
||||
* this list of conditions and the following disclaimer in the documentation |
||||
* and/or other materials provided with the distribution. |
||||
* |
||||
* Neither the name of the HSQL Development Group nor the names of its |
||||
* contributors may be used to endorse or promote products derived from this |
||||
* software without specific prior written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG, OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
|
||||
package de.memtext.db; |
||||
|
||||
import java.util.ListResourceBundle; |
||||
/** |
||||
* Resources for HsqlStandaloneMgr. |
||||
* For other locales extend AbstractHsqlStandloneMgrResources, i.e. |
||||
* by copying HsqlStandaloneMgrResources_de to your locale |
||||
*/ |
||||
public abstract class AbstractHsqlStandaloneMgrResources extends ListResourceBundle { |
||||
|
||||
public abstract String getDbInUseBy(String dbname,String user); |
||||
} |
||||
|
@ -0,0 +1,174 @@
@@ -0,0 +1,174 @@
|
||||
package de.memtext.db; |
||||
|
||||
import java.io.File; |
||||
import java.sql.Connection; |
||||
import java.sql.DriverManager; |
||||
import java.sql.ResultSet; |
||||
import java.sql.SQLException; |
||||
import java.sql.Statement; |
||||
import java.text.DateFormat; |
||||
import java.text.ParseException; |
||||
import java.text.SimpleDateFormat; |
||||
import java.util.Date; |
||||
/** |
||||
* Additional procedures for HSQLDB |
||||
* make sure that this class in the classpath. |
||||
* To constantly add it to hsql. |
||||
* Go to the directory where your hsqldb.jar is located |
||||
* Call jar -xf hsqlAddOn.jar |
||||
* jar -uf hsqldb.jar org/hsqldb/Library2.class |
||||
* Delete the directory org. |
||||
* |
||||
* Open your Database in Database Manager and execute |
||||
* the following commands once: |
||||
* GRANT ALL ON CLASS "org.hsqldb.Library2" TO PUBLIC and |
||||
* CREATE ALIAS COPYFROM FOR "org.hsqldb.Library2.copyFrom" |
||||
|
||||
|
||||
*/ |
||||
public class AddProc { |
||||
private static DateFormat dfUS = new SimpleDateFormat("yyyy-MM-dd"); |
||||
|
||||
private AddProc() { |
||||
super(); |
||||
} |
||||
/** |
||||
* Fills regular tables with values from a CSV-file. |
||||
* Similar to Postgres COPY FROM command. |
||||
* |
||||
* If you want to fill your table TEST with data from test.csv |
||||
* make sure that this class in the classpath and that<br> |
||||
* GRANT ALL ON CLASS "org.hsqldb.Library2" TO PUBLIC;<br> |
||||
CREATE ALIAS COPYFROM FOR "org.hsqldb.Library2.copyFrom"<br> |
||||
* has been called in your database at some point. |
||||
<br> |
||||
* Then execute <br> |
||||
* CALL COPYFROM('TEST','test.csv',null)<br> |
||||
* <br> |
||||
* if your not using , but | as a field separator<br> |
||||
CALL COPYFROM('TEST','test.csv','fs=|')<br> |
||||
<br> |
||||
* |
||||
* @param con - Connection is automatically handed over by HSQL |
||||
* @param table - the name of the table that is to be filled |
||||
* if you created your table with "", e.g. create table "myData" <br> |
||||
* also pass the inverted commans like this CALL COPYFROM('\"myData\"','test.csv',null); |
||||
* |
||||
* @param file - the filename of the CSV-file |
||||
* @param options - you can specify options separated by ; |
||||
* which are described in the text table documentation e.g.<br> |
||||
* fs=| to use pipe instead of default comma as field separator or<br> |
||||
* |
||||
* fs=|;vs=.;lvs=~" varchar separator, longvarchar separator<br> |
||||
* ignore_first=true; ignore first line<br> |
||||
* all_quoted=true or<br> |
||||
* encoding=UTF-8 if you don't have ASCII<br> |
||||
* @throws SQLException |
||||
*/ |
||||
public static String copyFrom( |
||||
Connection con, |
||||
String table, |
||||
String file, |
||||
String options) |
||||
throws SQLException { |
||||
if (table == null || table.equals("")) |
||||
throw new IllegalArgumentException("Table must not be null or empty"); |
||||
if (file == null || file.equals("")) |
||||
throw new IllegalArgumentException("File must not be null or empty"); |
||||
File f = new File(file); |
||||
if (!f.exists()) |
||||
throw new IllegalArgumentException( |
||||
"source file " + file + " doesn't exist"); |
||||
|
||||
//normally created tables are in UPPERCASE in the metadata,
|
||||
//but tables in inverted commas (create table "myData")
|
||||
//are stored case sensitive
|
||||
String tableNameInMetaData; |
||||
if (table.startsWith("\"")) |
||||
tableNameInMetaData = table.substring(1, table.length() - 1); |
||||
else |
||||
tableNameInMetaData = table.toUpperCase(); |
||||
StringBuffer buf = |
||||
new StringBuffer("create temp text table TMP_COPYFROM("); |
||||
|
||||
ResultSet rs = |
||||
con.getMetaData().getColumns(null, null, tableNameInMetaData, null); |
||||
String colname, coltype; |
||||
boolean tableFound = false; |
||||
while (rs.next()) { |
||||
tableFound = true; |
||||
colname = rs.getObject(4).toString(); |
||||
coltype = rs.getObject(6).toString(); |
||||
buf.append(colname + " " + coltype + ","); |
||||
} |
||||
rs.close(); |
||||
if (!tableFound) |
||||
throw new SQLException( |
||||
"Copy from failed - table " |
||||
+ table |
||||
+ " not found"); |
||||
buf.deleteCharAt(buf.lastIndexOf(",")); |
||||
buf.append("); SET TABLE TMP_COPYFROM SOURCE \"" + file); |
||||
if (options != null) |
||||
buf.append(";" + options); |
||||
buf.append("\";"); |
||||
buf.append("insert into " + table + " select * from TMP_COPYFROM"); |
||||
System.out.println(buf); |
||||
Statement stmt = con.createStatement(); |
||||
try { |
||||
stmt.execute(buf.toString()); |
||||
return "success"; |
||||
} |
||||
//finally is executed before returning whether an exception occurs or not
|
||||
finally { |
||||
stmt.execute("drop table TMP_COPYFROM IF EXISTS"); |
||||
} |
||||
|
||||
} |
||||
|
||||
|
||||
public static String toDate(String year, String month, String day) |
||||
throws ParseException { |
||||
String result; |
||||
Date d = |
||||
dfUS.parse(year.trim() + "-" + month.trim() + "-" + day.trim()); |
||||
result = dfUS.format(d); |
||||
return result; |
||||
} |
||||
public static String toDate(String year, int month, int day) |
||||
throws ParseException { |
||||
return toDate(year + "", month + "", day + ""); |
||||
} |
||||
public static String toDate(int year, int month, int day) |
||||
throws ParseException { |
||||
return toDate(year + "", month + "", day + ""); |
||||
|
||||
} |
||||
public static void main(String a[]) { |
||||
Connection conn = null; |
||||
try { |
||||
Class.forName("org.hsqldb.jdbcDriver"); |
||||
conn = DriverManager.getConnection("jdbc:hsqldb:test", "sa", ""); |
||||
java.sql.Statement stmt = conn.createStatement(); |
||||
stmt.execute( |
||||
"drop table \"test\" if exists;create table \"test\" (col1 integer,col2 varchar, col3 double,col4 date)"); |
||||
copyFrom(conn, "\"test\"", "test.csv", "fs=;"); |
||||
System.out.println("2"); |
||||
copyFrom(conn, "\"test\"", "test.csv", "fs=;"); |
||||
stmt.close(); |
||||
|
||||
} catch (ClassNotFoundException e) { |
||||
e.printStackTrace(); |
||||
} catch (SQLException e) { |
||||
e.printStackTrace(); |
||||
} finally { |
||||
try { |
||||
conn.close(); |
||||
} catch (SQLException e1) { |
||||
e1.printStackTrace(); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
//Created on 08.03.2004 at 13:48:03
|
@ -0,0 +1,43 @@
@@ -0,0 +1,43 @@
|
||||
/* |
||||
* Created on 23.07.2003 |
||||
* |
||||
* To change the template for this generated file go to |
||||
* Window>Preferences>Java>Code Generation>Code and Comments |
||||
*/ |
||||
package de.memtext.db; |
||||
|
||||
import java.util.Collection; |
||||
import java.util.Iterator; |
||||
import java.util.LinkedList; |
||||
|
||||
/** |
||||
* @author Gast |
||||
* |
||||
* To change the template for this generated type comment go to |
||||
* Window>Preferences>Java>Code Generation>Code and Comments |
||||
*/ |
||||
public class Comparison { |
||||
private String name; |
||||
private Collection units = new LinkedList(); |
||||
public Comparison(String name) { |
||||
this.name = name; |
||||
} |
||||
public void addUnit(ComparisonUnit unit) { |
||||
units.add(unit); |
||||
|
||||
} |
||||
public Iterator iterator() |
||||
{ |
||||
return units.iterator(); |
||||
} |
||||
public int getUnitCount() |
||||
{ |
||||
return units.size(); |
||||
} |
||||
public void removeUnit(ComparisonUnit unit) { |
||||
units.remove(unit); |
||||
} |
||||
public String toString() { |
||||
return name; |
||||
} |
||||
} |
@ -0,0 +1,50 @@
@@ -0,0 +1,50 @@
|
||||
/* |
||||
* Created on 23.07.2003 |
||||
* |
||||
* To change the template for this generated file go to |
||||
* Window>Preferences>Java>Code Generation>Code and Comments |
||||
*/ |
||||
package de.memtext.db; |
||||
|
||||
/** |
||||
* @author Gast |
||||
* |
||||
* To change the template for this generated type comment go to |
||||
* Window>Preferences>Java>Code Generation>Code and Comments |
||||
*/ |
||||
public class ComparisonUnit { |
||||
private String name,sql; |
||||
public ComparisonUnit(String name,String sql) |
||||
{ |
||||
this.name=name; |
||||
this.sql=sql; |
||||
} |
||||
/** |
||||
* @return |
||||
*/ |
||||
public String getName() { |
||||
return name; |
||||
} |
||||
|
||||
/** |
||||
* @return |
||||
*/ |
||||
public String getSql() { |
||||
return sql; |
||||
} |
||||
|
||||
/** |
||||
* @param string |
||||
*/ |
||||
public void setName(String string) { |
||||
name = string; |
||||
} |
||||
|
||||
/** |
||||
* @param string |
||||
*/ |
||||
public void setSql(String string) { |
||||
sql = string; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,127 @@
@@ -0,0 +1,127 @@
|
||||
package de.memtext.db; |
||||
import java.io.IOException; |
||||
import java.sql.Connection; |
||||
import java.sql.DriverManager; |
||||
import java.sql.SQLException; |
||||
import java.util.Properties; |
||||
|
||||
import de.memtext.util.CryptUtils; |
||||
import de.memtext.util.PropUtils; |
||||
/** |
||||
* This class is a utility that makes the creation of database connections |
||||
* easier. If necessary, one can use loadClass("jdbdcDriver-class") and then |
||||
* use one of the static getConnection(..) methods |
||||
* @author MB |
||||
* |
||||
|
||||
*/ |
||||
public class ConnectionCreator { |
||||
public static void loadClass(String className) { |
||||
try { |
||||
Class.forName(className); |
||||
|
||||
} catch (Exception e) { |
||||
System.out.println(e.toString()); |
||||
System.exit(0); |
||||
} |
||||
} |
||||
public static Connection getConnection( |
||||
String url, |
||||
String username, |
||||
String passwd) throws SQLException |
||||
{ |
||||
|
||||
return DriverManager.getConnection(url, username, passwd); |
||||
} |
||||
public static Connection getConnection( |
||||
String driver, |
||||
String url, |
||||
String username, |
||||
String passwd) |
||||
throws SQLException, ClassNotFoundException { |
||||
Class.forName(driver); |
||||
return getConnection(url, username, passwd); |
||||
} |
||||
|
||||
public static Connection getConnectionQuitOnException( |
||||
String driver, |
||||
String url, |
||||
String username, |
||||
String passwd) { |
||||
Connection con = null; |
||||
try { |
||||
con = getConnection(driver, url, username, passwd); |
||||
} catch (Exception e) { |
||||
System.out.println( |
||||
"Couldn't create connection to database " |
||||
+ url |
||||
+ "\n" |
||||
+ e.toString()); |
||||
System.exit(-1); |
||||
} |
||||
return con; |
||||
} |
||||
public static Connection getConnection( |
||||
String propfilename, |
||||
String driverkey, |
||||
String urlkey, |
||||
String usernamekey, |
||||
String passwordkey) throws IOException, SQLException, ClassNotFoundException |
||||
{ |
||||
Properties props = PropUtils.getProps(propfilename); |
||||
String driver = PropUtils.getProperty(props, driverkey); |
||||
String url = PropUtils.getProperty(props, urlkey); |
||||
String username = PropUtils.getProperty(props, usernamekey); |
||||
String passwd = PropUtils.getProperty(props, passwordkey); |
||||
return getConnection(driver, url, username, passwd); |
||||
|
||||
} |
||||
public static Connection getConnection(String propfilename) throws IOException, SQLException, ClassNotFoundException |
||||
{ |
||||
return getConnection( |
||||
propfilename, |
||||
"driver", |
||||
"url", |
||||
"username", |
||||
"password"); |
||||
} |
||||
|
||||
/** |
||||
* Method getConnectionCryptPassword. |
||||
* 28.10.08 EInfache Verschlüsselungsmethode wird nicht mehr unterstützt |
||||
* @param propfilename |
||||
* @param string |
||||
* @param string1 |
||||
* @param string11 |
||||
* @param string111 |
||||
* @return Connection |
||||
* @throws IOException |
||||
* @throws ClassNotFoundException |
||||
* @throws SQLException |
||||
*/ |
||||
public static Connection getConnectionCryptPassword( |
||||
String propfilename, |
||||
String driverkey, |
||||
String urlkey, |
||||
String usernamekey, |
||||
String passwordkey) throws IOException, SQLException, ClassNotFoundException |
||||
{ |
||||
Properties props = PropUtils.getProps(propfilename); |
||||
String driver = PropUtils.getProperty(props, driverkey); |
||||
String url = PropUtils.getProperty(props, urlkey); |
||||
String username = PropUtils.getProperty(props, usernamekey); |
||||
String passwd =PropUtils.getProperty(props, passwordkey); |
||||
if (passwd.startsWith("sx_des")) { |
||||
try { |
||||
passwd = CryptUtils.decryptStringDES(passwd.substring(6)); |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
throw new SQLException("DES-Passwort konnte nicht entschlüsselt werden"); |
||||
} |
||||
} |
||||
// else
|
||||
// passwd=de.memtext.util.CryptUtils.decryptSimple(passwd );
|
||||
return getConnection(driver, url, username, passwd); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
|
||||
package de.memtext.db; |
||||
|
||||
import de.memtext.baseobjects.NamedObject; |
||||
/** |
||||
* This class represents a Database system like Informix or Postgres |
||||
*/ |
||||
public class DB extends NamedObject { |
||||
private String version; |
||||
static public final DB INFORMIX = new DB("Informix", "7.3"); |
||||
static public final DB POSTGRES = new DB("Postgres", "7.3"); |
||||
static public final DB ACCESS = new DB("Access", "2000"); |
||||
/** |
||||
* The public constructors are needed because the DB class is |
||||
* a java bean which is cool for XMLEncoding |
||||
* |
||||
*/ |
||||
public DB() { |
||||
this("Unbekannte Datenbank",""); |
||||
} |
||||
public DB(String name) { |
||||
this(name, ""); |
||||
} |
||||
|
||||
public DB(String name, String version) { |
||||
super(name); |
||||
this.version = version; |
||||
} |
||||
|
||||
public boolean equals(Object o) { |
||||
if (!(o instanceof DB)) |
||||
return false; |
||||
DB db = (DB) o; |
||||
return this.getName().equals(db.getName()); |
||||
} |
||||
} |
||||
|
||||
//Created on 03.12.2003 at 15:54:27
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,104 @@
@@ -0,0 +1,104 @@
|
||||
package de.memtext.db; |
||||
|
||||
import java.sql.DriverManager; |
||||
import java.sql.SQLException; |
||||
import java.util.Iterator; |
||||
import java.util.List; |
||||
|
||||
import de.memtext.util.StringUtils; |
||||
|
||||
public class DBComparison { |
||||
|
||||
private DBComparison() { |
||||
super(); |
||||
} |
||||
public static void main(String a[]) { |
||||
try { |
||||
Class.forName("org.hsqldb.jdbcDriver"); |
||||
|
||||
java.sql.Connection con = |
||||
DriverManager.getConnection( |
||||
"jdbc:hsqldb:hsql://localhost:9000", |
||||
"sa", |
||||
""); |
||||
DBAccess.addConnection("ssc", con); |
||||
java.sql.Connection con2 = |
||||
DriverManager.getConnection( |
||||
"jdbc:hsqldb:hsql://localhost:9500", |
||||
"sa", |
||||
""); |
||||
DBAccess.addConnection("ssc-test", con2); |
||||
compare("ssc", "ssc-test"); |
||||
|
||||
} catch (ClassNotFoundException e) { |
||||
e.printStackTrace(); |
||||
} catch (SQLException e) { |
||||
e.printStackTrace(); |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
} |
||||
private static void compare(String db1, String db2) { |
||||
System.out.println("Start comparing..."); |
||||
StringBuffer fineTables = |
||||
new StringBuffer("The following tables are fine: "); |
||||
List tableList = DBAccess.get(db1).getTableList(); |
||||
boolean isOk = false; |
||||
for (Iterator it = tableList.iterator(); it.hasNext();) { |
||||
String table = (String) it.next(); |
||||
|
||||
if (DBAccess.get(db2).hasTable(table)) { |
||||
isOk = true; |
||||
if (DBAccess.get(db1).getColumnCount(table) |
||||
!= DBAccess.get(db2).getColumnCount(table)) { |
||||
System.out.println( |
||||
"Table " |
||||
+ table |
||||
+ " has a different number of columns"); |
||||
isOk = false; |
||||
} else { |
||||
List colList = DBAccess.get(db1).getColumnNames(table); |
||||
for (Iterator it2 = colList.iterator(); it2.hasNext();) { |
||||
String colname = (String) it2.next(); |
||||
if (!DBAccess.get(db2).hasColumn(table, colname)) { |
||||
System.out.println( |
||||
"Table " |
||||
+ table |
||||
+ " in " |
||||
+ db2 |
||||
+ " doesn't have column:" |
||||
+ colname); |
||||
isOk = false; |
||||
} else { |
||||
|
||||
if (DBAccess.get(db1).getColumnType(table, colname) |
||||
!= DBAccess.get(db2).getColumnType( |
||||
table, |
||||
colname)) { |
||||
System.out.println( |
||||
"Table " |
||||
+ table |
||||
+ " column:" |
||||
+ colname |
||||
+ " are of different types"); |
||||
isOk = false; |
||||
} |
||||
|
||||
} |
||||
} |
||||
if (isOk) |
||||
fineTables.append(table + ","); |
||||
} |
||||
|
||||
} else { |
||||
System.out.println(db2 + " doesn't contain table:" + table); |
||||
} |
||||
} |
||||
StringUtils.deleteLastChar(fineTables); |
||||
System.out.println(fineTables); |
||||
System.out.println("..done"); |
||||
} |
||||
} |
||||
|
||||
//Created on 11.02.2004 at 13:19:36
|
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
package de.memtext.db; |
||||
/** |
||||
* Eine spezielle Exception im Servlet. |
||||
* Wird zwar im Applet eigentlich nicht gebraucht, aber trotzdem |
||||
* in diesem Package, damit Klassen wie Sicht einheitliche throws-Deklarationen haben. |
||||
* |
||||
* @author Marlies Winterstein |
||||
* @version 2.0, 18.2.2002 |
||||
*/ |
||||
public class DBServletException extends Exception |
||||
{ |
||||
public DBServletException() |
||||
{ |
||||
super(); |
||||
} |
||||
public DBServletException(String msg) |
||||
{ |
||||
super(msg); |
||||
} |
||||
} |
@ -0,0 +1,96 @@
@@ -0,0 +1,96 @@
|
||||
package de.memtext.db; |
||||
|
||||
import java.sql.Connection; |
||||
import java.sql.Statement; |
||||
|
||||
import de.memtext.util.TimeUtils; |
||||
|
||||
public class DBTimer { |
||||
private static int runCount=200; |
||||
private static boolean logEachRun=false; |
||||
//private static String driver="org.hsqldb.jdbcDriver";
|
||||
private static String driver="com.informix.jdbc.IfxDriver"; |
||||
//private static String url="jdbc:hsqldb:hsql://localhost:9001";
|
||||
private static String url="jdbc:informix-sqli://jupiter:50000:informixserver=superx_host;database=superx"; |
||||
private static String user="superx"; |
||||
private static String passwd="anfang12"; |
||||
private static String sql="execute procedure sp_cob_keychild('1',0);"; |
||||
|
||||
//wenn ein zweiter Sql folgen soll - drop table tmp_xx muss z.B. in eigenem Aufruf sein.
|
||||
private static String sql2=null;//"select sum(betrag) from cob_busa,tmp_children T where fikrkey=T.key";
|
||||
//"select sum(betrag) from cob_busa where fikrkey in (select key from tmp_children)";
|
||||
private static String sql3=null;//"drop table tmp_children;";
|
||||
public static void main(String[] args) { |
||||
//sql="select sum(betrag) from cob_busa C, tmp_children T where fikrkey=T.key and T.parent='1'";
|
||||
sql = "select sum(betrag) from cob_busa where fikrkey in ('1', \n" + |
||||
" '11 ', \n" + |
||||
" '111 ', \n" + |
||||
" '1111 ', \n" + |
||||
" '1112 ', \n" + |
||||
" '112 ', \n" + |
||||
" '1121 ', \n" + |
||||
" '1122 ', \n" + |
||||
" '113 ', \n" + |
||||
" '1131 ', \n" + |
||||
" '1132 ', \n" + |
||||
" '12 ', \n" + |
||||
" '121 ', \n" + |
||||
" '1211 ', \n" + |
||||
" '1212 ', \n" + |
||||
" '1213 ', \n" + |
||||
" '122 ', \n" + |
||||
" '123 ', \n" + |
||||
" '124 ', \n" + |
||||
" '125 ', \n" + |
||||
" '126 ', \n" + |
||||
" '13 ', \n" + |
||||
" '131 ', \n" + |
||||
" '1311 ', \n" + |
||||
" '1312 ', \n" + |
||||
" '1313 ', \n" + |
||||
" '132 ', \n" + |
||||
" '1321 ', \n" + |
||||
" '1322 ', \n" + |
||||
" '1323 ', \n" + |
||||
" '133 ', \n" + |
||||
" '1331 ', \n" + |
||||
" '1332 ', \n" + |
||||
" '1333 ', \n" + |
||||
" '1334 ', \n" + |
||||
" '134 ', \n" + |
||||
" '135 ', \n" + |
||||
" '136 ', \n" + |
||||
" '137 ', \n" + |
||||
" '138 ')"; |
||||
try { |
||||
Class.forName(driver); |
||||
Connection conn = |
||||
java.sql.DriverManager.getConnection( |
||||
url, |
||||
user, |
||||
passwd); |
||||
Statement stmt = conn.createStatement(); |
||||
TimeUtils t=new TimeUtils(); |
||||
System.out.println("start "+sql); |
||||
for (int i=1;i<=runCount;i++) |
||||
{ |
||||
if (logEachRun) System.out.println(i); |
||||
stmt.execute(sql); |
||||
if (sql2!=null) |
||||
stmt.execute(sql2); |
||||
if (sql3!=null) |
||||
stmt.execute(sql3); |
||||
} |
||||
t.print(runCount+" times"); |
||||
stmt.close(); |
||||
conn.close(); |
||||
System.out.println("done"); |
||||
|
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
System.exit(-1); |
||||
} |
||||
} |
||||
} |
||||
|
||||
//Created on 09.03.2005 at 10:05:37
|
@ -0,0 +1,106 @@
@@ -0,0 +1,106 @@
|
||||
package de.memtext.db; |
||||
|
||||
import java.sql.Connection; |
||||
import java.sql.DriverManager; |
||||
import java.sql.SQLException; |
||||
|
||||
import de.memtext.baseobjects.NamedObject; |
||||
import de.memtext.util.CryptUtils; |
||||
/** |
||||
* wonder what this is |
||||
*/ |
||||
public class DataSource extends NamedObject { |
||||
|
||||
private static final String CRYPT_PREFIX = "^^@@@"; |
||||
private String url, username, cryptPassword, driver; |
||||
private transient String password; |
||||
private DB db; |
||||
public DataSource() { |
||||
} |
||||
|
||||
public DataSource(String url, String username, String password) { |
||||
setUrl(url); |
||||
setUsername(username); |
||||
setPassword(password); |
||||
} |
||||
|
||||
public void setInformixSampleValues() { |
||||
setUrl("jupiter:50000:informixserver=superx_host;database=superx"); |
||||
setUsername("informix"); |
||||
setPassword(""); |
||||
this.db=DB.INFORMIX; |
||||
} |
||||
public void setAccessSampleValues() { |
||||
setUrl("jdbc:odbc:jdbcodbc:"); |
||||
setUsername("informix"); |
||||
setPassword(""); |
||||
this.db=DB.ACCESS; |
||||
} |
||||
|
||||
public String getDriver() { |
||||
return driver; |
||||
} |
||||
|
||||
public String getPassword() { |
||||
return password; |
||||
} |
||||
|
||||
public String getUrl() { |
||||
return url; |
||||
} |
||||
|
||||
public String getUsername() { |
||||
return username; |
||||
} |
||||
|
||||
public void setDriver(String string) { |
||||
driver = string; |
||||
} |
||||
|
||||
public void setPassword(String string) { |
||||
password = string; |
||||
this.setCryptPassword(string); |
||||
} |
||||
|
||||
public void setUrl(String string) { |
||||
url = string; |
||||
} |
||||
|
||||
public void setUsername(String string) { |
||||
username = string; |
||||
} |
||||
|
||||
public DB getDb() { |
||||
return db; |
||||
} |
||||
|
||||
public void setDb(DB db) { |
||||
this.db = db; |
||||
} |
||||
|
||||
public void testConnection() throws SQLException, ClassNotFoundException { |
||||
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); |
||||
Connection con=DriverManager.getConnection(url,username,password); |
||||
con.close(); |
||||
|
||||
|
||||
} |
||||
|
||||
public String getCryptPassword() { |
||||
return cryptPassword; |
||||
} |
||||
|
||||
public void setCryptPassword(String aPwd) { |
||||
if (!isEncrypted(aPwd)) |
||||
{ |
||||
//cryptPassword =CRYPT_PREFIX + CryptUtils.encryptStringDES(aPwd);
|
||||
} |
||||
} |
||||
|
||||
public boolean isEncrypted(String aPwd) |
||||
{ |
||||
return aPwd.startsWith(CRYPT_PREFIX); |
||||
} |
||||
} |
||||
|
||||
//Created on 17.04.2004 at 16:28:15
|
@ -0,0 +1,116 @@
@@ -0,0 +1,116 @@
|
||||
package de.memtext.db; |
||||
|
||||
import java.awt.event.ActionEvent; |
||||
import java.awt.event.ActionListener; |
||||
import java.sql.SQLException; |
||||
|
||||
import javax.swing.JButton; |
||||
import javax.swing.JPanel; |
||||
|
||||
import de.memtext.observ.DocumentListenerObserver; |
||||
import de.memtext.widgets.InfoMessage; |
||||
import de.memtext.widgets.LabeledPasswordField; |
||||
import de.memtext.widgets.LabeledTextField; |
||||
import de.memtext.widgets.MultilineEditPanel; |
||||
import de.memtext.widgets.WarningMessage; |
||||
|
||||
public class DataSourceEditPanel extends MultilineEditPanel { |
||||
private DataSource ds; |
||||
private LabeledTextField hostField = new LabeledTextField("Host", 10); |
||||
private LabeledTextField serverField = new LabeledTextField("Server", 10); |
||||
private LabeledTextField serviceField = new LabeledTextField("Service", 10); |
||||
private LabeledTextField odbcSourceField = |
||||
new LabeledTextField("Odbc-DSN", 10); |
||||
private LabeledTextField usernameField = |
||||
new LabeledTextField("Kennung", 10); |
||||
private LabeledTextField passwordField = |
||||
new LabeledPasswordField("Password", 10); |
||||
private JPanel pButtons = new JPanel(); |
||||
|
||||
public DataSourceEditPanel() { |
||||
this.setBackground(null); |
||||
odbcSourceField.setValue("sospos"); |
||||
odbcSourceField.setBackground(null); |
||||
usernameField.setValue("admin"); |
||||
this.add(hostField); |
||||
this.add(serverField); |
||||
this.add(serviceField); |
||||
this.add(odbcSourceField); |
||||
|
||||
this.add(usernameField); |
||||
|
||||
this.add(passwordField); |
||||
//this.addGlue();
|
||||
JButton btnTesten = new JButton("testen"); |
||||
btnTesten.setBackground(null); |
||||
pButtons.setBackground(null); |
||||
btnTesten.addActionListener(new ActionListener() { |
||||
public void actionPerformed(ActionEvent ae) { |
||||
test(); |
||||
} |
||||
}); |
||||
pButtons.add(btnTesten); |
||||
//this.addGlue();
|
||||
this.add(pButtons); |
||||
} |
||||
public void setDataSource(DataSource ds) { |
||||
this.ds = ds; |
||||
setMode(ds.getDb()); |
||||
} |
||||
public void addButton(JButton btn) { |
||||
pButtons.add(btn); |
||||
} |
||||
private void setMode(DB db) { |
||||
if (db.equals(DB.ACCESS)) { |
||||
odbcSourceField.setVisible(true); |
||||
hostField.setVisible(false); |
||||
serverField.setVisible(false); |
||||
serviceField.setVisible(false); |
||||
} |
||||
if (db.equals(DB.INFORMIX)) { |
||||
odbcSourceField.setVisible(false); |
||||
hostField.setVisible(true); |
||||
serverField.setVisible(true); |
||||
serviceField.setVisible(true); |
||||
} |
||||
} |
||||
protected void test() { |
||||
updateDataSource(); |
||||
try { |
||||
ds.testConnection(); |
||||
InfoMessage.show(this, "Verbindung erfolgreich aufgebaut", "Erfolg"); |
||||
} catch (SQLException e) { |
||||
if (ds.getDb().equals( DB.ACCESS)) { |
||||
WarningMessage.show(this, |
||||
"Verbindung zur ODBC-Quelle " |
||||
+ odbcSourceField.getValue() |
||||
+ " konnte nicht aufgebaut werden.\n" |
||||
+ e, |
||||
"Achtung"); |
||||
} |
||||
} catch (ClassNotFoundException e) { |
||||
WarningMessage.show(this, |
||||
"Benötigte Treiber-Klase nicht gefunden ", |
||||
"Achtung"); |
||||
} |
||||
} |
||||
public void updateDataSource() { |
||||
if (ds.getDb() == DB.ACCESS) { |
||||
ds.setUrl("jdbc:odbc:" + odbcSourceField.getValue()); |
||||
} |
||||
ds.setUsername(usernameField.getValue().toString()); |
||||
ds.setPassword(""); |
||||
} |
||||
public void addDocumentListener(DocumentListenerObserver listener) { |
||||
hostField.addDocumentListener(listener); |
||||
serverField.addDocumentListener(listener); |
||||
serviceField.addDocumentListener(listener); |
||||
odbcSourceField.addDocumentListener(listener); |
||||
|
||||
usernameField.addDocumentListener(listener); |
||||
|
||||
passwordField.addDocumentListener(listener); |
||||
} |
||||
} |
||||
|
||||
//Created on 17.04.2004 at 16:37:44
|
@ -0,0 +1,94 @@
@@ -0,0 +1,94 @@
|
||||
/* |
||||
* Created on 21.06.2003 |
||||
* |
||||
* To change the template for this generated file go to |
||||
* Window>Preferences>Java>Code Generation>Code and Comments |
||||
*/ |
||||
package de.memtext.db; |
||||
|
||||
/** |
||||
* @author MB |
||||
* |
||||
* To change the template for this generated type comment go to |
||||
* Window>Preferences>Java>Code Generation>Code and Comments |
||||
*/ |
||||
public class DbRequest |
||||
|
||||
implements java.io.Serializable { |
||||
static final long serialVersionUID = -2L; |
||||
|
||||
|
||||
private String sql; |
||||
private String name; |
||||
private Object[] params; |
||||
private int type; |
||||
private DbRequestType dbRequestType; |
||||
public DbRequest(String sql) |
||||
{ |
||||
this(null,sql,null,null); |
||||
} |
||||
public DbRequest(String name,String sql,Object[] params) |
||||
{ |
||||
this(name,sql,params,null); |
||||
} |
||||
/** |
||||
* Request type used by servlet |
||||
* @param name |
||||
* @param sql |
||||
* @param params |
||||
* @param dbRequestType |
||||
*/ |
||||
public DbRequest(String name,String sql,Object[] params,DbRequestType dbRequestType) |
||||
{ |
||||
setName(name); |
||||
setSql(sql); |
||||
setParams(params); |
||||
this.dbRequestType=dbRequestType; |
||||
} |
||||
|
||||
public String getName() |
||||
{ |
||||
return name; |
||||
} |
||||
|
||||
public void setName(String name) |
||||
{ |
||||
this.name=name; |
||||
} |
||||
|
||||
public Object[] getParams() |
||||
{ |
||||
return params; |
||||
} |
||||
|
||||
public void setParams(Object[] params) |
||||
{ |
||||
this.params=params; |
||||
} |
||||
|
||||
public String getSql() |
||||
{ |
||||
return sql; |
||||
} |
||||
|
||||
public void setSql(String sql) |
||||
{ |
||||
this.sql=sql; |
||||
} |
||||
|
||||
/** |
||||
* @return |
||||
*/ |
||||
public DbRequestType getDbRequestType() { |
||||
return dbRequestType; |
||||
} |
||||
|
||||
/** |
||||
* @param type |
||||
*/ |
||||
public void setDbRequestType(DbRequestType type) { |
||||
dbRequestType = type; |
||||
} |
||||
|
||||
} |
||||
|
@ -0,0 +1,27 @@
@@ -0,0 +1,27 @@
|
||||
/* |
||||
* Created on 21.06.2003 |
||||
* |
||||
* To change the template for this generated file go to |
||||
* Window>Preferences>Java>Code Generation>Code and Comments |
||||
*/ |
||||
package de.memtext.db; |
||||
|
||||
/** |
||||
* @author MB |
||||
* |
||||
* To change the template for this generated type comment go to |
||||
* Window>Preferences>Java>Code Generation>Code and Comments |
||||
*/ |
||||
public class DbRequestType { |
||||
|
||||
private final String name; |
||||
|
||||
public static final DbRequestType QUERY=new DbRequestType("QUERY"); |
||||
public static final DbRequestType UPDATE=new DbRequestType("UPDATE"); |
||||
private DbRequestType(String name) |
||||
{ |
||||
this.name=name; |
||||
} |
||||
public String toString() {return name; |
||||
} |
||||
} |
@ -0,0 +1,58 @@
@@ -0,0 +1,58 @@
|
||||
/* |
||||
* Created on 21.06.2003 |
||||
* |
||||
* To change the template for this generated file go to |
||||
* Window>Preferences>Java>Code Generation>Code and Comments |
||||
*/ |
||||
package de.memtext.db; |
||||
|
||||
import java.util.Collection; |
||||
|
||||
/** |
||||
* @author MB |
||||
* |
||||
* To change the template for this generated type comment go to |
||||
* Window>Preferences>Java>Code Generation>Code and Comments |
||||
*/ |
||||
public class DbResponse implements java.io.Serializable { |
||||
static final long serialVersionUID = -3L; |
||||
private Collection result; |
||||
private boolean OK; |
||||
private Exception exception; |
||||
private int updatedRowsCount; |
||||
|
||||
/** |
||||
* MyServletResponse constructor comment. |
||||
*/ |
||||
public DbResponse(Collection result, boolean OK, Exception exception) { |
||||
this.result = result; |
||||
this.OK = OK; |
||||
this.exception = exception; |
||||
} |
||||
public Exception getException() { |
||||
return exception; |
||||
} |
||||
public Collection getResult() { |
||||
return result; |
||||
} |
||||
public boolean isOK() { |
||||
return OK; |
||||
} |
||||
public void setException(Exception exception) { |
||||
this.exception = exception; |
||||
} |
||||
public void setOK(boolean OK) { |
||||
this.OK = OK; |
||||
} |
||||
public void setResult(Collection result) { |
||||
this.result = result; |
||||
} |
||||
public int getUpdatedRowsCount() { |
||||
return updatedRowsCount; |
||||
} |
||||
|
||||
public void setUpdatedRowsCount(int updatedRowsCount) { |
||||
this.updatedRowsCount = updatedRowsCount; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,110 @@
@@ -0,0 +1,110 @@
|
||||
/* |
||||
* Created on 21.06.2003 |
||||
* |
||||
* To change the template for this generated file go to |
||||
* Window>Preferences>Java>Code Generation>Code and Comments |
||||
*/ |
||||
package de.memtext.db; |
||||
|
||||
import java.net.MalformedURLException; |
||||
import java.rmi.Naming; |
||||
import java.rmi.NotBoundException; |
||||
import java.rmi.RMISecurityManager; |
||||
import java.rmi.RemoteException; |
||||
import java.util.Iterator; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @author MB |
||||
* |
||||
* To change the template for this generated type comment go to |
||||
* Window>Preferences>Java>Code Generation>Code and Comments |
||||
*/ |
||||
public class DbRmiClient { |
||||
private DbServerI dbServerI= null; |
||||
String name="DbServer"; //"//localhost/DbServer"
|
||||
public DbRmiClient() |
||||
{ |
||||
if (System.getSecurityManager() == null) { |
||||
System.setSecurityManager(new RMISecurityManager()); |
||||
} |
||||
try { |
||||
dbServerI = (DbServerI)Naming.lookup(name); |
||||
} catch (MalformedURLException e) { |
||||
e.printStackTrace(); |
||||
} catch (RemoteException e) { |
||||
e.printStackTrace(); |
||||
} catch (NotBoundException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
public void test() |
||||
{ |
||||
testUpdate(); |
||||
testQuery(); |
||||
} |
||||
private void testUpdate() { |
||||
try { |
||||
|
||||
DbRequest dbRequest=new DbRequest("update dummy set col2=99"); |
||||
DbResponse dbResponse=dbServerI.execute(dbRequest); |
||||
if (dbResponse.isOK()) |
||||
{ |
||||
System.out.println("OK - updated rows :" + dbResponse.getUpdatedRowsCount()); |
||||
} |
||||
else |
||||
{ |
||||
System.out.println("failed :"+dbResponse.getException()); |
||||
} |
||||
|
||||
|
||||
} catch (Exception e) { |
||||
System.out.println(" exception: " + e.getMessage()); |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
|
||||
private void testQuery() { |
||||
try { |
||||
|
||||
DbRequest dbRequest=new DbRequest("select * from dummy"); |
||||
DbResponse dbResponse=dbServerI.executeQuery("select * from dummy"); |
||||
if (dbResponse.isOK()) |
||||
{ |
||||
System.out.println("OK"); |
||||
List result=(List)dbResponse.getResult(); |
||||
System.out.println("rows:"+result.size()); |
||||
int i=0; |
||||
for (Iterator it=result.iterator();it.hasNext();) |
||||
{ |
||||
List row=(List)it.next(); |
||||
i++; |
||||
System.out.print("row "+i+" "); |
||||
for (Iterator it2=row.iterator();it2.hasNext();) |
||||
{ |
||||
Object o=it2.next(); |
||||
System.out.print(" - "+o); |
||||
} |
||||
System.out.println(""); |
||||
} |
||||
|
||||
} |
||||
else |
||||
{ |
||||
System.out.println("failed :"+dbResponse.getException()); |
||||
} |
||||
|
||||
|
||||
} catch (Exception e) { |
||||
System.out.println(" exception: " + e.getMessage()); |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
public static void main(String a[]) { |
||||
DbRmiClient c=new DbRmiClient(); |
||||
c.test(); |
||||
|
||||
|
||||
} |
||||
|
||||
} |
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
/* |
||||
* Created on 21.06.2003 |
||||
* |
||||
* To change the template for this generated file go to |
||||
* Window>Preferences>Java>Code Generation>Code and Comments |
||||
*/ |
||||
package de.memtext.db; |
||||
|
||||
import java.rmi.Remote; |
||||
import java.rmi.RemoteException; |
||||
|
||||
/** |
||||
* @author MB |
||||
* |
||||
* To change the template for this generated type comment go to |
||||
* Window>Preferences>Java>Code Generation>Code and Comments |
||||
*/ |
||||
public interface DbServerI extends Remote { |
||||
public DbResponse execute(String sql) throws RemoteException; |
||||
public DbResponse executeQuery(String sql) throws RemoteException; |
||||
public DbResponse execute(DbRequest dbRequest) throws RemoteException; |
||||
public DbResponse executeQuery(DbRequest dbRequest) throws RemoteException; |
||||
} |
@ -0,0 +1,117 @@
@@ -0,0 +1,117 @@
|
||||
/* |
||||
* Created on 21.06.2003 |
||||
* |
||||
* To change the template for this generated file go to |
||||
* Window>Preferences>Java>Code Generation>Code and Comments |
||||
*/ |
||||
package de.memtext.db; |
||||
|
||||
import java.rmi.Naming; |
||||
import java.rmi.RMISecurityManager; |
||||
import java.rmi.RemoteException; |
||||
import java.rmi.server.UnicastRemoteObject; |
||||
import java.sql.Connection; |
||||
import java.sql.ResultSet; |
||||
import java.sql.SQLException; |
||||
import java.sql.Statement; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @author MB |
||||
* |
||||
* To change the template for this generated type comment go to |
||||
* Window>Preferences>Java>Code Generation>Code and Comments |
||||
*/ |
||||
public class DbServerImpl |
||||
extends UnicastRemoteObject |
||||
implements de.memtext.db.DbServerI { |
||||
private String dbDriver = "org.hsqldb.jdbcDriver"; |
||||
private String dbURL = "jdbc:hsqldb:hsql://localhost:9000"; |
||||
private String userid = "SA"; |
||||
private String passwd = ""; |
||||
private int updateRowCount; |
||||
private Connection con; |
||||
private Statement stmt; |
||||
public DbServerImpl() throws RemoteException { |
||||
super(); |
||||
ConnectionCreator.loadClass(dbDriver); |
||||
try { |
||||
con = ConnectionCreator.getConnection(dbURL, userid, passwd); |
||||
stmt = con.createStatement(); |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
throw new RemoteException("Couldn't connect to DB" + e.toString()); |
||||
} |
||||
} |
||||
public DbResponse execute(String sql) throws RemoteException { |
||||
DbResponse result = new DbResponse(null, true, null); |
||||
try { |
||||
updateRowCount = stmt.executeUpdate(sql); |
||||
result.setUpdatedRowsCount(updateRowCount); |
||||
result.setOK(true); |
||||
} catch (SQLException e) { |
||||
e.printStackTrace(); |
||||
result.setOK(false); |
||||
result.setException(e); |
||||
} |
||||
return result; |
||||
} |
||||
|
||||
/* (non-Javadoc) |
||||
* @see de.mbisping.db.DbServerI#execute(de.mbisping.db.DbRequest) |
||||
*/ |
||||
public DbResponse execute(DbRequest dbRequest) throws RemoteException { |
||||
DbResponse result = new DbResponse(null, true, null); |
||||
if (dbRequest.getSql() != null) |
||||
result = execute(dbRequest.getSql()); |
||||
|
||||
return result; |
||||
} |
||||
|
||||
public DbResponse executeQuery(String sql) throws RemoteException { |
||||
DbResponse result = new DbResponse(null, true, null); |
||||
try { |
||||
ResultSet rs=stmt.executeQuery(sql); |
||||
List list=DbUtils.toResultList(rs); |
||||
result.setResult(list); |
||||
result.setOK(true); |
||||
} catch (SQLException e) { |
||||
e.printStackTrace(); |
||||
result.setOK(false); |
||||
result.setException(e); |
||||
} |
||||
return result; |
||||
} |
||||
/* (non-Javadoc) |
||||
* @see de.mbisping.db.DbServerI#executeQuery(de.mbisping.db.DbRequest) |
||||
*/ |
||||
public DbResponse executeQuery(DbRequest dbRequest) |
||||
throws RemoteException { |
||||
DbResponse result = new DbResponse(null, true, null); |
||||
result.setUpdatedRowsCount(20); |
||||
return result; |
||||
} |
||||
|
||||
public static void main(String args[]) { |
||||
|
||||
// Create and install a security manager
|
||||
if (System.getSecurityManager() == null) { |
||||
System.setSecurityManager(new RMISecurityManager()); |
||||
} |
||||
|
||||
try { |
||||
|
||||
DbServerImpl obj = new DbServerImpl(); |
||||
//String name="//localhost/DbServer";
|
||||
String name = "DbServer"; |
||||
// Bind this object instance to the name "HelloServer"
|
||||
Naming.rebind(name, obj); |
||||
|
||||
System.out.println(name + " bound in registry"); |
||||
} catch (Exception e) { |
||||
System.out.println("DbServerImpl err: " + e.getMessage()); |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
|
||||
} |
@ -0,0 +1,177 @@
@@ -0,0 +1,177 @@
|
||||
package de.memtext.db; |
||||
|
||||
import java.sql.Connection; |
||||
import java.sql.DriverManager; |
||||
import java.sql.PreparedStatement; |
||||
import java.sql.ResultSet; |
||||
import java.sql.ResultSetMetaData; |
||||
import java.sql.SQLException; |
||||
import java.sql.Statement; |
||||
import java.util.Iterator; |
||||
import java.util.LinkedList; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @author MB |
||||
*/ |
||||
public class DbUtils { |
||||
|
||||
/** |
||||
* |
||||
*/ |
||||
private DbUtils() { |
||||
} |
||||
|
||||
/* |
||||
* private Vector toResultVector(ResultSet rs) throws SQLException { Vector help |
||||
* = new Vector(); ResultSetMetaData rsmd = rs.getMetaData(); int |
||||
* numberOfColumns = rsmd.getColumnCount(); |
||||
* |
||||
* Vector row = null; while (rs.next()) { row = new Vector(); for (int i = 1; i |
||||
* <= numberOfColumns; i++) { row.add(rs.getObject(i)); } help.add(row); } |
||||
* rs.close(); return help; |
||||
* |
||||
* } |
||||
*/ |
||||
public static List toResultList(ResultSet rs) throws SQLException { |
||||
List help = new LinkedList(); |
||||
ResultSetMetaData rsmd = rs.getMetaData(); |
||||
int numberOfColumns = rsmd.getColumnCount(); |
||||
|
||||
List row = null; |
||||
while (rs.next()) { |
||||
row = new LinkedList(); |
||||
for (int i = 1; i <= numberOfColumns; i++) { |
||||
row.add(rs.getObject(i)); |
||||
} |
||||
help.add(row); |
||||
} |
||||
rs.close(); |
||||
return help; |
||||
} |
||||
|
||||
public static void grantRightToAllTables() { |
||||
String url = "jdbc:hsqldb:hsql://localhost:9999"; |
||||
String user = ""; |
||||
String right = "select"; |
||||
try { |
||||
Class.forName("org.hsqldb.jdbcDriver"); |
||||
} catch (ClassNotFoundException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
try { |
||||
DBAccess.addConnection("dbConn", DriverManager.getConnection(url, "admin", "hatschi3000")); |
||||
} catch (SQLException e1) { |
||||
e1.printStackTrace(); |
||||
} catch (Exception e1) { |
||||
e1.printStackTrace(); |
||||
} |
||||
List tablist = DBAccess.get("dbConn").getTableList(); |
||||
StringBuffer buf = new StringBuffer(); |
||||
for (Iterator it = tablist.iterator(); it.hasNext();) { |
||||
String tabname = (String) it.next(); |
||||
buf.append("grant " + right + " on " + tabname + " to " + user + ";"); |
||||
|
||||
} |
||||
DBAccess.get("dbConn").execute(buf.toString()); |
||||
|
||||
DBAccess.closeConnection("dbConn"); |
||||
|
||||
} |
||||
|
||||
/** |
||||
* Places Object in inverted single commas if it isn't null |
||||
* |
||||
* @param val |
||||
* @return either "null" if val is null or "'val'" |
||||
*/ |
||||
public static String placeInInvertedCommas(Object val) { |
||||
if (val == null) |
||||
return "null"; |
||||
return "'" + val + "'"; |
||||
} |
||||
|
||||
|
||||
public static int getInt(Statement stm, String query) throws SQLException { |
||||
int result = -1; |
||||
ResultSet rs = stm.executeQuery(query); |
||||
while (rs.next()) { |
||||
result = rs.getInt(1); |
||||
} |
||||
rs.close(); |
||||
|
||||
return result; |
||||
} |
||||
|
||||
public static String getString(Statement stm, String query) throws SQLException { |
||||
String result = null; |
||||
ResultSet rs = stm.executeQuery(query); |
||||
while (rs.next()) { |
||||
result = rs.getString(1); |
||||
} |
||||
rs.close(); |
||||
|
||||
return result; |
||||
} |
||||
/** |
||||
* |
||||
* @param query |
||||
* @return -1 wenn nichts gefunden |
||||
* @throws SQLException |
||||
*/ |
||||
public static int getInt(Connection con, String query,int param) throws SQLException { |
||||
int result = -1; |
||||
PreparedStatement pst=con.prepareStatement(query); |
||||
pst.setInt(1, param); |
||||
ResultSet rs = pst.executeQuery(); |
||||
while (rs.next()) { |
||||
result = rs.getInt(1); |
||||
} |
||||
rs.close(); |
||||
pst.close(); |
||||
return result; |
||||
} |
||||
|
||||
/** |
||||
* |
||||
* @param query |
||||
* @return -1 wenn nichts gefunden |
||||
* @throws SQLException |
||||
*/ |
||||
public static int getInt(Connection con, String query,String param) throws SQLException { |
||||
int result = -1; |
||||
PreparedStatement pst=con.prepareStatement(query); |
||||
pst.setString(1, param); |
||||
ResultSet rs = pst.executeQuery(); |
||||
while (rs.next()) { |
||||
result = rs.getInt(1); |
||||
} |
||||
rs.close(); |
||||
pst.close(); |
||||
return result; |
||||
} |
||||
/** |
||||
* |
||||
* @param con |
||||
* @param query |
||||
* @param param |
||||
* @return null if nothing found |
||||
* @throws SQLException |
||||
*/ |
||||
public static String getString(Connection con,String query,String param) throws SQLException |
||||
{ |
||||
String result=null; |
||||
PreparedStatement pst=con.prepareStatement(query); |
||||
pst.setString(1, param); |
||||
ResultSet rs = pst.executeQuery(); |
||||
while (rs.next()) { |
||||
result = rs.getString(1); |
||||
} |
||||
rs.close(); |
||||
pst.close(); |
||||
return result; |
||||
|
||||
} |
||||
} |
||||
//Created on 21.06.2003
|
@ -0,0 +1,123 @@
@@ -0,0 +1,123 @@
|
||||
package de.memtext.db; |
||||
|
||||
import java.sql.Statement; |
||||
|
||||
/** |
||||
* @author MB |
||||
* |
||||
* To change this generated comment edit the template variable "typecomment": |
||||
* Window>Preferences>Java>Templates. |
||||
* To enable and disable the creation of type comments go to |
||||
* Window>Preferences>Java>Code Generation. |
||||
*/ |
||||
public class HsqlProcedures { |
||||
|
||||
/** |
||||
* Constructor for HsqlProcedures. |
||||
*/ |
||||
private HsqlProcedures() { |
||||
super(); |
||||
} |
||||
|
||||
public static Integer get1() |
||||
{ |
||||
return new Integer(1); |
||||
|
||||
} |
||||
public static void alterTableColumnIntegerToVarchar( |
||||
java.sql.Connection con, |
||||
String tablename, |
||||
String columnname) { |
||||
try { |
||||
Statement stmt = con.createStatement(); |
||||
// add new tmp varchar col
|
||||
stmt.execute( |
||||
"alter table " |
||||
+ tablename |
||||
+ " add column tmp" |
||||
+ columnname |
||||
+ " varchar"); |
||||
//update value of tmp
|
||||
stmt.execute( |
||||
"update " |
||||
+ tablename |
||||
+ " set tmp" |
||||
+ columnname |
||||
+ "= " |
||||
+ columnname); |
||||
//drop original
|
||||
stmt.execute( |
||||
"alter table " + tablename + " drop column " + columnname); |
||||
//add col with original name and of varchar type
|
||||
stmt.execute( |
||||
"alter table " |
||||
+ tablename |
||||
+ " add column " |
||||
+ columnname |
||||
+ " varchar"); |
||||
//update values
|
||||
stmt.execute( |
||||
"update " |
||||
+ tablename |
||||
+ " set " |
||||
+ columnname |
||||
+ "= tmp" |
||||
+ columnname); |
||||
//drop tmp
|
||||
stmt.execute( |
||||
"alter table " + tablename + " drop column tmp" + columnname); |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
} |
||||
|
||||
public static void alterTableColumnVarcharToInteger( |
||||
java.sql.Connection con, |
||||
String tablename, |
||||
String columnname) { |
||||
try { |
||||
Statement stmt = con.createStatement(); |
||||
// add new tmp varchar col
|
||||
stmt.execute( |
||||
"alter table " |
||||
+ tablename |
||||
+ " add column tmp" |
||||
+ columnname |
||||
+ " integer"); |
||||
//update value of tmp
|
||||
stmt.execute( |
||||
"update " |
||||
+ tablename |
||||
+ " set tmp" |
||||
+ columnname |
||||
+ "= " |
||||
+ columnname); |
||||
//drop original
|
||||
stmt.execute( |
||||
"alter table " + tablename + " drop column " + columnname); |
||||
//add col with original name and of varchar type
|
||||
stmt.execute( |
||||
"alter table " |
||||
+ tablename |
||||
+ " add column " |
||||
+ columnname |
||||
+ " integer"); |
||||
//update values
|
||||
stmt.execute( |
||||
"update " |
||||
+ tablename |
||||
+ " set " |
||||
+ columnname |
||||
+ "= tmp" |
||||
+ columnname); |
||||
//drop tmp
|
||||
stmt.execute( |
||||
"alter table " + tablename + " drop column tmp" + columnname); |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
} |
||||
|
||||
} |
@ -0,0 +1,422 @@
@@ -0,0 +1,422 @@
|
||||
/* |
||||
* Copyright (c) 2001-2004, The HSQL Development Group All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or without |
||||
* modification, are permitted provided that the following conditions are met: |
||||
* |
||||
* Redistributions of source code must retain the above copyright notice, this |
||||
* list of conditions and the following disclaimer. |
||||
* |
||||
* Redistributions in binary form must reproduce the above copyright notice, |
||||
* this list of conditions and the following disclaimer in the documentation |
||||
* and/or other materials provided with the distribution. |
||||
* |
||||
* Neither the name of the HSQL Development Group nor the names of its |
||||
* contributors may be used to endorse or promote products derived from this |
||||
* software without specific prior written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG, OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
|
||||
package de.memtext.db; |
||||
|
||||
import java.awt.Component; |
||||
import java.io.BufferedInputStream; |
||||
import java.io.BufferedOutputStream; |
||||
import java.io.File; |
||||
import java.io.FileInputStream; |
||||
import java.io.FileOutputStream; |
||||
import java.io.FilenameFilter; |
||||
import java.io.IOException; |
||||
import java.sql.Connection; |
||||
import java.sql.ResultSet; |
||||
import java.sql.SQLException; |
||||
import java.sql.Statement; |
||||
import java.util.Properties; |
||||
import java.util.ResourceBundle; |
||||
|
||||
import javax.swing.JOptionPane; |
||||
|
||||
/** |
||||
* A class which helps managing multiple connections to a stand-alone database |
||||
* (e.g. on a network path). After one user has opened the database other users |
||||
* can get the option to open a temporary copy of the database. The temporary |
||||
* copy may be read-only, but doesn't has to be. If it's not read-only all, all |
||||
* changes will be discarded when the connection is closed. (May be useful if |
||||
* the application only does some dispensible logging or so). see |
||||
* SampleApplication |
||||
*/ |
||||
public class HsqlStandaloneMgr { |
||||
private static AbstractHsqlStandaloneMgrResources resources; |
||||
|
||||
private HsqlStandaloneMgr() { |
||||
} |
||||
|
||||
private static void initResources() { |
||||
String mypackage = ""; |
||||
//if you place the Resources classes in some package, define it like this
|
||||
mypackage="de.memtext.db."; |
||||
resources = (AbstractHsqlStandaloneMgrResources) ResourceBundle |
||||
.getBundle(mypackage + "HsqlStandaloneMgrResources"); |
||||
} |
||||
|
||||
|
||||
|
||||
/** |
||||
* Checks if a database is already opened (by checking if a .lck file |
||||
* exists) Use from HSQLDB 1.7.2 or higher |
||||
* |
||||
* @param String |
||||
* path - null,"" or "." for current directory |
||||
* @param String |
||||
* databasename |
||||
* @return true if database is already opened |
||||
*/ |
||||
public static boolean isDatabaseOpen(String path, String databasename) { |
||||
File lckFile = new File(getAdaptedPath(path)+databasename+".lck"); |
||||
return lckFile.exists(); |
||||
} |
||||
|
||||
/** |
||||
* Deletes any temporary files which the HsqlStandaloneMgr may have created |
||||
* for the given url |
||||
* |
||||
* @param String |
||||
* url |
||||
* @param String |
||||
* path - null,"" or "." for current dir |
||||
* @param String |
||||
* databasename - of the original database, no _TMP_COPY appendix |
||||
*/ |
||||
public static void deleteTmpFiles(String url, String path, |
||||
String databasename) { |
||||
if (databasename.indexOf("_TMP_COPY") > -1) |
||||
throw new IllegalArgumentException( |
||||
"Please specifiy the name of the original database without _TMP_COPY"); |
||||
path=getAdaptedPath(path); |
||||
|
||||
int tmpPos = url.indexOf("_TMP_COPY"); |
||||
if (tmpPos == -1) { |
||||
//if the main connection is closed delete info about the user
|
||||
File f = new File(path + databasename + "_user.properties"); |
||||
if (f.exists()) |
||||
f.delete(); |
||||
} else { |
||||
//delete files for temp. connection
|
||||
String tmp = url.substring(tmpPos); |
||||
if (path==null||path.equals("")) path="."; |
||||
File fpath = new File(path); |
||||
File tmpFiles[] = fpath.listFiles(new TmpFileFilter(databasename |
||||
+ tmp)); |
||||
for (int i = 0; i < tmpFiles.length; i++) { |
||||
tmpFiles[i].delete(); |
||||
} |
||||
} |
||||
|
||||
} |
||||
|
||||
/** |
||||
* Asks the user if he/she wants to open a temporary copy of the database or |
||||
* not. A boolean indicates if the questions concerns read-only mode or not. |
||||
* |
||||
* @param Component |
||||
* parentComponent - usually the application Frame, but may be |
||||
* null |
||||
* @param String |
||||
* databasename - name of original database |
||||
* @param boolean |
||||
* isReadOnlyCopyWanted - should the temp. copy be read-only |
||||
* @return int from JOptionPane.showConfirmDialog |
||||
*/ |
||||
public static int askUser(Component parentComponent, String path, |
||||
|
||||
String databasename, boolean isReadOnlyCopyWanted) { |
||||
if (resources == null) |
||||
initResources(); |
||||
|
||||
String username = null; |
||||
File f = new File(getAdaptedPath(path) + databasename + "_user.properties"); |
||||
if (f.exists()) { |
||||
Properties p = new Properties(); |
||||
FileInputStream fis; |
||||
try { |
||||
fis = new FileInputStream(f); |
||||
p.load(fis); |
||||
username = p.getProperty("user"); |
||||
fis.close(); |
||||
} catch (Exception e) { |
||||
System.err.println(resources |
||||
.getString("Couldn't read user name")); |
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
} |
||||
StringBuffer msg = new StringBuffer(resources.getDbInUseBy( |
||||
databasename, username)); |
||||
|
||||
if (isReadOnlyCopyWanted) |
||||
msg |
||||
.append(resources |
||||
.getString("Would you like to open a temporary copy in read-only mode?")); |
||||
else |
||||
msg |
||||
.append(resources |
||||
.getString("Would you like to open a temporary copy?\nAttention - any changes to the database will be lost after closing the program!")); |
||||
return JOptionPane.showConfirmDialog(parentComponent, msg, "HSQLDB", |
||||
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); |
||||
|
||||
} |
||||
|
||||
/** |
||||
* Returns a connection to a temporary copy of a database either in |
||||
* read-only mode or not. |
||||
* |
||||
* @param Component |
||||
* parentComponent - usually the application Frame, but may be |
||||
* null |
||||
* @param String |
||||
* path - null,"" or "." for current dir |
||||
* @param String |
||||
* databasename |
||||
* @param String |
||||
* username |
||||
* @param String |
||||
* password |
||||
* @param boolean |
||||
* isReadOnlyCopyWanted - should the temporary copy of the |
||||
* database be in read-only mode |
||||
* @return Connection to the temporary copy of the database |
||||
* @throws ClassNotFoundException |
||||
* @throws SQLException |
||||
* @throws IOException |
||||
*/ |
||||
public static Connection getTmpConnection(Component parentComponent, |
||||
String path, String databasename, String username, String password, |
||||
boolean isReadOnlyCopyWanted) throws ClassNotFoundException, |
||||
SQLException, IOException { |
||||
if (resources == null) |
||||
initResources(); |
||||
Class.forName("org.hsqldb.jdbcDriver"); |
||||
path = getAdaptedPath(path); |
||||
|
||||
int tmpInstanceNumber = checkNumber(path, databasename); |
||||
|
||||
try { |
||||
copyDatabaseFiles(path, databasename, tmpInstanceNumber); |
||||
} catch (IOException e) { |
||||
JOptionPane.showMessageDialog(parentComponent, resources |
||||
.getString("Could not create temporary copy of database.)") |
||||
+ "\n" + e, "HSQLDB", JOptionPane.WARNING_MESSAGE); |
||||
throw e; |
||||
} |
||||
|
||||
if (isReadOnlyCopyWanted) { |
||||
try { |
||||
setReadonly(path + databasename + "_TMP_COPY" |
||||
+ tmpInstanceNumber + ".properties"); |
||||
} catch (IOException e) { |
||||
JOptionPane |
||||
.showMessageDialog( |
||||
parentComponent, |
||||
resources |
||||
.getString("Could not set temporary copy of database to readonly mode.") |
||||
+ "\n" + e, "HSQLDB", |
||||
JOptionPane.WARNING_MESSAGE); |
||||
throw e; |
||||
} |
||||
} |
||||
String url = "jdbc:hsqldb:file:" + path + databasename |
||||
+ "_TMP_COPY" + tmpInstanceNumber; |
||||
|
||||
Connection con = java.sql.DriverManager.getConnection(url, username, |
||||
password); |
||||
|
||||
if (!isReadOnlyCopyWanted) { |
||||
Statement stmt = con.createStatement(); |
||||
ResultSet rs = stmt |
||||
.executeQuery("select count(*) from system_tables where hsqldb_type='TEXT'"); |
||||
rs.next(); |
||||
if (rs.getInt(1) > 0) { |
||||
stmt.execute("shutdown"); |
||||
stmt.close(); |
||||
con.close(); |
||||
deleteTmpFiles(url, path, databasename); |
||||
throw new SQLException( |
||||
resources |
||||
.getString("Handling non read-only temporary database with text tables is not supported")); |
||||
} |
||||
rs.close(); |
||||
stmt.close(); |
||||
} |
||||
return con; |
||||
} |
||||
|
||||
private static int checkNumber(String path, String databasename) { |
||||
int result = 1; |
||||
while (new File(path + databasename + "_TMP_COPY" + result |
||||
+ ".script").exists()) |
||||
result++; |
||||
return result; |
||||
} |
||||
|
||||
/** |
||||
* Returns a regular connection to a database and creates a file |
||||
* database_user.properties with the name of the user that opens the |
||||
* database |
||||
* |
||||
* @param String |
||||
* path - null,"" or "." for current dir |
||||
* @param String |
||||
* databasename |
||||
* @param String |
||||
* username |
||||
* @param String |
||||
* password |
||||
* @return Connection to the database |
||||
* @throws ClassNotFoundException |
||||
* @throws SQLException |
||||
* @throws IOException |
||||
*/ |
||||
public static Connection getConnection(String path, String databasename, |
||||
String username, String password) throws ClassNotFoundException, |
||||
SQLException, IOException { |
||||
Class.forName("org.hsqldb.jdbcDriver"); |
||||
String url=null; |
||||
if (path==null) |
||||
url="jdbc:hsqldb:"+databasename; |
||||
else |
||||
url = "jdbc:hsqldb:file:" + getAdaptedPath(path) + databasename; |
||||
|
||||
Connection con = java.sql.DriverManager.getConnection(url, username, |
||||
password); |
||||
|
||||
Properties p = new Properties(); |
||||
p.put("user", System.getProperty("user.name")); |
||||
String filename=(path!=null?path+"/"+databasename+"_user.properties":databasename+"_user.properties"); |
||||
FileOutputStream fos = new FileOutputStream(filename); |
||||
p.store(fos, "User which uses the HSQL database"); |
||||
fos.close(); |
||||
|
||||
return con; |
||||
} |
||||
|
||||
/** |
||||
* String and makes sure separator char is at the end |
||||
* |
||||
* @param String |
||||
* path |
||||
* @return adapted path String |
||||
*/ |
||||
private static String getAdaptedPath(String path) { |
||||
if (path == null) path = ""; |
||||
if ((path.equals(".")||path.length()>1)&&!(path.endsWith("/")||path.endsWith("\\"))) |
||||
path+=File.separator; |
||||
|
||||
return path; |
||||
} |
||||
|
||||
/** |
||||
* Changes the property readonly to true in a database properties file |
||||
* |
||||
* @param String |
||||
* propertiesFile including path if necessary |
||||
* @throws IOException |
||||
*/ |
||||
private static void setReadonly(String propertiesFile) throws IOException { |
||||
Properties p = new Properties(); |
||||
p.load(new FileInputStream(propertiesFile)); |
||||
p.put("readonly", "true"); |
||||
p.store(new FileOutputStream(propertiesFile), "HSQL database"); |
||||
|
||||
} |
||||
|
||||
/** |
||||
* Makes a temporary copy of all existing database files with the appendix |
||||
* _TMP_COPY |
||||
* |
||||
* @param String |
||||
* path - may be null for current dir, no / or \ at the end |
||||
* @param String |
||||
* databasename |
||||
* @throws IOException |
||||
*/ |
||||
private static void copyDatabaseFiles(String path, String databasename, |
||||
int number) throws IOException { |
||||
|
||||
String s = path + databasename; |
||||
copyFile(s + ".script", s + "_TMP_COPY" + number + ".script"); |
||||
copyFile(s + ".properties", s + "_TMP_COPY" + number + ".properties"); |
||||
if (new File(s + ".log").exists()) |
||||
copyFile(s + ".log", s + "_TMP_COPY" + number + ".log"); |
||||
if (new File(s + ".data").exists()) |
||||
copyFile(s + ".data", s + "_TMP_COPY" + number + ".data"); |
||||
if (new File(s + ".backup").exists()) |
||||
copyFile(s + ".backup", s + "_TMP_COPY" + number + ".backup"); |
||||
if (new File(s + ".nio").exists()) |
||||
copyFile(s + ".nio", s + "_TMP_COPY" + number + ".nio"); |
||||
} |
||||
|
||||
/** |
||||
* Creates a copy of a file |
||||
* |
||||
* @param String |
||||
* source - source file name (incl. path if necessary) |
||||
* @param String |
||||
* target - target file name (incl. path if necessary) |
||||
* @throws IOException |
||||
*/ |
||||
static public void copyFile(String source, String target) |
||||
throws IOException { |
||||
|
||||
try { |
||||
FileInputStream is = new FileInputStream(source); |
||||
FileOutputStream os = new FileOutputStream(target); |
||||
|
||||
BufferedInputStream in = new BufferedInputStream(is); |
||||
BufferedOutputStream out = new BufferedOutputStream(os); |
||||
|
||||
int buffer_size = 32768; |
||||
byte[] buffer = new byte[buffer_size]; |
||||
|
||||
int len = in.read(buffer, 0, buffer_size); |
||||
while (len != -1) { |
||||
out.write(buffer, 0, len); |
||||
len = in.read(buffer, 0, buffer_size); |
||||
} |
||||
in.close(); |
||||
is.close(); |
||||
out.close(); |
||||
os.close(); |
||||
|
||||
} catch (IOException e) { |
||||
throw new IOException("Couldn't copy file " + source + ": " |
||||
+ e.toString()); |
||||
} |
||||
} |
||||
|
||||
private static class TmpFileFilter implements FilenameFilter { |
||||
private String tmpName; |
||||
|
||||
TmpFileFilter(String tmpName) { |
||||
this.tmpName = tmpName; |
||||
} |
||||
|
||||
public boolean accept(File dir, String name) { |
||||
return name.indexOf(tmpName) > -1; |
||||
} |
||||
|
||||
} |
||||
|
||||
} |
||||
|
||||
//Created on 21.10.2004 at 20:35:55
|
@ -0,0 +1,70 @@
@@ -0,0 +1,70 @@
|
||||
/* |
||||
* Copyright (c) 2001-2004, The HSQL Development Group All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or without |
||||
* modification, are permitted provided that the following conditions are met: |
||||
* |
||||
* Redistributions of source code must retain the above copyright notice, this |
||||
* list of conditions and the following disclaimer. |
||||
* |
||||
* Redistributions in binary form must reproduce the above copyright notice, |
||||
* this list of conditions and the following disclaimer in the documentation |
||||
* and/or other materials provided with the distribution. |
||||
* |
||||
* Neither the name of the HSQL Development Group nor the names of its |
||||
* contributors may be used to endorse or promote products derived from this |
||||
* software without specific prior written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG, OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
|
||||
package de.memtext.db; |
||||
/** |
||||
* Resources for HsqlStandaloneMgr. |
||||
* For other locales extend AbstractHsqlStandloneMgrResources, i.e. |
||||
* by copying HsqlStandaloneMgrResources_de to your locale |
||||
*/ |
||||
|
||||
public class HsqlStandaloneMgrResources extends |
||||
AbstractHsqlStandaloneMgrResources { |
||||
public Object[][] getContents() { |
||||
return contents; |
||||
} |
||||
|
||||
static final Object[][] contents = { |
||||
|
||||
{ "Couldn't read user name", "Couldn't read user name" }, |
||||
{ "Would you like to open a temporary copy in read-only mode?", |
||||
"Would you like to open a temporary copy in read-only mode?" }, |
||||
{ |
||||
"Would you like to open a temporary copy?\nAttention - any changes to the database will be lost after closing the program!", |
||||
"Would you like to open a temporary copy?\nAttention - any changes to the database will be lost after closing the program!" }, |
||||
{ "Could not create temporary copy of database.", |
||||
"Could not create temporary copy of database." }, |
||||
{ "Could not set temporary copy of database to readonly mode.", |
||||
"Could not set temporary copy of database to readonly mode." }, |
||||
{ |
||||
"Handling non read-only temporary database with text tables is not supported", |
||||
"Handling non read-only temporary database with text tables is not supported" } |
||||
|
||||
}; |
||||
|
||||
public String getDbInUseBy(String dbname, String user) { |
||||
String result = "The database " + dbname + " is already in use"; |
||||
if (user != null) |
||||
result += " by user " + user; |
||||
result += ".\n"; |
||||
return result; |
||||
} |
||||
} |
||||
|
@ -0,0 +1,68 @@
@@ -0,0 +1,68 @@
|
||||
/* |
||||
* Copyright (c) 2001-2004, The HSQL Development Group All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or without |
||||
* modification, are permitted provided that the following conditions are met: |
||||
* |
||||
* Redistributions of source code must retain the above copyright notice, this |
||||
* list of conditions and the following disclaimer. |
||||
* |
||||
* Redistributions in binary form must reproduce the above copyright notice, |
||||
* this list of conditions and the following disclaimer in the documentation |
||||
* and/or other materials provided with the distribution. |
||||
* |
||||
* Neither the name of the HSQL Development Group nor the names of its |
||||
* contributors may be used to endorse or promote products derived from this |
||||
* software without specific prior written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG, OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
|
||||
package de.memtext.db; |
||||
/** |
||||
* Resources for HsqlStandaloneMgr. |
||||
* For other locales extend AbstractHsqlStandloneMgrResources, i.e. |
||||
* by copying this class to your locale |
||||
*/ |
||||
public class HsqlStandaloneMgrResources_de extends |
||||
AbstractHsqlStandaloneMgrResources { |
||||
public Object[][] getContents() { |
||||
return contents; |
||||
} |
||||
|
||||
static final Object[][] contents = { |
||||
{ "Couldn't read user name", "Konnte Usernamen nicht lesen" }, |
||||
{ "Would you like to open a temporary copy in read-only mode?", |
||||
"Möchten Sie eine schreibgeschützte Kopie öffnen?" }, |
||||
{ |
||||
"Would you like to open a temporary copy?\nAttention - any changes to the database will be lost after closing the program!", |
||||
"Möchten Sie eine temporäre Kopie öffnen?\nAchtung, wenn Sie das Programm beenden, gehen alle Änderungen, die Sie vorgenommen haben, verloren!" }, |
||||
{ "Could not create temporary copy of database.", |
||||
"Konnte keine temporäre Kopie der Datenbank anlegen." }, |
||||
{ "Could not set temporary copy of database to readonly mode.", |
||||
"Konnte die temp. Kopie nicht auf schreibgeschützt setzen" }, |
||||
{ |
||||
"Handling non read-only temporary database with text tables is not supported", |
||||
"Nicht schreibgeschützte Datenbanken mit Text-Tables werden nicht unterstützt" } |
||||
|
||||
}; |
||||
|
||||
public String getDbInUseBy(String dbname, String user) { |
||||
String result = "Die Datenbank " + dbname + " wird schon benutzt "; |
||||
if (user != null) |
||||
result += " vom User " + user; |
||||
result += ".\n"; |
||||
return result; |
||||
} |
||||
} |
||||
|
@ -0,0 +1,91 @@
@@ -0,0 +1,91 @@
|
||||
package de.memtext.db; |
||||
|
||||
import java.sql.Connection; |
||||
import java.sql.ResultSet; |
||||
import java.sql.SQLException; |
||||
import java.sql.Statement; |
||||
/** |
||||
* Additional procedures for HSQLDB |
||||
* make sure that this class in the classpath. |
||||
* To constantly add it to hsql, go to the directory where your hsqldb.jar is located |
||||
* Call jar -xf hsqlAddOn.jar |
||||
* jar -uf hsqldb.jar org/hsqldb/Library2.class |
||||
* Delete the directory org. |
||||
* |
||||
* Open your Database in Database Manager and execute |
||||
* the following commands once: |
||||
* GRANT ALL ON CLASS "org.hsqldb.Library2" TO PUBLIC and |
||||
* CREATE ALIAS COPYFROM FOR "org.hsqldb.Library2.copyFrom" |
||||
*/ |
||||
public class Library2 { |
||||
private Library2() { |
||||
super(); |
||||
} |
||||
/** |
||||
* Fills regular tables with values from a CSV-file. |
||||
* Similar to Postgres COPY FROM command. |
||||
* |
||||
* If you want to fill your table TEST with data from test.csv |
||||
* make sure that this class in the classpath and that |
||||
* GRANT ALL ON CLASS "org.hsqldb.Library2" TO PUBLIC and |
||||
* CREATE ALIAS COPYFROM FOR "org.hsqldb.Library2.copyFrom" |
||||
* has been called in your database at some point. |
||||
|
||||
* * Then execute |
||||
* COPYFROM("TEST","test.csv",null) |
||||
* |
||||
* if your not using , but | as a field separator |
||||
COPYFROM("TEST","test.csv","fs=|") |
||||
|
||||
* |
||||
* @param con - Connection is automatically handed over by HSQL |
||||
* @param table - the name of the table that is to be filled |
||||
* if your table isn't found capital letters may be required |
||||
* @param file - the filename of the CSV-file |
||||
* @param options - you can specify options separated by ; |
||||
* which are described in the text table documentation e.g. |
||||
* fs=| to use pipe instead of default comma as field separator or |
||||
* or |
||||
* fs=|;vs=.;lvs=~" varchar separator, longvarchar separator |
||||
* ignore_first=true; ignore first line |
||||
* all_quoted=true or |
||||
* encoding=UTF-8 if you don't have ASCII |
||||
* @throws SQLException |
||||
*/ |
||||
public static void copyFrom( |
||||
Connection con, |
||||
String table, |
||||
String file, |
||||
String options) |
||||
throws SQLException { |
||||
StringBuffer buf = |
||||
new StringBuffer("create text table TMP_SOURCE_" + table + " ("); |
||||
|
||||
ResultSet rs = con.getMetaData().getColumns(null, null, table, null); |
||||
String colname, coltype; |
||||
boolean tableFound = false; |
||||
while (rs.next()) { |
||||
tableFound = true; |
||||
colname = rs.getObject(4).toString(); |
||||
coltype = rs.getObject(6).toString(); |
||||
buf.append(colname + " " + coltype + ","); |
||||
} |
||||
rs.close(); |
||||
if (!tableFound) |
||||
throw new IllegalArgumentException( |
||||
"Copy from failed - table " + table + " not found"); |
||||
buf.deleteCharAt(buf.lastIndexOf(",")); |
||||
buf.append("); SET TABLE TMP_SOURCE_" + table + " SOURCE \"" + file); |
||||
if (options != null) |
||||
buf.append(";" + options); |
||||
buf.append("\";"); |
||||
buf.append( |
||||
"insert into " + table + " select * from TMP_SOURCE_" + table); |
||||
Statement stmt = con.createStatement(); |
||||
try { |
||||
stmt.execute(buf.toString()); |
||||
} finally { |
||||
stmt.execute("drop table TMP_SOURCE_" + table + " IF EXISTS"); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,262 @@
@@ -0,0 +1,262 @@
|
||||
package de.memtext.db; |
||||
|
||||
import java.io.File; |
||||
import java.io.IOException; |
||||
import java.security.InvalidKeyException; |
||||
import java.security.NoSuchAlgorithmException; |
||||
import java.security.SignatureException; |
||||
import java.security.spec.InvalidKeySpecException; |
||||
import java.sql.Connection; |
||||
import java.sql.DriverManager; |
||||
import java.sql.ResultSet; |
||||
import java.sql.SQLException; |
||||
import java.sql.Statement; |
||||
import java.util.Properties; |
||||
|
||||
import javax.xml.transform.TransformerConfigurationException; |
||||
|
||||
import org.apache.commons.dbcp.ConnectionFactory; |
||||
import org.apache.commons.dbcp.DriverManagerConnectionFactory; |
||||
import org.apache.commons.dbcp.PoolableConnectionFactory; |
||||
import org.apache.commons.dbcp.PoolingDriver; |
||||
import org.apache.commons.pool.impl.GenericObjectPool; |
||||
|
||||
import de.memtext.baseobjects.NamedObjectI; |
||||
import de.memtext.tree.KeyParentEqualException; |
||||
import de.memtext.util.DSAHandler; |
||||
|
||||
/** |
||||
* A new Connection pool making use of Jakarta Commons dbcp. |
||||
*/ |
||||
public class MemtextPool extends GenericObjectPool implements NamedObjectI { |
||||
|
||||
private String name, subpath; |
||||
private String nameNoAppendix; |
||||
|
||||
private Properties props = new Properties(); |
||||
private String privateKeyEncoded = null; |
||||
private String publicKeyEncoded = null; |
||||
private DSAHandler dsaHandler; |
||||
|
||||
public MemtextPool(String name, String nameAppendix, String subpath) |
||||
throws SQLException, IOException, DBServletException { |
||||
this.subpath = subpath; |
||||
nameNoAppendix = name; |
||||
this.setName(name + nameAppendix); |
||||
try { |
||||
readPropertiesAndUrl(); |
||||
System.out |
||||
.print(" (" + props.getProperty("connectionURL") + ") .."); |
||||
} catch (Exception e) { |
||||
System.out |
||||
.println("Konnte properties / Passwort nicht lesen. " + e); |
||||
e.printStackTrace(); |
||||
throw new DBServletException( |
||||
"Konnte properties / Passwort nicht lesen. " + e); |
||||
} |
||||
try { |
||||
|
||||
Class.forName(props.getProperty("driverName")); |
||||
} catch (ClassNotFoundException e1) { |
||||
throw new DBServletException("Treiber " |
||||
+ props.getProperty("driverName") |
||||
+ " nicht gefunden. Ggfs. nach tomcat/common/lib kopieren."); |
||||
} |
||||
|
||||
initLogging(); |
||||
this.setTestOnBorrow(true); |
||||
|
||||
int minIdle = 5; |
||||
if (props.getProperty("minIdle") != null |
||||
&& !props.getProperty("minIdle").trim().equals("")) { |
||||
minIdle = Integer.parseInt(props.getProperty("minIdle")); |
||||
} |
||||
this.setMinIdle(minIdle); |
||||
int maxIdle = -1; |
||||
if (props.getProperty("maxIdle") != null |
||||
&& !props.getProperty("maxIdle").trim().equals("")) { |
||||
maxIdle = Integer.parseInt(props.getProperty("maxIdle")); |
||||
} |
||||
if (maxIdle != -1) |
||||
setMaxIdle(maxIdle); |
||||
|
||||
int maxActive = -1; |
||||
if (props.getProperty("maxActive") != null |
||||
&& !props.getProperty("maxActive").trim().equals("")) { |
||||
maxActive = Integer.parseInt(props.getProperty("maxActive")); |
||||
} |
||||
if (maxActive != -1) |
||||
setMaxActive(maxActive); |
||||
|
||||
ConnectionFactory connectionFactory = new DriverManagerConnectionFactory( |
||||
props.getProperty("connectionURL"), props); |
||||
PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory( |
||||
connectionFactory, this, null, "select count(*) from xdummy;" //validationQuery
|
||||
, false, true); |
||||
int i = 1; |
||||
try { |
||||
// PoolingDriver driver = new PoolingDriver();
|
||||
Class.forName("org.apache.commons.dbcp.PoolingDriver"); |
||||
} catch (ClassNotFoundException e2) { |
||||
throw new DBServletException( |
||||
"ConnectionPool Klasse org.apache.commons.dbcp.PoolingDriver nicht gefunden.\ncommons-dbcp nach tomcat/common/lib stellen."); |
||||
} |
||||
PoolingDriver driver = (PoolingDriver) DriverManager |
||||
.getDriver("jdbc:apache:commons:dbcp:"); |
||||
|
||||
driver.registerPool(this.getName(), this); |
||||
|
||||
Object x = driver.getConnectionPool(this.getName()); |
||||
try { |
||||
Connection con = this.getConnection(); |
||||
Statement st = con.createStatement(); |
||||
ResultSet rs = st |
||||
.executeQuery("select value from properties where name='privatekey'"); |
||||
while (rs.next()) { |
||||
privateKeyEncoded = rs.getString(1); |
||||
} |
||||
rs.close(); |
||||
rs = st |
||||
.executeQuery("select value from properties where name='publickey'"); |
||||
while (rs.next()) { |
||||
publicKeyEncoded = rs.getString(1); |
||||
} |
||||
rs.close(); |
||||
st.close(); |
||||
con.close(); |
||||
|
||||
} catch (SQLException e) { |
||||
String msg = "Fehler beim Aufbau des ConnectionPools "; |
||||
if (!getName().startsWith("default")) |
||||
msg += " für Mandant: " + getName(); |
||||
msg += "\nKonnte keine Connection aus dem Pool holen.\n" + e; |
||||
|
||||
throw new SQLException(msg); |
||||
} |
||||
if (privateKeyEncoded != null) |
||||
initDSAHandler(); |
||||
} |
||||
|
||||
protected void initLogging() throws IOException { |
||||
/* |
||||
* LogUtils.initRawFile("superx_" + getName(), getLogDir() + "/superx_" + |
||||
* name + ".log", 2000, 1, false, true); LogUtils.initRawFile("superx_" + |
||||
* getName() + "_xml", getLogDir() + "/superx_" + name + "_xml.log", |
||||
* 2000, 1, false, true); |
||||
* |
||||
* Level lev = Level.SEVERE; |
||||
* |
||||
* try { if (props.getProperty("logLevelSQL") != null) lev = |
||||
* Level.parse(props.getProperty("logLevelSQL")); } catch |
||||
* (IllegalArgumentException e) { String msg = "Ungültiger Level für |
||||
* sqlLogger "; if (!this.getName().equals("default")) msg += "(Mandant :" + |
||||
* getName() + ") "; msg += " :" + props.getProperty("logLevelSQL"); |
||||
* System.out.println(msg); } Logger.getLogger("superx_" + |
||||
* getName()).setLevel(lev); lev = Level.SEVERE; |
||||
* |
||||
* try { if (props.getProperty("logLevelXML") != null) lev = |
||||
* Level.parse(props.getProperty("logLevelXML")); } catch |
||||
* (IllegalArgumentException e) { String msg = "Ungültiger Level für |
||||
* XMLLogger "; if (!this.getName().equals("default")) msg += "(Mandant :" + |
||||
* getName() + ") "; msg += " :" + props.getProperty("logLevelXML"); |
||||
* System.out.println(msg); } Logger.getLogger("superx_" + getName() + |
||||
* "_xml").setLevel(lev); |
||||
*/ |
||||
} |
||||
|
||||
public static String getLogDir() { |
||||
String tomcat_home = System.getProperty("catalina.home"); //tomcat 4
|
||||
// and 5
|
||||
if (tomcat_home == null) |
||||
tomcat_home = System.getProperty("tomcat.home"); //tomcat 3.x
|
||||
if (tomcat_home == null) |
||||
tomcat_home = "/home/superx/webserver/tomcat"; |
||||
|
||||
return tomcat_home + "/logs"; |
||||
|
||||
} |
||||
|
||||
public Properties getProperties() { |
||||
return props; |
||||
} |
||||
|
||||
private void readPropertiesAndUrl() throws Exception { |
||||
String propname = "db_" + nameNoAppendix + ".properties"; |
||||
if (nameNoAppendix.equals("default")) |
||||
propname = "db.properties"; |
||||
|
||||
java.net.URL url = MemtextPool.class.getProtectionDomain() |
||||
.getCodeSource().getLocation(); |
||||
File myJar = new File(url.getFile()); |
||||
File myPath = new File(myJar.getParent()); |
||||
String pfad = myPath.getParent() + System.getProperty("file.separator"); |
||||
if (subpath != null) |
||||
pfad += subpath + System.getProperty("file.separator"); |
||||
props = PropsReader.prepareProps(new File(pfad + propname)); |
||||
int i = 1; |
||||
} |
||||
|
||||
public String getName() { |
||||
return name; |
||||
} |
||||
|
||||
public void setName(String name) { |
||||
this.name = name; |
||||
} |
||||
|
||||
public void close() throws SQLException { |
||||
PoolingDriver driver = (PoolingDriver) DriverManager |
||||
.getDriver("jdbc:apache:commons:dbcp:"); |
||||
driver.closePool(this.getName()); |
||||
|
||||
} |
||||
|
||||
public Connection getConnection() throws SQLException { |
||||
return DriverManager.getConnection("jdbc:apache:commons:dbcp:" |
||||
+ this.getName()); |
||||
|
||||
} |
||||
|
||||
public void init() throws TransformerConfigurationException, |
||||
KeyParentEqualException, SQLException, DBServletException { |
||||
} |
||||
|
||||
public void clearLogFiles() throws IOException { |
||||
} |
||||
|
||||
private void initDSAHandler() throws DBServletException { |
||||
//privateKey wird ggfs. im Konstruktur bei Connection-Test, public key
|
||||
// aus properties eingelesen
|
||||
if (privateKeyEncoded == null) |
||||
throw new IllegalStateException( |
||||
"privatekey war null - properties-table auf Eintrag überprüfen"); |
||||
if (publicKeyEncoded == null) |
||||
throw new IllegalStateException( |
||||
"publickey war null - properties-table prüfen"); |
||||
try { |
||||
dsaHandler = new DSAHandler(privateKeyEncoded, publicKeyEncoded); |
||||
} catch (Exception e) { |
||||
throw new DBServletException(e.toString()); |
||||
} |
||||
} |
||||
|
||||
public boolean hasDSAHandler() { |
||||
return dsaHandler != null; |
||||
} |
||||
|
||||
public boolean verifiy(String data, String signature) |
||||
throws InvalidKeyException, NoSuchAlgorithmException, |
||||
InvalidKeySpecException, SignatureException { |
||||
if (dsaHandler == null) |
||||
throw new IllegalStateException( |
||||
"DSAHandler ist null, public und private key definition prüfen"); |
||||
return dsaHandler.verify(data, signature); |
||||
|
||||
} |
||||
|
||||
public String getPrivateKey() { |
||||
return privateKeyEncoded; |
||||
} |
||||
} |
||||
|
||||
//Created on 04.11.2004 at 20:18:11 as SxPool
|
@ -0,0 +1,197 @@
@@ -0,0 +1,197 @@
|
||||
package de.memtext.db; |
||||
|
||||
import java.io.BufferedReader; |
||||
import java.io.File; |
||||
import java.io.FileReader; |
||||
import java.io.IOException; |
||||
import java.lang.reflect.Constructor; |
||||
import java.lang.reflect.InvocationTargetException; |
||||
import java.sql.Connection; |
||||
import java.sql.DriverManager; |
||||
import java.sql.SQLException; |
||||
import java.util.Iterator; |
||||
|
||||
import javax.xml.transform.TransformerConfigurationException; |
||||
|
||||
import org.apache.commons.dbcp.PoolingDriver; |
||||
|
||||
import de.memtext.baseobjects.coll.NamedObjectSet; |
||||
import de.memtext.tree.KeyParentEqualException; |
||||
|
||||
|
||||
public class MemtextPools extends NamedObjectSet { |
||||
|
||||
private NamedObjectSet pools = new NamedObjectSet(); |
||||
|
||||
public MemtextPools() { |
||||
super(); |
||||
} |
||||
|
||||
public synchronized Connection getConnection(String poolname) |
||||
throws SQLException { |
||||
if (pools.size() == 0) |
||||
throw new IllegalStateException("Kein ConnectionPool gefunden."); |
||||
if (!pools.containsItemWithName(poolname)) |
||||
throw new SQLException("Kein ConnectionPool für Mandant:" |
||||
+ poolname + " gefunden"); |
||||
String pooldrv = "jdbc:apache:commons:dbcp:" + poolname; |
||||
if (DriverManager.getDriver(pooldrv) == null) { |
||||
String msg = "Kein ConnectionPool gefunden "; |
||||
if (!poolname.equals("default")) |
||||
msg += " für Mandant " + poolname; |
||||
throw new SQLException(msg); |
||||
} |
||||
return DriverManager.getConnection(pooldrv); |
||||
} |
||||
|
||||
public MemtextPool get(String poolname) { |
||||
if (!pools.containsItemWithName(poolname)) |
||||
throw new IllegalStateException("Kein ConnectionPool (" + poolname |
||||
+ ") vorhanden"); |
||||
return (MemtextPool) pools.getByName(poolname); |
||||
} |
||||
|
||||
/* void initDefaultOnly() throws SQLException, IOException, |
||||
DBServletException { |
||||
pools.add(new MemtextPool("default")); |
||||
} |
||||
*/ |
||||
/** |
||||
* wenn mehrfach benutzt wird (ConnectionPools für SuperX und Joolap) |
||||
* mind ein sollte namensappendix haben, damit unterscheidbar - |
||||
* sonst wird z.B. Pool für joolap "default" von später erzeugten Pool für superx "default" |
||||
* überschrieben! |
||||
*/ |
||||
public void init(String subpath,Class poolclass, String nameAppendix) throws SQLException, IOException, |
||||
DBServletException { |
||||
if (nameAppendix==null) nameAppendix=""; |
||||
Class[] params = new Class[2]; |
||||
params[0] = String.class; |
||||
params[1] = String.class; |
||||
Constructor constructor; |
||||
try { |
||||
constructor = poolclass.getConstructor(params); |
||||
|
||||
String db_extfile = "mandanten.cfg"; |
||||
if (db_extfile.indexOf(File.separator) == -1) { |
||||
java.net.URL url = MemtextPools.class.getProtectionDomain() |
||||
.getCodeSource().getLocation(); |
||||
File myJar = new File(url.getFile()); |
||||
File myPath = new File(myJar.getParent()); |
||||
String pfad = myPath.getParent(); |
||||
if (subpath!=null) pfad+=File.separator+subpath; |
||||
db_extfile = pfad + File.separator+db_extfile; ; |
||||
|
||||
|
||||
} |
||||
File f = new File(db_extfile); |
||||
if (!f.exists()) { |
||||
//einfach nur normale db.properties (default)
|
||||
System.out.print("Aufbau Datenbank-ConnectionPool"); |
||||
Object[] args = new Object[2]; |
||||
args[0] = "default";//Appendix hängt JoolapPool an
|
||||
args[1] = subpath; |
||||
MemtextPool connectionPool = (MemtextPool) constructor.newInstance(args); |
||||
System.out.println(" OK"); |
||||
System.out.println(" public/private key "+(connectionPool.hasDSAHandler()?" aktiv ":" nicht aktiv")); |
||||
|
||||
pools.add(connectionPool); |
||||
} else { //mehrereMandanten
|
||||
FileReader fr = new FileReader(f); |
||||
BufferedReader bfr = new BufferedReader(fr); |
||||
String line; |
||||
while ((line = bfr.readLine()) != null) { |
||||
System.out.print("Aufbau Datenbank-ConnectionPool für " |
||||
+ line); |
||||
Object[] args = new Object[2]; |
||||
args[0] = line;//Appendix hängt JoolapPool an
|
||||
args[1] = subpath; |
||||
MemtextPool connectionPool = (MemtextPool) constructor.newInstance(args); |
||||
System.out.println("OK"); |
||||
System.out.println(" public/private key"+(connectionPool.hasDSAHandler()?" aktiv ":" nicht aktiv")); |
||||
|
||||
pools.add(connectionPool); |
||||
} |
||||
bfr.close(); |
||||
fr.close(); |
||||
} |
||||
} catch (SecurityException e) { |
||||
e.printStackTrace(); |
||||
throw new DBServletException(e.toString()); |
||||
} catch (NoSuchMethodException e) { |
||||
e.printStackTrace(); |
||||
throw new DBServletException(e.toString()); |
||||
} catch (IllegalArgumentException e) { |
||||
e.printStackTrace(); |
||||
throw new DBServletException(e.toString()); |
||||
} catch (InstantiationException e) { |
||||
e.printStackTrace(); |
||||
throw new DBServletException(e.toString()); |
||||
} catch (IllegalAccessException e) { |
||||
e.printStackTrace(); |
||||
throw new DBServletException(e.toString()); |
||||
} catch (InvocationTargetException e) { |
||||
e.printStackTrace(); |
||||
throw new DBServletException(e.toString()); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Destroys all ConnectionPools |
||||
* |
||||
* @throws Exception |
||||
*/ |
||||
public void closeAll() throws Exception { |
||||
for (Iterator it = pools.iterator(); it.hasNext();) { |
||||
MemtextPool pool = (MemtextPool) it.next(); |
||||
pool.close(); |
||||
} |
||||
|
||||
} |
||||
|
||||
public void main(String args[]) { |
||||
try { |
||||
init("xx",MemtextPool.class, null); |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
} |
||||
int i = 1; |
||||
} |
||||
|
||||
public void invalidate(String poolname, Connection con) |
||||
throws DBServletException { |
||||
if (!pools.containsItemWithName(poolname)) |
||||
throw new DBServletException( |
||||
"Kann Connection nicht invalidieren - kein ConnectionPool " |
||||
+ poolname + " gefunden."); |
||||
try { |
||||
PoolingDriver driver = (PoolingDriver) DriverManager |
||||
.getDriver("jdbc:apache:commons:dbcp:"); |
||||
|
||||
//driver.invalidateConnection(con);
|
||||
driver.getConnectionPool(poolname).invalidateObject(con); |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
throw new DBServletException("Invalidating connection failed -" + e); |
||||
} |
||||
|
||||
} |
||||
|
||||
public void resetAllPools() |
||||
throws TransformerConfigurationException, KeyParentEqualException, |
||||
SQLException, DBServletException { |
||||
for (Iterator it = pools.iterator(); it.hasNext();) { |
||||
MemtextPool aPool = (MemtextPool) it.next(); |
||||
aPool.init(); |
||||
} |
||||
} |
||||
|
||||
public void clearLogFiles() throws IOException { |
||||
for (Iterator it = pools.iterator(); it.hasNext();) { |
||||
MemtextPool aPool = (MemtextPool) it.next(); |
||||
aPool.clearLogFiles(); |
||||
} |
||||
} |
||||
} |
||||
|
||||
//Created on 04.11.2004 at 20:18:11 als SxPools
|
@ -0,0 +1,22 @@
@@ -0,0 +1,22 @@
|
||||
package de.memtext.db; |
||||
public class NichtAngemeldetException extends Exception { |
||||
|
||||
public NichtAngemeldetException() { |
||||
super(); |
||||
} |
||||
|
||||
public NichtAngemeldetException(String message) { |
||||
super(message); |
||||
} |
||||
|
||||
public NichtAngemeldetException(String message, Throwable cause) { |
||||
super(message, cause); |
||||
} |
||||
|
||||
public NichtAngemeldetException(Throwable cause) { |
||||
super(cause); |
||||
} |
||||
|
||||
} |
||||
|
||||
//Created on 05.10.2004 at 13:12:23
|
@ -0,0 +1,101 @@
@@ -0,0 +1,101 @@
|
||||
package de.memtext.db; |
||||
|
||||
import de.memtext.util.StringUtils; |
||||
/** |
||||
* Hilfsklasse zum Erstellen von Prozeduraufrüfen für verschd. |
||||
* Datenbanken. |
||||
* Wird mit DB Object erstellt, z.B. ProcedureSql(DB.INFORMIX) |
||||
* dann setName() |
||||
* dann beliebig oft addParam(),oder addDateParam() |
||||
* Falls nach Aufruf der Prozedur ein select notwendig ist, |
||||
* reinsetzen mit setFinalSelect() |
||||
* zum Schluss. getFinishedCall für fertigen Datenbankspezifischen |
||||
* Prozeduraufruf |
||||
*/ |
||||
public class ProcedureSql { |
||||
|
||||
private DB dbsystem; |
||||
private boolean isAddPossible = true,isNameSet, isFinished; |
||||
private String finalSelect = ""; |
||||
|
||||
private StringBuffer result = new StringBuffer(); |
||||
|
||||
public ProcedureSql(DB db) { |
||||
this.dbsystem = db; |
||||
if (dbsystem.equals(DB.INFORMIX)) |
||||
result.append("execute procedure "); |
||||
if (dbsystem.equals(DB.POSTGRES)) |
||||
result.append("select "); |
||||
|
||||
} |
||||
|
||||
public ProcedureSql(DB dbsystem, String procname) { |
||||
this(dbsystem); |
||||
result.append(procname + ("(")); |
||||
isNameSet=true; |
||||
} |
||||
public void setName(String procName) { |
||||
if (isNameSet)throw new IllegalStateException("Name wurde schon gesetzt"); |
||||
result.append(procName+("(")); |
||||
isNameSet=true; |
||||
} |
||||
public void addParam(String param) { |
||||
if (!isAddPossible) |
||||
throw new IllegalStateException("kann keine Parameter hinzufügen, vielleicht wurde getFinishedCall schon aufgerufen"); |
||||
result.append(param + ","); |
||||
} |
||||
public void addDateParam(String param) { |
||||
if (!isAddPossible) |
||||
throw new IllegalStateException("kann keine Parameter hinzufügen, vielleicht wurde getFinishedCall schon aufgerufen"); |
||||
|
||||
if (dbsystem.equals(DB.INFORMIX)) |
||||
result.append("date"); |
||||
if (dbsystem.equals(DB.POSTGRES)) |
||||
result.append("date_val"); |
||||
result.append("('" + param + "'),"); |
||||
} |
||||
public void setFinalSelect(String sel) { |
||||
finalSelect = sel; |
||||
} |
||||
|
||||
public String getFinishedCall() { |
||||
if (!isFinished) |
||||
finish(); |
||||
return result.toString(); |
||||
} |
||||
|
||||
private void finish() { |
||||
addClosingBracket(); |
||||
result.append(finalSelect); |
||||
isAddPossible = false; |
||||
isFinished = true; |
||||
} |
||||
|
||||
private void addClosingBracket() { |
||||
char lc=result.charAt(result.length()-1);// StringUtils.getLastChar(result);
|
||||
if (lc==',') |
||||
StringUtils.deleteLastChar(result); |
||||
result.append(");"); |
||||
} |
||||
|
||||
public void addParam(Integer integer) { |
||||
addParam(integer.toString()); |
||||
} |
||||
|
||||
public void addParam(int in) { |
||||
addParam(new Integer(in).toString()); |
||||
} |
||||
|
||||
public void addParam(Object param) { |
||||
addParam(param.toString()); |
||||
} |
||||
|
||||
public static void main(String args[]) { |
||||
ProcedureSql p=new ProcedureSql(DB.POSTGRES,"test"); |
||||
p.addParam(23); |
||||
System.out.println(p.getFinishedCall()); |
||||
} |
||||
} |
||||
|
||||
|
||||
//Created on 03.12.2003 at 15:56:43
|
@ -0,0 +1,72 @@
@@ -0,0 +1,72 @@
|
||||
package de.memtext.db; |
||||
|
||||
import de.memtext.baseobjects.NamedIdObject; |
||||
/** |
||||
* Beschreibt eine (zusätzliche) in der Datenbank hinterlegt Eigenschaft. |
||||
* (z.B. Accident meister) |
||||
*/ |
||||
public class PropDescriptor extends NamedIdObject { |
||||
//wie heißt die Spalte in der DB
|
||||
private String colname; |
||||
//bei Combobox sql für quelle select key,name from xx
|
||||
private String quelle; |
||||
//soll auf dem Bildschirm sichtbar sein
|
||||
private boolean isVisible; |
||||
|
||||
private String defaultkey; |
||||
private int sortnr; |
||||
|
||||
|
||||
public PropDescriptor() { |
||||
|
||||
} |
||||
|
||||
public PropDescriptor(Object id, String name) { |
||||
super(id,name); |
||||
} |
||||
|
||||
public String getColname() { |
||||
return colname; |
||||
} |
||||
|
||||
public void setColname(String colname) { |
||||
this.colname = colname; |
||||
} |
||||
|
||||
public String getDefaultkey() { |
||||
return defaultkey; |
||||
} |
||||
|
||||
public void setDefaultkey(String defaultkey) { |
||||
this.defaultkey = defaultkey; |
||||
} |
||||
|
||||
public boolean isVisible() { |
||||
return isVisible; |
||||
} |
||||
|
||||
public void setVisible(boolean isVisible) { |
||||
this.isVisible = isVisible; |
||||
} |
||||
|
||||
public String getQuelle() { |
||||
return quelle; |
||||
} |
||||
|
||||
public void setQuelle(String quelle) { |
||||
this.quelle = quelle; |
||||
} |
||||
|
||||
public int getSortnr() { |
||||
return sortnr; |
||||
} |
||||
public void setSortnr(int sortnr) { |
||||
this.sortnr = sortnr; |
||||
} |
||||
public String toString() |
||||
{ |
||||
return getName(); |
||||
} |
||||
} |
||||
|
||||
//Created on 17.05.2005 at 10:17:03
|
@ -0,0 +1,88 @@
@@ -0,0 +1,88 @@
|
||||
package de.memtext.db; |
||||
|
||||
import java.io.File; |
||||
import java.io.FileInputStream; |
||||
import java.io.FileNotFoundException; |
||||
import java.io.IOException; |
||||
import java.io.InputStream; |
||||
import java.util.Properties; |
||||
import java.util.logging.Level; |
||||
import java.util.logging.Logger; |
||||
|
||||
import de.memtext.util.CryptUtils; |
||||
|
||||
public class PropsReader { |
||||
private static byte key[] = { (byte) 255, (byte) 221, (byte) 127, |
||||
(byte) 109, (byte) 129 }; |
||||
private static int keyLength = key.length; |
||||
/* |
||||
* |
||||
* 28.10.08 EInfache Verschlüsselungsmethode wird nicht mehr unterstützt |
||||
*/ |
||||
public static String check(String mandantenID, String d) throws Exception { |
||||
String result = ""; |
||||
// Logger.getLogger("superx_" + mandantenID).log(Level.FINEST,
|
||||
// "Verschlüsseltes Passwort " + d);
|
||||
if (d.startsWith("sx_des")) { |
||||
result = CryptUtils.decryptStringDES(d.substring(6)); |
||||
} |
||||
else { |
||||
result=d; |
||||
/* try { |
||||
byte[] tmp; |
||||
tmp = d.getBytes(); |
||||
|
||||
int size = (byte) (tmp[0] ^ key[0 % keyLength]); |
||||
int index = (byte) (tmp[1] ^ key[1 % keyLength]); |
||||
byte de[] = new byte[size]; |
||||
|
||||
for (int i = index; i < (size + index); i++) { |
||||
de[i - index] = (byte) (tmp[i] ^ key[i % keyLength]); |
||||
} |
||||
result = new String(de); |
||||
} catch (Exception e) { |
||||
throw new DBServletException( |
||||
"Konnte Passwort nicht entschlüsseln (altes Verfahren). Bitte mit propadmin.x prüfen.\n" |
||||
+ e); |
||||
}*/ |
||||
} |
||||
return result; |
||||
} |
||||
|
||||
public static Properties prepareProps(File propfile) throws IOException, |
||||
FileNotFoundException, Exception { |
||||
Properties props = new Properties(); |
||||
if (!propfile.exists()) { |
||||
throw new IOException("Datei nicht gefunden: " + propfile); |
||||
} |
||||
InputStream is = new FileInputStream(propfile); |
||||
|
||||
if (is != null) { |
||||
props.load(is); |
||||
is.close(); |
||||
} else { |
||||
throw new IOException("cannot open " + propfile); |
||||
} |
||||
String mandantenID = props.getProperty("MandantenID"); |
||||
if (mandantenID == null) |
||||
mandantenID = "default"; |
||||
props.put("user", props.getProperty("connectionName")); |
||||
props.put("password", check(mandantenID, props |
||||
.getProperty("connectionPassword"))); |
||||
|
||||
if (props.getProperty("driverName").indexOf("postgres") > -1) { |
||||
props.put("charSet", "Latin-1"); |
||||
props.put("DateStyle", "German, DMY"); |
||||
// props.put("DateStyle", "ISO, DMY");
|
||||
} |
||||
if (props.getProperty("driverName").indexOf("informix") > -1) |
||||
|
||||
{ |
||||
props.put("GL_DATETIME", "%d.%m.%Y %T"); |
||||
props.put("CLIENT_LOCALE", "de_de.8859-1"); |
||||
} |
||||
return props; |
||||
} |
||||
} |
||||
|
||||
//Created on 27.04.2005 at 09:07:18
|
@ -0,0 +1,90 @@
@@ -0,0 +1,90 @@
|
||||
package de.memtext.db; |
||||
/** |
||||
* collects restrictions for sql-clauses, manages where and |
||||
* and what to delete |
||||
* take care of inital where yourself |
||||
*/ |
||||
public class RestrictionCollector { |
||||
private StringBuffer restrict = new StringBuffer(); |
||||
|
||||
private int count=0; |
||||
public RestrictionCollector() { |
||||
} |
||||
public RestrictionCollector(String restriction) { |
||||
restrict.append(restriction); |
||||
count = 1; |
||||
|
||||
} |
||||
public boolean isSomethingAdded() |
||||
{ |
||||
return count>0; |
||||
} |
||||
public void addAndRestriction(StringBuffer restriction) { |
||||
addAndRestriction(restriction.toString()); |
||||
} |
||||
public void addAndRestriction(String restriction) { |
||||
if (restriction==null||restriction.length()<3) |
||||
throw new IllegalArgumentException("Not OK:"+restriction); |
||||
boolean isNewlineAtStart=restriction.startsWith("\n"); |
||||
restriction = restriction.trim(); |
||||
if (isNewlineAtStart) restriction="\n"+restriction; |
||||
if (restriction.substring(0, 3).equalsIgnoreCase("and")) |
||||
restriction = restriction.substring(3); |
||||
if (count>0) |
||||
restrict.append(" and " + restriction + " "); |
||||
else |
||||
restrict.append(restriction + " "); |
||||
count++; |
||||
} |
||||
|
||||
public void addOrRestriction(StringBuffer restriction) { |
||||
addOrRestriction(restriction.toString()); |
||||
} |
||||
public void addOrRestriction(String restriction) { |
||||
if (restriction==null||restriction.length()<3) |
||||
throw new IllegalArgumentException("Not OK:"+restriction); |
||||
|
||||
restriction = restriction.trim(); |
||||
if (restriction.substring(0, 3).equalsIgnoreCase("or ")) |
||||
restriction = restriction.substring(3); |
||||
|
||||
if (count>0) |
||||
restrict.append(" or " + restriction + " "); |
||||
else |
||||
restrict.append(restriction + " "); |
||||
count++; |
||||
} |
||||
public void addOrRestriction(RestrictionCollector collector) { |
||||
addOrRestriction(collector.toString()); |
||||
} |
||||
public String toString() { |
||||
if (count>0) |
||||
return restrict.toString(); |
||||
else |
||||
return ""; |
||||
} |
||||
public String toStringInclusiveWhere() |
||||
{ |
||||
if (count>0) |
||||
return " where "+restrict; |
||||
else |
||||
return ""; |
||||
} |
||||
public int getArgumentCount() |
||||
{ |
||||
return count; |
||||
} |
||||
public void addAndRestriction(RestrictionCollector collector) { |
||||
if (collector.getArgumentCount()>1) |
||||
addAndRestriction( collector.toString()); |
||||
else |
||||
addAndRestriction( collector.toString() ); |
||||
} |
||||
public static void main(String[] args) { |
||||
RestrictionCollector r = new RestrictionCollector(); |
||||
r.addAndRestriction(" AND 1=1"); |
||||
r.addAndRestriction("2=2"); |
||||
System.out.println(r); |
||||
} |
||||
} |
||||
// Created on 23.07.2003
|
@ -0,0 +1,124 @@
@@ -0,0 +1,124 @@
|
||||
/* |
||||
* Copyright (c) 2001-2004, The HSQL Development Group All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or without |
||||
* modification, are permitted provided that the following conditions are met: |
||||
* |
||||
* Redistributions of source code must retain the above copyright notice, this |
||||
* list of conditions and the following disclaimer. |
||||
* |
||||
* Redistributions in binary form must reproduce the above copyright notice, |
||||
* this list of conditions and the following disclaimer in the documentation |
||||
* and/or other materials provided with the distribution. |
||||
* |
||||
* Neither the name of the HSQL Development Group nor the names of its |
||||
* contributors may be used to endorse or promote products derived from this |
||||
* software without specific prior written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG, OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
|
||||
package de.memtext.db; |
||||
|
||||
import java.awt.event.WindowAdapter; |
||||
import java.awt.event.WindowEvent; |
||||
import java.io.IOException; |
||||
import java.sql.Connection; |
||||
import java.sql.SQLException; |
||||
import java.sql.Statement; |
||||
|
||||
import javax.swing.JFrame; |
||||
import javax.swing.JLabel; |
||||
import javax.swing.JOptionPane; |
||||
|
||||
public class SampleApp extends JFrame { |
||||
private Connection con = null; |
||||
private String path = ""; // null , "" or "." for current directory
|
||||
private String dbname = "testing"; |
||||
|
||||
public SampleApp() throws ClassNotFoundException, SQLException, IOException { |
||||
super("SampleApp"); |
||||
initDb(); |
||||
|
||||
JLabel lbl = new JLabel("got a connection to " |
||||
+ con.getMetaData().getURL()); |
||||
this.getContentPane().add(lbl); |
||||
this.setSize(600, 400); |
||||
|
||||
addWindowListener(new WindowAdapter() { |
||||
public void windowClosing(WindowEvent we) { |
||||
try { |
||||
String url=con.getMetaData().getURL(); |
||||
Statement stmt= con.createStatement(); |
||||
stmt.execute("shutdown"); |
||||
stmt.close(); |
||||
con.close(); |
||||
//delete all temporary files that may exists
|
||||
HsqlStandaloneMgr.deleteTmpFiles( url,path, dbname); |
||||
} catch (SQLException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
System.exit(0); |
||||
} |
||||
}); |
||||
|
||||
} |
||||
|
||||
private void initDb() throws ClassNotFoundException, SQLException, |
||||
IOException { |
||||
|
||||
if (!HsqlStandaloneMgr.isDatabaseOpen(path, dbname)) { |
||||
//if the database isn't open yet, we just open a regular connection
|
||||
//the system username is written to a special properties file
|
||||
con = HsqlStandaloneMgr.getConnection(path, dbname, "sa", ""); |
||||
Statement stmt = con.createStatement(); |
||||
stmt |
||||
.execute("drop table test if exists;create table test( col1 integer);insert into test values(1);checkpoint;"); |
||||
stmt.close(); |
||||
} else |
||||
// the database is already open
|
||||
{ |
||||
//you can decide if the temporary copy should be read-only mode
|
||||
//if not, all changes to the database will be lost after closing
|
||||
// the connection
|
||||
boolean isReadOnlyModeWanted = true; |
||||
int result = HsqlStandaloneMgr.askUser(this, path, dbname, |
||||
isReadOnlyModeWanted); |
||||
if (result == JOptionPane.YES_OPTION) { |
||||
con = HsqlStandaloneMgr.getTmpConnection(this, path, dbname, |
||||
"sa", "", isReadOnlyModeWanted); |
||||
} else |
||||
{ |
||||
// opening of temp. copy not wanted
|
||||
System.exit(0); |
||||
} |
||||
} |
||||
} |
||||
|
||||
public static void main(String args[]) { |
||||
|
||||
try { |
||||
SampleApp app = new SampleApp(); |
||||
app.show(); |
||||
} catch (ClassNotFoundException e) { |
||||
e.printStackTrace(); |
||||
} catch (SQLException e) { |
||||
e.printStackTrace(); |
||||
} catch (IOException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
} |
||||
} |
||||
|
||||
//Created on 23.10.2004 at 12:10:38
|
@ -0,0 +1,48 @@
@@ -0,0 +1,48 @@
|
||||
package de.memtext.db; |
||||
|
||||
import java.io.File; |
||||
import java.io.IOException; |
||||
import java.sql.Connection; |
||||
import java.sql.DatabaseMetaData; |
||||
import java.sql.ResultSet; |
||||
import java.sql.SQLException; |
||||
|
||||
import de.memtext.util.StringUtils; |
||||
|
||||
public class SchemaReader { |
||||
|
||||
public static void main(String[] args) { |
||||
if (args.length != 1) { |
||||
System.out.println("SchemaReader db.properties"); |
||||
System.exit(1); |
||||
} |
||||
try { |
||||
Connection con = ConnectionCreator.getConnectionCryptPassword(args[0],"driverName","connectionURL","connectionName","connectionPassword"); |
||||
DatabaseMetaData md = con.getMetaData(); |
||||
ResultSet myTables = md.getTables(null, null, null, null); |
||||
StringBuffer result = new StringBuffer(); |
||||
if (myTables != null) { |
||||
while (myTables.next()) { |
||||
String tabname = myTables.getString(3); |
||||
result.append("TABLE " + tabname + "\n"); |
||||
ResultSet cols = md.getColumns(null, null, tabname, null); |
||||
while (cols.next()) { |
||||
result.append(cols.getString(4) + ":" |
||||
+ cols.getObject(5) + "\n"); |
||||
} |
||||
result.append("----\n"); |
||||
} |
||||
} |
||||
StringUtils.write(new File("schema.txt"),result.toString()); |
||||
|
||||
} catch (IOException e) { |
||||
e.printStackTrace(); |
||||
} catch (SQLException e) { |
||||
e.printStackTrace(); |
||||
} catch (ClassNotFoundException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
} |
||||
|
||||
//Created on 21.02.2006 at 10:38:08
|
@ -0,0 +1,266 @@
@@ -0,0 +1,266 @@
|
||||
package de.memtext.db; |
||||
import java.io.BufferedWriter; |
||||
import java.io.FileWriter; |
||||
import java.sql.Connection; |
||||
import java.sql.DriverManager; |
||||
import java.sql.ResultSet; |
||||
import java.sql.SQLException; |
||||
import java.sql.Statement; |
||||
import java.util.Enumeration; |
||||
import java.util.Random; |
||||
import java.util.Vector; |
||||
/** |
||||
* Randomizes values in a database. |
||||
* Reads all values of a given table column (select distinct x from..) and |
||||
* multiplies all occurences of a single value (e.g. 150) with a factor between |
||||
* minFactor and maxFactor (e.g. 150*1.1 -> all entries with 150 become 165) |
||||
* |
||||
* if boolean printOutOnly is true the update sql statements are only logged |
||||
* to console, not performed |
||||
* */ |
||||
public class ValueRandomizer { |
||||
//private static String driver = "org.hsqldb.jdbcDriver";
|
||||
private static String driver = "org.postgresql.Driver"; |
||||
//private static String dbUrl = "jdbc:hsqldb:hsql://localhost:9999";
|
||||
private static String dbUrl = "jdbc:postgresql://localhost:5432/superx"; |
||||
private static String username = "superx"; //"joolap";
|
||||
private static String password = ""; //"loopja3000";
|
||||
private static String tablename = "cob_busa"; |
||||
private static String colname = "betrag"; //"value";
|
||||
private static String datenart = "DOUBLE"; //or "INTEGER";
|
||||
|
||||
private static double minFactor = 0.6; |
||||
private static double maxFactor = 1.8; |
||||
|
||||
private static boolean printOutOnly = false; |
||||
private static Statement stat; |
||||
private static Random r = new Random(); |
||||
public static void main(String args[]) { |
||||
|
||||
try { |
||||
Class.forName(driver); |
||||
Connection conn; |
||||
System.out.println("establishing connection to " + dbUrl); |
||||
conn = DriverManager.getConnection(dbUrl, username, password); |
||||
stat = conn.createStatement(); |
||||
System.out.println("done."); |
||||
out(); |
||||
stat.close(); |
||||
conn.close(); |
||||
System.exit(-1); |
||||
|
||||
|
||||
//alle werte einlesen
|
||||
Vector werte = readDistinctValues(); |
||||
if (datenart.toUpperCase().equalsIgnoreCase("DOUBLE")) { |
||||
//massiveRandomizeDouble(werte);
|
||||
randomize(werte); |
||||
} else //integer
|
||||
{ |
||||
massiveRandomizeInteger(werte); |
||||
} |
||||
|
||||
System.out.println("Randomizierung erfolgreich beendet"); |
||||
} catch (Exception e) { |
||||
System.out.println(e.toString()); |
||||
System.exit(0); |
||||
} |
||||
|
||||
} |
||||
/** |
||||
* randomizes in categories of values |
||||
* only for double |
||||
* @param werte |
||||
*/ |
||||
private static void randomize(Vector werte) { |
||||
int categories = 15; |
||||
int valuesPerCategory = (int) werte.size() / categories; |
||||
StringBuffer updates = new StringBuffer(); |
||||
float limit = 0, limit2; |
||||
for (int i = 1; i < categories; i++) { |
||||
limit = |
||||
(float) ((Double) werte.get(i * valuesPerCategory)) |
||||
.doubleValue(); |
||||
updates.append( |
||||
"update " |
||||
+ tablename |
||||
+ " set " |
||||
+ colname |
||||
+ "=" |
||||
+ colname |
||||
+ "*" |
||||
+ getRndFactor() |
||||
+ " where " |
||||
+ colname |
||||
+ ">" |
||||
+ limit); |
||||
if (i > 1) { |
||||
limit2 = |
||||
(float) ((Double) werte.get((i - 1) * valuesPerCategory)) |
||||
.doubleValue(); |
||||
updates.append(" and " + colname + "<" + limit2); |
||||
} |
||||
updates.append(";\n"); |
||||
} |
||||
limit = |
||||
(float) ((Double) werte.get((categories - 1) * valuesPerCategory)) |
||||
.doubleValue(); |
||||
updates.append( |
||||
"update " |
||||
+ tablename |
||||
+ " set " |
||||
+ colname |
||||
+ "=" |
||||
+ colname |
||||
+ "*" |
||||
+ getRndFactor() |
||||
+ " where " |
||||
+ colname |
||||
+ "<" |
||||
+ limit |
||||
+ ";"); |
||||
|
||||
System.out.println(updates); |
||||
} |
||||
/** |
||||
* * multiplies all occurences of a single value (e.g. 150) with a factor between |
||||
* minFactor and maxFactor (e.g. 150*1.1 -> all entries with 150 become 165) |
||||
|
||||
* @param werte |
||||
* @throws SQLException |
||||
*/ |
||||
private static void massiveRandomizeInteger(Vector werte) |
||||
throws SQLException { |
||||
Integer einWert; |
||||
String upd = null; |
||||
for (Enumeration en = werte.elements(); en.hasMoreElements();) { |
||||
einWert = (Integer) en.nextElement(); |
||||
int neuerwert = (int) (einWert.intValue() * getRndFactor()); |
||||
upd = |
||||
"update " |
||||
+ tablename |
||||
+ " set " |
||||
+ colname |
||||
+ "=" |
||||
+ neuerwert |
||||
+ " where " |
||||
+ colname |
||||
+ "=" |
||||
+ einWert.toString() |
||||
+ ";"; |
||||
|
||||
if (printOutOnly) |
||||
System.out.println(upd); |
||||
else |
||||
stat.executeUpdate(upd); |
||||
} |
||||
|
||||
} |
||||
/** |
||||
* * multiplies all occurences of a single value (e.g. 150) with a factor between |
||||
* minFactor and maxFactor (e.g. 150*1.1 -> all entries with 150 become 165) |
||||
|
||||
* @param werte |
||||
* @throws SQLException |
||||
*/ |
||||
private static void massiveRandomizeDouble(Vector werte) |
||||
throws SQLException { |
||||
Double einWert; |
||||
double zufallswert; |
||||
String upd; |
||||
int i = 0; |
||||
int count = werte.size(); |
||||
for (Enumeration en = werte.elements(); en.hasMoreElements();) { |
||||
einWert = (Double) en.nextElement(); |
||||
i++; |
||||
zufallswert = einWert.doubleValue() * getRndFactor(); |
||||
upd = |
||||
"update " |
||||
+ tablename |
||||
+ " set " |
||||
+ colname |
||||
+ "=" |
||||
+ zufallswert |
||||
+ " where " |
||||
+ colname |
||||
+ "=" |
||||
+ einWert |
||||
+ ";"; |
||||
if (printOutOnly) |
||||
System.out.println(upd); |
||||
else { |
||||
stat.executeUpdate(upd); |
||||
if (i % 20 == 0) |
||||
System.out.println("Done " + i + " updates of " + count); |
||||
} |
||||
|
||||
} |
||||
} |
||||
private static float getRndFactor() { |
||||
double rnd = Math.abs(r.nextDouble()); |
||||
while (rnd < minFactor) |
||||
rnd += minFactor; |
||||
while (rnd > maxFactor) |
||||
rnd -= 0.05; |
||||
return (float) rnd; |
||||
} |
||||
private static Vector readDistinctValues() throws SQLException { |
||||
Vector werte = new Vector(); |
||||
ResultSet rs = null; |
||||
Object item; |
||||
System.out.println( |
||||
"Alle werte einlesen:" |
||||
+ "select distinct " |
||||
+ colname |
||||
+ " from " |
||||
+ tablename |
||||
+ " order by 1 DESC"); |
||||
|
||||
rs = |
||||
stat.executeQuery( |
||||
"select distinct " |
||||
+ colname |
||||
+ " from " |
||||
+ tablename |
||||
+ " order by " |
||||
+ colname |
||||
+ " DESC"); |
||||
while (rs.next()) { |
||||
item = rs.getObject(1); |
||||
werte.add(item); |
||||
} |
||||
rs.close(); |
||||
return werte; |
||||
} |
||||
|
||||
private static void out() { |
||||
try { |
||||
FileWriter fw = |
||||
new FileWriter("c:\\cygwin\\home\\superx\\cob_busa.unl"); |
||||
BufferedWriter bw = new BufferedWriter(fw); |
||||
StringBuffer buf = new StringBuffer(); |
||||
|
||||
ResultSet rs = stat.executeQuery("select * from cob_busa"); |
||||
|
||||
int cols = 20;String s;Object o; |
||||
while (rs.next()) { |
||||
for (int i = 1; i <= cols; i++) |
||||
{o=rs.getObject(i); |
||||
if (o==null) s=""; |
||||
else s=o.toString(); |
||||
|
||||
buf.append(s.trim() + "^");} |
||||
buf.append("^\n"); |
||||
|
||||
} |
||||
rs.close(); |
||||
|
||||
bw.write(buf.toString()); |
||||
bw.close(); |
||||
fw.close(); |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
} |
||||
System.out.println("done"); |
||||
} |
||||
} |
@ -0,0 +1,69 @@
@@ -0,0 +1,69 @@
|
||||
package de.memtext.db.dataexchange; |
||||
|
||||
/** |
||||
* Insert the type's description here. |
||||
* Creation date: (29.11.2002 16:53:06) |
||||
* @author: |
||||
*/ |
||||
public class MyRequest implements java.io.Serializable { |
||||
static final long serialVersionUID = -2L; |
||||
static final int NORMAL=1; |
||||
static final int EXPECT_ONE_UPDATE=2; |
||||
|
||||
private String sql; |
||||
private String name; |
||||
private Object[] params; |
||||
private int type; |
||||
public MyRequest(String name,String sql,Object[] params) |
||||
{ |
||||
this(name,sql,params,NORMAL); |
||||
} |
||||
public MyRequest(String name,String sql,Object[] params,int type) |
||||
{ |
||||
setName(name); |
||||
setSql(sql); |
||||
setParams(params); |
||||
setType(type); |
||||
} |
||||
|
||||
public int getType() |
||||
{ |
||||
return type; |
||||
} |
||||
|
||||
public void setType(int type) |
||||
{ |
||||
this.type=type; |
||||
} |
||||
public String getName() |
||||
{ |
||||
return name; |
||||
} |
||||
|
||||
public void setName(String name) |
||||
{ |
||||
this.name=name; |
||||
} |
||||
|
||||
public Object[] getParams() |
||||
{ |
||||
return params; |
||||
} |
||||
|
||||
public void setParams(Object[] params) |
||||
{ |
||||
this.params=params; |
||||
} |
||||
|
||||
public String getSql() |
||||
{ |
||||
return sql; |
||||
} |
||||
|
||||
public void setSql(String sql) |
||||
{ |
||||
this.sql=sql; |
||||
} |
||||
|
||||
} |
||||
|
@ -0,0 +1,49 @@
@@ -0,0 +1,49 @@
|
||||
package de.memtext.db.dataexchange; |
||||
|
||||
import java.util.Vector; |
||||
/** |
||||
* Insert the type's description here. |
||||
* Creation date: (28.11.2002 19:25:34) |
||||
* @author: |
||||
*/ |
||||
public class MyServletResponse implements java.io.Serializable { |
||||
static final long serialVersionUID = -3L; |
||||
private Vector result; |
||||
private boolean OK; |
||||
private Exception exception; |
||||
private int updatedRowsCount; |
||||
|
||||
/** |
||||
* MyServletResponse constructor comment. |
||||
*/ |
||||
public MyServletResponse(Vector result, boolean OK, Exception exception) { |
||||
this.result = result; |
||||
this.OK = OK; |
||||
this.exception = exception; |
||||
} |
||||
public Exception getException() { |
||||
return exception; |
||||
} |
||||
public Vector getResult() { |
||||
return result; |
||||
} |
||||
public boolean isOK() { |
||||
return OK; |
||||
} |
||||
public void setException(Exception exception) { |
||||
this.exception = exception; |
||||
} |
||||
public void setOK(boolean OK) { |
||||
this.OK = OK; |
||||
} |
||||
public void setResult(Vector result) { |
||||
this.result = result; |
||||
} |
||||
public int getUpdatedRowsCount() { |
||||
return updatedRowsCount; |
||||
} |
||||
|
||||
public void setUpdatedRowsCount(int updatedRowsCount) { |
||||
this.updatedRowsCount = updatedRowsCount; |
||||
} |
||||
} |
@ -0,0 +1,49 @@
@@ -0,0 +1,49 @@
|
||||
package de.memtext.dlg; |
||||
|
||||
import java.awt.Dimension; |
||||
import java.awt.Frame; |
||||
import java.awt.HeadlessException; |
||||
import java.io.IOException; |
||||
|
||||
import javax.swing.JLabel; |
||||
|
||||
import de.memtext.util.BrowserLauncher; |
||||
import de.memtext.util.WindowUtils; |
||||
import de.memtext.widgets.VerticalBox; |
||||
|
||||
public class AboutDialog extends OkDlg { |
||||
private JLabel infoLbl, homepageLabel; |
||||
public AboutDialog( |
||||
Frame parent, |
||||
String title, |
||||
String infoText, |
||||
String homePageLink, |
||||
final String homepageUrl) |
||||
throws HeadlessException { |
||||
super(parent, title); |
||||
infoLbl = new JLabel(infoText); |
||||
homepageLabel = new JLabel("<html><u>" + homePageLink); |
||||
homepageLabel.addMouseListener(new java.awt.event.MouseAdapter() { |
||||
public void mouseClicked(java.awt.event.MouseEvent evt) { |
||||
|
||||
try { |
||||
BrowserLauncher.openURL(homepageUrl); |
||||
} catch (IOException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
}); |
||||
|
||||
VerticalBox vbox = new VerticalBox(); |
||||
vbox.addWithCenterAlignment(infoLbl); |
||||
vbox.addWithCenterAlignment(homepageLabel); |
||||
setCenter(vbox); |
||||
pack(); |
||||
Dimension size = this.getSize(); |
||||
setSize(size.width + 30, size.height + 30); |
||||
WindowUtils.center(this); |
||||
} |
||||
|
||||
} |
||||
|
||||
//Created on 18.06.2004 at 12:20:35
|
@ -0,0 +1,113 @@
@@ -0,0 +1,113 @@
|
||||
package de.memtext.dlg; |
||||
|
||||
import java.awt.BorderLayout; |
||||
import java.awt.Dialog; |
||||
import java.awt.Frame; |
||||
import java.awt.GraphicsConfiguration; |
||||
import java.awt.HeadlessException; |
||||
import java.awt.event.WindowAdapter; |
||||
import java.awt.event.WindowEvent; |
||||
|
||||
import javax.swing.JComponent; |
||||
import javax.swing.JDialog; |
||||
|
||||
public class DialogWithExit extends JDialog { |
||||
|
||||
public DialogWithExit() throws HeadlessException { |
||||
super(); |
||||
initMe(); |
||||
} |
||||
|
||||
public DialogWithExit(Frame owner) throws HeadlessException { |
||||
super(owner); |
||||
initMe(); |
||||
} |
||||
|
||||
public DialogWithExit(Frame owner, boolean arg1) throws HeadlessException { |
||||
super(owner, arg1); |
||||
initMe(); |
||||
} |
||||
|
||||
public DialogWithExit(Frame owner, String arg1) throws HeadlessException { |
||||
super(owner, arg1); |
||||
initMe(); |
||||
} |
||||
|
||||
public DialogWithExit(Frame owner, String arg1, boolean arg2) |
||||
throws HeadlessException { |
||||
super(owner, arg1, arg2); |
||||
initMe(); |
||||
} |
||||
|
||||
public DialogWithExit( |
||||
Frame owner, |
||||
String arg1, |
||||
boolean arg2, |
||||
GraphicsConfiguration arg3) { |
||||
super(owner, arg1, arg2, arg3); |
||||
initMe(); |
||||
} |
||||
|
||||
public DialogWithExit(Dialog owner) throws HeadlessException { |
||||
super(owner); |
||||
initMe(); |
||||
} |
||||
|
||||
public DialogWithExit(Dialog owner, boolean arg1) throws HeadlessException { |
||||
super(owner, arg1); |
||||
initMe(); |
||||
} |
||||
|
||||
public DialogWithExit(Dialog owner, String arg1) throws HeadlessException { |
||||
super(owner, arg1); |
||||
initMe(); |
||||
} |
||||
|
||||
public DialogWithExit(Dialog owner, String arg1, boolean arg2) |
||||
throws HeadlessException { |
||||
super(owner, arg1, arg2); |
||||
} |
||||
|
||||
public DialogWithExit( |
||||
Dialog owner, |
||||
String arg1, |
||||
boolean arg2, |
||||
GraphicsConfiguration arg3) |
||||
throws HeadlessException { |
||||
super(owner, arg1, arg2, arg3); |
||||
initMe(); |
||||
} |
||||
private void initMe(){ |
||||
addWindowListener(new WindowAdapter() { |
||||
public void windowClosing(WindowEvent we) { |
||||
exit(); |
||||
} |
||||
}); |
||||
} |
||||
/** |
||||
* called if window is closed, does nothing by default, |
||||
* subclasses can override |
||||
* |
||||
*/ |
||||
protected void exit() { |
||||
} |
||||
|
||||
//man könnte noch abfragen ob auch wirklich Borderlayout benutzt
|
||||
//wird
|
||||
/** |
||||
* installs a component in the center of the dialog |
||||
* @param comp |
||||
*/ |
||||
public void setCenter(JComponent comp) { |
||||
this.getContentPane().add(comp, BorderLayout.CENTER); |
||||
} |
||||
/** |
||||
* installs a component in the notrh of the dialog |
||||
* @param comp |
||||
*/ |
||||
public void setNorth(JComponent comp) { |
||||
this.getContentPane().add(comp, BorderLayout.NORTH); |
||||
} |
||||
} |
||||
|
||||
//Created on 21.11.2003
|
@ -0,0 +1,57 @@
@@ -0,0 +1,57 @@
|
||||
package de.memtext.dlg; |
||||
|
||||
import java.awt.Component; |
||||
import java.text.ParseException; |
||||
|
||||
import javax.swing.JOptionPane; |
||||
|
||||
import de.memtext.util.DateUtils; |
||||
import de.memtext.widgets.WarningMessage; |
||||
|
||||
public class EnterDateDlg { |
||||
private java.util.Date date; |
||||
private Component parentComp; |
||||
private String title, text; |
||||
|
||||
public EnterDateDlg(Component parentComp, String text, String title) { |
||||
this.parentComp = parentComp; |
||||
this.title = title; |
||||
this.text = text; |
||||
} |
||||
|
||||
public boolean wasOkSelected() |
||||
{ |
||||
return date!=null; |
||||
} |
||||
public void show() { |
||||
date = null; |
||||
String in; |
||||
boolean ok = false; |
||||
while (!ok) { |
||||
in = JOptionPane.showInputDialog(parentComp, text, title, |
||||
JOptionPane.QUESTION_MESSAGE); |
||||
if (in == null) { |
||||
date = null; |
||||
ok = true; |
||||
} else { |
||||
try { |
||||
date = DateUtils.parse(in); |
||||
ok = true; |
||||
} catch (ParseException e) { |
||||
WarningMessage.show(parentComp, "Ungültige Datumseingabe", |
||||
title); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
public static void main(String args[]) { |
||||
new EnterDateDlg(null, "test", "title").show(); |
||||
} |
||||
|
||||
public java.util.Date getDate() { |
||||
return date; |
||||
} |
||||
} |
||||
|
||||
//Created on 18.08.2004 at 12:36:12
|
@ -0,0 +1,63 @@
@@ -0,0 +1,63 @@
|
||||
package de.memtext.dlg; |
||||
|
||||
import java.awt.Frame; |
||||
import java.io.File; |
||||
|
||||
import javax.swing.JLabel; |
||||
|
||||
import de.memtext.util.FilenamesFilter; |
||||
import de.memtext.util.WindowUtils; |
||||
import de.memtext.widgets.FileSelectionPanel; |
||||
import de.memtext.widgets.VerticalBox; |
||||
|
||||
public class ImportDlg extends OkCancelDlg { |
||||
private JLabel lblTop = new JLabel(); |
||||
private FileSelectionPanel fsp = new FileSelectionPanel("Datei"); |
||||
|
||||
public ImportDlg(Frame owner, String title, String infoTxt) { |
||||
super(owner, title, true); |
||||
VerticalBox vbox = new VerticalBox(); |
||||
lblTop.setText(infoTxt); |
||||
vbox.add(lblTop); |
||||
vbox.add(fsp); |
||||
setCenter(vbox); |
||||
this.pack(); |
||||
WindowUtils.center(this); |
||||
|
||||
} |
||||
|
||||
public void setCurrentDir(File defaultdir) |
||||
{ |
||||
fsp.setCurrentDir(defaultdir); |
||||
} |
||||
/** |
||||
|
||||
* @param endings |
||||
*/ |
||||
public void setFileFilter(String endings) { |
||||
fsp.setFileFilter(new FilenamesFilter("CSV oder XML Dateien", endings)); |
||||
} |
||||
|
||||
protected void performOk() { |
||||
this.dispose(); |
||||
} |
||||
|
||||
protected void performCancel() { |
||||
this.dispose(); |
||||
} |
||||
|
||||
public File getSelectedFile() { |
||||
return fsp.getSelectedFile(); |
||||
} |
||||
|
||||
public static void main(String[] args) { |
||||
ImportDlg d = |
||||
new ImportDlg( |
||||
null, |
||||
"titl", |
||||
"Unfälle importieren aus CSV- oder XML-Datei (z.B. Universum Unfallanzeige 3.0)"); |
||||
d.setFileFilter(".xml|.csv"); |
||||
d.show(); |
||||
} |
||||
} |
||||
//Created on 19.02.2004 at 11:56:06
|
@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
|
||||
package de.memtext.dlg; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.Collection; |
||||
import java.util.Iterator; |
||||
|
||||
import javax.swing.JOptionPane; |
||||
|
||||
/** |
||||
Convienience class to create and Input Dialog with JOptionPane. |
||||
I.e. selection item from drop down (combobox) |
||||
*/ |
||||
public class InputDialog { |
||||
private String title, txt; |
||||
private ArrayList list; |
||||
|
||||
public InputDialog(Collection col, String title, String txt) { |
||||
super(); |
||||
this.title = title; |
||||
this.txt = txt; |
||||
list = new ArrayList(); |
||||
if (col==null||col.size()==0) throw new IllegalArgumentException("Collection mustn't be null or empty"); |
||||
for (Iterator it = col.iterator(); it.hasNext();) { |
||||
list.add(it.next()); |
||||
} |
||||
} |
||||
|
||||
public Object show() { |
||||
return JOptionPane.showInputDialog( |
||||
null, |
||||
txt, |
||||
title, |
||||
JOptionPane.QUESTION_MESSAGE, |
||||
null, |
||||
list.toArray(), |
||||
null); |
||||
} |
||||
} |
||||
|
||||
|
@ -0,0 +1,67 @@
@@ -0,0 +1,67 @@
|
||||
package de.memtext.dlg; |
||||
|
||||
import javax.swing.JFrame; |
||||
|
||||
import de.memtext.widgets.LabeledPasswordField; |
||||
import de.memtext.widgets.LabeledTextField; |
||||
import de.memtext.widgets.MultilineEditPanel; |
||||
|
||||
/** |
||||
A Login Dialog |
||||
*/ |
||||
public class LoginDlg extends OkCancelDlg { |
||||
private LabeledTextField lUser = new LabeledTextField("Kennung", 15); |
||||
private LabeledPasswordField lPass = |
||||
new LabeledPasswordField("Passwort", 15); |
||||
public LoginDlg(JFrame frame, String title) { |
||||
super(frame, title,true); |
||||
initdlg(); |
||||
} |
||||
|
||||
private void initdlg() { |
||||
MultilineEditPanel vbox = new MultilineEditPanel(); |
||||
vbox.add(lUser); |
||||
vbox.add(lPass); |
||||
this.setCenter(vbox); |
||||
this.pack(); |
||||
} |
||||
|
||||
protected void performOk() { |
||||
this.hide(); |
||||
} |
||||
public void setUsername(String username) |
||||
{ |
||||
lUser.setValue(username); |
||||
} |
||||
public void setPassword(String password) |
||||
{ |
||||
lPass.setValue(password); |
||||
} |
||||
protected void performCancel() { |
||||
this.hide(); |
||||
} |
||||
public String getUsername() { |
||||
return lUser.getValue().toString(); |
||||
} |
||||
/** |
||||
* can be returned only once, cleared for security reasons |
||||
* afterwards |
||||
* @return |
||||
*/ |
||||
public String getPassword() { |
||||
/* char[] pw = passw.getPassword(); |
||||
String result = new String(pw); |
||||
for (int i = 0; i < pw.length; i++) { |
||||
pw[i] = 0; |
||||
} |
||||
return result; |
||||
*/ |
||||
return lPass.getValue().toString(); |
||||
} |
||||
public static void main(String args[]) { |
||||
LoginDlg d=new LoginDlg(null,"asdf"); |
||||
d.show(); |
||||
System.out.println(d.getPassword()); |
||||
|
||||
} |
||||
} |
@ -0,0 +1,113 @@
@@ -0,0 +1,113 @@
|
||||
package de.memtext.dlg; |
||||
|
||||
import java.awt.Dimension; |
||||
import java.awt.Frame; |
||||
import java.awt.event.WindowAdapter; |
||||
import java.awt.event.WindowEvent; |
||||
|
||||
import javax.swing.JScrollPane; |
||||
import javax.swing.JTree; |
||||
import javax.swing.tree.DefaultTreeModel; |
||||
import javax.swing.tree.TreeCellRenderer; |
||||
import javax.swing.tree.TreeNode; |
||||
|
||||
import de.memtext.util.WindowUtils; |
||||
|
||||
/** |
||||
* A dialog that presents a tree and allows the selection of |
||||
* one node or to clear the selection |
||||
*/ |
||||
public class NodeSelectionDlg extends OkCancelClearDlg { |
||||
private JTree tree; |
||||
private Object selectedNode = null; |
||||
private String title; |
||||
public NodeSelectionDlg(Frame owner, String title, JTree tree) { |
||||
super(owner, title); |
||||
this.tree = tree; |
||||
this.title=title; |
||||
this.setCenter(new JScrollPane(tree)); |
||||
selectedNode = null; |
||||
if (tree.getLastSelectedPathComponent() != null) |
||||
selectedNode = (TreeNode) tree.getLastSelectedPathComponent(); |
||||
this.pack(); |
||||
WindowUtils.center(this); |
||||
addWindowListener(new WindowAdapter() { |
||||
public void windowClosing(WindowEvent we) { |
||||
exit(); |
||||
} |
||||
}); |
||||
} |
||||
/** |
||||
* called if window is closed, does nothing by default, |
||||
* subclasses can override |
||||
* |
||||
*/ |
||||
protected void exit() { |
||||
} |
||||
|
||||
public NodeSelectionDlg( |
||||
Frame owner, |
||||
String title, |
||||
DefaultTreeModel treeModel) { |
||||
this(owner, title, new JTree(treeModel)); |
||||
} |
||||
public NodeSelectionDlg(Frame owner, String title, TreeNode node) { |
||||
this(owner, title, new JTree(node)); |
||||
} |
||||
/** |
||||
* can be overriden by subclasses to perform a check if |
||||
* the selected node is OK |
||||
* @return |
||||
*/ |
||||
protected boolean isSelectedNodeOk(TreeNode testme) |
||||
{ |
||||
return true; |
||||
} |
||||
protected void performOk() { |
||||
if (!isSelectedNodeOk((TreeNode)tree.getLastSelectedPathComponent())) return; |
||||
selectedNode = tree.getLastSelectedPathComponent(); |
||||
this.setVisible(false); |
||||
} |
||||
|
||||
protected void performCancel() { |
||||
this.setVisible(false); |
||||
} |
||||
public TreeNode getSelectedNode() { |
||||
return selectedNode == null ? null : (TreeNode) selectedNode; |
||||
} |
||||
protected void performClear() { |
||||
selectedNode = null; |
||||
tree.clearSelection(); |
||||
this.setVisible(false); |
||||
} |
||||
public void setSize(Dimension dim) { |
||||
super.setSize(dim); |
||||
WindowUtils.center(this); |
||||
} |
||||
public void setSize(int x, int y) { |
||||
super.setSize(x, y); |
||||
WindowUtils.center(this); |
||||
} |
||||
public static void main(String a[]) { |
||||
NodeSelectionDlg t = new NodeSelectionDlg(null, "adsf", new JTree()); |
||||
t.pack(); |
||||
t.show(); |
||||
System.out.println(t.getSelectedNode()); |
||||
t.show(); |
||||
System.out.println(t.getSelectedNode()); |
||||
} |
||||
public void setNode(TreeNode node) { |
||||
tree.setModel(new DefaultTreeModel(node)); |
||||
selectedNode=null; |
||||
} |
||||
public void setCellRenderer(TreeCellRenderer renderer) { |
||||
tree.setCellRenderer(renderer); |
||||
} |
||||
public String getTitle() { |
||||
return title; |
||||
} |
||||
public String getInfoText() { |
||||
return title; |
||||
} |
||||
} |
||||
//Created on 17.11.2003
|
@ -0,0 +1,54 @@
@@ -0,0 +1,54 @@
|
||||
package de.memtext.dlg; |
||||
|
||||
import java.awt.Frame; |
||||
import java.awt.HeadlessException; |
||||
import java.util.Iterator; |
||||
import java.util.LinkedList; |
||||
import java.util.List; |
||||
|
||||
import javax.swing.JScrollPane; |
||||
|
||||
import de.memtext.widgets.ObjectCheckBox; |
||||
import de.memtext.widgets.VerticalBox; |
||||
import de.memtext.util.WindowUtils; |
||||
|
||||
public class ObjectCheckBoxDlg extends OkCancelDlg { |
||||
private List boxList = new LinkedList(); |
||||
private List selectedObjectsList; |
||||
public ObjectCheckBoxDlg(Frame frame, String title, List itemList,boolean selected) |
||||
throws HeadlessException { |
||||
super(frame, title); |
||||
VerticalBox vbox = new VerticalBox(); |
||||
for (Iterator it = itemList.iterator(); it.hasNext();) { |
||||
Object element = (Object) it.next(); |
||||
ObjectCheckBox cb = new ObjectCheckBox(element,selected); |
||||
boxList.add(cb); |
||||
vbox.add(cb); |
||||
} |
||||
this.setCenter(new JScrollPane(vbox)); |
||||
this.pack(); |
||||
WindowUtils.center(this); |
||||
} |
||||
|
||||
protected void performOk() { |
||||
selectedObjectsList=new LinkedList(); |
||||
for (Iterator it = boxList.iterator(); it.hasNext();) { |
||||
ObjectCheckBox element = (ObjectCheckBox) it.next(); |
||||
if (element.isSelected()) |
||||
selectedObjectsList.add(element.getObject()); |
||||
} |
||||
this.hide(); |
||||
} |
||||
|
||||
protected void performCancel() { |
||||
selectedObjectsList=new LinkedList(); |
||||
this.hide(); |
||||
} |
||||
|
||||
public List getSelectedObjectsList() { |
||||
return selectedObjectsList; |
||||
} |
||||
|
||||
} |
||||
|
||||
//Created on 26.11.2003 at 12:47:31
|
@ -0,0 +1,72 @@
@@ -0,0 +1,72 @@
|
||||
package de.memtext.dlg; |
||||
|
||||
import java.awt.Frame; |
||||
import java.awt.HeadlessException; |
||||
import java.awt.event.ActionEvent; |
||||
import java.awt.event.ActionListener; |
||||
|
||||
import javax.swing.JButton; |
||||
import javax.swing.JFrame; |
||||
import javax.swing.JLabel; |
||||
|
||||
/** |
||||
* Abstract Dialog in which OK or Cancel can be clicked. |
||||
* Subclasses must implement performCancel and performOk. |
||||
* setCenter for convenience. |
||||
* |
||||
It's important that clients don't call |
||||
getContentPane().setLayout(new BorderLayout()) or something like that, |
||||
because that will cause southPanel to disappear |
||||
*/ |
||||
public abstract class OkCancelClearDlg |
||||
extends OkCancelDlg |
||||
{ |
||||
private boolean wasClearSelected; |
||||
protected JButton btnClear = new JButton("Leeren"); |
||||
/** |
||||
* Constructor for OkCancelClearDlg. |
||||
* @param arg0 |
||||
* @param arg1 |
||||
* @throws HeadlessException |
||||
*/ |
||||
public OkCancelClearDlg(Frame arg0, String title) |
||||
throws HeadlessException { |
||||
super(arg0, title, true); |
||||
initOkCancelClearDlg(); |
||||
} |
||||
|
||||
private void initOkCancelClearDlg() { |
||||
|
||||
btnClear.setActionCommand("Clear"); |
||||
btnClear.addActionListener(new ActionListener() { |
||||
public void actionPerformed(ActionEvent ae) { |
||||
wasOkSelected = false; |
||||
wasClearSelected = true; |
||||
performClear(); |
||||
} |
||||
}); |
||||
addAfterCancel(btnClear); |
||||
} |
||||
public boolean wasClearSelected() { |
||||
return wasClearSelected; |
||||
} |
||||
protected abstract void performClear(); |
||||
public static void main(String[] args) { |
||||
|
||||
OkCancelClearDlg dlg = new OkCancelClearDlg(new JFrame(), "test") { |
||||
protected void performOk() { |
||||
} |
||||
|
||||
protected void performCancel() { |
||||
} |
||||
|
||||
protected void performClear() { |
||||
} |
||||
}; |
||||
|
||||
// dlg.addAboveOK(new JLabel("bla"));
|
||||
dlg.setCenter(new JLabel("cnter")); |
||||
dlg.pack(); |
||||
dlg.show(); |
||||
} |
||||
} |
@ -0,0 +1,200 @@
@@ -0,0 +1,200 @@
|
||||
package de.memtext.dlg; |
||||
|
||||
import java.awt.BorderLayout; |
||||
import java.awt.Dialog; |
||||
import java.awt.Frame; |
||||
import java.awt.HeadlessException; |
||||
import java.awt.event.ActionEvent; |
||||
import java.awt.event.ActionListener; |
||||
|
||||
import javax.swing.JComponent; |
||||
import javax.swing.JFrame; |
||||
import javax.swing.JLabel; |
||||
|
||||
import de.memtext.widgets.HorizontalBox; |
||||
import de.memtext.widgets.VerticalBox; |
||||
|
||||
/** |
||||
* Abstract Dialog in which OK or Cancel can be clicked. |
||||
* Subclasses must implement performCancel and performOk. |
||||
* setCenter for convenience. |
||||
* |
||||
It's important that clients don't call |
||||
getContentPane().setLayout(new BorderLayout()) or something like that, |
||||
because that will cause southPanel to disappear |
||||
*/ |
||||
public abstract class OkCancelDlg |
||||
extends DialogWithExit |
||||
{ |
||||
private OkCancelPanel pOkCancel; |
||||
private HorizontalBox boxAboverOkCancel = new HorizontalBox(); |
||||
protected boolean wasOkSelected,wasCancelSelected; |
||||
public OkCancelDlg(Frame owner, String title, boolean isModal) { |
||||
super(owner, title, isModal); |
||||
initOkCancelDlg(); |
||||
} |
||||
|
||||
/** |
||||
* Constructor for OkCancelDlg. |
||||
* @param arg0 |
||||
* @param arg1 |
||||
* @param arg2 |
||||
* @throws HeadlessException |
||||
*/ |
||||
public OkCancelDlg(Frame frame, String title) throws HeadlessException { |
||||
super(frame, title, true); |
||||
initOkCancelDlg(); |
||||
} |
||||
|
||||
/** |
||||
* Constructor for OkCancelDlg. |
||||
* @param arg0 |
||||
* @throws HeadlessException |
||||
*/ |
||||
public OkCancelDlg(Dialog arg0) throws HeadlessException { |
||||
super(arg0, true); |
||||
initOkCancelDlg(); |
||||
} |
||||
|
||||
/** |
||||
* Constructor for OkCancelDlg. |
||||
* @param arg0 |
||||
* @param arg1 |
||||
* @throws HeadlessException |
||||
*/ |
||||
public OkCancelDlg(Dialog arg0, String arg1) throws HeadlessException { |
||||
super(arg0, arg1, true); |
||||
initOkCancelDlg(); |
||||
} |
||||
|
||||
private void initOkCancelDlg() { |
||||
//this.setContentPane(new OneTimeInitContentPane());
|
||||
VerticalBox pSouth = new VerticalBox(); |
||||
pOkCancel = new OkCancelPanel(); |
||||
pSouth.add(boxAboverOkCancel); |
||||
pSouth.add(pOkCancel); |
||||
|
||||
this.getContentPane().add(pSouth, BorderLayout.SOUTH); |
||||
pOkCancel.addActionListener(new ActionListener(){ |
||||
public void actionPerformed(ActionEvent ae) |
||||
{ |
||||
String cmd = ae.getActionCommand(); |
||||
if (cmd.equals("OK")) { |
||||
wasOkSelected = true; |
||||
wasCancelSelected=false; |
||||
performOk(); |
||||
} |
||||
|
||||
if (cmd.equals("Cancel")) { |
||||
wasOkSelected = false; |
||||
wasCancelSelected=true; |
||||
performCancel(); |
||||
} |
||||
} |
||||
}); |
||||
this.getRootPane().setDefaultButton(pOkCancel.getBtnOk()); |
||||
} |
||||
public void addAboveOK(JComponent comp) { |
||||
boxAboverOkCancel.add(comp); |
||||
} |
||||
|
||||
public boolean wasOkSelected() { |
||||
return wasOkSelected; |
||||
} |
||||
public boolean wasCancelSelected() { |
||||
return wasCancelSelected; |
||||
} |
||||
/** |
||||
* subclasses must implement this method and specify commands |
||||
* to be executed when OK was clicked |
||||
*/ |
||||
protected abstract void performOk(); |
||||
/** |
||||
* subclasses must implement this method and specify commands |
||||
* to be executed when Cancel was clicked |
||||
* |
||||
*/ |
||||
protected abstract void performCancel(); |
||||
/** |
||||
* Adds a Component before the OK button |
||||
* @param comp |
||||
*/ |
||||
public void addBeforeOK(JComponent comp) { |
||||
int pos = |
||||
de.memtext.util.ComponentUtils.getPositionOnComponent( |
||||
pOkCancel.getBtnOk(), |
||||
pOkCancel); |
||||
pOkCancel.add(comp, pos); |
||||
} |
||||
/** |
||||
* Adds a component right of the OK Button |
||||
* @param comp |
||||
*/ |
||||
public void addAfterOK(JComponent comp) { |
||||
int pos = |
||||
de.memtext.util.ComponentUtils.getPositionOnComponent( |
||||
pOkCancel.getBtnOk(), |
||||
pOkCancel); |
||||
pOkCancel.add(comp, pos + 1); |
||||
} |
||||
/** |
||||
* Adds a component right of the Cancel Button |
||||
* @param comp |
||||
*/ |
||||
public void addAfterCancel(JComponent comp) { |
||||
int pos = |
||||
de.memtext.util.ComponentUtils.getPositionOnComponent( |
||||
pOkCancel.getBtnCancel(), |
||||
pOkCancel); |
||||
pOkCancel.add(comp, pos + 1); |
||||
} |
||||
/* class OneTimeInitContentPane extends Container { |
||||
private int setLayoutCount=0; |
||||
public void setLayout(LayoutManager manager) { |
||||
if (!(manager instanceof BorderLayout)) { |
||||
throw new IllegalArgumentException("OKCancel Dlg must have BorderLayout"); |
||||
} |
||||
super.setLayout(manager); |
||||
setLayoutCount++; |
||||
if (setLayoutCount > 0) { |
||||
System.out.println( |
||||
"changing layout may cause problems in OKCancelDlg"); |
||||
|
||||
} |
||||
} |
||||
}*/ |
||||
|
||||
public void setOkVisible(boolean b) { |
||||
pOkCancel.setOkVisible(b); |
||||
} |
||||
public void setCancelVisible(boolean b) { |
||||
pOkCancel.setCancelVisible(b); |
||||
} |
||||
public boolean requestFocusForOK() { |
||||
return pOkCancel.getBtnOk().requestFocusInWindow(); |
||||
} |
||||
public void setOkBold(boolean b) { |
||||
pOkCancel.setOkBold(b); |
||||
} |
||||
|
||||
public void setOkDefaultButton() { |
||||
this.getRootPane().setDefaultButton(pOkCancel.getBtnOk()); |
||||
} |
||||
|
||||
public static void main(String[] args) { |
||||
|
||||
OkCancelDlg dlg = new OkCancelDlg(new JFrame(), "test") { |
||||
protected void performOk() { |
||||
} |
||||
|
||||
protected void performCancel() { |
||||
} |
||||
}; |
||||
|
||||
// dlg.addAboveOK(new JLabel("bla"));
|
||||
dlg.setCenter(new JLabel("cnter")); |
||||
dlg.pack(); |
||||
dlg.show(); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,56 @@
@@ -0,0 +1,56 @@
|
||||
package de.memtext.dlg; |
||||
|
||||
import java.awt.Font; |
||||
import java.awt.event.ActionListener; |
||||
|
||||
import javax.swing.JButton; |
||||
import javax.swing.JPanel; |
||||
|
||||
/** |
||||
A Panel with an OK and a Cancel button. |
||||
*/ |
||||
public class OkCancelPanel extends JPanel { |
||||
protected JButton btnOk, btnCancel; |
||||
public OkCancelPanel() { |
||||
btnOk = new JButton("OK"); |
||||
btnCancel = new JButton("Abbrechen"); |
||||
btnCancel.setActionCommand("Cancel"); |
||||
add(btnOk); |
||||
add(btnCancel); |
||||
|
||||
} |
||||
public void addActionListener(ActionListener al) { |
||||
btnOk.addActionListener(al); |
||||
btnCancel.addActionListener(al); |
||||
} |
||||
|
||||
/** |
||||
* Returns the btnCancel. |
||||
* @return JButton |
||||
*/ |
||||
public JButton getBtnCancel() { |
||||
return btnCancel; |
||||
} |
||||
|
||||
/** |
||||
* Returns the btnOk. |
||||
* @return JButton |
||||
*/ |
||||
public JButton getBtnOk() { |
||||
return btnOk; |
||||
} |
||||
public void setOkVisible(boolean b) { |
||||
btnOk.setVisible(b); |
||||
} |
||||
public void setCancelVisible(boolean b) { |
||||
btnCancel.setVisible(b); |
||||
} |
||||
public void setOkBold(boolean b) { |
||||
Font f=btnOk.getFont(); |
||||
if (b) |
||||
btnOk.setFont(f.deriveFont(Font.BOLD)); |
||||
else |
||||
btnOk.setFont(f.deriveFont(Font.PLAIN)); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,106 @@
@@ -0,0 +1,106 @@
|
||||
package de.memtext.dlg; |
||||
|
||||
import java.awt.BorderLayout; |
||||
import java.awt.Container; |
||||
import java.awt.Dialog; |
||||
import java.awt.Frame; |
||||
import java.awt.HeadlessException; |
||||
import java.awt.event.ActionEvent; |
||||
import java.awt.event.ActionListener; |
||||
|
||||
import javax.swing.JButton; |
||||
import javax.swing.JComponent; |
||||
import javax.swing.JPanel; |
||||
/** |
||||
* Dialog which can only be closed by clicking OK. |
||||
* |
||||
* setCenter for convenienance. |
||||
* |
||||
* @author MB |
||||
* |
||||
*/ |
||||
|
||||
public class OkDlg extends DialogWithExit { |
||||
private JPanel psouth = new JPanel(); |
||||
protected JButton ok = new JButton("OK"); |
||||
|
||||
/** |
||||
* Constructor for OkDlg. |
||||
* @param arg0 |
||||
* @throws HeadlessException |
||||
*/ |
||||
public OkDlg(Frame owner) throws HeadlessException { |
||||
super(owner,true); |
||||
initSouth(); |
||||
} |
||||
public OkDlg(Frame owner, String title, boolean isModal) { |
||||
super(owner,title,isModal); |
||||
initSouth(); |
||||
} |
||||
|
||||
|
||||
public OkDlg(Frame owner, String title) throws HeadlessException { |
||||
super(owner, title,true); |
||||
initSouth(); |
||||
} |
||||
|
||||
|
||||
public JButton getOkBtn() |
||||
{ |
||||
return ok; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Constructor for OkDlg. |
||||
* @param arg0 |
||||
* @throws HeadlessException |
||||
*/ |
||||
public OkDlg(Dialog arg0) throws HeadlessException { |
||||
super(arg0,true); |
||||
initSouth(); |
||||
} |
||||
|
||||
|
||||
private void initSouth() { |
||||
|
||||
ok.addActionListener(new ActionListener(){ |
||||
public void actionPerformed(ActionEvent ae) |
||||
{ |
||||
performOk(); |
||||
} |
||||
}); |
||||
psouth.add(ok); |
||||
|
||||
Container cp = this.getContentPane(); |
||||
cp.add(psouth, BorderLayout.SOUTH); |
||||
this.getRootPane().setDefaultButton(ok); |
||||
|
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
public void addBeforeOK(JComponent comp) { |
||||
int pos = |
||||
de.memtext.util.ComponentUtils.getPositionOnComponent(ok, psouth); |
||||
psouth.add(comp, pos); |
||||
} |
||||
public void addAfterOK(JComponent comp) { |
||||
int pos = |
||||
de.memtext.util.ComponentUtils.getPositionOnComponent(ok, psouth); |
||||
psouth.add(comp, pos+1); |
||||
} |
||||
/** |
||||
* subclasses can override this method and specify commands |
||||
* to be executed when OK was clicked |
||||
*/ |
||||
protected void performOk() |
||||
{ |
||||
this.hide(); |
||||
} |
||||
public static void main(String args[]) { |
||||
OkDlg d=new OkDlg(new javax.swing.JFrame()); |
||||
d.show(); |
||||
} |
||||
} |
@ -0,0 +1,185 @@
@@ -0,0 +1,185 @@
|
||||
package de.memtext.dlg; |
||||
|
||||
|
||||
|
||||
|
||||
import java.awt.BorderLayout; |
||||
import java.awt.Container; |
||||
import java.awt.Dialog; |
||||
import java.awt.Frame; |
||||
import java.awt.GraphicsConfiguration; |
||||
import java.awt.HeadlessException; |
||||
import java.awt.event.ActionEvent; |
||||
import java.awt.event.ActionListener; |
||||
|
||||
|
||||
/** |
||||
A abstract dialog with OK and DONE buttons. Subclasses must implement |
||||
performDone() and performOK(); |
||||
*/ |
||||
public abstract class OkDoneDlg extends DialogWithExit { |
||||
/** |
||||
* Constructor for OkDoneDlg. |
||||
* @throws HeadlessException |
||||
*/ |
||||
public OkDoneDlg() throws HeadlessException { |
||||
super(); |
||||
initSouth(); |
||||
} |
||||
|
||||
/** |
||||
* Constructor for OkDoneDlg. |
||||
* @param arg0 |
||||
* @throws HeadlessException |
||||
*/ |
||||
public OkDoneDlg(Frame arg0) throws HeadlessException { |
||||
super(arg0); |
||||
initSouth(); |
||||
} |
||||
|
||||
/** |
||||
* Constructor for OkDoneDlg. |
||||
* @param arg0 |
||||
* @param arg1 |
||||
* @throws HeadlessException |
||||
*/ |
||||
public OkDoneDlg(Frame arg0, boolean arg1) throws HeadlessException { |
||||
super(arg0, arg1); |
||||
initSouth(); |
||||
} |
||||
|
||||
/** |
||||
* Constructor for OkDoneDlg. |
||||
* @param arg0 |
||||
* @param arg1 |
||||
* @throws HeadlessException |
||||
*/ |
||||
public OkDoneDlg(Frame arg0, String arg1) throws HeadlessException { |
||||
super(arg0, arg1); |
||||
initSouth(); |
||||
} |
||||
|
||||
/** |
||||
* Constructor for OkDoneDlg. |
||||
* @param arg0 |
||||
* @param arg1 |
||||
* @param arg2 |
||||
* @throws HeadlessException |
||||
*/ |
||||
public OkDoneDlg(Frame arg0, String arg1, boolean arg2) |
||||
throws HeadlessException { |
||||
super(arg0, arg1, arg2); |
||||
initSouth(); |
||||
} |
||||
|
||||
/** |
||||
* Constructor for OkDoneDlg. |
||||
* @param arg0 |
||||
* @param arg1 |
||||
* @param arg2 |
||||
* @param arg3 |
||||
*/ |
||||
public OkDoneDlg( |
||||
Frame arg0, |
||||
String arg1, |
||||
boolean arg2, |
||||
GraphicsConfiguration arg3) { |
||||
super(arg0, arg1, arg2, arg3); |
||||
initSouth(); |
||||
} |
||||
|
||||
/** |
||||
* Constructor for OkDoneDlg. |
||||
* @param arg0 |
||||
* @throws HeadlessException |
||||
*/ |
||||
public OkDoneDlg(Dialog arg0) throws HeadlessException { |
||||
super(arg0); |
||||
initSouth(); |
||||
} |
||||
|
||||
/** |
||||
* Constructor for OkDoneDlg. |
||||
* @param arg0 |
||||
* @param arg1 |
||||
* @throws HeadlessException |
||||
*/ |
||||
public OkDoneDlg(Dialog arg0, boolean arg1) throws HeadlessException { |
||||
super(arg0, arg1); |
||||
initSouth(); |
||||
} |
||||
|
||||
/** |
||||
* Constructor for OkDoneDlg. |
||||
* @param arg0 |
||||
* @param arg1 |
||||
* @throws HeadlessException |
||||
*/ |
||||
public OkDoneDlg(Dialog arg0, String arg1) throws HeadlessException { |
||||
super(arg0, arg1); |
||||
initSouth(); |
||||
} |
||||
|
||||
/** |
||||
* Constructor for OkDoneDlg. |
||||
* @param arg0 |
||||
* @param arg1 |
||||
* @param arg2 |
||||
* @throws HeadlessException |
||||
*/ |
||||
public OkDoneDlg(Dialog arg0, String arg1, boolean arg2) |
||||
throws HeadlessException { |
||||
super(arg0, arg1, arg2); |
||||
initSouth(); |
||||
} |
||||
|
||||
/** |
||||
* Constructor for OkDoneDlg. |
||||
* @param arg0 |
||||
* @param arg1 |
||||
* @param arg2 |
||||
* @param arg3 |
||||
* @throws HeadlessException |
||||
*/ |
||||
public OkDoneDlg( |
||||
Dialog arg0, |
||||
String arg1, |
||||
boolean arg2, |
||||
GraphicsConfiguration arg3) |
||||
throws HeadlessException { |
||||
super(arg0, arg1, arg2, arg3); |
||||
initSouth(); |
||||
} |
||||
|
||||
private void initSouth() { |
||||
OkCancelPanel ocp = new OkCancelPanel(); |
||||
Container cp = this.getContentPane(); |
||||
cp.add(ocp, BorderLayout.SOUTH); |
||||
ocp.addActionListener(new ActionListener(){ |
||||
public void actionPerformed(ActionEvent ae) |
||||
{ |
||||
String cmd = ae.getActionCommand(); |
||||
if (cmd.equals("OK")) { |
||||
performOk(); |
||||
} |
||||
|
||||
if (cmd.equals("Done")) { |
||||
performDone(); |
||||
} |
||||
} |
||||
});; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* subclasses must implement this method and specify commands |
||||
* to be executed when OK was clicked |
||||
*/ |
||||
protected abstract void performOk(); |
||||
/** |
||||
* subclasses must implement this method and specify commands |
||||
* to be executed when DONE was clicked |
||||
*/ |
||||
|
||||
protected abstract void performDone(); |
||||
} |
@ -0,0 +1,32 @@
@@ -0,0 +1,32 @@
|
||||
package de.memtext.dlg; |
||||
|
||||
import java.awt.event.ActionListener; |
||||
|
||||
import javax.swing.JButton; |
||||
import javax.swing.JPanel; |
||||
|
||||
/** |
||||
* @author MB |
||||
* |
||||
* To change this generated comment edit the template variable "typecomment": |
||||
* Window>Preferences>Java>Templates. |
||||
* To enable and disable the creation of type comments go to |
||||
* Window>Preferences>Java>Code Generation. |
||||
*/ |
||||
public class OkDonePanel extends JPanel { |
||||
JButton btnOk,btnDone; |
||||
public OkDonePanel() |
||||
{ |
||||
btnOk=new JButton("OK"); |
||||
btnDone=new JButton("Fertig"); |
||||
add(btnOk); |
||||
add(btnDone); |
||||
} |
||||
public void addActionListener(ActionListener al) |
||||
{ |
||||
btnOk.addActionListener(al); |
||||
btnDone.addActionListener(al); |
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,185 @@
@@ -0,0 +1,185 @@
|
||||
package de.memtext.dlg; |
||||
|
||||
import java.awt.Dimension; |
||||
import java.awt.Font; |
||||
import java.awt.Frame; |
||||
import java.awt.GridLayout; |
||||
import java.awt.event.KeyEvent; |
||||
|
||||
import javax.swing.JLabel; |
||||
import javax.swing.JPanel; |
||||
import javax.swing.JPasswordField; |
||||
import javax.swing.JTextField; |
||||
import javax.swing.KeyStroke; |
||||
|
||||
import de.memtext.rights.NewPasswordChecker; |
||||
import de.memtext.util.WindowUtils; |
||||
import de.memtext.widgets.HorizontalBox; |
||||
import de.memtext.widgets.WarningMessage; |
||||
|
||||
public abstract class PasswdChangeDlg extends OkCancelDlg { |
||||
private JLabel lblInfoDummy=new JLabel(); |
||||
private NewPasswordChecker newPasswordChecker; |
||||
private boolean isCheckOldPasswdWanted = true,isNewPasswordRequired=true; |
||||
private JTextField usernameField = new JTextField(20); |
||||
private KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0); |
||||
private JLabel lblInfo=new JLabel(); |
||||
private JLabel lbl0 = new JLabel("Username:", JLabel.RIGHT); |
||||
private JLabel lbl1 = new JLabel("altes Passwort:", JLabel.RIGHT); |
||||
private JPasswordField oldpasswField = new JPasswordField(30); |
||||
private JLabel lbl2 = new JLabel("neues Passwort:", JLabel.RIGHT); |
||||
private JPasswordField newpasswField = new JPasswordField(30); |
||||
private JLabel lbl3 = new JLabel("wiederholen:", JLabel.RIGHT); |
||||
private JPasswordField newpasswField2 = new JPasswordField(30); |
||||
|
||||
public PasswdChangeDlg(Frame frame, String title) { |
||||
super(frame, title, true); |
||||
JPanel p=new JPanel(); |
||||
p.add(lblInfo); |
||||
HorizontalBox hbox = new HorizontalBox(); |
||||
JPanel lblPanel = new JPanel(new GridLayout(0, 1)); |
||||
lblPanel.setMaximumSize(new Dimension(150, 100)); |
||||
|
||||
|
||||
lblPanel.add(lbl0); |
||||
lblPanel.add(lbl1); |
||||
lblPanel.add(lbl2); |
||||
lblPanel.add(lbl3); |
||||
|
||||
lblInfo.setVisible(false); |
||||
hbox.add(lblPanel); |
||||
JPanel fieldPanel = new JPanel(new GridLayout(0, 1)); |
||||
|
||||
fieldPanel.add(usernameField); |
||||
usernameField.getKeymap().removeKeyStrokeBinding(enter); |
||||
|
||||
fieldPanel.add(oldpasswField); |
||||
oldpasswField.getKeymap().removeKeyStrokeBinding(enter); |
||||
fieldPanel.add(newpasswField); |
||||
newpasswField.getKeymap().removeKeyStrokeBinding(enter); |
||||
fieldPanel.add(newpasswField2); |
||||
newpasswField2.getKeymap().removeKeyStrokeBinding(enter); |
||||
hbox.add(fieldPanel); |
||||
this.setCenter(hbox); |
||||
this.setNorth(p); |
||||
this.pack(); |
||||
WindowUtils.center(this); |
||||
} |
||||
public void setNewPasswordChecker(NewPasswordChecker newPasswordChecker) |
||||
{ |
||||
this.newPasswordChecker=newPasswordChecker; |
||||
} |
||||
public void setUsername(String username) { |
||||
usernameField.setText(username); |
||||
} |
||||
public void clear() { |
||||
usernameField.setText(""); |
||||
oldpasswField.setText(""); |
||||
newpasswField.setText(""); |
||||
newpasswField2.setText(""); |
||||
} |
||||
protected abstract boolean isOldPasswordOK(String username, String passwd); |
||||
|
||||
/** |
||||
* wenn OK geklickt wird wird automatisch geprüft ob die Länge des neuen |
||||
* Passwort passt und beide gleich sind |
||||
*/ |
||||
protected final void performOk() { |
||||
String new1 = new String(newpasswField.getPassword()); |
||||
if (new1==null||new1.length()<4 ) |
||||
{ |
||||
WarningMessage.show(this, |
||||
"Das neue Passwort ist zu kurz.", |
||||
"Achtung"); |
||||
return; |
||||
} |
||||
|
||||
String new2 = new String(newpasswField2.getPassword()); |
||||
String oldPassword = new String(oldpasswField.getPassword()); |
||||
if (!new1.equals(new2)) { |
||||
WarningMessage.show(this, |
||||
"Die beiden neuen Passwörter stimmen nicht überein", |
||||
"Achtung"); |
||||
return; |
||||
} |
||||
String faults=null; |
||||
if (newPasswordChecker!=null) faults=newPasswordChecker.checkForFaults(getUsername(),new String(newpasswField.getPassword())); |
||||
|
||||
if (faults!=null) { |
||||
WarningMessage.show(this, |
||||
faults, |
||||
"Achtung"); |
||||
return; |
||||
} |
||||
|
||||
if (isNewPasswordRequired&&new1.equals(oldPassword)) |
||||
{ |
||||
WarningMessage.show(this,"Sie müssen ein neues Passwort eingeben","Achtung"); |
||||
return; |
||||
} |
||||
|
||||
if (isCheckOldPasswdWanted |
||||
&& !isOldPasswordOK(usernameField.getText(), |
||||
oldPassword)) { |
||||
WarningMessage.show(this,"Das alte Passwort stimmt nicht", "Achtung"); |
||||
return; |
||||
} |
||||
this.hide(); |
||||
} |
||||
|
||||
protected void performCancel() { |
||||
this.hide(); |
||||
} |
||||
|
||||
|
||||
public void setUsernameFieldEnabled(boolean b) { |
||||
usernameField.setEnabled(b); |
||||
} |
||||
public void setOldPassword(String passw) { |
||||
oldpasswField.setText(passw); |
||||
} |
||||
public String getUsername() { |
||||
return usernameField.getText(); |
||||
} |
||||
public String getOldPasswd() { |
||||
return new String(oldpasswField.getPassword()); |
||||
} |
||||
public String getNewPasswd() { |
||||
return new String(newpasswField.getPassword()); |
||||
} |
||||
public boolean isCheckOldPasswdWanted() { |
||||
return isCheckOldPasswdWanted; |
||||
} |
||||
|
||||
public void setCheckOldPasswdWanted(boolean b) { |
||||
isCheckOldPasswdWanted = b; |
||||
lbl1.setVisible(b); |
||||
oldpasswField.setVisible(b); |
||||
} |
||||
public void setInfoLabel(String txt) { |
||||
lblInfo.setVisible(true); |
||||
lblInfo.setText(txt); |
||||
lblInfo.setFont(new Font("SansSerif",Font.BOLD,12)); |
||||
} |
||||
|
||||
public boolean isNewPasswordRequired() { |
||||
return isNewPasswordRequired; |
||||
} |
||||
|
||||
public void setNewPasswordRequired(boolean b) { |
||||
isNewPasswordRequired = b; |
||||
} |
||||
public static void main(String a[]) |
||||
{ |
||||
PasswdChangeDlg dlg=new PasswdChangeDlg(null,"dummy"){ |
||||
|
||||
protected boolean isOldPasswordOK(String username, String passwd) { |
||||
return false; |
||||
}} |
||||
; |
||||
dlg.setInfoLabel("bitte ändern"); |
||||
dlg.show(); |
||||
} |
||||
} |
||||
|
||||
//Created on 09.01.2004 at 17:16:16
|
@ -0,0 +1,122 @@
@@ -0,0 +1,122 @@
|
||||
package de.memtext.hbt; |
||||
|
||||
import java.io.IOException; |
||||
import java.sql.SQLException; |
||||
import java.util.logging.Level; |
||||
import java.util.logging.Logger; |
||||
|
||||
import javax.mail.Flags; |
||||
import javax.mail.Folder; |
||||
import javax.mail.Message; |
||||
import javax.mail.MessagingException; |
||||
import javax.mail.search.FlagTerm; |
||||
|
||||
import de.memtext.util.LogUtils; |
||||
import de.superx.servlet.SxMail; |
||||
import de.superx.servlet.SxPool; |
||||
|
||||
public abstract class AbstractAriel extends Thread { |
||||
// this is defined as private static method to use as little memory as possible,
|
||||
// it would be neglectable in moder computers to create it every time the method
|
||||
// runs, GarbargeCollection would easily do the job
|
||||
// yet I define it that way out of respect for the programmers of beginning in
|
||||
// the 50ies/60ies or whenever
|
||||
// private static FlagTerm flagUnseen = new FlagTerm(new Flags(Flags.Flag.SEEN), true); // ja ich weiß, flagUnseen
|
||||
Flags seen = new Flags(Flags.Flag.RECENT); |
||||
private static FlagTerm flagUnseen = new FlagTerm(new Flags(Flags.Flag.SEEN), false); |
||||
static Flags flagsContainingOnlySeen=new Flags(Flags.Flag.SEEN); |
||||
protected Logger logger=null; |
||||
// wird bisher nicht
|
||||
// benötigt, aber ist doch
|
||||
// klar, dass ich das gleich
|
||||
// nutzen will, dass nervt,
|
||||
// dass die Meldung jetzt
|
||||
// kommt
|
||||
private boolean isActive = true; |
||||
private int interval = 10; |
||||
protected SxMail sxmail; |
||||
|
||||
public AbstractAriel() { |
||||
super(); |
||||
} |
||||
|
||||
public AbstractAriel(Runnable target) { |
||||
super(target); |
||||
} |
||||
|
||||
public AbstractAriel(String name) { |
||||
super(name); |
||||
} |
||||
|
||||
public AbstractAriel(ThreadGroup group, Runnable target) { |
||||
super(group, target); |
||||
} |
||||
|
||||
public AbstractAriel(ThreadGroup group, String name) { |
||||
super(group, name); |
||||
} |
||||
|
||||
public AbstractAriel(Runnable target, String name) { |
||||
super(target, name); |
||||
} |
||||
|
||||
public AbstractAriel(ThreadGroup group, Runnable target, String name) { |
||||
super(group, target, name); |
||||
} |
||||
|
||||
public AbstractAriel(ThreadGroup group, Runnable target, String name, long stackSize) { |
||||
super(group, target, name, stackSize); |
||||
} |
||||
|
||||
public void initLogging()throws IOException |
||||
{ |
||||
String filename=SxPool.getLogDir() + "/superx_" |
||||
+ getArielName() + ".log"; |
||||
LogUtils.initRawFile("superx_" + getArielName(), filename, 20000, 1, true, true); |
||||
System.out.println("Superx Mail logging in "+filename); |
||||
logger=Logger.getLogger("superx_" + getArielName()); |
||||
Level lev = Level.SEVERE; |
||||
logger.setLevel(lev); |
||||
|
||||
|
||||
|
||||
} |
||||
public String getArielName() |
||||
{ |
||||
return "mail"; |
||||
} |
||||
public void run() { |
||||
while (isActive) { |
||||
try { |
||||
Thread.sleep(interval * 1000); |
||||
|
||||
} catch (InterruptedException e) { |
||||
// e.printStackTrace();
|
||||
} |
||||
|
||||
try { |
||||
|
||||
logger.log(Level.INFO,"SuperX is checking mails for new heartbeats..."); |
||||
|
||||
|
||||
Folder inbox=sxmail.getInbox(); |
||||
//if (inbox.hasNewMessages())
|
||||
processNewMessages(inbox.getMessages()); // processed messages will be deleted -> don#t need inbox.search(flagUnseen)); // former first attempt was : processNewMessages(inbox.getMessages()); // should be in differnt colour (<- British English)
|
||||
|
||||
sxmail.closeInbox(); //deletes marked mails
|
||||
} catch (Exception e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
} |
||||
} |
||||
|
||||
abstract void processNewMessages(Message[] messages) throws MessagingException, IOException, SQLException; |
||||
|
||||
public void setActive(boolean isActive) { |
||||
this.isActive=isActive; |
||||
|
||||
} |
||||
|
||||
} |
@ -0,0 +1,96 @@
@@ -0,0 +1,96 @@
|
||||
package de.memtext.hbt; |
||||
|
||||
import java.io.IOException; |
||||
import java.util.Properties; |
||||
|
||||
import javax.mail.Folder; |
||||
import javax.mail.Message; |
||||
import javax.mail.MessagingException; |
||||
import javax.mail.Session; |
||||
import javax.mail.Store; |
||||
import javax.mail.Transport; |
||||
import javax.mail.internet.AddressException; |
||||
import javax.mail.internet.InternetAddress; |
||||
import javax.mail.internet.MimeMessage; |
||||
|
||||
public class Checker { |
||||
|
||||
public static void check(Session emailSession, String user, String password) |
||||
throws MessagingException, IOException { |
||||
|
||||
// create the POP3 store object and connect with the pop server
|
||||
// pop3s wichtig -> vermutlich secure
|
||||
Store store = emailSession.getStore("pop3s"); |
||||
store.connect(emailSession.getProperty("mail.pop3.host"), user, password); |
||||
|
||||
Folder emailFolder = store.getFolder("INBOX"); |
||||
emailFolder.open(Folder.READ_ONLY); |
||||
|
||||
// messages werden geholt, können nur ausgelesen werden, wenn Folder noch open
|
||||
// ist!
|
||||
Message[] messages = emailFolder.getMessages(); |
||||
|
||||
System.out.println("messages.length---" + messages.length); |
||||
|
||||
for (int i = 0, n = messages.length; i < n; i++) { |
||||
Message message = messages[i]; |
||||
System.out.println("---------------------------------"); |
||||
System.out.println("Email Number " + (i + 1)); |
||||
System.out.println("Subject: " + message.getSubject()); |
||||
System.out.println("From: " + message.getFrom()[0]); |
||||
System.out.println("Text: " + message.getContent().toString()); |
||||
|
||||
} |
||||
|
||||
// close the store and folder objects
|
||||
emailFolder.close(false); |
||||
store.close(); |
||||
|
||||
} |
||||
|
||||
private static void send(Session emailSession, String user, String recipient, String subject, String text, |
||||
String password) throws AddressException, MessagingException { |
||||
MimeMessage replyMessage = new MimeMessage(emailSession); |
||||
// replyMessage = (MimeMessage) message.reply(false);
|
||||
replyMessage.setFrom(new InternetAddress(user)); |
||||
replyMessage.setRecipients(Message.RecipientType.TO, recipient); |
||||
replyMessage.setSubject(subject); |
||||
replyMessage.setText(text); |
||||
Transport t = emailSession.getTransport("smtp"); |
||||
t.connect(user, password); |
||||
t.sendMessage(replyMessage, replyMessage.getAllRecipients()); |
||||
System.out.println("Message sent..."); |
||||
} |
||||
|
||||
private static Session initSession(String pophost, String smtphost) { |
||||
Properties properties = new Properties(); |
||||
properties.put("mail.pop3.host", pophost); |
||||
properties.put("mail.pop3.port", "995"); |
||||
properties.put("mail.pop3.starttls.enable", "true"); |
||||
properties.put("mail.smtp.auth", "true"); |
||||
properties.put("mail.smtp.starttls.enable", "true"); |
||||
properties.put("mail.smtp.host", smtphost); |
||||
properties.put("mail.smtp.port", "25"); |
||||
return Session.getDefaultInstance(properties); |
||||
} |
||||
|
||||
public static void main(String[] args) { |
||||
Session session = initSession("pop3.strato.de", "smtp.strato.de"); |
||||
String username = "heartbeat@mbisping.de"; |
||||
String password = "$Anfang1200"; |
||||
|
||||
try { |
||||
check(session, username, password); |
||||
send(session, username, "danielq@memtext.de", "From Düsseldorf with fun...", "This is the memtext's first digitial 'heartbeat' :-)\n send via java mail - \nThanks and see you around :-)", |
||||
password); |
||||
} catch (MessagingException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} catch (IOException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
} |
||||
|
||||
} |
@ -0,0 +1,293 @@
@@ -0,0 +1,293 @@
|
||||
package de.memtext.hbt; |
||||
|
||||
import java.io.File; |
||||
import java.io.FileOutputStream; |
||||
import java.io.IOException; |
||||
import java.io.InputStream; |
||||
import java.sql.Connection; |
||||
import java.sql.PreparedStatement; |
||||
import java.sql.SQLException; |
||||
import java.sql.Statement; |
||||
import java.util.logging.Level; |
||||
import java.util.regex.Matcher; |
||||
import java.util.regex.Pattern; |
||||
|
||||
import javax.mail.BodyPart; |
||||
import javax.mail.Flags; |
||||
import javax.mail.Message; |
||||
import javax.mail.MessagingException; |
||||
import javax.mail.Multipart; |
||||
import javax.mail.Part; |
||||
import javax.mail.internet.AddressException; |
||||
import javax.mail.internet.MimeMessage; |
||||
|
||||
import clover.com.atlassian.extras.common.org.springframework.util.StringUtils; |
||||
import de.memtext.db.DbUtils; |
||||
import de.memtext.util.FileUtils; |
||||
import de.memtext.util.MailUtils; |
||||
import de.superx.servlet.SuperXManager; |
||||
import de.superx.servlet.SxMail; |
||||
import de.superx.servlet.SxPools; |
||||
|
||||
public class NewHeartBeatAriel extends AbstractAriel { |
||||
private static final Pattern pHbtId = Pattern.compile("@hbt:\\d*@"); |
||||
|
||||
public NewHeartBeatAriel(SxMail sxmail) throws IOException { |
||||
this.sxmail = sxmail; |
||||
initLogging(); |
||||
} |
||||
|
||||
void processNewMessages(Message newMessages[]) throws MessagingException, IOException, SQLException { |
||||
|
||||
|
||||
logger.log(Level.INFO," found " + newMessages.length + " new messages"); |
||||
for (int i = 0, n = newMessages.length; i < n; i++) { |
||||
Message aNewMessage = newMessages[i]; |
||||
|
||||
String content = MailUtils.getContent(aNewMessage); |
||||
if (content.indexOf("@hbt:") == -1) |
||||
createNewHeartBeat(aNewMessage, content); |
||||
else |
||||
appendToHeartBeat(aNewMessage, content); |
||||
// had thought setting via inbox nessary, but that's only the preferred way to
|
||||
// set flags for group of messages since some mail implementations by have
|
||||
// optimized support for groups of messages
|
||||
// inbox.setFlags(new Message[] {message}, , true);
|
||||
// message.setFlags(flagsContainingOnlySeen, true);
|
||||
// unseen wäre schöner, mailapi.jar aktualisieren bei HIS Antrag
|
||||
// nötig,vielleicht klappt mit delete
|
||||
aNewMessage.setFlag(Flags.Flag.DELETED, true); // AbstractAriel.run ruft sxmail.closeInbox() auf mit
|
||||
// Anweisung zu löschen
|
||||
|
||||
// sorry to bother you, Garbage collector , need message only to times, hey or
|
||||
// doesn't that matter anyway since only a simple reference (like in good old
|
||||
// C), but clearer/easier to read if line Message message=.. was superfolous
|
||||
|
||||
} |
||||
} |
||||
|
||||
private void appendToHeartBeat(Message message, String content) |
||||
throws SQLException, IOException, MessagingException { |
||||
StringBuffer result = new StringBuffer(); |
||||
int hbtTid = -1; |
||||
Connection con = SxPools.getConnection(sxmail.getMandantenID()); |
||||
Statement stm = con.createStatement(); |
||||
boolean isHbtFoundInDb = false; |
||||
String feedbackSubject = ""; |
||||
Matcher m = pHbtId.matcher(content); |
||||
boolean foundHbtTag=m.find(); |
||||
if (foundHbtTag) { |
||||
String hbtIdString = content.substring(m.start() + 5, m.end() - 1); |
||||
content=content.replaceAll("@hbt:\\d*@", ""); |
||||
try { |
||||
hbtTid = Integer.parseInt(hbtIdString); |
||||
if (DbUtils.getInt(con, "select count(*) from hbt_heartbeat where tid=?", hbtTid) > 0) |
||||
isHbtFoundInDb = true; |
||||
} catch (NumberFormatException e) { |
||||
result.append(" hbt:" + hbtIdString |
||||
+ " konnte nicht in integer transformiert werden, Nachricht wird zwischengespeichert"); |
||||
isHbtFoundInDb = false; |
||||
} |
||||
if (isHbtFoundInDb) { |
||||
// TODO ggfs. mehrer Topics
|
||||
int maxTopic = DbUtils.getInt(con, "select max(tid) from hbt_topic where hbt_id=?", hbtTid); |
||||
// int maxNote = DbUtils.getInt(stm, "select max(tid) from hbt_note where
|
||||
// hbt_id=" + hbtTid + " hbt_topic_id=" + maxTopic);
|
||||
int newNoteId = createNote(con, stm, hbtTid, maxTopic, message, content); |
||||
feedbackSubject = "Your new note was added to Heartbeat " + hbtTid; |
||||
result.append("Feel free to view this HeartBeat by visiting " + sxmail.getWTFAI() |
||||
+ "/edit/hbt/hbt_viewer.jsp?tid=" + hbtTid + " \n\n" + "Always at your service: \n" |
||||
+ " your HeartBeatAriel @ SuperX"); |
||||
|
||||
} |
||||
} |
||||
|
||||
if (!foundHbtTag || !isHbtFoundInDb) { |
||||
feedbackSubject = "Sorry, target hbt found found ..."; |
||||
PreparedStatement pst=con.prepareStatement("insert into hbt_tmp_note (note) values (?)"); |
||||
pst.setString(1,content); |
||||
pst.execute(); |
||||
pst.close(); |
||||
int newNoteId=DbUtils.getInt(stm, "select max(tid) from hbt_tmp_note"); |
||||
result.append("you can select the right hbt_id by visiting " + sxmail.getWTFAI()+"/servlet/SuperXmlMaske?tid=60040?note_id="+newNoteId); |
||||
} |
||||
stm.close(); |
||||
con.close(); |
||||
sendFeedbackEmail(feedbackSubject, result.toString(), message); |
||||
} |
||||
|
||||
private void createNewHeartBeat(Message inMessage, String content) |
||||
throws SQLException, MessagingException, IOException { |
||||
int newHbtTid = performHbtInsert(inMessage, content); |
||||
String text = "Feel free to complete this heartbeat's details by visiting " + sxmail.getWTFAI() |
||||
+ "/edit/hbt/hbt_edit.jsp?tid=" + newHbtTid + " \n\n" + "Always at your service: \n" |
||||
+ " your HeartBeatAriel @ SuperX"; |
||||
sendFeedbackEmail("Your new digital heartbeat has been created ...", text, inMessage); |
||||
} |
||||
|
||||
/** |
||||
* Performs the creation of a new HeartBeat in the database |
||||
* |
||||
* @param message |
||||
* @return newHbtTid |
||||
* @throws SQLException |
||||
* @throws MessagingException |
||||
* @throws IOException |
||||
*/ |
||||
private int performHbtInsert(Message m, String content) throws SQLException, IOException, MessagingException { |
||||
Connection con = SxPools.getConnection(sxmail.getMandantenID()); |
||||
Statement stm = con.createStatement(); |
||||
|
||||
int newHbtTid = createHbt(con, stm, content, m.getSubject()); |
||||
int newTopicId = createTopic(stm, newHbtTid); |
||||
createNote(con, stm, newHbtTid, newTopicId, m, content); |
||||
con.close(); |
||||
return newHbtTid; |
||||
} |
||||
|
||||
private int createHbt(Connection dbConnection, Statement stm, String content, String subject) |
||||
throws IOException, MessagingException, SQLException { |
||||
String primary_customer_id = identifyPrimaryCustomerId(dbConnection, stm, content); |
||||
String name = StringUtils.replace(subject, "'", "''");// for SQL insert
|
||||
// Sql insert - fuck prepared statements, nobody hacks this, I don't give a
|
||||
// shit, not worth my extra time or effort, I want to get things done now while
|
||||
// having fun :-)
|
||||
stm.execute("select sp_update_sequence('hbt_heartbeat')"); |
||||
String insertSql = "INSERT INTO hbt_heartbeat \n" + "( primary_customer_id,name," + " created_at, \n" |
||||
+ " status \n" + ") \n" + "VALUES \n" + "( " + primary_customer_id + ",'" + name + "', " |
||||
+ " today(), \n" + " 1 \n" + ") " + ""; |
||||
stm.execute(insertSql); |
||||
int newHbtTid = DbUtils.getInt(stm, "select max(tid) from hbt_heartbeat"); |
||||
return newHbtTid; |
||||
} |
||||
|
||||
/** |
||||
* |
||||
* Wenn im Text der weitergeleiteten Email der Absender mit @@ markiert ist, |
||||
* z.B. @@hiber@his.de@@, diesen auslesen zugehörige Organisation auslesen |
||||
* |
||||
* @param m |
||||
* @return String null oder key_apnr z.B. '1001' |
||||
* @throws IOException |
||||
* @throws MessagingException |
||||
* @throws SQLException |
||||
*/ |
||||
private String identifyPrimaryCustomerId(Connection con, Statement stm, String content) |
||||
throws IOException, MessagingException, SQLException { |
||||
String result = "null"; |
||||
int pos1 = content.indexOf("@@"); |
||||
int pos2 = content.substring(pos1 + 2).indexOf("@@"); |
||||
if (pos1 > -1 && pos2 > -1) { |
||||
String absender = content.substring(pos1 + 2); |
||||
absender = absender.substring(0, absender.lastIndexOf("@@")); |
||||
logger.log(Level.INFO," checking customer " + absender); |
||||
int userinfo_id = DbUtils.getInt(con, "select tid from userinfo where email=?", absender); |
||||
result = DbUtils.getString(stm, |
||||
"select min(ch110_institut) from user_institution where userid=" + userinfo_id); |
||||
|
||||
if (result == null) |
||||
result = "null"; |
||||
else |
||||
result = "'" + result + "'"; |
||||
} |
||||
return result; |
||||
} |
||||
|
||||
private int createTopic(Statement stm, int newHbtTid) throws SQLException { |
||||
stm.execute("select sp_update_sequence('hbt_topic')"); |
||||
String insertSql = "INSERT INTO hbt_topic \n" + "( hbt_id,name, created_at)" + "VALUES (" + newHbtTid |
||||
+ ",'Start',now() )"; |
||||
stm.execute(insertSql); |
||||
int newTopicId = DbUtils.getInt(stm, "select max(tid) from hbt_topic"); |
||||
return newTopicId; |
||||
} |
||||
|
||||
private int createNote(Connection con, Statement stm, int hbtId, int topicId, Message m, String content) |
||||
throws IOException, MessagingException, SQLException { |
||||
stm.execute("select sp_update_sequence('hbt_note')"); |
||||
PreparedStatement pst = con |
||||
.prepareStatement(" INSERT INTO hbt_note (hbt_id,hbt_topic_id,note, created_at) VALUES (?,?,?,now());"); |
||||
pst.setInt(1, hbtId); |
||||
pst.setInt(2, topicId); |
||||
|
||||
pst.setString(3, content); |
||||
pst.execute(); |
||||
pst.close(); |
||||
int newNoteId = DbUtils.getInt(stm, "select max(tid) from hbt_note"); |
||||
saveAttachments(stm, hbtId, topicId, newNoteId, m); |
||||
return newNoteId; |
||||
} |
||||
|
||||
private void saveAttachments(Statement stm, int newHbtTid, int newTopicId, int newNoteId, Message m) |
||||
throws IOException, MessagingException, SQLException { |
||||
// List<String> attachments = new ArrayList<String>();
|
||||
Object content = m.getContent(); |
||||
// if (content instanceof String) return null;
|
||||
|
||||
if (content instanceof Multipart) { |
||||
Multipart multipart = (Multipart) content; |
||||
for (int i = 0; i < multipart.getCount(); i++) { |
||||
BodyPart part = multipart.getBodyPart(i); |
||||
logger.log(Level.INFO,part.getFileName() + " " + part.getContentType() + " " + part.getDisposition()); |
||||
if (part.getDisposition() != null && part.getDisposition().equalsIgnoreCase(Part.ATTACHMENT)) { |
||||
// result.addAll(getAttachments(multipart.getBodyPart(i)));
|
||||
String filename = SuperXManager.getWEB_INFPfad()+"/downloads/hbt_"+newHbtTid+"_" +newNoteId+"_"+FileUtils.removeProblemChars(part.getFileName()); |
||||
sxDownloadsInsert(stm, newHbtTid, newTopicId, newNoteId, filename, part.getContentType()); |
||||
// javaxmail >1.4 bodyPart.saveFile(filename);
|
||||
// old version
|
||||
InputStream is = part.getInputStream(); |
||||
File f = new File(filename); |
||||
FileOutputStream fos = new FileOutputStream(f); |
||||
byte[] buf = new byte[4096]; |
||||
int bytesRead; |
||||
while ((bytesRead = is.read(buf)) != -1) { |
||||
fos.write(buf, 0, bytesRead); |
||||
} |
||||
fos.close(); |
||||
logger.log(Level.INFO," saving attachment " + (i++) + " as " + filename); |
||||
} |
||||
} |
||||
|
||||
} |
||||
|
||||
} |
||||
|
||||
private void sxDownloadsInsert(Statement stm, int newHbtTid, int newTopicId, int newNoteId, String filename, |
||||
String contenttype) throws SQLException { |
||||
stm.execute("select sp_update_sequence('sx_downloads')"); |
||||
String filenameShort = filename.substring(filename.indexOf(File.separator + "hbt") + 1); |
||||
String insertSQLSxDownloads = "INSERT INTO sx_downloads \n" + "( \n" + " name, \n" + " importdatum, \n" |
||||
+ " kommentar, \n" + " kommentar_url, \n" + " contenttype, \n" + " datei, \n" + " gueltig_seit, \n" |
||||
+ " gueltig_bis \n" + ") \n" + "VALUES \n" + "( \n" + " '" + filenameShort + "', \n" + " today(), \n" |
||||
+ " 'kommentar_value', \n" + " 'kommentar_url_value', \n" + " '" + contenttype + "', \n" + " '" |
||||
+ filenameShort + "', \n" + " today(), \n" + " date_val('1.1.3000') \n" + ") \n" + ""; |
||||
stm.execute(insertSQLSxDownloads); |
||||
int newDownloadTid = DbUtils.getInt(stm, "select max(tid) from sx_downloads"); |
||||
stm.executeUpdate("insert into hbt_attachment (hbt_id,topic_id,note_id,download_id) values (" + newHbtTid + "," |
||||
+ newTopicId + "," + newNoteId + "," + newDownloadTid + ")"); |
||||
} |
||||
|
||||
/** |
||||
* sendFeedBackEmail -- hier hätte ich gern automatisch newline in Zeile 60 |
||||
* direkt unter createNewHeartBeat automatisch erzeugt, dann nach weiter unten |
||||
* im Quelltext verlagert, damit von der Reihenfolge in |
||||
* createNewHeartBeat(Message message) her passt |
||||
* |
||||
* @param newHbtTid : tid von neuem HeartBeat in der Datenbank |
||||
* @param inMessage |
||||
* @throws MessagingException |
||||
* @throws AddressException |
||||
*/ |
||||
private void sendFeedbackEmail(String subject, String text, Message inMessage) |
||||
throws AddressException, MessagingException { |
||||
MimeMessage reply = sxmail.createMessage(); |
||||
reply.setRecipients(Message.RecipientType.TO, inMessage.getFrom()); |
||||
reply.setSubject(subject); |
||||
reply.setText(text); |
||||
sxmail.setMessage(reply); |
||||
|
||||
logger.log(Level.INFO,"Reply message happily sent..."); |
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
|
||||
package de.memtext.icons; |
||||
|
||||
import java.awt.Graphics; |
||||
|
||||
public class ArrowDownIcon extends BasicIcon { |
||||
public void myPaint(Graphics g) { |
||||
drawArrowDown(g, 6); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,13 @@
@@ -0,0 +1,13 @@
|
||||
package de.memtext.icons; |
||||
|
||||
import java.awt.Graphics; |
||||
|
||||
public class ArrowRight extends BasicIcon { |
||||
|
||||
void myPaint(Graphics g) { |
||||
drawArrowRight(g); |
||||
} |
||||
|
||||
} |
||||
|
||||
//Created on 17.04.2004 at 21:42:08
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue