Add equals methods on objects, use for storetest
This commit is contained in:
54
src/main/java/net/runelite/cache/fs/Archive.java
vendored
54
src/main/java/net/runelite/cache/fs/Archive.java
vendored
@@ -1,7 +1,9 @@
|
|||||||
package net.runelite.cache.fs;
|
package net.runelite.cache.fs;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import net.runelite.cache.fs.io.InputStream;
|
import net.runelite.cache.fs.io.InputStream;
|
||||||
|
|
||||||
public class Archive
|
public class Archive
|
||||||
@@ -19,6 +21,58 @@ public class Archive
|
|||||||
this.index = index;
|
this.index = index;
|
||||||
this.archiveId = id;
|
this.archiveId = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode()
|
||||||
|
{
|
||||||
|
int hash = 7;
|
||||||
|
hash = 47 * hash + this.archiveId;
|
||||||
|
hash = 47 * hash + this.nameHash;
|
||||||
|
hash = 47 * hash + Arrays.hashCode(this.whirlpool);
|
||||||
|
hash = 47 * hash + this.crc;
|
||||||
|
hash = 47 * hash + this.revision;
|
||||||
|
hash = 47 * hash + Objects.hashCode(this.files);
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj)
|
||||||
|
{
|
||||||
|
if (obj == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (getClass() != obj.getClass())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
final Archive other = (Archive) obj;
|
||||||
|
if (this.archiveId != other.archiveId)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (this.nameHash != other.nameHash)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!Arrays.equals(this.whirlpool, other.whirlpool))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (this.crc != other.crc)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (this.revision != other.revision)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!Objects.equals(this.files, other.files))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public File addFile(int id)
|
public File addFile(int id)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import java.io.FileNotFoundException;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.RandomAccessFile;
|
import java.io.RandomAccessFile;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
import java.util.Objects;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@@ -16,11 +17,13 @@ public class DataFile implements Closeable
|
|||||||
private static final int SECTOR_SIZE = 520;
|
private static final int SECTOR_SIZE = 520;
|
||||||
|
|
||||||
private final Store store;
|
private final Store store;
|
||||||
|
private final File file;
|
||||||
private final RandomAccessFile dat;
|
private final RandomAccessFile dat;
|
||||||
private final byte[] readCachedBuffer = new byte[SECTOR_SIZE];
|
private final byte[] readCachedBuffer = new byte[SECTOR_SIZE];
|
||||||
|
|
||||||
public DataFile(Store store, File file) throws FileNotFoundException
|
public DataFile(Store store, File file) throws FileNotFoundException
|
||||||
{
|
{
|
||||||
|
this.file = file;
|
||||||
this.store = store;
|
this.store = store;
|
||||||
dat = new RandomAccessFile(file, "rw");
|
dat = new RandomAccessFile(file, "rw");
|
||||||
}
|
}
|
||||||
@@ -30,6 +33,33 @@ public class DataFile implements Closeable
|
|||||||
{
|
{
|
||||||
dat.close();
|
dat.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode()
|
||||||
|
{
|
||||||
|
int hash = 7;
|
||||||
|
hash = 71 * hash + Objects.hashCode(this.file);
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj)
|
||||||
|
{
|
||||||
|
if (obj == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (getClass() != obj.getClass())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
final DataFile other = (DataFile) obj;
|
||||||
|
if (!Objects.equals(this.file, other.file))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|||||||
39
src/main/java/net/runelite/cache/fs/File.java
vendored
39
src/main/java/net/runelite/cache/fs/File.java
vendored
@@ -1,5 +1,7 @@
|
|||||||
package net.runelite.cache.fs;
|
package net.runelite.cache.fs;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
public class File
|
public class File
|
||||||
{
|
{
|
||||||
private Archive archive;
|
private Archive archive;
|
||||||
@@ -13,6 +15,43 @@ public class File
|
|||||||
this.fileId = fileId;
|
this.fileId = fileId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode()
|
||||||
|
{
|
||||||
|
int hash = 7;
|
||||||
|
hash = 97 * hash + this.fileId;
|
||||||
|
hash = 97 * hash + this.nameHash;
|
||||||
|
hash = 97 * hash + Arrays.hashCode(this.contents);
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj)
|
||||||
|
{
|
||||||
|
if (obj == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (getClass() != obj.getClass())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
final File other = (File) obj;
|
||||||
|
if (this.fileId != other.fileId)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (this.nameHash != other.nameHash)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!Arrays.equals(this.contents, other.contents))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public Archive getArchive()
|
public Archive getArchive()
|
||||||
{
|
{
|
||||||
return archive;
|
return archive;
|
||||||
|
|||||||
54
src/main/java/net/runelite/cache/fs/Index.java
vendored
54
src/main/java/net/runelite/cache/fs/Index.java
vendored
@@ -4,7 +4,9 @@ import java.io.Closeable;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import net.runelite.cache.fs.io.InputStream;
|
import net.runelite.cache.fs.io.InputStream;
|
||||||
import net.runelite.cache.fs.io.OutputStream;
|
import net.runelite.cache.fs.io.OutputStream;
|
||||||
import net.runelite.cache.fs.util.bzip2.BZip2Decompressor;
|
import net.runelite.cache.fs.util.bzip2.BZip2Decompressor;
|
||||||
@@ -37,6 +39,58 @@ public class Index implements Closeable
|
|||||||
// throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
// throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode()
|
||||||
|
{
|
||||||
|
int hash = 3;
|
||||||
|
hash = 97 * hash + Objects.hashCode(this.index);
|
||||||
|
hash = 97 * hash + this.id;
|
||||||
|
hash = 97 * hash + this.revision;
|
||||||
|
hash = 97 * hash + this.crc;
|
||||||
|
hash = 97 * hash + Arrays.hashCode(this.whirlpool);
|
||||||
|
hash = 97 * hash + Objects.hashCode(this.archives);
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj)
|
||||||
|
{
|
||||||
|
if (obj == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (getClass() != obj.getClass())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
final Index other = (Index) obj;
|
||||||
|
if (!Objects.equals(this.index, other.index))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (this.id != other.id)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (this.revision != other.revision)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (this.crc != other.crc)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!Arrays.equals(this.whirlpool, other.whirlpool))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!Objects.equals(this.archives, other.archives))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public IndexFile getIndex()
|
public IndexFile getIndex()
|
||||||
{
|
{
|
||||||
return index;
|
return index;
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import java.io.File;
|
|||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.RandomAccessFile;
|
import java.io.RandomAccessFile;
|
||||||
|
import java.util.Objects;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@@ -15,6 +16,7 @@ public class IndexFile implements Closeable
|
|||||||
|
|
||||||
private final Store store;
|
private final Store store;
|
||||||
private final int indexFileId;
|
private final int indexFileId;
|
||||||
|
private final File file;
|
||||||
private final RandomAccessFile idx;
|
private final RandomAccessFile idx;
|
||||||
private final byte[] buffer = new byte[6];
|
private final byte[] buffer = new byte[6];
|
||||||
|
|
||||||
@@ -22,6 +24,7 @@ public class IndexFile implements Closeable
|
|||||||
{
|
{
|
||||||
this.store = store;
|
this.store = store;
|
||||||
this.indexFileId = indexFileId;
|
this.indexFileId = indexFileId;
|
||||||
|
this.file = file;
|
||||||
this.idx = new RandomAccessFile(file, "rw");
|
this.idx = new RandomAccessFile(file, "rw");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -31,6 +34,33 @@ public class IndexFile implements Closeable
|
|||||||
idx.close();
|
idx.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode()
|
||||||
|
{
|
||||||
|
int hash = 3;
|
||||||
|
hash = 41 * hash + Objects.hashCode(this.file);
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj)
|
||||||
|
{
|
||||||
|
if (obj == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (getClass() != obj.getClass())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
final IndexFile other = (IndexFile) obj;
|
||||||
|
if (!Objects.equals(this.file, other.file))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public Store getStore()
|
public Store getStore()
|
||||||
{
|
{
|
||||||
return store;
|
return store;
|
||||||
|
|||||||
43
src/main/java/net/runelite/cache/fs/Store.java
vendored
43
src/main/java/net/runelite/cache/fs/Store.java
vendored
@@ -6,6 +6,7 @@ import java.io.FileNotFoundException;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
public class Store implements Closeable
|
public class Store implements Closeable
|
||||||
{
|
{
|
||||||
@@ -43,6 +44,48 @@ public class Store implements Closeable
|
|||||||
//for (IndexFile i : indexFiles)
|
//for (IndexFile i : indexFiles)
|
||||||
i.close();
|
i.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode()
|
||||||
|
{
|
||||||
|
int hash = 5;
|
||||||
|
hash = 79 * hash + Objects.hashCode(this.folder);
|
||||||
|
hash = 79 * hash + Objects.hashCode(this.data);
|
||||||
|
hash = 79 * hash + Objects.hashCode(this.index255);
|
||||||
|
hash = 79 * hash + Objects.hashCode(this.indexes);
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj)
|
||||||
|
{
|
||||||
|
if (obj == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (getClass() != obj.getClass())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
final Store other = (Store) obj;
|
||||||
|
if (!Objects.equals(this.folder, other.folder))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!Objects.equals(this.data, other.data))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!Objects.equals(this.index255, other.index255))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!Objects.equals(this.indexes, other.indexes))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public Index addIndex(int id) throws FileNotFoundException
|
public Index addIndex(int id) throws FileNotFoundException
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -22,36 +22,21 @@ public class StoreTest
|
|||||||
@Test
|
@Test
|
||||||
public void testOneFile() throws IOException
|
public void testOneFile() throws IOException
|
||||||
{
|
{
|
||||||
File file;
|
|
||||||
try (Store store = new Store(folder.getRoot()))
|
try (Store store = new Store(folder.getRoot()))
|
||||||
{
|
{
|
||||||
Index index = store.addIndex(0);
|
Index index = store.addIndex(0);
|
||||||
Archive archive = index.addArchive(0);
|
Archive archive = index.addArchive(0);
|
||||||
file = archive.addFile(0);
|
File file = archive.addFile(0);
|
||||||
file.setContents("test".getBytes());
|
file.setContents("test".getBytes());
|
||||||
|
|
||||||
store.save();
|
store.save();
|
||||||
}
|
|
||||||
|
|
||||||
try (Store store = new Store(folder.getRoot()))
|
try (Store store2 = new Store(folder.getRoot()))
|
||||||
{
|
{
|
||||||
store.load();
|
store2.load();
|
||||||
|
|
||||||
List<Index> indexes = store.getIndexes();
|
Assert.assertEquals(store, store2);
|
||||||
Assert.assertEquals(1, indexes.size());
|
}
|
||||||
|
|
||||||
Index index = indexes.get(0);
|
|
||||||
List<Archive> archives = index.getArchives();
|
|
||||||
Assert.assertEquals(1, archives.size());
|
|
||||||
|
|
||||||
Archive archive = archives.get(0);
|
|
||||||
List<File> files = archive.getFiles();
|
|
||||||
// XXX just use equals methods on store duh
|
|
||||||
//archive.
|
|
||||||
|
|
||||||
File file2 = files.get(0);
|
|
||||||
|
|
||||||
Assert.assertArrayEquals(file.getContents(), file2.getContents());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user