]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.common/src/org/simantics/db/common/ByteFileReader.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.db.common / src / org / simantics / db / common / ByteFileReader.java
index 34f57680a2e65fd102646c2ef244cbef5eca2ee2..26133d96d5ab1ae50ad87649744e92c0dbdfb2aa 100644 (file)
-package org.simantics.db.common;\r
-\r
-import java.io.File;\r
-import java.io.FileInputStream;\r
-import java.io.IOException;\r
-import java.nio.ByteBuffer;\r
-import java.nio.channels.ReadableByteChannel;\r
-\r
-import org.simantics.db.common.utils.Logger;\r
-import org.simantics.db.service.Bytes;\r
-\r
-final public class ByteFileReader {\r
-\r
-       public static int BUFFER = 65536;\r
-\r
-       final private FileInputStream fs;\r
-       final private ReadableByteChannel channel;\r
-       final private ByteBuffer byteBuffer;\r
-       \r
-       final private byte[] bytes = new byte[BUFFER];\r
-       private int size;\r
-\r
-       protected int byteIndex = 0;\r
-\r
-       final protected ReadableByteChannel getChannel() {\r
-               return channel;\r
-       }\r
-       \r
-       final protected ByteBuffer getByteBuffer() {\r
-               return byteBuffer;\r
-       }\r
-\r
-       final protected byte[] getBytes() {\r
-               return bytes;\r
-       }\r
-\r
-       final public byte[] readBytes(int amount) throws IOException {\r
-\r
-               byte[] result = new byte[amount];\r
-               \r
-               int has = size-byteIndex;\r
-               if(amount >= has) {\r
-                       ReadableByteChannel c = channel;\r
-                       System.arraycopy(bytes, byteIndex, result, 0, has);\r
-                       ByteBuffer bb2 = ByteBuffer.wrap(result);\r
-                       bb2.position(has);\r
-                       while(has < amount)\r
-                               has += c.read(bb2);\r
-                       getSome();\r
-               } else {\r
-                       System.arraycopy(bytes, byteIndex, result, 0, amount);\r
-                       byteIndex += amount;\r
-               }\r
-\r
-               return result;\r
-               \r
-       }\r
-\r
-       final public void getSome() throws IOException {\r
-\r
-               ReadableByteChannel c = channel;\r
-               ByteBuffer bb = byteBuffer;\r
-               bb.position(0);\r
-               bb.limit(BUFFER);\r
-               size = c.read(bb);\r
-               if(size == 0) {\r
-                       long start = System.nanoTime();\r
-                       while(size == 0) {\r
-                               if(System.nanoTime() - start > 10000000000L) throw new IOException("Timeout");\r
-                               size = c.read(bb);\r
-                       }\r
-               }\r
-               bb.position(0);\r
-               byteIndex = 0;\r
-               \r
-       }\r
-       \r
-       final public int readShort() throws IOException {\r
-\r
-               if(byteIndex >= (size-3)) {\r
-                       short result = 0;\r
-                       if(byteIndex == size) {\r
-                               getSome();\r
-                       }\r
-                       result |= ((short)(bytes[byteIndex++]&0xff)<<0);\r
-                       if(byteIndex == size) {\r
-                               getSome();\r
-                       }\r
-                       result |= ((short)(bytes[byteIndex++]&0xff)<<8);\r
-                       if(byteIndex == size) {\r
-                               getSome();\r
-                       }\r
-                       return result;\r
-               } else {\r
-                       int result = Bytes.readLE2(bytes, byteIndex);\r
-                       byteIndex += 2;\r
-                       return result;\r
-               }\r
-               \r
-       }\r
-       \r
-       final public int readInt() throws IOException {\r
-\r
-               if(byteIndex >= (size-5)) {\r
-                       int result = 0;\r
-                       if(byteIndex == size) {\r
-                               getSome();\r
-                       }\r
-                       result |= ((int)(bytes[byteIndex++]&0xff)<<0);\r
-                       if(byteIndex == size) {\r
-                               getSome();\r
-                       }\r
-                       result |= ((int)(bytes[byteIndex++]&0xff)<<8);\r
-                       if(byteIndex == size) {\r
-                               getSome();\r
-                       }\r
-                       result |= ((int)(bytes[byteIndex++]&0xff)<<16);\r
-                       if(byteIndex == size) {\r
-                               getSome();\r
-                       }\r
-                       result |= ((int)(bytes[byteIndex++]&0xff)<<24);\r
-                       if(byteIndex == size) {\r
-                               getSome();\r
-                       }\r
-                       return result;\r
-               } else {\r
-                       int result = Bytes.readLE4(bytes, byteIndex);\r
-                       byteIndex += 4;\r
-                       return result;\r
-               }\r
-               \r
-       }\r
-       \r
-       final public long readLong() throws IOException {\r
-\r
-               if(byteIndex >= (size-9)) {\r
-                       long result = 0;\r
-                       if(byteIndex == size) {\r
-                               getSome();\r
-                       }\r
-                       result |= ((long)(bytes[byteIndex++]&0xff)<<0);\r
-                       if(byteIndex == size) {\r
-                               getSome();\r
-                       }\r
-                       result |= ((long)(bytes[byteIndex++]&0xff)<<8);\r
-                       if(byteIndex == size) {\r
-                               getSome();\r
-                       }\r
-                       result |= ((long)(bytes[byteIndex++]&0xff)<<16);\r
-                       if(byteIndex == size) {\r
-                               getSome();\r
-                       }\r
-                       result |= ((long)(bytes[byteIndex++]&0xff)<<24);\r
-                       if(byteIndex == size) {\r
-                               getSome();\r
-                       }\r
-                       result |= ((long)(bytes[byteIndex++]&0xff)<<32);\r
-                       if(byteIndex == size) {\r
-                               getSome();\r
-                       }\r
-                       result |= ((long)(bytes[byteIndex++]&0xff)<<40);\r
-                       if(byteIndex == size) {\r
-                               getSome();\r
-                       }\r
-                       result |= ((long)(bytes[byteIndex++]&0xff)<<48);\r
-                       if(byteIndex == size) {\r
-                               getSome();\r
-                       }\r
-                       result |= ((long)(bytes[byteIndex++]&0xff)<<56);\r
-                       if(byteIndex == size) {\r
-                               getSome();\r
-                       }\r
-                       return result;\r
-               } else {\r
-                       long result = Bytes.readLE8(bytes, byteIndex);\r
-                       byteIndex += 8;\r
-                       return result;\r
-               }\r
-               \r
-       }\r
-\r
-       public void close() {\r
-               try {\r
-                       fs.close();\r
-               } catch (IOException e) {\r
-                       Logger.defaultLogError(e);\r
-               }\r
-       }\r
-       \r
-       public ByteFileReader(File file) throws IOException {\r
-\r
-               byteBuffer = ByteBuffer.wrap(bytes);\r
-\r
-               fs = new FileInputStream(file);\r
-               \r
-               channel = fs.getChannel();\r
-               \r
-               this.size = channel.read(byteBuffer);\r
-               \r
-               byteBuffer.position(0);\r
-               \r
-       }\r
-       \r
-}\r
+package org.simantics.db.common;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.channels.ReadableByteChannel;
+
+import org.simantics.db.common.utils.Logger;
+import org.simantics.db.service.Bytes;
+
+final public class ByteFileReader {
+
+       public static int BUFFER = 65536;
+
+       final private FileInputStream fs;
+       final private ReadableByteChannel channel;
+       final private ByteBuffer byteBuffer;
+       
+       final private byte[] bytes = new byte[BUFFER];
+       private int size;
+
+       protected int byteIndex = 0;
+
+       final protected ReadableByteChannel getChannel() {
+               return channel;
+       }
+       
+       final protected ByteBuffer getByteBuffer() {
+               return byteBuffer;
+       }
+
+       final protected byte[] getBytes() {
+               return bytes;
+       }
+
+       final public byte[] readBytes(int amount) throws IOException {
+
+               byte[] result = new byte[amount];
+               
+               int has = size-byteIndex;
+               if(amount >= has) {
+                       ReadableByteChannel c = channel;
+                       System.arraycopy(bytes, byteIndex, result, 0, has);
+                       ByteBuffer bb2 = ByteBuffer.wrap(result);
+                       bb2.position(has);
+                       while(has < amount)
+                               has += c.read(bb2);
+                       getSome();
+               } else {
+                       System.arraycopy(bytes, byteIndex, result, 0, amount);
+                       byteIndex += amount;
+               }
+
+               return result;
+               
+       }
+
+       final public void getSome() throws IOException {
+
+               ReadableByteChannel c = channel;
+               ByteBuffer bb = byteBuffer;
+               bb.position(0);
+               bb.limit(BUFFER);
+               size = c.read(bb);
+               if(size == 0) {
+                       long start = System.nanoTime();
+                       while(size == 0) {
+                               if(System.nanoTime() - start > 10000000000L) throw new IOException("Timeout");
+                               size = c.read(bb);
+                       }
+               }
+               bb.position(0);
+               byteIndex = 0;
+               
+       }
+       
+       final public int readShort() throws IOException {
+
+               if(byteIndex >= (size-3)) {
+                       short result = 0;
+                       if(byteIndex == size) {
+                               getSome();
+                       }
+                       result |= ((short)(bytes[byteIndex++]&0xff)<<0);
+                       if(byteIndex == size) {
+                               getSome();
+                       }
+                       result |= ((short)(bytes[byteIndex++]&0xff)<<8);
+                       if(byteIndex == size) {
+                               getSome();
+                       }
+                       return result;
+               } else {
+                       int result = Bytes.readLE2(bytes, byteIndex);
+                       byteIndex += 2;
+                       return result;
+               }
+               
+       }
+       
+       final public int readInt() throws IOException {
+
+               if(byteIndex >= (size-5)) {
+                       int result = 0;
+                       if(byteIndex == size) {
+                               getSome();
+                       }
+                       result |= ((int)(bytes[byteIndex++]&0xff)<<0);
+                       if(byteIndex == size) {
+                               getSome();
+                       }
+                       result |= ((int)(bytes[byteIndex++]&0xff)<<8);
+                       if(byteIndex == size) {
+                               getSome();
+                       }
+                       result |= ((int)(bytes[byteIndex++]&0xff)<<16);
+                       if(byteIndex == size) {
+                               getSome();
+                       }
+                       result |= ((int)(bytes[byteIndex++]&0xff)<<24);
+                       if(byteIndex == size) {
+                               getSome();
+                       }
+                       return result;
+               } else {
+                       int result = Bytes.readLE4(bytes, byteIndex);
+                       byteIndex += 4;
+                       return result;
+               }
+               
+       }
+       
+       final public long readLong() throws IOException {
+
+               if(byteIndex >= (size-9)) {
+                       long result = 0;
+                       if(byteIndex == size) {
+                               getSome();
+                       }
+                       result |= ((long)(bytes[byteIndex++]&0xff)<<0);
+                       if(byteIndex == size) {
+                               getSome();
+                       }
+                       result |= ((long)(bytes[byteIndex++]&0xff)<<8);
+                       if(byteIndex == size) {
+                               getSome();
+                       }
+                       result |= ((long)(bytes[byteIndex++]&0xff)<<16);
+                       if(byteIndex == size) {
+                               getSome();
+                       }
+                       result |= ((long)(bytes[byteIndex++]&0xff)<<24);
+                       if(byteIndex == size) {
+                               getSome();
+                       }
+                       result |= ((long)(bytes[byteIndex++]&0xff)<<32);
+                       if(byteIndex == size) {
+                               getSome();
+                       }
+                       result |= ((long)(bytes[byteIndex++]&0xff)<<40);
+                       if(byteIndex == size) {
+                               getSome();
+                       }
+                       result |= ((long)(bytes[byteIndex++]&0xff)<<48);
+                       if(byteIndex == size) {
+                               getSome();
+                       }
+                       result |= ((long)(bytes[byteIndex++]&0xff)<<56);
+                       if(byteIndex == size) {
+                               getSome();
+                       }
+                       return result;
+               } else {
+                       long result = Bytes.readLE8(bytes, byteIndex);
+                       byteIndex += 8;
+                       return result;
+               }
+               
+       }
+
+       public void close() {
+               try {
+                       fs.close();
+               } catch (IOException e) {
+                       Logger.defaultLogError(e);
+               }
+       }
+       
+       public ByteFileReader(File file) throws IOException {
+
+               byteBuffer = ByteBuffer.wrap(bytes);
+
+               fs = new FileInputStream(file);
+               
+               channel = fs.getChannel();
+               
+               this.size = channel.read(byteBuffer);
+               
+               byteBuffer.position(0);
+               
+       }
+       
+}