OSDN Git Service

Applied a patch provided by Flavio Sugimoto
authorleo <leo@ae02f08e-27ec-0310-ae8c-8ba02fe2eafd>
Thu, 17 Sep 2009 02:10:46 +0000 (02:10 +0000)
committerleo <leo@ae02f08e-27ec-0310-ae8c-8ba02fe2eafd>
Thu, 17 Sep 2009 02:10:46 +0000 (02:10 +0000)
git-svn-id: http://www.xerial.org/svn/project/XerialJ/trunk/sqlite-jdbc@3597 ae02f08e-27ec-0310-ae8c-8ba02fe2eafd

16 files changed:
.classpath
.externalToolBuilders/Maven_Ant_Builder.launch [new file with mode: 0644]
.project
VERSION
maven-eclipse.xml [new file with mode: 0644]
pom.xml
sqlitejdbc/Makefile
sqlitejdbc/Makefile.common
sqlitejdbc/Makefile.nested
sqlitejdbc/Makefile.release [deleted file]
sqlitejdbc/VERSION [deleted file]
src/main/java/org/sqlite/JDBC.java
src/main/java/org/sqlite/MetaData.java
src/main/java/org/sqlite/SQLiteJDBCLoader.java
src/test/java/org/sqlite/DBMetaDataTest.java
src/test/java/org/sqlite/JDBCTest.java

index b1e22bf..59c6b7d 100644 (file)
@@ -3,7 +3,7 @@
   <classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>\r
   <classpathentry kind="src" path="src/main/java"/>\r
   <classpathentry kind="src" path="src/main/resources" including="native/**|org/**" excluding="**/*.java"/>\r
-  <classpathentry kind="src" path="." including="VERSION" excluding="**/*.java"/>\r
+  <classpathentry kind="src" path="." including="VERSION|LICENSE*" excluding="**/*.java"/>\r
   <classpathentry kind="output" path="target/classes"/>\r
   <classpathentry kind="var" path="M2_REPO/org/xerial/thirdparty/jdbc-api/1.4/jdbc-api-1.4.jar"/>\r
   <classpathentry kind="var" path="M2_REPO/junit/junit/4.1/junit-4.1.jar"/>\r
diff --git a/.externalToolBuilders/Maven_Ant_Builder.launch b/.externalToolBuilders/Maven_Ant_Builder.launch
new file mode 100644 (file)
index 0000000..a1768b9
--- /dev/null
@@ -0,0 +1,24 @@
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">\r
+  <booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>\r
+  <stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,auto,clean"/>\r
+  <booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>\r
+  <booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>\r
+  <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="sqlite-jdbc"/>\r
+  <booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>\r
+  <stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${build_project}/maven-eclipse.xml"/>\r
+  <stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${build_project}"/>\r
+  <stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${project}"/>\r
+  <booleanAttribute key="org.eclipse.debug.core.capture_output" value="false"/>\r
+  <stringAttribute key="org.eclipse.ui.externaltools.ATTR_BUILD_SCOPE" value="${working_set:&lt;?xml version=&apos;1.0&apos;?&gt;&lt;launchConfigurationWorkingSet editPageId=&apos;org.eclipse.ui.resourceWorkingSetPage&apos; factoryID=&apos;org.eclipse.ui.internal.WorkingSetFactory&apos; label=&apos;workingSet&apos; name=&apos;workingSet&apos;&gt;&lt;item factoryID=&apos;org.eclipse.ui.internal.model.ResourceFactory&apos; path=&apos;sqlite-jdbc&apos; type=&apos;4&apos;/&gt;&lt;/launchConfigurationWorkingSet&gt;}"/>\r
+  <stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>\r
+  <booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>\r
+  <booleanAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_OUTPUT_ON" value="false"/>\r
+  <booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>\r
+  <stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>\r
+  <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">\r
+    <listEntry value="1"/>\r
+  </listAttribute>\r
+  <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">\r
+    <listEntry value="/sqlite-jdbc/maven-eclipse.xml"/>\r
+  </listAttribute>\r
+</launchConfiguration>
\ No newline at end of file
index f256767..8c1d9f8 100644 (file)
--- a/.project
+++ b/.project
@@ -6,6 +6,15 @@
     <buildCommand>\r
       <name>org.eclipse.jdt.core.javabuilder</name>\r
     </buildCommand>\r
+    <buildCommand>\r
+      <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>\r
+      <arguments>\r
+        <dictionary>\r
+          <key>LaunchConfigHandle</key>\r
+          <value>&lt;project&gt;/.externalToolBuilders/Maven_Ant_Builder.launch</value>\r
+        </dictionary>\r
+      </arguments>\r
+    </buildCommand>\r
   </buildSpec>\r
   <natures>\r
     <nature>org.eclipse.jdt.core.javanature</nature>\r
diff --git a/VERSION b/VERSION
index 3ea288a..349ab4b 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-sqlite_version = 3.6.17
+version = 3.6.17
diff --git a/maven-eclipse.xml b/maven-eclipse.xml
new file mode 100644 (file)
index 0000000..abfad11
--- /dev/null
@@ -0,0 +1,8 @@
+<project default="copy-resources">\r
+  <target name="init"/>\r
+  <target name="copy-resources" depends="init">\r
+    <copy todir="target/classes/META-INF/maven/org.xerial/sqlite-jdbc" filtering="false">\r
+      <fileset dir="." includes="VERSION|LICENSE*" excludes="**/*.java"/>\r
+    </copy>\r
+  </target>\r
+</project>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index ab16243..4273031 100644 (file)
--- a/pom.xml
+++ b/pom.xml
       </resource>\r
       <resource>\r
         <directory>${basedir}</directory>\r
+        <targetPath>META-INF/maven/${groupId}/${artifactId}</targetPath>\r
         <includes>\r
           <include>VERSION</include>\r
+          <include>LICENSE*</include>\r
         </includes>\r
       </resource>\r
     </resources>\r
index 46f1457..d87a120 100644 (file)
@@ -21,15 +21,10 @@ SRC_FOLDER=../src/main/java/org/sqlite/
 
 default: test
 
-test: native $(test_classes)
-       $(JAVA) -Djava.library.path=build/$(target) \
-           -cp "build/$(sqlitejdbc)-native.jar$(sep)build$(sep)$(libjunit)" \
-           org.junit.runner.JUnitCore $(tests)
+test: native 
 
-native: build/$(sqlitejdbc)-native.jar build/$(target)/$(LIBNAME)
+native: build/$(target)/$(LIBNAME)
        
-build/$(sqlitejdbc)-native.jar: $(native_classes)
-       cd build && jar cf $(sqlitejdbc)-native.jar $(java_classlist)
 
 build/$(target)/$(LIBNAME): build/$(sqlite)-$(target)/sqlite3.o build/org/sqlite/NativeDB.class
        @mkdir -p build/$(target)
index ccfc2f7..5994c04 100644 (file)
@@ -30,9 +30,7 @@ ifeq ($(arch),)
 arch := $(shell uname -m)
 endif
 
-sqlite := sqlite-$(sqlite_version)
-
-sqlitejdbc := sqlitejdbc-v$(shell cat VERSION)
+sqlite := sqlite-$(version)
 
 jni_md := $(shell find -L "$(JAVA_HOME)" -name jni_md.h)
 ifneq ($(jni_md),)
index b7b6d17..810d501 100644 (file)
@@ -5,25 +5,7 @@ nestedvm := nestedvm-$(nestedvm_version)
 
 default: test
 
-test: dist/$(sqlitejdbc)-pure.jar $(test_classes)
-       $(JAVA) -cp "dist/$(sqlitejdbc)-pure.jar$(sep)build$(sep)$(libjunit)" \
-           org.junit.runner.JUnitCore $(tests)
-
-dist/$(sqlitejdbc)-pure.jar: build/org/sqlite/SQLite.class $(java_classes)
-       @mkdir -p dist
-       cd build && jar cf ../$@ \
-           org/sqlite/SQLite.class $(java_classlist) \
-           -C ../$(nestedvm)/build org/ibex
-
-build/org/sqlite/%.class: ../src/main/java/org/sqlite/%.java
-       @mkdir -p build
-       $(JAVAC) -source 1.5 -target 1.5 -classpath "$(nestedvm)/build" \
-           -sourcepath ../src/main/java -d build $<
-
-build/test/org/sqlite/%.class: ../src/test/java/org/sqlite/%.java
-       @mkdir -p build/test
-       $(JAVAC) -target 1.5 -classpath "build$(sep)$(libjunit)" \
-           -sourcepath ../src/test/java -d build/test $<
+test: build/org/sqlite/SQLite.class
 
 $(nestedvm)/%:
        $(MAKE) -C $(nestedvm) $*
diff --git a/sqlitejdbc/Makefile.release b/sqlitejdbc/Makefile.release
deleted file mode 100644 (file)
index 58f2ef8..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-# This file is a nasty piece of work I use for building SQLiteJDBC
-# across multiple architectures. Best to ignore it.
-
-include Makefile.common
-
-afsdir                 := /afs/hcoop.net/user/c/cr/crawshaw
-repo                   := $(afsdir)/repo/sqlitejdbc
-files                  := $(afsdir)/files/sqlitejdbc
-
-default: dist/$(sqlitejdbc).jar dist/$(sqlitejdbc)-src.tgz dist/$(sqlitejdbc)-bin.tgz
-
-release: dist/$(sqlitejdbc).jar dist/$(sqlitejdbc)-src.tgz dist/$(sqlitejdbc)-bin.tgz
-       darcs push -a hcoop:$(repo)
-       scp dist/$(sqlitejdbc)* hcoop:$(files)/
-
-dist/$(sqlitejdbc).jar: build/mac-universal.lib build/win-x86.lib build/linux-x86.lib dist/$(sqlitejdbc)-pure.jar
-       cp dist/$(sqlitejdbc)-pure.jar build/$(sqlitejdbc).jar
-       (cd build; jar uf $(sqlitejdbc).jar *.lib)
-       cp build/$(sqlitejdbc).jar $@
-       rm build/$(sqlitejdbc).jar
-
-dist/$(sqlitejdbc)-src.tgz:
-       darcs dist -d $(sqlitejdbc)-src
-       mv $(sqlitejdbc)-src.tar.gz $@
-
-dist/$(sqlitejdbc)-bin.tgz: dist/$(sqlitejdbc).jar
-       cp build/mac-universal.lib build/libsqlitejdbc.jnilib
-       cp build/win-x86.lib build/sqlitejdbc.dll
-       cp build/linux-x86.lib build/libsqlitejdbc.so
-       $(MAKE) build/$(sqlitejdbc)-native.jar
-       cd build; tar cfz ../$@ $(sqlitejdbc)-native.jar \
-           libsqlitejdbc.jnilib sqlitejdbc.dll libsqlitejdbc.so \
-
-dist/$(sqlitejdbc)-pure.jar:
-       darcs push -a debian:repo/sqlitejdbc
-       ssh debian "cd repo/sqlitejdbc && make -f Makefile.nested test $@"
-       scp debian:repo/sqlitejdbc/$@ $@
-
-build/mac-universal.lib:
-       @mkdir -p dist build/Darwin-universal
-       $(MAKE) os=Darwin arch=ppc native
-       $(MAKE) os=Darwin arch=i386 native
-       lipo -create build/Darwin-ppc/$(Darwin_LIBNAME) \
-                    build/Darwin-i386/$(Darwin_LIBNAME) \
-            -output $@
-
-build/win-x86.lib:
-       darcs push -a debian:repo/sqlitejdbc
-       ssh debian "cd repo/sqlitejdbc && make os=Win arch=i586 native"
-       scp debian:repo/sqlitejdbc/build/Win-i586/$(Win_LIBNAME) $@
-
-build/linux-x86.lib:
-       darcs push -a debian:repo/sqlitejdbc
-       ssh debian "cd repo/sqlitejdbc && make arch=i386 test"
-       scp debian:repo/sqlitejdbc/build/Default-i386/$(Default_LIBNAME) $@
-
diff --git a/sqlitejdbc/VERSION b/sqlitejdbc/VERSION
deleted file mode 100644 (file)
index bf83528..0000000
+++ /dev/null
@@ -1 +0,0 @@
-052
\ No newline at end of file
index cae0561..893c718 100644 (file)
@@ -27,40 +27,32 @@ public class JDBC implements Driver
 {
     private static final String PREFIX = "jdbc:sqlite:";
 
-    static
-    {
-        try
-        {
+    static {
+        try {
             DriverManager.registerDriver(new JDBC());
         }
-        catch (SQLException e)
-        {
+        catch (SQLException e) {
             e.printStackTrace();
         }
     }
 
-    public int getMajorVersion()
-    {
-        return 1;
+    public int getMajorVersion() {
+        return SQLiteJDBCLoader.getMajorVersion();
     }
 
-    public int getMinorVersion()
-    {
-        return 1;
+    public int getMinorVersion() {
+        return SQLiteJDBCLoader.getMinorVersion();
     }
 
-    public boolean jdbcCompliant()
-    {
+    public boolean jdbcCompliant() {
         return false;
     }
 
-    public boolean acceptsURL(String url)
-    {
+    public boolean acceptsURL(String url) {
         return url != null && url.toLowerCase().startsWith(PREFIX);
     }
 
-    public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws SQLException
-    {
+    public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws SQLException {
         DriverPropertyInfo sharedCache = new DriverPropertyInfo("shared_cache", "false");
         sharedCache.choices = new String[] { "true", "false" };
         sharedCache.description = "Enable SQLite Shared-Cache mode, native driver only.";
@@ -74,8 +66,7 @@ public class JDBC implements Driver
         return new DriverPropertyInfo[] { sharedCache, loadExt };
     }
 
-    public Connection connect(String url, Properties info) throws SQLException
-    {
+    public Connection connect(String url, Properties info) throws SQLException {
         if (!acceptsURL(url))
             return null;
         url = url.trim();
index 22d1320..9e4cc25 100644 (file)
@@ -388,11 +388,11 @@ class MetaData implements DatabaseMetaData
 
             colType = colType == null ? "TEXT" : colType.toUpperCase();
             int colJavaType = -1;
-            if (colType == "INT" || colType == "INTEGER")
+            if (colType.equals("INT") || colType.equals("INTEGER"))
                 colJavaType = Types.INTEGER;
-            else if (colType == "TEXT")
+            else if (colType.equals("TEXT"))
                 colJavaType = Types.VARCHAR;
-            else if (colType == "FLOAT")
+            else if (colType.equals("FLOAT"))
                 colJavaType = Types.FLOAT;
             else
                 colJavaType = Types.VARCHAR;
index c27ccf4..7206f35 100644 (file)
@@ -55,19 +55,16 @@ public class SQLiteJDBCLoader
 \r
     private static boolean extracted = false;\r
 \r
-    public static boolean initialize()\r
-    {\r
+    public static boolean initialize() {\r
         loadSQLiteNativeLibrary();\r
         return extracted;\r
     }\r
 \r
-    static boolean getPureJavaFlag()\r
-    {\r
+    static boolean getPureJavaFlag() {\r
         return Boolean.parseBoolean(System.getProperty("sqlite.purejava", "false"));\r
     }\r
 \r
-    public static boolean isNativeMode()\r
-    {\r
+    public static boolean isNativeMode() {\r
         if (getPureJavaFlag())\r
             return false;\r
 \r
@@ -84,28 +81,23 @@ public class SQLiteJDBCLoader
      * @throws IOException\r
      * @throws NoSuchAlgorithmException\r
      */\r
-    static String md5sum(InputStream input) throws IOException\r
-    {\r
+    static String md5sum(InputStream input) throws IOException {\r
         BufferedInputStream in = new BufferedInputStream(input);\r
 \r
-        try\r
-        {\r
+        try {\r
             MessageDigest digest = java.security.MessageDigest.getInstance("MD5");\r
             DigestInputStream digestInputStream = new DigestInputStream(in, digest);\r
-            for (; digestInputStream.read() >= 0;)\r
-            {\r
+            for (; digestInputStream.read() >= 0;) {\r
 \r
             }\r
             ByteArrayOutputStream md5out = new ByteArrayOutputStream();\r
             md5out.write(digest.digest());\r
             return md5out.toString();\r
         }\r
-        catch (NoSuchAlgorithmException e)\r
-        {\r
+        catch (NoSuchAlgorithmException e) {\r
             throw new IllegalStateException("MD5 algorithm is not available: " + e);\r
         }\r
-        finally\r
-        {\r
+        finally {\r
             in.close();\r
         }\r
     }\r
@@ -119,32 +111,26 @@ public class SQLiteJDBCLoader
      * @return\r
      */\r
     private static boolean extractAndLoadLibraryFile(String libFolderForCurrentOS, String libraryFileName,\r
-            String targetFolder)\r
-    {\r
+            String targetFolder) {\r
         String nativeLibraryFilePath = libFolderForCurrentOS + "/" + libraryFileName;\r
         final String prefix = "sqlite-" + getVersion() + "-";\r
 \r
         String extractedLibFileName = prefix + libraryFileName;\r
         File extractedLibFile = new File(targetFolder, extractedLibFileName);\r
 \r
-        try\r
-        {\r
-            if (extractedLibFile.exists())\r
-            {\r
+        try {\r
+            if (extractedLibFile.exists()) {\r
                 // test md5sum value\r
                 String md5sum1 = md5sum(SQLiteJDBCLoader.class.getResourceAsStream(nativeLibraryFilePath));\r
                 String md5sum2 = md5sum(new FileInputStream(extractedLibFile));\r
 \r
-                if (md5sum1.equals(md5sum2))\r
-                {\r
+                if (md5sum1.equals(md5sum2)) {\r
                     return loadNativeLibrary(targetFolder, extractedLibFileName);\r
                 }\r
-                else\r
-                {\r
+                else {\r
                     // remove old native library file\r
                     boolean deletionSucceeded = extractedLibFile.delete();\r
-                    if (!deletionSucceeded)\r
-                    {\r
+                    if (!deletionSucceeded) {\r
                         throw new IOException("failed to remove existing native library file: "\r
                                 + extractedLibFile.getAbsolutePath());\r
                     }\r
@@ -156,51 +142,39 @@ public class SQLiteJDBCLoader
             FileOutputStream writer = new FileOutputStream(extractedLibFile);\r
             byte[] buffer = new byte[1024];\r
             int bytesRead = 0;\r
-            while ((bytesRead = reader.read(buffer)) != -1)\r
-            {\r
+            while ((bytesRead = reader.read(buffer)) != -1) {\r
                 writer.write(buffer, 0, bytesRead);\r
             }\r
 \r
             writer.close();\r
             reader.close();\r
 \r
-            if (!System.getProperty("os.name").contains("Windows"))\r
-            {\r
-                try\r
-                {\r
+            if (!System.getProperty("os.name").contains("Windows")) {\r
+                try {\r
                     Runtime.getRuntime().exec(new String[] { "chmod", "755", extractedLibFile.getAbsolutePath() })\r
                             .waitFor();\r
                 }\r
-                catch (Throwable e)\r
-                {}\r
+                catch (Throwable e) {}\r
             }\r
 \r
             return loadNativeLibrary(targetFolder, extractedLibFileName);\r
         }\r
-        catch (IOException e)\r
-        {\r
+        catch (IOException e) {\r
             System.err.println(e.getMessage());\r
             return false;\r
         }\r
 \r
     }\r
 \r
-    private static synchronized boolean loadNativeLibrary(String path, String name)\r
-    {\r
+    private static synchronized boolean loadNativeLibrary(String path, String name) {\r
         File libPath = new File(path, name);\r
-        if (libPath.exists())\r
-        {\r
-            // System.setProperty("org.sqlite.lib.path", path == null ? "./" :\r
-            // path);\r
-            // System.setProperty("org.sqlite.lib.name", name);\r
-\r
-            try\r
-            {\r
+        if (libPath.exists()) {\r
+\r
+            try {\r
                 System.load(new File(path, name).getAbsolutePath());\r
                 return true;\r
             }\r
-            catch (UnsatisfiedLinkError e)\r
-            {\r
+            catch (UnsatisfiedLinkError e) {\r
                 System.err.println(e);\r
                 return false;\r
             }\r
@@ -210,14 +184,12 @@ public class SQLiteJDBCLoader
             return false;\r
     }\r
 \r
-    private static void loadSQLiteNativeLibrary()\r
-    {\r
+    private static void loadSQLiteNativeLibrary() {\r
         if (extracted)\r
             return;\r
 \r
         boolean runInPureJavaMode = getPureJavaFlag();\r
-        if (runInPureJavaMode)\r
-        {\r
+        if (runInPureJavaMode) {\r
             extracted = false;\r
             return;\r
         }\r
@@ -228,10 +200,8 @@ public class SQLiteJDBCLoader
         if (sqliteNativeLibraryName == null)\r
             sqliteNativeLibraryName = System.mapLibraryName("sqlitejdbc");\r
 \r
-        if (sqliteNativeLibraryPath != null)\r
-        {\r
-            if (loadNativeLibrary(sqliteNativeLibraryPath, sqliteNativeLibraryName))\r
-            {\r
+        if (sqliteNativeLibraryPath != null) {\r
+            if (loadNativeLibrary(sqliteNativeLibraryPath, sqliteNativeLibraryName)) {\r
                 extracted = true;\r
                 return;\r
             }\r
@@ -240,8 +210,7 @@ public class SQLiteJDBCLoader
         // Load the os-dependent library from a jar file\r
         sqliteNativeLibraryPath = "/native/" + OSInfo.getNativeLibFolderPathForCurrentOS();\r
 \r
-        if (SQLiteJDBCLoader.class.getResource(sqliteNativeLibraryPath + "/" + sqliteNativeLibraryName) == null)\r
-        {\r
+        if (SQLiteJDBCLoader.class.getResource(sqliteNativeLibraryPath + "/" + sqliteNativeLibraryName) == null) {\r
             // use nested VM version\r
             return;\r
         }\r
@@ -249,8 +218,7 @@ public class SQLiteJDBCLoader
         // temporary library folder\r
         String tempFolder = new File(System.getProperty("java.io.tmpdir")).getAbsolutePath();\r
         /* Try extracting the library from jar */\r
-        if (extractAndLoadLibraryFile(sqliteNativeLibraryPath, sqliteNativeLibraryName, tempFolder))\r
-        {\r
+        if (extractAndLoadLibraryFile(sqliteNativeLibraryPath, sqliteNativeLibraryName, tempFolder)) {\r
             extracted = true;\r
             return;\r
         }\r
@@ -259,30 +227,38 @@ public class SQLiteJDBCLoader
         return;\r
     }\r
 \r
-    private static void getNativeLibraryFolderForTheCurrentOS()\r
-    {\r
+    private static void getNativeLibraryFolderForTheCurrentOS() {\r
         String osName = OSInfo.getOSName();\r
         String archName = OSInfo.getArchName();\r
 \r
     }\r
 \r
-    public static String getVersion()\r
-    {\r
-        URL versionFile = SQLiteJDBCLoader.class.getResource("/VERSION");\r
+    public static int getMajorVersion() {\r
+        String[] c = getVersion().split("\\.");\r
+        return (c.length > 0) ? Integer.parseInt(c[0]) : 1;\r
+    }\r
+\r
+    public static int getMinorVersion() {\r
+        String[] c = getVersion().split("\\.");\r
+        return (c.length > 1) ? Integer.parseInt(c[1]) : 0;\r
+    }\r
+\r
+    public static String getVersion() {\r
+\r
+        URL versionFile = SQLiteJDBCLoader.class.getResource("/META-INF/maven/org.xerial/sqlite-jdbc/pom.properties");\r
+        if (versionFile == null)\r
+            versionFile = SQLiteJDBCLoader.class.getResource("/META-INF/maven/org.xerial/sqlite-jdbc/VERSION");\r
 \r
         String version = "unknown";\r
-        try\r
-        {\r
-            if (versionFile != null)\r
-            {\r
+        try {\r
+            if (versionFile != null) {\r
                 Properties versionData = new Properties();\r
                 versionData.load(versionFile.openStream());\r
-                version = versionData.getProperty("sqlite_version", version);\r
+                version = versionData.getProperty("version", version);\r
                 version = version.trim().replaceAll("[^0-9\\.]", "");\r
             }\r
         }\r
-        catch (IOException e)\r
-        {\r
+        catch (IOException e) {\r
             System.err.println(e);\r
         }\r
         return version;\r
index 512999c..858ad1c 100644 (file)
@@ -12,6 +12,7 @@ import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
 import java.sql.SQLException;
 import java.sql.Statement;
+import java.sql.Types;
 
 import org.junit.After;
 import org.junit.Before;
@@ -36,7 +37,7 @@ public class DBMetaDataTest
     {
         conn = DriverManager.getConnection("jdbc:sqlite:");
         stat = conn.createStatement();
-        stat.executeUpdate("create table test (id integer primary key, fn, sn);");
+        stat.executeUpdate("create table test (id integer primary key, fn float, sn);");
         stat.executeUpdate("create view testView as select * from test;");
         meta = conn.getMetaData();
     }
@@ -124,11 +125,13 @@ public class DBMetaDataTest
         assertTrue(rs.next());
         assertEquals(rs.getString("TABLE_NAME"), "test");
         assertEquals(rs.getString("COLUMN_NAME"), "id");
+        assertEquals(rs.getInt("DATA_TYPE"), Types.INTEGER);
         assertFalse(rs.next());
 
         rs = meta.getColumns(null, null, "test", "fn");
         assertTrue(rs.next());
         assertEquals(rs.getString("COLUMN_NAME"), "fn");
+        assertEquals(rs.getInt("DATA_TYPE"), Types.FLOAT);
         assertFalse(rs.next());
 
         rs = meta.getColumns(null, null, "test", "sn");
index d071613..9da5456 100644 (file)
@@ -20,20 +20,17 @@ import org.junit.Test;
 public class JDBCTest
 {
     @BeforeClass
-    public static void forName() throws Exception
-    {
+    public static void forName() throws Exception {
         Class.forName("org.sqlite.JDBC");
     }
 
     @Test
-    public void enableLoadExtensionTest() throws Exception
-    {
+    public void enableLoadExtensionTest() throws Exception {
         Properties prop = new Properties();
         prop.setProperty("enable_load_extension", "true");
 
         Connection conn = null;
-        try
-        {
+        try {
             conn = DriverManager.getConnection("jdbc:sqlite:", prop);
             Statement stat = conn.createStatement();
 
@@ -47,11 +44,16 @@ public class JDBCTest
             //            System.out.println(rs.getDouble(1));
 
         }
-        finally
-        {
+        finally {
             if (conn != null)
                 conn.close();
         }
     }
 
+    @Test
+    public void majorVersion() throws Exception {
+        int major = DriverManager.getDriver("jdbc:sqlite:").getMajorVersion();
+        int minor = DriverManager.getDriver("jdbc:sqlite:").getMinorVersion();
+    }
+
 }