@Override public ValueArray asArray() throws ValueTranslationException { ValueArray arr = ValueFactory.createArray(1); arr.add(this); return arr; }
@Override public void clear() { data.clear(); }
public static ValueArray sortArray(ValueArray array) { List<ValueObject> tmpObjs = new ArrayList<>(); for (ValueObject obj : array) { tmpObjs.add(obj); } Collections.sort(tmpObjs, valueObjectComparator); ValueArray rv = ValueFactory.createArray(array.size()); for (ValueObject obj : tmpObjs) { rv.add(obj); } return rv; } }
@Override public int size() { return data.size(); }
@Test public void printArray() throws IOException { ValueFilterPrettyPrint vf = Configs.decodeObject(ValueFilterPrettyPrint.class, ""); ValueArray array = ValueFactory.createArray(3); test(vf, array, "[]"); array.add(ValueFactory.create(1)); array.add(ValueFactory.create(2)); array.add(ValueFactory.create(3)); test(vf, array, "[1,2,3]"); array.clear(); array.add(ValueFactory.create("foo")); array.add(ValueFactory.create("bar")); array.add(ValueFactory.create("baz\"quux")); test(vf, array, "[\"foo\",\"bar\",\"baz\\\"quux\"]"); }
@Override public ValueObject filterValue(ValueObject value) { if (value == null) { return null; } if (value.getObjectType() == ValueObject.TYPE.ARRAY) { ValueArray arr = value.asArray(); int size = arr.size(); int half = size / 2; for (int i = 0; i < half; i++) { int altpos = size - i - 1; ValueObject tmp = arr.get(i); arr.set(i, arr.get(altpos)); arr.set(altpos, tmp); } return arr; } else if (value.getObjectType() == ValueObject.TYPE.STRING) { return ValueFactory.create(new StringBuilder(value.toString()).reverse().toString()); } return value; }
@Override public ValueObject filter(ValueObject value, Bundle context) { ValueObject nullReturn = toNull ? null : value; if (ValueUtil.isEmpty(value)) { return nullReturn; } if (value.getObjectType() == ValueObject.TYPE.ARRAY) { ValueArray arr = value.asArray(); if (arr.isEmpty()) { return nullReturn; } int i = index.getInt(context).getAsInt(); while (i < 0) { i = arr.size() + i; } return (arr.size() > i) ? arr.get(i) : nullReturn; } return nullReturn; }
@Test public void filterLengthArray() { ValueFilterLength vfl = new ValueFilterLength(); ValueArray array = ValueFactory.createArray(0); assertEquals(null, vfl.filter(ValueFactory.createArray(0))); // prevent auto-filter iteration vfl.setOnce(true); assertEquals(ValueFactory.create(0), vfl.filter(array)); // add elements, try again array.add(ValueFactory.create("foo")); array.add(ValueFactory.create(5)); // there should be two elements assertEquals(ValueFactory.create(2), vfl.filter(array)); // disable once so each value is passed through the filter vfl.setOnce(false); array = (ValueArray) vfl.filter(array); assertEquals(ValueFactory.create(3), array.get(0)); // length of "foo" assertEquals(ValueFactory.create(5), array.get(1)); // length of the # 5 } }
for (String value : values) { ValueString str = ValueFactory.create(value); if (!unique || !arr.contains(str)) { arr.add(str); if (fromVal.getObjectType() == ValueObject.TYPE.ARRAY) { for (ValueObject element : fromVal.asArray()) { if (!unique || !arr.contains(element)) { arr.add(element); } else if (!unique || !arr.contains(fromVal)) { arr.add(fromVal);
@Override public Long get(int index) { ValueObject val = data.get(index); if (val == null) return null; return val.asLong().getLong(); }
@VisibleForTesting boolean updateChildData(Bundle bundle, Config conf) { ValueObject valueObject = conf.key.getValue(bundle); if (valueObject == null) { return false; } if (valueObject.getObjectType() == ValueObject.TYPE.ARRAY) { ValueArray array = valueObject.asArray(); Iterator<ValueObject> iterator = array.iterator(); boolean updated = false; while (iterator.hasNext()) { ValueObject next = iterator.next(); updated = updated | updateString(next.asString().asNative(), iterator, bundle, conf); } return updated; } else { return updateString(valueObject.asString().asNative(), null, bundle, conf); } }
@Override public void send(Bundle row) { ValueArray rowView = row.asValueArray(); ValueObject rowKey = rowView.get(0); if (columns == null) { columns = new ArrayDeque<>(rowView.size() - 1); for (int i = 1; i < rowView.size(); i++) { ValueObject cell = rowView.get(i); if (cell != null) { columns.add(cell); newrow.setValue(valField, rowView.get(pos)); newrow.setValue(extraField, rowView.get(rowView.size() - 1));
/** * Iterate over the input value and apply the filter to each element of the array. * * @param value input array * @param context Optional context for this filter. * @return output array */ @Nullable private ValueObject filterArray(ValueObject value, Bundle context) { ValueArray in = value.asArray(); ValueArray out = null; for (ValueObject vo : in) { ValueObject val = filterValue(vo, context); if (val != null) { if (out == null) { out = ValueFactory.createArray(in.size()); } out.add(val); } } return out; }
@Override public int size() { return data.size(); }
@Test public void parseArray() throws IOException { ValueArray array = ValueFactory.createArray(3); assertEquals(array, json.filterValue(ValueFactory.create("[]"))); roundTrip(array); array.add(ValueFactory.create(1)); array.add(ValueFactory.create(2)); array.add(ValueFactory.create(3)); assertEquals(array, json.filterValue(ValueFactory.create("[1,2,3]"))); roundTrip(array); array.clear(); array.add(ValueFactory.create("foo")); array.add(ValueFactory.create("bar")); array.add(ValueFactory.create("baz\"quux")); assertEquals(array, json.filterValue(ValueFactory.create("[\"foo\",\"bar\",\"baz\\\"quux\"]"))); roundTrip(array); }
@Override public String get(int index) { ValueObject val = data.get(index); if (val == null) return null; return val.asString().asNative(); }