package com.senseidb.clue.commands;
import java.io.PrintStream;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import com.senseidb.clue.ClueContext;
public class GetUserCommitDataCommand extends ClueCommand {
public GetUserCommitDataCommand(ClueContext ctx) {
super(ctx);
}
@Override
public String getName() {
return "showcommitdata";
}
@Override
public String help() {
return "Shows user commit data";
}
@Override
public void execute(String[] args, PrintStream out) throws Exception {
IndexReader reader = ctx.getIndexReader();
if (reader instanceof DirectoryReader) {
DirectoryReader dirReader = (DirectoryReader) reader;
Map<String, String> userData = dirReader.getIndexCommit().getUserData();
if (userData == null || userData.size() == 0) {
out.println("Empty user commit data");
} else {
for (Entry<String, String> entry : userData.entrySet()) {
out.println("key: " + entry.getKey()+"\tvalue: " + entry.getValue());
}
}
out.flush();
} else {
throw new IllegalArgumentException("can only read user commit data from instances of " + DirectoryReader.class);
}
}
}