From ae9b6f8fbba002f1d4018d06e432a77197659686 Mon Sep 17 00:00:00 2001 From: Dale Schultz Date: Sun, 21 Jul 2013 23:38:38 -0400 Subject: [PATCH] Update to implement the new ConvertorManger interface. Convertors can now be applied to the Phidget data items immediately, no Logger restart required. --- .../interfacekit/plugin/IntfKitDataItem.java | 26 ++++++++----- .../plugin/IntfKitPluginMenuAction.java | 38 +++++++++++++------ 2 files changed, 43 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/romraider/logger/external/phidget/interfacekit/plugin/IntfKitDataItem.java b/src/main/java/com/romraider/logger/external/phidget/interfacekit/plugin/IntfKitDataItem.java index 1a6be89e..736621a7 100644 --- a/src/main/java/com/romraider/logger/external/phidget/interfacekit/plugin/IntfKitDataItem.java +++ b/src/main/java/com/romraider/logger/external/phidget/interfacekit/plugin/IntfKitDataItem.java @@ -22,6 +22,7 @@ package com.romraider.logger.external.phidget.interfacekit.plugin; import com.romraider.logger.ecu.definition.EcuDataConvertor; import com.romraider.logger.ecu.definition.ExternalDataConvertorImpl; import com.romraider.logger.ecu.ui.handler.dash.GaugeMinMax; +import com.romraider.logger.external.core.ConvertorManager; import com.romraider.logger.external.core.DataListener; import com.romraider.logger.external.core.ExternalDataItem; import com.romraider.logger.external.phidget.interfacekit.io.IntfKitSensor; @@ -33,10 +34,11 @@ import com.romraider.logger.external.phidget.interfacekit.io.IntfKitSensor; * of each sensor input is set to raw defaults and can be modified by the user * using the Phidget InterfaceKit dialog from the Logger Plugins menu item. */ -public final class IntfKitDataItem implements ExternalDataItem, DataListener { +public final class IntfKitDataItem implements + ExternalDataItem, DataListener, ConvertorManager { + private final String name; private double data; - private String units; private EcuDataConvertor[] convertors; /** @@ -49,9 +51,9 @@ public final class IntfKitDataItem implements ExternalDataItem, DataListener { public IntfKitDataItem(IntfKitSensor sensor) { super(); this.name = sensor.getInputName(); - this.units = sensor.getUnits(); int convertorCount = 1; - if (!sensor.getExpression().equals("x")) { + if (!sensor.getExpression().equals("x") && + !sensor.getUnits().equals("raw value")) { convertorCount = 2; } GaugeMinMax gaugeMinMax = new GaugeMinMax( @@ -59,7 +61,7 @@ public final class IntfKitDataItem implements ExternalDataItem, DataListener { convertors = new EcuDataConvertor[convertorCount]; convertors[0] = new ExternalDataConvertorImpl( this, - units, + sensor.getUnits(), sensor.getExpression(), sensor.getFormat(), gaugeMinMax); @@ -74,27 +76,33 @@ public final class IntfKitDataItem implements ExternalDataItem, DataListener { } } + @Override public String getName() { return name; } + @Override public String getDescription() { return name + " data"; } + @Override public double getData() { return data; } - public String getUnits() { - return units; - } - + @Override public void setData(double data) { this.data = data; } + @Override public EcuDataConvertor[] getConvertors() { return convertors; } + + @Override + public void setConvertors(EcuDataConvertor[] convertors) { + this.convertors = convertors; + } } diff --git a/src/main/java/com/romraider/logger/external/phidget/interfacekit/plugin/IntfKitPluginMenuAction.java b/src/main/java/com/romraider/logger/external/phidget/interfacekit/plugin/IntfKitPluginMenuAction.java index 77ba563a..f26f40d1 100644 --- a/src/main/java/com/romraider/logger/external/phidget/interfacekit/plugin/IntfKitPluginMenuAction.java +++ b/src/main/java/com/romraider/logger/external/phidget/interfacekit/plugin/IntfKitPluginMenuAction.java @@ -31,6 +31,9 @@ import javax.swing.table.TableModel; import com.romraider.Settings; import com.romraider.logger.ecu.EcuLogger; +import com.romraider.logger.ecu.definition.EcuDataConvertor; +import com.romraider.logger.ecu.definition.ExternalDataConvertorImpl; +import com.romraider.logger.ecu.ui.handler.dash.GaugeMinMax; import com.romraider.logger.external.core.ExternalDataItem; import com.romraider.logger.external.core.ExternalDataSource; import com.romraider.logger.external.phidget.interfacekit.io.IntfKitSensor; @@ -65,7 +68,6 @@ public final class IntfKitPluginMenuAction extends AbstractAction { } private List> getDataItems() { - final StringBuilder sb = new StringBuilder(); final List> ikDataItems = new ArrayList>(); final List externalSources = logger.getExternalDataSources(); dataItems = new ArrayList(); @@ -86,12 +88,6 @@ public final class IntfKitPluginMenuAction extends AbstractAction { String.valueOf(item.getConvertors()[0].getGaugeMinMax().step) )); } - for (List ikData : ikDataItems) { - for (int i = 0; i < ikData.size(); i++) { - sb.append(ikData.get(i) + " : "); - } - sb.append("\n"); - } return ikDataItems; } @@ -100,11 +96,11 @@ public final class IntfKitPluginMenuAction extends AbstractAction { final Map phidgets = Settings.getPhidgetSensors(); for (int i = 0; i < tm.getRowCount(); i++) { - String value = (String) tm.getValueAt(i, 0); - String key = value.replaceAll("Phidget IK Sensor ", ""); + String column0 = (String) tm.getValueAt(i, 0); + String key = column0.replaceAll("Phidget IK Sensor ", ""); if (phidgets.containsKey(key)) { for (int j = 1; j < tm.getColumnCount(); j++) { - value = (String) tm.getValueAt(i, j); + String value = (String) tm.getValueAt(i, j); switch (j) { case 1: phidgets.get(key).setExpression(value); @@ -129,12 +125,30 @@ public final class IntfKitPluginMenuAction extends AbstractAction { } } } + final IntfKitDataItem ikDataItem = (IntfKitDataItem) dataItems.get(i); + final GaugeMinMax gaugeMinMax = new GaugeMinMax( + Float.parseFloat((String) tm.getValueAt(i, 4)), + Float.parseFloat((String) tm.getValueAt(i, 5)), + Float.parseFloat((String) tm.getValueAt(i, 6))); + + final EcuDataConvertor[] convertors = ikDataItem.getConvertors(); + convertors[0] = new ExternalDataConvertorImpl( + ikDataItem, + (String) tm.getValueAt(i, 3), + (String) tm.getValueAt(i, 1), + (String) tm.getValueAt(i, 2), + gaugeMinMax); + + ikDataItem.setConvertors(convertors); } Settings.setPhidgetSensors(phidgets); JOptionPane.showMessageDialog( logger, - "Exit and restart the Logger to activate the changes.", - "Phidget InterfaceKit Settings Saved", + "Un-select each updated External Phidget data item on each Data,\n" + + "Graph and Dashboard Logger tabs to complete the update.\n\n" + + "Logging profiles using the old Phidget settings must be loaded\n" + + "and re-saved with the new settings.", + "Phidget InterfaceKit Settings Applied", JOptionPane.INFORMATION_MESSAGE); } }