@Override public VTable readValue() { List<Class<?>> types = new ArrayList<Class<?>>(); List<Object> values = new ArrayList<Object>(); for (List<ReadFunction<?>> columnFunctions : functions) { List<Object> columnValues = new ArrayList<Object>(); Class<?> columnType = null; // Extract all values and determine column type for (ReadFunction<?> function : columnFunctions) { Object value = function.readValue(); columnType = validateType(value, columnType, names.get(types.size())); columnValues.add(value); } // If no type is found, the column will be empty. // Default to an array of Strings if (columnType == null) columnType = String.class; // Prepare column array Object data = java.lang.reflect.Array.newInstance(columnType, columnValues.size()); for (int i = 0; i < columnValues.size(); i++) { arrayAdders.get(columnType).addValue(data, i, columnValues.get(i)); } // Done with this column types.add(columnType); values.add(arrayAdders.get(columnType).finalizeData(data)); } return ValueFactory.newVTable(types, names, values); }
return ValueFactory.newVTable(types, names, data);
@Override public VTable readValue() { VNumberArray xValues = xVDoubleArray.getFunction().readValue(); VNumberArray yValues = yVDoubleArray.getFunction().readValue(); if (xValues == null || yValues == null) { return null; } return ValueFactory.newVTable(Arrays.<Class<?>>asList(double.class, double.class), Arrays.asList("X", "Y"), Arrays.<Object>asList(new ListDoubleView(xValues.getData()), new ListDoubleView(yValues.getData()))); } }, "data");
@Override public Object calculate(List<Object> args) { PVAPVStructure value = (PVAPVStructure) args.get(0); if (value == null) return null; PVStructure pvStructure = value.getPVStructure(); int numberOfFields = pvStructure.getNumberFields(); ArrayList<Class<?>> types = new ArrayList<Class<?>>(numberOfFields); ArrayList<Object> values = new ArrayList<Object>(numberOfFields); for (PVField pvF : pvStructure.getPVFields()) { /* // to String implementation types.add(String.class); ArrayList<String> columnData = new ArrayList<String>(); columnData.add(pvF.toString()); values.add(columnData); */ Class<?> clazz = toVTableColumnClass(pvF.getField()); types.add(clazz); ArrayList<Object> columnData = new ArrayList<Object>(); columnData.add(toVTableColumnValue(pvF, clazz)); values.add(columnData); } return ValueFactory.newVTable( types, Arrays.asList(pvStructure.getStructure().getFieldNames()), values); }
static VTable toVTable(JsonObject json) { VTypeJsonMapper mapper = new VTypeJsonMapper(json); List<Class<?>> types = mapper.getColumnTypes("columnTypes"); return newVTable(types, mapper.getListString("columnNames"), mapper.getColumnValues("columnValues", types)); }
return ValueFactory.newVTable(Arrays.<Class<?>>asList(double.class, double.class, double.class, double.class), Arrays.asList("x", "y", "mod", "phase"), Arrays.<Object>asList(real, imaginary, modulus, phase));
@Override public VTable readValue() { VNumberArray values = yArray.getFunction().readValue(); VNumber offset = xInitialOffset.getFunction().readValue(); VNumber increment = xIncrementSize.getFunction().readValue(); if (values == null || offset == null || increment == null) { return null; } return ValueFactory.newVTable(Arrays.<Class<?>>asList(double.class, double.class), Arrays.asList("X", "Y"), Arrays.<Object>asList(ListNumbers.linearList(offset.getValue().doubleValue(), increment.getValue().doubleValue(), values.getData().size()), new ListDoubleView(values.getData()))); } }, "data");
return ValueFactory.newVTable(Arrays.asList(COLUMN_TYPES), Arrays.asList(COLUMN_NAMES), columnValues);