First Commit
This commit is contained in:
commit
3d1b08ae41
|
@ -0,0 +1,28 @@
|
||||||
|
package bdf;
|
||||||
|
|
||||||
|
import bdf.data.BdfDatabase;
|
||||||
|
import bdf.types.BdfArray;
|
||||||
|
import bdf.types.BdfNamedList;
|
||||||
|
import bdf.types.BdfObject;
|
||||||
|
|
||||||
|
public class Main {
|
||||||
|
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
|
||||||
|
BdfObject object = BdfObject.getNew(new BdfNamedList());
|
||||||
|
|
||||||
|
for(int i=0;i<1000;i++)
|
||||||
|
{
|
||||||
|
object.getNamedList().set(Integer.toString(i), BdfObject.getNew("value + 1 = "+Integer.toString(i+1)));
|
||||||
|
}
|
||||||
|
|
||||||
|
byte[] database = object.serialize().getBytes();
|
||||||
|
BdfObject object2 = new BdfObject(new BdfDatabase(database));
|
||||||
|
|
||||||
|
System.out.println("value = \""+ object2.getNamedList().get("20").getString()+"\"");
|
||||||
|
System.out.println(object2.getNamedList().contains("54"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,62 @@
|
||||||
|
package bdf.data;
|
||||||
|
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
|
public class BdfDatabase
|
||||||
|
{
|
||||||
|
protected byte[] database = null;
|
||||||
|
|
||||||
|
public BdfDatabase() {
|
||||||
|
this.database = new byte[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfDatabase(String database) {
|
||||||
|
this.database = database.getBytes();
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfDatabase(byte ...database) {
|
||||||
|
this.database = database;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfDatabase getAt(int start, int end)
|
||||||
|
{
|
||||||
|
byte[] split = new byte[end - start];
|
||||||
|
|
||||||
|
for(int i=start;i<end;i++) {
|
||||||
|
split[i-start] = this.database[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
return new BdfDatabase(split);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int length() {
|
||||||
|
return this.database.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] getBytes() {
|
||||||
|
return this.database;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte getByte(int i) {
|
||||||
|
return this.database[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getString() {
|
||||||
|
return new String(this.database, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BdfDatabase add(BdfDatabase d1, BdfDatabase d2)
|
||||||
|
{
|
||||||
|
byte[] added = new byte[d1.length() + d2.length()];
|
||||||
|
|
||||||
|
for(int i=0;i<d1.length();i++) {
|
||||||
|
added[i] = d1.getByte(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i=0;i<d2.length();i++) {
|
||||||
|
added[d1.length()+i] = d2.getByte(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new BdfDatabase(added);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
package bdf.exception;
|
||||||
|
|
||||||
|
public class UndefinedKeyException extends RuntimeException
|
||||||
|
{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
public UndefinedKeyException(String key)
|
||||||
|
{
|
||||||
|
super("The key \""+key+"\" has not been defined.");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,88 @@
|
||||||
|
package bdf.types;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import bdf.data.BdfDatabase;
|
||||||
|
import bdf.util.DataHelpers;
|
||||||
|
|
||||||
|
public class BdfArray implements IBdfType
|
||||||
|
{
|
||||||
|
protected ArrayList<BdfObject> elements = new ArrayList<BdfObject>();
|
||||||
|
|
||||||
|
public BdfArray() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfArray(BdfDatabase data)
|
||||||
|
{
|
||||||
|
// Create an iterator value to loop over the data
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
// Loop over the data
|
||||||
|
while(i < data.length())
|
||||||
|
{
|
||||||
|
// Get the size of the object
|
||||||
|
int size = DataHelpers.getByteBuffer(data.getAt(i, (i+(Integer.SIZE/8)))).getInt();
|
||||||
|
|
||||||
|
// Get the object
|
||||||
|
BdfObject object = new BdfObject(data.getAt((i+(Integer.SIZE/8)), (i+(Integer.SIZE/8)+size)));
|
||||||
|
|
||||||
|
// Add the object to the elements list
|
||||||
|
elements.add(object);
|
||||||
|
|
||||||
|
// Increase the iterator by the amount of bytes
|
||||||
|
i += (Integer.SIZE/8)+size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BdfDatabase serialize()
|
||||||
|
{
|
||||||
|
// Create the serialized data string
|
||||||
|
BdfDatabase serialized = new BdfDatabase();
|
||||||
|
|
||||||
|
// Loop over the elements
|
||||||
|
for(BdfObject o : elements)
|
||||||
|
{
|
||||||
|
// Convert the object to a string
|
||||||
|
BdfDatabase db = o.serialize();
|
||||||
|
|
||||||
|
// Add the serialized object to the serialized data
|
||||||
|
serialized = BdfDatabase.add(serialized, DataHelpers.serializeInt(db.length()));
|
||||||
|
serialized = BdfDatabase.add(serialized, db);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send back the serialized data
|
||||||
|
return serialized;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfArray add(BdfObject o)
|
||||||
|
{
|
||||||
|
// Add an element
|
||||||
|
elements.add(o);
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfArray clear()
|
||||||
|
{
|
||||||
|
// Clear the elements
|
||||||
|
elements.clear();
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfArray remove(int index)
|
||||||
|
{
|
||||||
|
elements.remove(index);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfObject get(int index) {
|
||||||
|
return elements.get(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int size() {
|
||||||
|
return elements.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,178 @@
|
||||||
|
package bdf.types;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import bdf.data.BdfDatabase;
|
||||||
|
import bdf.exception.UndefinedKeyException;
|
||||||
|
import bdf.util.DataHelpers;
|
||||||
|
|
||||||
|
public class BdfNamedList implements IBdfType
|
||||||
|
{
|
||||||
|
protected class Element
|
||||||
|
{
|
||||||
|
public byte[] key;
|
||||||
|
public BdfObject object;
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayList<Element> elements = new ArrayList<Element>();
|
||||||
|
|
||||||
|
public BdfNamedList() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfNamedList(BdfDatabase data)
|
||||||
|
{
|
||||||
|
// Create an iterator value to loop over the data
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
// Loop over the data
|
||||||
|
while(i < data.length())
|
||||||
|
{
|
||||||
|
// Get the key
|
||||||
|
int key_size = DataHelpers.getByteBuffer(data.getAt(i, i+(Integer.SIZE/8))).getInt();
|
||||||
|
i += (Integer.SIZE/8);
|
||||||
|
byte[] key = data.getAt(i, i+key_size).getBytes();
|
||||||
|
|
||||||
|
// Get the object
|
||||||
|
i += key_size;
|
||||||
|
int object_size = DataHelpers.getByteBuffer(data.getAt(i, i+(Integer.SIZE/8))).getInt();
|
||||||
|
i += (Integer.SIZE/8);
|
||||||
|
BdfObject object = new BdfObject(data.getAt(i, i+object_size));
|
||||||
|
|
||||||
|
// Create a new element and save some data to it
|
||||||
|
Element element = new Element();
|
||||||
|
element.object = object;
|
||||||
|
element.key = key;
|
||||||
|
|
||||||
|
// Add the object to the elements list
|
||||||
|
elements.add(element);
|
||||||
|
|
||||||
|
// Increase the iterator by the amount of bytes
|
||||||
|
i += object_size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BdfDatabase serialize()
|
||||||
|
{
|
||||||
|
// Create the serialized data string
|
||||||
|
BdfDatabase serialized = new BdfDatabase();
|
||||||
|
|
||||||
|
// Loop over the elements
|
||||||
|
for(Element o : elements)
|
||||||
|
{
|
||||||
|
// Add the serialized data to the data string
|
||||||
|
BdfDatabase data = o.object.serialize();
|
||||||
|
serialized = BdfDatabase.add(serialized, DataHelpers.serializeInt(o.key.length));
|
||||||
|
serialized = BdfDatabase.add(serialized, new BdfDatabase(o.key));
|
||||||
|
serialized = BdfDatabase.add(serialized, DataHelpers.serializeInt(data.length()));
|
||||||
|
serialized = BdfDatabase.add(serialized, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send back the serialized data
|
||||||
|
return serialized;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfObject get(String key)
|
||||||
|
{
|
||||||
|
// Get the object to send back
|
||||||
|
BdfObject object = null;
|
||||||
|
|
||||||
|
// Convert the key to bytes
|
||||||
|
byte[] key_bytes = key.getBytes();
|
||||||
|
|
||||||
|
// Loop over the elements
|
||||||
|
for(Element e : elements)
|
||||||
|
{
|
||||||
|
// Is this the element key
|
||||||
|
if(DataHelpers.bytesAreEqual(e.key, key_bytes))
|
||||||
|
{
|
||||||
|
// Set the object
|
||||||
|
object = e.object;
|
||||||
|
|
||||||
|
// Return the object
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Raise an error
|
||||||
|
throw new UndefinedKeyException(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void remove(String key)
|
||||||
|
{
|
||||||
|
// Convert the key to bytes
|
||||||
|
byte[] key_bytes = key.getBytes();
|
||||||
|
|
||||||
|
// Loop over the elements
|
||||||
|
for(int i=0;i<elements.size();i++)
|
||||||
|
{
|
||||||
|
// Get the element
|
||||||
|
Element e = elements.get(i);
|
||||||
|
|
||||||
|
// Is the specified key the same as the elements key
|
||||||
|
if(DataHelpers.bytesAreEqual(e.key, key_bytes))
|
||||||
|
{
|
||||||
|
// Delete this element
|
||||||
|
elements.remove(i);
|
||||||
|
|
||||||
|
// Exit out of the function, prevent NullPointException
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Raise an error
|
||||||
|
throw new UndefinedKeyException(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void set(String key, BdfObject object)
|
||||||
|
{
|
||||||
|
// Convert the key to bytes
|
||||||
|
byte[] key_bytes = key.getBytes();
|
||||||
|
|
||||||
|
// Loop over the elements, does it already exist
|
||||||
|
for(Element e : elements)
|
||||||
|
{
|
||||||
|
// Is the key here the same as the specified key
|
||||||
|
if(DataHelpers.bytesAreEqual(e.key, key_bytes))
|
||||||
|
{
|
||||||
|
// Set the new object
|
||||||
|
e.object = object;
|
||||||
|
|
||||||
|
// Exit out of the function, don't add another object
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a new element object
|
||||||
|
Element e = new Element();
|
||||||
|
e.key = key_bytes;
|
||||||
|
e.object = object;
|
||||||
|
|
||||||
|
// Add the new element object to the elements list
|
||||||
|
elements.add(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean contains(String key)
|
||||||
|
{
|
||||||
|
// Convert the key to bytes
|
||||||
|
byte[] key_bytes = key.getBytes();
|
||||||
|
|
||||||
|
// Loop over the elements
|
||||||
|
for(Element e : elements)
|
||||||
|
{
|
||||||
|
// Is the elements key the same as the specified key
|
||||||
|
if(DataHelpers.bytesAreEqual(e.key, key_bytes))
|
||||||
|
{
|
||||||
|
// Send back true to say the element was found
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send back false if nothing was found
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int size() {
|
||||||
|
return elements.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,204 @@
|
||||||
|
package bdf.types;
|
||||||
|
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
|
import bdf.data.BdfDatabase;
|
||||||
|
import bdf.util.DataHelpers;
|
||||||
|
|
||||||
|
public class BdfObject implements IBdfType
|
||||||
|
{
|
||||||
|
protected BdfDatabase database = null;
|
||||||
|
protected Object object = null;
|
||||||
|
protected byte type = BdfTypes.EMPTY;
|
||||||
|
|
||||||
|
public static BdfObject getNew() {
|
||||||
|
return new BdfObject();
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfObject(BdfDatabase data)
|
||||||
|
{
|
||||||
|
this();
|
||||||
|
|
||||||
|
// Get the type and database values
|
||||||
|
type = data.getAt(0, 1).getByte(0);
|
||||||
|
database = data.getAt(1, data.length());
|
||||||
|
|
||||||
|
// Set the object variable if there is an object specified
|
||||||
|
if(type == BdfTypes.STRING) object = new String(database.getBytes(), StandardCharsets.UTF_8);
|
||||||
|
if(type == BdfTypes.ARRAY) object = new BdfArray(database);
|
||||||
|
if(type == BdfTypes.NAMED_LIST) object = new BdfNamedList(database);
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfObject() {
|
||||||
|
database = new BdfDatabase();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BdfObject getNew(int v) {
|
||||||
|
return (new BdfObject()).setInteger(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BdfObject getNew(byte v) {
|
||||||
|
return (new BdfObject()).setByte(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BdfObject getNew(boolean v) {
|
||||||
|
return (new BdfObject()).setBoolean(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BdfObject getNew(float v) {
|
||||||
|
return (new BdfObject()).setFloat(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BdfObject getNew(double v) {
|
||||||
|
return (new BdfObject()).setDouble(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BdfObject getNew(long v) {
|
||||||
|
return (new BdfObject()).setLong(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BdfObject getNew(short v) {
|
||||||
|
return (new BdfObject()).setShort(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BdfObject getNew(String v) {
|
||||||
|
return (new BdfObject()).setString(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BdfObject getNew(BdfArray v) {
|
||||||
|
return (new BdfObject()).setArray(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BdfObject getNew(BdfNamedList v) {
|
||||||
|
return (new BdfObject()).setNamedList(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BdfDatabase serialize()
|
||||||
|
{
|
||||||
|
if(type == BdfTypes.STRING) database = new BdfDatabase(this.getString());
|
||||||
|
if(type == BdfTypes.ARRAY) database = ((BdfArray)object).serialize();
|
||||||
|
if(type == BdfTypes.NAMED_LIST) database = ((BdfNamedList)object).serialize();
|
||||||
|
|
||||||
|
return BdfDatabase.add(new BdfDatabase(type), database);
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte getType() {
|
||||||
|
return this.type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getInteger() {
|
||||||
|
return DataHelpers.getByteBuffer(database).getInt(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte getByte() {
|
||||||
|
return database.getByte(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getBoolean() {
|
||||||
|
return database.getByte(0) == 0x00;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getDouble() {
|
||||||
|
return DataHelpers.getByteBuffer(database).getDouble(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getFloat() {
|
||||||
|
return DataHelpers.getByteBuffer(database).getFloat(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getLong() {
|
||||||
|
return DataHelpers.getByteBuffer(database).getLong(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getShort() {
|
||||||
|
return DataHelpers.getByteBuffer(database).getShort(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getString() {
|
||||||
|
return (String)object;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfArray getArray() {
|
||||||
|
return (BdfArray)object;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfNamedList getNamedList() {
|
||||||
|
return (BdfNamedList)object;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfObject setInteger(int value) {
|
||||||
|
this.type = BdfTypes.INTEGER;
|
||||||
|
ByteBuffer b = ByteBuffer.allocate(Integer.SIZE/8);
|
||||||
|
b.putInt(0, value);
|
||||||
|
database = DataHelpers.getDatabase(b);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfObject setByte(byte value) {
|
||||||
|
this.type = BdfTypes.BYTE;
|
||||||
|
database = new BdfDatabase(value);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfObject setBoolean(boolean value) {
|
||||||
|
this.type = BdfTypes.BOOLEAN;
|
||||||
|
if(value) database = new BdfDatabase((byte)0x01);
|
||||||
|
else database = new BdfDatabase((byte)0x00);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfObject setDouble(double value) {
|
||||||
|
this.type = BdfTypes.DOUBLE;
|
||||||
|
ByteBuffer b = ByteBuffer.allocate(Double.SIZE/8);
|
||||||
|
b.putDouble(0, value);
|
||||||
|
database = DataHelpers.getDatabase(b);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfObject setFloat(float value) {
|
||||||
|
this.type = BdfTypes.FLOAT;
|
||||||
|
ByteBuffer b = ByteBuffer.allocate(Float.SIZE/8);
|
||||||
|
b.putFloat(0, value);
|
||||||
|
database = DataHelpers.getDatabase(b);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfObject setLong(long value) {
|
||||||
|
this.type = BdfTypes.LONG;
|
||||||
|
ByteBuffer b = ByteBuffer.allocate(Long.SIZE/8);
|
||||||
|
b.putLong(0, value);
|
||||||
|
database = DataHelpers.getDatabase(b);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfObject setShort(short value) {
|
||||||
|
this.type = BdfTypes.SHORT;
|
||||||
|
ByteBuffer b = ByteBuffer.allocate(Short.SIZE/8);
|
||||||
|
b.putShort(0, value);
|
||||||
|
database = DataHelpers.getDatabase(b);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfObject setString(String value) {
|
||||||
|
this.type = BdfTypes.STRING;
|
||||||
|
this.database = new BdfDatabase(value);
|
||||||
|
this.object = value;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfObject setArray(BdfArray value) {
|
||||||
|
this.type = BdfTypes.ARRAY;
|
||||||
|
this.database = value.serialize();
|
||||||
|
this.object = value;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BdfObject setNamedList(BdfNamedList value) {
|
||||||
|
this.type = BdfTypes.NAMED_LIST;
|
||||||
|
this.database = value.serialize();
|
||||||
|
this.object = value;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package bdf.types;
|
||||||
|
|
||||||
|
public class BdfTypes
|
||||||
|
{
|
||||||
|
public static final byte BOOLEAN = 0;
|
||||||
|
public static final byte INTEGER = 1;
|
||||||
|
public static final byte LONG = 2;
|
||||||
|
public static final byte SHORT = 3;
|
||||||
|
public static final byte BYTE = 4;
|
||||||
|
public static final byte DOUBLE = 5;
|
||||||
|
public static final byte FLOAT = 6;
|
||||||
|
public static final byte STRING = 7;
|
||||||
|
public static final byte ARRAY = 8;
|
||||||
|
public static final byte NAMED_LIST = 9;
|
||||||
|
public static final byte EMPTY = 10;
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
package bdf.types;
|
||||||
|
|
||||||
|
import bdf.data.BdfDatabase;
|
||||||
|
|
||||||
|
public interface IBdfType
|
||||||
|
{
|
||||||
|
public BdfDatabase serialize();
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
package bdf.util;
|
||||||
|
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
|
||||||
|
import bdf.data.BdfDatabase;
|
||||||
|
|
||||||
|
public class DataHelpers
|
||||||
|
{
|
||||||
|
public static ByteBuffer getByteBuffer(BdfDatabase db) {
|
||||||
|
return ByteBuffer.wrap(db.getBytes());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BdfDatabase getDatabase(ByteBuffer buffer) {
|
||||||
|
return new BdfDatabase(buffer.array());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BdfDatabase serializeInt(int value)
|
||||||
|
{
|
||||||
|
ByteBuffer buffer = ByteBuffer.allocate(Integer.SIZE/8);
|
||||||
|
buffer.putInt(value);
|
||||||
|
return getDatabase(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean bytesAreEqual(byte[] b1, byte[] b2)
|
||||||
|
{
|
||||||
|
// Send back false if the lengths are different
|
||||||
|
if(b1.length != b2.length) return false;
|
||||||
|
|
||||||
|
// Loop over the bytes
|
||||||
|
for(int i=0;i<b1.length;i++)
|
||||||
|
{
|
||||||
|
// Send back false if the bytes are different
|
||||||
|
if(b1[i] != b2[i]) return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send back true if everything has been checked
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue