@Override protected Object[] extractFields(OUT record) { Object[] fields = new Object[record.getArity()]; for (int i = 0; i < fields.length; i++) { fields[i] = record.getField(i); } return fields; } }
@Override public void serializeInternal(Tuple2<Tuple, byte[]> value) { int keySize = 0; for (int x = 0; x < value.f0.getArity(); x++) { keySize += ((byte[]) value.f0.getField(x)).length; } buffer = ByteBuffer.allocate(5 + keySize + value.f1.length); buffer.put(TYPE_KEY_VALUE); buffer.put((byte) value.f0.getArity()); for (int x = 0; x < value.f0.getArity(); x++) { buffer.put((byte[]) value.f0.getField(x)); } buffer.put(value.f1); } }
@Override public int compare(T o1, T o2) { if (o1 == null || o2 == null) { throw new IllegalArgumentException("Cannot compare null tuples"); } else if (o1.getArity() != o2.getArity()) { return o1.getArity() - o2.getArity(); } else { for (int i = 0; i < o1.getArity(); i++) { Object val1 = o1.getField(i); Object val2 = o2.getField(i); int cmp; if (val1 != null && val2 != null) { cmp = compareValues(val1, val2); } else { cmp = val1 == null ? (val2 == null ? 0 : -1) : 1; } if (cmp != 0) { return cmp; } } return 0; } }
@Override public Object[] extract(Tuple in) { Object[] output; if (order == null) { // copy the whole tuple output = new Object[in.getArity()]; for (int i = 0; i < in.getArity(); i++) { output[i] = in.getField(i); } } else { // copy user specified order output = new Object[order.length]; for (int i = 0; i < order.length; i++) { output[i] = in.getField(order[i]); } } return output; }
public TupleSerializer(Tuple value) { serializer = new Serializer[value.getArity()]; for (int x = 0; x < serializer.length; x++) { serializer[x] = getSerializer(value.getField(x)); } }
@Override public void writeRecord(T element) throws IOException { int numFields = element.getArity();
private static String[] normalizeKeys(Object keys) { if (keys instanceof Tuple) { Tuple tupleKeys = (Tuple) keys; if (tupleKeys.getArity() == 0) { return new String[0]; } if (tupleKeys.getField(0) instanceof Integer) { String[] stringKeys = new String[tupleKeys.getArity()]; for (int x = 0; x < stringKeys.length; x++) { stringKeys[x] = "f0.f" + (Integer) tupleKeys.getField(x); } return stringKeys; } if (tupleKeys.getField(0) instanceof String) { return tupleToStringArray(tupleKeys); } throw new RuntimeException("Key argument contains field that is neither an int nor a String: " + tupleKeys); } if (keys instanceof int[]) { int[] intKeys = (int[]) keys; String[] stringKeys = new String[intKeys.length]; for (int x = 0; x < stringKeys.length; x++) { stringKeys[x] = "f0.f" + intKeys[x]; } return stringKeys; } throw new RuntimeException("Key argument is neither an int[] nor a Tuple: " + keys.toString()); }
Object first = t.getField(0); StringBuilder bld = new StringBuilder(first == null ? "null" : first.toString()); for (int pos = 1; pos < t.getArity(); pos++) { Object next = t.getField(pos); bld.append(',').append(next == null ? "null" : next.toString());
@Override public Tuple deserialize(boolean normalized) throws IOException { Tuple result = createTuple(deserializer.length); for (int x = 0; x < result.getArity(); x++) { result.setField(deserializer[x].deserialize(normalized), x); } return result; } }
@Override public OUT nextRecord(OUT reuse) throws IOException { final Row item = resultSet.one(); for (int i = 0; i < reuse.getArity(); i++) { reuse.setField(item.getObject(i), i); } return reuse; } }
for (int x = 0; x < value.getArity(); x++) { fields[x] = value.getField(x);
int numFields = t.getArity(); if(numFields != countFieldsInClass(value.getClass())) {
@Override protected void deepEquals(String message, T should, T is) { for (int x = 0; x < should.getArity(); x++) { assertEquals((Object)should.getField(x), is.getField(x)); } }
Assert.assertEquals(8, results.getArity());
@Override protected int getFieldsNum(T record) { return record.getArity(); }
@SuppressWarnings("unchecked") public static <T extends Tuple> T setTupleValue(Tuple tuple, Object[] row) { if (row.length != tuple.getArity()) { throw new IllegalArgumentException("Row length" + row.length + " is not equal with tuple's arity: " + tuple.getArity()); } for (int i = 0; i < row.length; i++) { tuple.setField(row[i], i); } return (T) tuple; } }