public Pair<T, T> mapRange(String col, T beginValue, T endValue, String returnCol) { int colIdx = tableDesc.findColumnByName(col).getZeroBasedIndex(); int returnIdx = tableDesc.findColumnByName(returnCol).getZeroBasedIndex(); Comparator<T> colComp = getComparator(colIdx); Comparator<T> returnComp = getComparator(returnIdx); T returnBegin = null; T returnEnd = null; for (T[] row : data.values()) { if (between(beginValue, row[colIdx], endValue, colComp)) { T returnValue = row[returnIdx]; if (returnBegin == null || returnComp.compare(returnValue, returnBegin) < 0) { returnBegin = returnValue; } if (returnEnd == null || returnComp.compare(returnValue, returnEnd) > 0) { returnEnd = returnValue; } } } if (returnBegin == null && returnEnd == null) return null; else return Pair.newPair(returnBegin, returnEnd); }
@SuppressWarnings("unchecked") private void initRow(String[] cols, int[] keyIndex) { T[] value = convertRow(cols); T[] keyCols = (T[]) java.lang.reflect.Array.newInstance(getType(), keyIndex.length); for (int i = 0; i < keyCols.length; i++) keyCols[i] = value[keyIndex[i]]; Array<T> key = new Array<T>(keyCols); if (data.containsKey(key)) throw new IllegalStateException("The table: " + tableDesc.getName() + " Dup key found, key=" + toString(keyCols) + ", value1=" + toString(data.get(key)) + ", value2=" + toString(value)); data.put(key, value); }
public LookupTable(TableDesc tableDesc, String[] keyColumns, IReadableTable table) throws IOException { this.tableDesc = tableDesc; this.keyColumns = keyColumns; this.table = table; this.data = new HashMap<Array<T>, T[]>(); init(); }
@SuppressWarnings("unchecked") private void initRow(String[] cols, int[] keyIndex) { T[] value = convertRow(cols); T[] keyCols = (T[]) java.lang.reflect.Array.newInstance(value[0].getClass(), keyIndex.length); for (int i = 0; i < keyCols.length; i++) keyCols[i] = value[keyIndex[i]]; Array<T> key = new Array<T>(keyCols); if (data.containsKey(key)) throw new IllegalStateException("Dup key found, key=" + toString(keyCols) + ", value1=" + toString(data.get(key)) + ", value2=" + toString(value)); data.put(key, value); }
protected void init() throws IOException { int[] keyIndex = new int[keyColumns.length]; for (int i = 0; i < keyColumns.length; i++) { keyIndex[i] = tableDesc.findColumnByName(keyColumns[i]).getZeroBasedIndex(); } TableReader reader = table.getReader(); try { while (reader.next()) { initRow(reader.getRow(), keyIndex); } } finally { IOUtils.closeQuietly(reader); } }
@Test public void testMapRange2() throws Exception { Pair<String, String> results = lookupTable.mapRange("WEEK_BEG_DT", millis("2013-05-01"), millis("2013-08-01"), "CAL_DT"); System.out.println(DateFormat.formatToDateStr(Long.parseLong(results.getFirst()))); System.out.println(DateFormat.formatToDateStr(Long.parseLong(results.getSecond()))); Assert.assertEquals(millis("2013-05-05"), results.getFirst()); Assert.assertEquals(millis("2013-08-03"), results.getSecond()); }
@Test public void testScan() throws Exception { List<String> values = new ArrayList<String>(); values.add(millis("2012-01-24")); values.add(millis("2012-12-30")); List<String> results = lookupTable.scan("CAL_DT", values, "YEAR_BEG_DT"); Assert.assertTrue(results.size() > 0); for (String i : results) { System.out.println(i); Assert.assertEquals(millis("2012-01-01"), i); } }
@Test public void testMapValues() throws Exception { Set<String> values = new HashSet<String>(); values.add(millis("2012-01-24")); values.add(millis("2012-12-30")); Set<String> results = lookupTable.mapValues("CAL_DT", values, "YEAR_BEG_DT"); Assert.assertTrue(results.size() == 1); for (String i : results) { System.out.println(i); Assert.assertEquals(millis("2012-01-01"), i); } }
public Pair<T, T> mapRange(String col, T beginValue, T endValue, String returnCol) { int colIdx = tableDesc.findColumnByName(col).getZeroBasedIndex(); int returnIdx = tableDesc.findColumnByName(returnCol).getZeroBasedIndex(); T returnBegin = null; T returnEnd = null; for (T[] row : data.values()) { if (between(beginValue, row[colIdx], endValue)) { T returnValue = row[returnIdx]; if (returnBegin == null || returnValue.compareTo(returnBegin) < 0) { returnBegin = returnValue; } if (returnEnd == null || returnValue.compareTo(returnEnd) > 0) { returnEnd = returnValue; } } } if (returnBegin == null && returnEnd == null) return null; else return new Pair<T, T>(returnBegin, returnEnd); }
protected String toString(T[] cols) { StringBuilder b = new StringBuilder(); b.append("["); for (int i = 0; i < cols.length; i++) { if (i > 0) b.append(","); b.append(toString(cols[i])); } b.append("]"); return b.toString(); }
@SuppressWarnings("unchecked") private void initRow(String[] cols, int[] keyIndex) { T[] value = convertRow(cols); T[] keyCols = (T[]) java.lang.reflect.Array.newInstance(value[0].getClass(), keyIndex.length); for (int i = 0; i < keyCols.length; i++) keyCols[i] = value[keyIndex[i]]; Array<T> key = new Array<T>(keyCols); if (data.containsKey(key)) throw new IllegalStateException("Dup key found, key=" + toString(keyCols) + ", value1=" + toString(data.get(key)) + ", value2=" + toString(value)); data.put(key, value); }
protected void init() throws IOException { int[] keyIndex = new int[keyColumns.length]; for (int i = 0; i < keyColumns.length; i++) { keyIndex[i] = tableDesc.findColumnByName(keyColumns[i]).getZeroBasedIndex(); } TableReader reader = table.getReader(); try { while (reader.next()) { initRow(reader.getRow(), keyIndex); } } finally { reader.close(); } }
@Test public void testMapRange() throws Exception { Pair<String, String> results = lookupTable.mapRange("CAL_DT", millis("2012-01-24"), millis("2012-12-30"), "QTR_BEG_DT"); Assert.assertTrue(results != null); System.out.println("The first qtr_beg_dt is " + results.getFirst()); System.out.println("The last qtr_beg_dt is " + results.getSecond()); Assert.assertEquals(millis("2012-01-01"), results.getFirst()); Assert.assertEquals(millis("2012-10-01"), results.getSecond()); }
@Test public void testScan() throws Exception { List<String> values = new ArrayList<String>(); values.add("2012-01-24"); values.add("2012-12-30"); List<String> results = lookupTable.scan("CAL_DT", values, "YEAR_BEG_DT"); Assert.assertTrue(results.size() > 0); for (String i : results) { System.out.println(i); Assert.assertEquals("2012-01-01", i); } }
@Test public void testMapValues() throws Exception { Set<String> values = new HashSet<String>(); values.add("2012-01-24"); values.add("2012-12-30"); Set<String> results = lookupTable.mapValues("CAL_DT", values, "YEAR_BEG_DT"); Assert.assertTrue(results.size() == 1); for (String i : results) { System.out.println(i); Assert.assertEquals("2012-01-01", i); } }
public Pair<T, T> mapRange(String col, T beginValue, T endValue, String returnCol) { int colIdx = tableDesc.findColumnByName(col).getZeroBasedIndex(); int returnIdx = tableDesc.findColumnByName(returnCol).getZeroBasedIndex(); T returnBegin = null; T returnEnd = null; for (T[] row : data.values()) { if (between(beginValue, row[colIdx], endValue)) { T returnValue = row[returnIdx]; if (returnBegin == null || returnValue.compareTo(returnBegin) < 0) { returnBegin = returnValue; } if (returnEnd == null || returnValue.compareTo(returnEnd) > 0) { returnEnd = returnValue; } } } if (returnBegin == null && returnEnd == null) return null; else return new Pair<T, T>(returnBegin, returnEnd); }
@SuppressWarnings("unchecked") private void initRow(String[] cols, int[] keyIndex) { T[] value = convertRow(cols); T[] keyCols = (T[]) java.lang.reflect.Array.newInstance(getType(), keyIndex.length); for (int i = 0; i < keyCols.length; i++) keyCols[i] = value[keyIndex[i]]; Array<T> key = new Array<T>(keyCols); if (data.containsKey(key)) throw new IllegalStateException("The table: " + tableDesc.getName() + " Dup key found, key=" + toString(keyCols) + ", value1=" + toString(data.get(key)) + ", value2=" + toString(value)); data.put(key, value); }
@Override protected void init() throws IOException { ColumnDesc[] cols = tableDesc.getColumns(); colIsDateTime = new boolean[cols.length]; colIsNumber = new boolean[cols.length]; for (int i = 0; i < cols.length; i++) { DataType t = cols[i].getType(); colIsDateTime[i] = t.isDateTimeFamily(); colIsNumber[i] = t.isNumberFamily(); } super.init(); }