@Override public void pvChanged(PVReaderEvent<VType> event) { VType value = event.getPvReader().getValue(); // We can extract the different aspect of the read object, // so that we can work on them separately // This returns the interface implemented (VDouble, VInt, ...) Class<?> type = ValueUtil.typeOf(value); // Extracts the alarm if present Alarm alarm = ValueUtil.alarmOf(value); // Extracts the time if present Time time = ValueUtil.timeOf(value); // Extracts a numeric value if present Double number = ValueUtil.numericValueOf(value); // Extract display information if present Display display = ValueUtil.displayOf(value); // setAlarm(alarm); // setTime(time); } })
@Override public List<ArrayDimensionDisplay> getDimensionDisplay() { return ValueUtil.defaultArrayDisplay(this); }
/** * An expression that formats the given expression to a string using the * default format. * * @param expression the expression to format * @return an expression with the string representation of the argument */ public static DesiredRateReadWriteExpression<VString, String> vStringOf(DesiredRateReadWriteExpression<? extends VType, ? extends Object> expression) { return vStringOf(expression, ValueUtil.getDefaultValueFormat()); }
@Override public void pvChanged(PVReaderEvent<Object> event) { setLastError(pv.lastException()); Object value = pv.getValue(); setTextValue(format.format(value)); setType(ValueUtil.typeOf(value)); setAlarm(ValueUtil.alarmOf(value)); setTime(ValueUtil.timeOf(value)); setIndicator(ValueUtil.normalizedNumericValueOf(value)); setMetadata(ValueUtil.displayOf(value)); setConnected(pv.isConnected()); } })
private Class<?> validateType(Object value, Class<?> oldType, String columnName) { if (value == null) return oldType; // Type of the final array Class<?> newType = typeConversion.get(ValueUtil.typeOf(value)); if (oldType == null) return newType; if (newType != null) { if (newType.equals(oldType)) return oldType; // Convert integers to double if mixed column if (newType.equals(Double.TYPE) && oldType.equals(Integer.TYPE)) return newType; if (newType.equals(Integer.TYPE) && oldType.equals(Double.TYPE)) return oldType; } // Types don't match throw new RuntimeException("Values for column " + columnName + " are not all of the same valid column type: can't convert " + value.getClass().getSimpleName() + " to " + oldType.getSimpleName() + " - currently only VString, VDouble and VInt)."); }
@Override public Object calculate(List<Object> args) { VType value = (VType) args.get(0); Alarm alarm = ValueUtil.alarmOf(value); if (alarm == null) { alarm = ValueFactory.alarmNone(); } Time time = ValueUtil.timeOf(value); if (time == null) { time = ValueFactory.timeNow(); } return ValueFactory.newVString(ValueUtil.getDefaultValueFormat().format(value), alarm, time); }
@Override public VString readValue() { VType value = argument.readValue(); if (forward != null) { forward.writeValue(value); } if (value == null) { return null; } String string = format.format(value); Alarm alarm = ValueUtil.alarmOf(value); if (alarm == null) { alarm = ValueFactory.alarmNone(); } Time time = ValueUtil.timeOf(value); if (time == null) { time = ValueFactory.timeNow(); } return ValueFactory.newVString(string, alarm, time); }
@Override public Object readValue(InputStream in) throws Exception { BufferedImage image = ImageIO.read(in); return ValueUtil.toVImage(image); }
@Override public Object calculate(List<Object> args) { if (NullUtils.containsNull(args)) { return null; } Object arg = args.get(0); Alarm alarm = ValueUtil.alarmOf(arg); return newVEnum(alarm.getAlarmSeverity().ordinal(), AlarmSeverity.labels(), alarm, ValueUtil.latestValidTimeOrNowOf(args)); }
@Override public Object calculate(final List<Object> args) { Alarm alarm = ValueUtil.highestSeverityOf(args, true); Time time = ValueUtil.timeOf(alarm); if (time == null) { time = ValueFactory.timeNow(); } return ValueFactory.newVEnum(alarm.getAlarmSeverity().ordinal(), AlarmSeverity.labels(), alarm, time); }
private String timeStampOf(Object value) { if (value == null) return ""; return ValueUtil.timeOf(value).getTimestamp().toString(); }
private String alarmSeverityOf(Object value) { if (value == null) return ""; return ValueUtil.alarmOf(value).getAlarmSeverity().toString(); }
xValues.add(ValueUtil.numericColumnOf(vTable, column)); yValues.add(ValueUtil.numericColumnOf(vTable, column));
String xColumn, String yColumn, String sizeColumn, String colorColumn) { ListNumber xValues = ValueUtil.numericColumnOf(vTable, xColumn); ListNumber yValues = ValueUtil.numericColumnOf(vTable, yColumn); ListNumber sizeValues = ValueUtil.numericColumnOf(vTable, sizeColumn); List<String> colorValues = ValueUtil.stringColumnOf(vTable, colorColumn);
@Override public T readValue() { Object obj = arg1.getFunction().readValue(); if (obj == null) { return null; } if (clazz.isInstance(obj)) { return clazz.cast(obj); } else { throw new RuntimeException(argName + " must be a " + clazz.getSimpleName() + " (was " + ValueUtil.typeOf(obj).getSimpleName() + ")"); } } }, arg1.getName());
@Override public Graph2DResult readValue() { VNumberArray data = arrayData.readValue(); // Data must be available if (data == null) { return null; } // TODO: check array is one dimensional Cell1DDataset dataset = null; dataset = DatasetConversions.cell1DDatasetsFromVNumberArray(data); // Process all renderer updates for (AreaGraph2DRendererUpdate rendererUpdate : getUpdateQueue().readValue()) { renderer.update(rendererUpdate); } // If no size is set, don't calculate anything if (renderer.getImageHeight() == 0 && renderer.getImageWidth() == 0) return null; BufferedImage image = new BufferedImage(renderer.getImageWidth(), renderer.getImageHeight(), BufferedImage.TYPE_3BYTE_BGR); renderer.draw(image.createGraphics(), dataset); int index = -1; if (renderer.getFocusValueIndex() != null) { index = renderer.getFocusValueIndex(); } return new Graph2DResult(data, ValueUtil.toVImage(image), new GraphDataRange(renderer.getXPlotRange(), dataset.getXRange(), dataset.getXRange()), new GraphDataRange(renderer.getYPlotRange(), dataset.getStatistics().getRange(), renderer.getYAggregatedRange()), index); }
String xColumn, String yColumn) { ListNumber xValues = ValueUtil.numericColumnOf(vTable, xColumn); ListNumber yValues = ValueUtil.numericColumnOf(vTable, yColumn);
@Override public T readValue() { Object obj = arg.readValue(); if (obj == null) { return null; } if (clazz != null) { if (clazz.isInstance(obj)) { return clazz.cast(obj); } else { throw new RuntimeException(argName + " must be a " + clazz.getSimpleName() + " (was " + ValueUtil.typeOf(obj).getSimpleName() + ")"); } } else { for (Class<? extends T> aClass : classes) { if (aClass.isInstance(obj)) { return aClass.cast(obj); } } StringBuilder sb = new StringBuilder(); List<String> names = new ArrayList<>(); for (Class<? extends T> aClass : classes) { names.add(aClass.getSimpleName()); } throw new RuntimeException(argName + " must be one of " + names.toString() + " (was " + ValueUtil.typeOf(obj).getSimpleName() + ")"); } } }
@Override public List<ArrayDimensionDisplay> getDimensionDisplay() { return ValueUtil.defaultArrayDisplay(this); }
renderer.draw(image.createGraphics(), dataset); previousImage = ValueUtil.toVImage(image); return new Graph2DResult(vTable, previousImage, new GraphDataRange(renderer.getXPlotRange(), renderer.getXPlotRange(), renderer.getXAggregatedRange()), new GraphDataRange(