/*
* Copyright 2008-2009 LinkedIn, Inc
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package voldemort;
import java.io.EOFException;
import java.io.File;
import java.io.RandomAccessFile;
import voldemort.serialization.Serializer;
import voldemort.serialization.json.JsonTypeDefinition;
import voldemort.serialization.json.JsonTypeSerializer;
import voldemort.utils.ByteUtils;
import voldemort.utils.Utils;
public class CatReadOnlyStore {
public static void main(String[] args) throws Exception {
if(args.length != 1)
Utils.croak("USAGE: java " + CatReadOnlyStore.class.getName() + " directory");
File dir = new File(args[0]);
Serializer<Object> serializer = new JsonTypeSerializer(JsonTypeDefinition.fromJson("'string'"),
true);
for(int chunk = 0;; chunk++) {
File indexFile = new File(dir, chunk + ".index");
File dataFile = new File(dir, chunk + ".data");
if(!indexFile.exists() || !dataFile.exists())
break;
RandomAccessFile index = new RandomAccessFile(indexFile, "r");
RandomAccessFile data = new RandomAccessFile(dataFile, "r");
System.out.println("Chunk " + chunk);
byte[] keyMd5 = new byte[16];
long position = -1;
try {
while(true) {
index.readFully(keyMd5);
position = index.readInt();
data.seek(position);
int size = data.readInt();
byte[] value = new byte[size];
data.readFully(value);
System.out.println(ByteUtils.toHexString(keyMd5) + "\t=>\t"
+ serializer.toObject(value).toString());
}
} catch(EOFException e) {
// no biggie
}
System.out.println();
}
}
}