From 06630e37fad9e9cb0f91e670c438fc5991cfcaf4 Mon Sep 17 00:00:00 2001 From: kascade Date: Fri, 20 Oct 2006 12:39:08 +0000 Subject: [PATCH] profile loading updated to include selected parameters/switches git-svn-id: http://svn.3splooges.com/romraider-arch/trunk@314 d2e2e1cd-ba16-0410-be16-b7c4453c7c2d --- profile.dtd | 6 ++ profile.xml | 4 +- src/enginuity/logger/EcuLogger.java | 61 +++++++++++-------- .../logger/ui/ParameterListTableModel.java | 22 ++++--- src/enginuity/logger/ui/UserProfile.java | 11 ++-- .../logger/ui/UserProfileHandler.java | 28 ++++++--- src/enginuity/logger/ui/UserProfileImpl.java | 41 ++++++++++--- 7 files changed, 119 insertions(+), 54 deletions(-) diff --git a/profile.dtd b/profile.dtd index d4d5a5b0..3fcecefc 100644 --- a/profile.dtd +++ b/profile.dtd @@ -2,11 +2,17 @@ + + + + + + diff --git a/profile.xml b/profile.xml index e298190e..b0722383 100644 --- a/profile.xml +++ b/profile.xml @@ -11,7 +11,7 @@ - + @@ -117,7 +117,7 @@ - + diff --git a/src/enginuity/logger/EcuLogger.java b/src/enginuity/logger/EcuLogger.java index 5783d34b..88290a17 100644 --- a/src/enginuity/logger/EcuLogger.java +++ b/src/enginuity/logger/EcuLogger.java @@ -1,6 +1,7 @@ package enginuity.logger; import enginuity.Settings; +import enginuity.logger.definition.EcuData; import enginuity.logger.definition.EcuDataLoader; import enginuity.logger.definition.EcuDataLoaderImpl; import enginuity.logger.definition.EcuParameter; @@ -171,6 +172,8 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC UserProfile profile = profileLoader.loadProfile(profileFilePath); List ecuParams = dataLoader.getEcuParameters(); addConvertorUpdateListeners(ecuParams); + clearParamTableModels(); + clearSwitchTableModels(); loadEcuParams(ecuParams, profile); loadEcuSwitches(dataLoader.getEcuSwitches(), profile); } @@ -184,18 +187,6 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC } } - private void loadEcuParams(List ecuParams, UserProfile profile) { - clearParamTableModels(); - sort(ecuParams, new EcuDataComparator()); - for (EcuParameter ecuParam : ecuParams) { - if (profile == null || profile.contains(ecuParam)) { - dataTabParamListTableModel.addParam(ecuParam); - graphTabParamListTableModel.addParam(ecuParam); - dashboardTabParamListTableModel.addParam(ecuParam); - } - } - } - private void clearParamTableModels() { stopLogging(); dataTabParamListTableModel.clear(); @@ -203,18 +194,6 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC dashboardTabParamListTableModel.clear(); } - private void loadEcuSwitches(List ecuSwitches, UserProfile profile) { - clearSwitchTableModels(); - sort(ecuSwitches, new EcuDataComparator()); - for (EcuSwitch ecuSwitch : ecuSwitches) { - if (profile == null || profile.contains(ecuSwitch)) { - dataTabSwitchListTableModel.addParam(ecuSwitch); - graphTabSwitchListTableModel.addParam(ecuSwitch); - dashboardTabSwitchListTableModel.addParam(ecuSwitch); - } - } - } - private void clearSwitchTableModels() { stopLogging(); dataTabSwitchListTableModel.clear(); @@ -222,6 +201,40 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC dashboardTabSwitchListTableModel.clear(); } + private void loadEcuParams(List ecuParams, UserProfile profile) { + sort(ecuParams, new EcuDataComparator()); + for (EcuParameter ecuParam : ecuParams) { + if (profile == null || profile.contains(ecuParam)) { + dataTabParamListTableModel.addParam(ecuParam, isSelectedOnLiveDataTab(profile, ecuParam)); + graphTabParamListTableModel.addParam(ecuParam, isSelectedOnGraphTab(profile, ecuParam)); + dashboardTabParamListTableModel.addParam(ecuParam, isSelectedOnDashTab(profile, ecuParam)); + } + } + } + + private void loadEcuSwitches(List ecuSwitches, UserProfile profile) { + sort(ecuSwitches, new EcuDataComparator()); + for (EcuSwitch ecuSwitch : ecuSwitches) { + if (profile == null || profile.contains(ecuSwitch)) { + dataTabSwitchListTableModel.addParam(ecuSwitch, isSelectedOnLiveDataTab(profile, ecuSwitch)); + graphTabSwitchListTableModel.addParam(ecuSwitch, isSelectedOnGraphTab(profile, ecuSwitch)); + dashboardTabSwitchListTableModel.addParam(ecuSwitch, isSelectedOnDashTab(profile, ecuSwitch)); + } + } + } + + private boolean isSelectedOnLiveDataTab(UserProfile profile, EcuData ecuData) { + return profile != null && profile.isSelectedOnLiveDataTab(ecuData); + } + + private boolean isSelectedOnGraphTab(UserProfile profile, EcuData ecuData) { + return profile != null && profile.isSelectedOnGraphTab(ecuData); + } + + private boolean isSelectedOnDashTab(UserProfile profile, EcuData ecuData) { + return profile != null && profile.isSelectedOnDashTab(ecuData); + } + private void initDataUpdateHandlers() { DataUpdateHandler threadedFileUpdateHandler = startHandlerInThread(fileUpdateHandler); dataHandlerManager.addHandler(startHandlerInThread(liveDataUpdateHandler)); diff --git a/src/enginuity/logger/ui/ParameterListTableModel.java b/src/enginuity/logger/ui/ParameterListTableModel.java index af3c7cd0..c02e3c29 100644 --- a/src/enginuity/logger/ui/ParameterListTableModel.java +++ b/src/enginuity/logger/ui/ParameterListTableModel.java @@ -56,12 +56,7 @@ public final class ParameterListTableModel extends AbstractTableModel { ParameterRow paramRow = paramRowMap.get(registeredEcuData.get(row)); if (col == 0 && paramRow != null) { Boolean selected = (Boolean) value; - paramRow.setSelected(selected); - if (selected) { - broker.registerEcuDataForLogging(paramRow.getEcuData()); - } else { - broker.deregisterEcuDataFromLogging(paramRow.getEcuData()); - } + setSelected(paramRow, selected); fireTableRowsUpdated(row, row); } } @@ -70,10 +65,12 @@ public final class ParameterListTableModel extends AbstractTableModel { return getValueAt(0, col).getClass(); } - public synchronized void addParam(EcuData ecuData) { + public synchronized void addParam(EcuData ecuData, boolean selected) { if (!registeredEcuData.contains(ecuData)) { - paramRowMap.put(ecuData, new ParameterRow(ecuData)); + ParameterRow paramRow = new ParameterRow(ecuData); + paramRowMap.put(ecuData, paramRow); registeredEcuData.add(ecuData); + setSelected(paramRow, selected); fireTableDataChanged(); } } @@ -84,4 +81,13 @@ public final class ParameterListTableModel extends AbstractTableModel { registeredEcuData.clear(); fireTableDataChanged(); } + + private void setSelected(ParameterRow paramRow, Boolean selected) { + paramRow.setSelected(selected); + if (selected) { + broker.registerEcuDataForLogging(paramRow.getEcuData()); + } else { + broker.deregisterEcuDataFromLogging(paramRow.getEcuData()); + } + } } diff --git a/src/enginuity/logger/ui/UserProfile.java b/src/enginuity/logger/ui/UserProfile.java index 0a8fac3c..594af8f6 100644 --- a/src/enginuity/logger/ui/UserProfile.java +++ b/src/enginuity/logger/ui/UserProfile.java @@ -1,12 +1,15 @@ package enginuity.logger.ui; -import enginuity.logger.definition.EcuParameter; -import enginuity.logger.definition.EcuSwitch; +import enginuity.logger.definition.EcuData; public interface UserProfile { - boolean contains(EcuParameter ecuParam); + boolean contains(EcuData ecuData); - boolean contains(EcuSwitch ecuSwitch); + boolean isSelectedOnLiveDataTab(EcuData ecuData); + + boolean isSelectedOnGraphTab(EcuData ecuData); + + boolean isSelectedOnDashTab(EcuData ecuData); } diff --git a/src/enginuity/logger/ui/UserProfileHandler.java b/src/enginuity/logger/ui/UserProfileHandler.java index 0be34a8f..49dd4c8a 100644 --- a/src/enginuity/logger/ui/UserProfileHandler.java +++ b/src/enginuity/logger/ui/UserProfileHandler.java @@ -3,32 +3,44 @@ package enginuity.logger.ui; import org.xml.sax.Attributes; import org.xml.sax.helpers.DefaultHandler; -import java.util.HashSet; -import java.util.Set; +import java.util.HashMap; public final class UserProfileHandler extends DefaultHandler { + private static final String SELECTED = "selected"; private static final String TAG_PARAMETER = "parameter"; private static final String TAG_SWITCH = "switch"; private static final String ATTR_ID = "id"; + private static final String ATTR_LIVE_DATA = "livedata"; + private static final String ATTR_GRAPH = "graph"; + private static final String ATTR_DASH = "dash"; private UserProfile profile; - private Set params; - private Set switches; + private HashMap params; + private HashMap switches; public void startDocument() { - params = new HashSet(); - switches = new HashSet(); + params = new HashMap(); + switches = new HashMap(); profile = new UserProfileImpl(params, switches); } public void startElement(String uri, String localName, String qName, Attributes attributes) { if (TAG_PARAMETER.equals(qName)) { - params.add(attributes.getValue(ATTR_ID)); + params.put(attributes.getValue(ATTR_ID), getSelectedValues(attributes)); } else if (TAG_SWITCH.equals(qName)) { - switches.add(attributes.getValue(ATTR_ID)); + switches.put(attributes.getValue(ATTR_ID), getSelectedValues(attributes)); } } public UserProfile getUserProfile() { return profile; } + + private Boolean[] getSelectedValues(Attributes attributes) { + return new Boolean[]{ + SELECTED.equalsIgnoreCase(attributes.getValue(ATTR_LIVE_DATA)), + SELECTED.equalsIgnoreCase(attributes.getValue(ATTR_GRAPH)), + SELECTED.equalsIgnoreCase(attributes.getValue(ATTR_DASH)) + }; + } + } diff --git a/src/enginuity/logger/ui/UserProfileImpl.java b/src/enginuity/logger/ui/UserProfileImpl.java index d9f8615c..746d97e8 100644 --- a/src/enginuity/logger/ui/UserProfileImpl.java +++ b/src/enginuity/logger/ui/UserProfileImpl.java @@ -1,27 +1,52 @@ package enginuity.logger.ui; +import enginuity.logger.definition.EcuData; import enginuity.logger.definition.EcuParameter; import enginuity.logger.definition.EcuSwitch; import static enginuity.util.ParamChecker.checkNotNull; -import java.util.Set; +import java.util.HashMap; +import java.util.Map; public final class UserProfileImpl implements UserProfile { - private final Set params; - private final Set switches; + private final HashMap params; + private final HashMap switches; - public UserProfileImpl(Set params, Set switches) { + public UserProfileImpl(HashMap params, HashMap switches) { checkNotNull(params, "params"); checkNotNull(switches, "switches"); this.params = params; this.switches = switches; } - public boolean contains(EcuParameter ecuParam) { - return params.contains(ecuParam.getId()); + public boolean contains(EcuData ecuData) { + return getMap(ecuData).keySet().contains(ecuData.getId()); } - public boolean contains(EcuSwitch ecuSwitch) { - return switches.contains(ecuSwitch.getId()); + public boolean isSelectedOnLiveDataTab(EcuData ecuData) { + return getSelectedArray(ecuData)[0]; } + + public boolean isSelectedOnGraphTab(EcuData ecuData) { + return getSelectedArray(ecuData)[1]; + } + + public boolean isSelectedOnDashTab(EcuData ecuData) { + return getSelectedArray(ecuData)[2]; + } + + private Boolean[] getSelectedArray(EcuData ecuData) { + return getMap(ecuData).get(ecuData.getId()); + } + + private Map getMap(EcuData ecuData) { + if (ecuData instanceof EcuParameter) { + return params; + } else if (ecuData instanceof EcuSwitch) { + return switches; + } else { + throw new UnsupportedOperationException("Unknown EcuData type: " + ecuData.getClass()); + } + } + }