00001
00002 package de.aitools.aq.invertedindex.core;
00003
00004 import java.io.File;
00005 import java.io.PrintStream;
00006
00007 import com.sun.jna.Structure;
00008
00009 import de.aitools.aq.check.A;
00010 import de.aitools.aq.util.Memory;
00011
00019 public final class Configuration {
00020
00022 public static final String
00023 NATIVE_LIB = "aitools3-aq-invertedindex-1.2.6-jna";
00024
00025 protected static final class ConfigurationImpl extends Structure {
00026
00027 public int keySorting;
00028 public int valueSorting;
00029 public String inputDirectory;
00030 public String indexDirectory;
00031 public int maxMemoryUsage;
00032 public long expectedRecordCount;
00033 }
00034
00036 public static enum KeySorting {
00037 UNSORTED, SORTED
00038 }
00039
00041 public static enum ValueSorting {
00042 DISABLED, ASCENDING, DESCENDING
00043 }
00044
00053 public Configuration() {
00054 impl = new ConfigurationImpl();
00055 impl.keySorting = KeySorting.UNSORTED.ordinal();
00056 impl.valueSorting = ValueSorting.DISABLED.ordinal();
00057 impl.maxMemoryUsage = Memory.MB1024.ordinal();
00058 impl.inputDirectory = new String();
00059 impl.indexDirectory = new String();
00060 }
00061
00067 public long getExpectedNumberOfRecords() {
00068 return impl.expectedRecordCount;
00069 }
00070
00076 public File getIndexDirectory() {
00077 return new File(impl.indexDirectory);
00078 }
00079
00085 public File getInputDirectory() {
00086 return new File(impl.inputDirectory);
00087 }
00088
00094 public KeySorting getKeySorting() {
00095 return KeySorting.values()[impl.keySorting];
00096 }
00097
00103 public Memory getMaxMemoryUsage() {
00104 return Memory.values()[impl.maxMemoryUsage];
00105 }
00106
00112 public ValueSorting getValueSorting() {
00113 return ValueSorting.values()[impl.valueSorting];
00114 }
00115
00123 public PrintStream printTo(PrintStream stream) {
00124 stream.format("expectedNumberOfRecords : %1$d\n",
00125 getExpectedNumberOfRecords());
00126 stream.format("indexDirectory : %1$s\n", getIndexDirectory());
00127 stream.format("inputDirectory : %1$s\n", getInputDirectory());
00128 stream.format("keySorting : %1$s\n", getKeySorting());
00129 stream.format("valueSorting : %1$s\n", getValueSorting());
00130 stream.format("maxMemoryUsage : %1$s", getMaxMemoryUsage());
00131 return stream;
00132 }
00133
00139 public void setExpectedNumberOfRecords(long numberOfRecords) {
00140 impl.expectedRecordCount = numberOfRecords;
00141 }
00142
00151 public void setIndexDirectory(File indexDirectory) {
00152 A.CHECK_NOT_NULL(indexDirectory);
00153 impl.indexDirectory = indexDirectory.getAbsolutePath();
00154 }
00155
00162 public void setInputDirectory(File inputDirectory) {
00163 A.CHECK_NOT_NULL(inputDirectory);
00164 impl.inputDirectory = inputDirectory.getAbsolutePath();
00165 }
00166
00172 public void setKeySorting(KeySorting sorting) {
00173 impl.keySorting = sorting.ordinal();
00174 }
00175
00184 public void setMaxMemoryUsage(Memory maxMemoryUsage) {
00185 impl.maxMemoryUsage = maxMemoryUsage.ordinal();
00186 }
00187
00193 public void setValueSorting(ValueSorting sorting) {
00194 impl.valueSorting = sorting.ordinal();
00195 }
00196
00197 protected ConfigurationImpl impl;
00198 }