Tag: cws_src680_hsqldb2 User: oj Date: 05/01/26 01:05:10 Modified: /dba/connectivity/com/sun/star/sdbcx/comp/hsqldb/ NativeOutputStreamHelper.java, NativeStorageAccess.java, StorageAccess.java, StorageFileAccess.java, StorageNativeOutputStream.java
Log: new version of hsqldb File Changes: Directory: /dba/connectivity/com/sun/star/sdbcx/comp/hsqldb/ ============================================================ File [changed]: NativeOutputStreamHelper.java Url: http://dba.openoffice.org/source/browse/dba/connectivity/com/sun/star/sdbcx/comp/hsqldb/NativeOutputStreamHelper.java?r1=1.2&r2=1.2.20.1 Delta lines: +3 -0 ------------------- --- NativeOutputStreamHelper.java 9 Nov 2004 12:05:43 -0000 1.2 +++ NativeOutputStreamHelper.java 26 Jan 2005 09:05:06 -0000 1.2.20.1 @@ -45,4 +45,7 @@ out.flush(storage,key,file); } + public void sync() throws java.io.IOException{ + out.sync(storage,key,file); + } } File [changed]: NativeStorageAccess.java Url: http://dba.openoffice.org/source/browse/dba/connectivity/com/sun/star/sdbcx/comp/hsqldb/NativeStorageAccess.java?r1=1.3&r2=1.3.2.1 Delta lines: +15 -15 --------------------- --- NativeStorageAccess.java 21 Jan 2005 16:36:44 -0000 1.3 +++ NativeStorageAccess.java 26 Jan 2005 09:05:06 -0000 1.3.2.1 @@ -95,33 +95,33 @@ NativeLibraryLoader.loadLibrary(StorageNativeOutputStream.class.getClassLoader(), "hsqldb2"); } /** Creates a new instance of StorageAccess */ - public NativeStorageAccess(String name,String _mode,Object key) throws java.lang.Exception{ + public NativeStorageAccess(String name,String _mode,Object key) throws java.io.IOException{ try { int mode = ElementModes.SEEKABLEREAD; if ( _mode.equals("rw") ) - mode |= ElementModes.WRITE; + mode = ElementModes.READWRITE | ElementModes.SEEKABLE; openStream(name, (String)key, mode); } catch(Exception e){ - throw new java.lang.Exception(); + throw new java.io.IOException(); } } public native void openStream(String name,String key, int mode); - public native void close(String name,String key) throws java.lang.Exception; + public native void close(String name,String key) throws java.io.IOException; - public native long getFilePointer(String name,String key) throws java.lang.Exception; + public native long getFilePointer(String name,String key) throws java.io.IOException; - public native long length(String name,String key) throws java.lang.Exception; + public native long length(String name,String key) throws java.io.IOException; - public native int read(String name,String key) throws java.lang.Exception; + public native int read(String name,String key) throws java.io.IOException; - public native void read(String name,String key,byte[] b, int off, int len) throws java.lang.Exception; + public native int read(String name,String key,byte[] b, int off, int len) throws java.io.IOException; - public native int readInt(String name,String key) throws java.lang.Exception; + public native int readInt(String name,String key) throws java.io.IOException; - public native void seek(String name,String key,long position) throws java.lang.Exception; + public native void seek(String name,String key,long position) throws java.io.IOException; - public native void write(String name,String key,byte[] b, int offset, int length) throws java.lang.Exception; + public native void write(String name,String key,byte[] b, int offset, int length) throws java.io.IOException; - public native void writeInt(String name,String key,int v) throws java.lang.Exception; + public native void writeInt(String name,String key,int v) throws java.io.IOException; } File [changed]: StorageAccess.java Url: http://dba.openoffice.org/source/browse/dba/connectivity/com/sun/star/sdbcx/comp/hsqldb/StorageAccess.java?r1=1.2&r2=1.2.20.1 Delta lines: +91 -29 --------------------- --- StorageAccess.java 9 Nov 2004 12:06:02 -0000 1.2 +++ StorageAccess.java 26 Jan 2005 09:05:06 -0000 1.2.20.1 @@ -2,9 +2,9 @@ * * $RCSfile: StorageAccess.java,v $ * - * $Revision: 1.2 $ + * $Revision: 1.2.20.1 $ * - * last change: $Author: hr $ $Date: 2004/11/09 12:06:02 $ + * last change: $Author: oj $ $Date: 2005/01/26 09:05:06 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -80,45 +80,74 @@ import com.sun.star.lang.XComponent; import com.sun.star.uno.UnoRuntime; import com.sun.star.beans.NamedValue; +// import org.hsqldb.lib.SimpleLog; -public class StorageAccess implements org.hsqldb.Storage { +public class StorageAccess implements org.hsqldb.lib.Storage { String key; String name; + boolean readonly; NativeStorageAccess access; +// public SimpleLog appLog; /** Creates a new instance of StorageAccess */ - public StorageAccess(String name,String _mode,Object key) throws java.lang.Exception{ + public StorageAccess(String name,Boolean readonly,Object key) throws java.io.IOException{ this.key = (String)key; this.name = name; + this.readonly = readonly.booleanValue(); try { - access = new NativeStorageAccess(name,_mode,key); + access = new NativeStorageAccess(name, + this.readonly ? "r" : "rw" + ,key); } catch(Exception e){ - throw new java.lang.Exception(); + throw new java.io.IOException(); } + // appLog = new SimpleLog(name +".app3.log", true); } - public void close() throws java.lang.Exception{ + public void close() throws java.io.IOException{ + //appLog.sendLine("NIOScaledRAFile.close() "); + //appLog.close(); access.close(name,key); } - public long getFilePointer() throws java.lang.Exception{ + public long getFilePointer() throws java.io.IOException{ + //appLog.sendLine("NIOScaledRAFile.getFilePointer() "); return access.getFilePointer(name,key); } - public long length() throws java.lang.Exception{ + public long length() throws java.io.IOException{ + //appLog.sendLine("NIOScaledRAFile.length() "); return access.length(name,key); } - public int read() throws java.lang.Exception{ + public int read() throws java.io.IOException{ + //appLog.sendLine("NIOScaledRAFile.read() "); return access.read(name,key); } - public void read(byte[] b, int off, int len) throws java.lang.Exception{ + public void read(byte[] b, int off, int len) throws java.io.IOException{ + //appLog.sendLine("NIOScaledRAFile.read(" + b + ","+ off +","+len + ") "); access.read(name,key,b,off,len); } - public int readInt() throws java.lang.Exception{ + // fredt - this is based on the same code that reads an int from the .data file in HSQLDB + public int readInt() throws java.io.IOException{ + //appLog.sendLine("NIOScaledRAFile.readInt() "); byte [] tmp = new byte [4]; - read(tmp,0, 4); + int count = access.read(name,key,tmp,0, 4); + + if (count != 4){ + throw new java.io.IOException(); + } + + count = 0; + int ch0 = tmp[count++] & 0xff; + int ch1 = tmp[count++] & 0xff; + int ch2 = tmp[count++] & 0xff; + int ch3 = tmp[count] & 0xff; + + return ((ch0 << 24) + (ch1 << 16) + (ch2 << 8) + (ch3)); + +/* int ch [] = new int[4]; for(int i = 0;i < 4; ++i){ ch[i] = tmp[i]; @@ -128,20 +157,24 @@ } if ((ch[0] | ch[1] | ch[2] | ch[3]) < 0) - throw new Exception(); + throw new java.io.IOException(); return ((ch[0] << 24) + (ch[1] << 16) + (ch[2] << 8) + (ch[3] << 0)); //return access.readInt(name,key); +*/ } - public void seek(long position) throws java.lang.Exception{ + public void seek(long position) throws java.io.IOException{ + //appLog.sendLine("NIOScaledRAFile.seek("+position +") "); access.seek(name,key,position); } - public void write(byte[] b, int offset, int length) throws java.lang.Exception{ + public void write(byte[] b, int offset, int length) throws java.io.IOException{ + //appLog.sendLine("NIOScaledRAFile.write(" + b + "," + offset +","+length+") "); access.write(name,key,b,offset,length); } - public void writeInt(int v) throws java.lang.Exception{ + public void writeInt(int v) throws java.io.IOException{ + //appLog.sendLine("NIOScaledRAFile.writeInt(" +v+") "); byte [] oneByte = new byte [4]; oneByte[0] = (byte) ((v >>> 24) & 0xFF); oneByte[1] = (byte) ((v >>> 16) & 0xFF); @@ -149,6 +182,35 @@ oneByte[3] = (byte) ((v >>> 0) & 0xFF); write(oneByte,0,4); - //access.writeInt(name,key,v); + } + + public boolean isReadOnly() { + return readonly; + } + + // fredt - minor change of brackets + public long readLong() throws java.io.IOException { + return ((long)(readInt()) << 32) + (readInt() & 0xFFFFFFFFL); + // return (((long) readInt()) << 32) + (((long) readInt()) & 0xFFFFFFFFL); + } + + public boolean wasNio() { + return false; + } + + public void writeLong(long v) throws java.io.IOException { + //appLog.sendLine("NIOScaledRAFile.writeLong(" +v+") "); + byte [] oneByte = new byte [8]; + + oneByte[0] = (byte) ((v >>> 56) & 0xFF); + oneByte[1] = (byte) ((v >>> 48) & 0xFF); + oneByte[2] = (byte) ((v >>> 40) & 0xFF); + oneByte[3] = (byte) ((v >>> 32) & 0xFF); + oneByte[4] = (byte) ((v >>> 24) & 0xFF); + oneByte[5] = (byte) ((v >>> 16) & 0xFF); + oneByte[6] = (byte) ((v >>> 8) & 0xFF); + oneByte[7] = (byte) ((v >>> 0) & 0xFF); + + write(oneByte,0,8); } } File [changed]: StorageFileAccess.java Url: http://dba.openoffice.org/source/browse/dba/connectivity/com/sun/star/sdbcx/comp/hsqldb/StorageFileAccess.java?r1=1.3&r2=1.3.2.1 Delta lines: +17 -0 -------------------- --- StorageFileAccess.java 21 Jan 2005 16:36:57 -0000 1.3 +++ StorageFileAccess.java 26 Jan 2005 09:05:07 -0000 1.3.2.1 @@ -119,6 +119,23 @@ } } + public class FileSync implements FileAccess.FileSync + { + NativeOutputStreamHelper os; + FileSync(NativeOutputStreamHelper _os) throws java.io.IOException + { + os = _os; + } + public void sync() throws java.io.IOException + { + } + } + + public FileAccess.FileSync getFileSync(java.io.OutputStream os) throws java.io.IOException + { + return new FileSync((NativeOutputStreamHelper)os); + } + static native boolean isStreamElement(java.lang.String key,java.lang.String elementName) throws java.util.NoSuchElementException, java.io.IOException; static native void removeElement(java.lang.String key,java.lang.String filename) throws java.util.NoSuchElementException, java.io.IOException; static native void renameElement(java.lang.String key,java.lang.String oldName, java.lang.String newName) throws java.util.NoSuchElementException, java.io.IOException; File [changed]: StorageNativeOutputStream.java Url: http://dba.openoffice.org/source/browse/dba/connectivity/com/sun/star/sdbcx/comp/hsqldb/StorageNativeOutputStream.java?r1=1.3&r2=1.3.2.1 Delta lines: +29 -2 -------------------- --- StorageNativeOutputStream.java 21 Jan 2005 16:37:31 -0000 1.3 +++ StorageNativeOutputStream.java 26 Jan 2005 09:05:07 -0000 1.3.2.1 @@ -13,7 +13,8 @@ * @author oj93728 */ public class StorageNativeOutputStream { - + String name; + Object key; static { // preload shared libraries whichs import lips are linked to jpipe if ( System.getProperty( "os.name" ).startsWith( "Windows" ) ) @@ -28,7 +29,9 @@ NativeLibraryLoader.loadLibrary(StorageNativeOutputStream.class.getClassLoader(), "hsqldb2"); } /** Creates a new instance of StorageNativeOutputStream */ - public StorageNativeOutputStream(String name,Object key) { + public StorageNativeOutputStream(String _name,Object _key) { + name = _name; + key = _key; openStream(name, (String)key, ElementModes.WRITE); } @@ -124,5 +127,29 @@ * @exception IOException if an I/O error occurs. */ public native void flush(XStorage storage,String key,String _file) throws java.io.IOException; + + /** + * Force all system buffers to synchronize with the underlying + * device. This method returns after all modified data and + * attributes have been written to the relevant device(s). + * + * sync is meant to be used by code that requires physical + * storage (such as a file) to be in a known state For + * example, a class that provided a simple transaction facility + * might use sync to ensure that all changes to a file caused + * by a given transaction were recorded on a storage medium. + * + * sync only affects buffers downstream. If + * any in-memory buffering is being done by the application (for + * example, by a BufferedOutputStream object), those buffers must + * be flushed (for example, by invoking + * OutputStream.flush) before that data will be affected by sync. + * + * @exception IOException + * Thrown when the buffers cannot be flushed, + * or because the system cannot guarantee that all the + * buffers have been synchronized with physical media. + */ + public native void sync(XStorage storage,String key,String _file) throws java.io.IOException; } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
