mirror of https://github.com/rusefi/RomRaider.git
profile loading updated to include selected parameters/switches
git-svn-id: http://svn.3splooges.com/romraider-arch/trunk@314 d2e2e1cd-ba16-0410-be16-b7c4453c7c2d
This commit is contained in:
parent
1e64f6dfd1
commit
06630e37fa
|
@ -2,11 +2,17 @@
|
||||||
|
|
||||||
<!ELEMENT parameter EMPTY >
|
<!ELEMENT parameter EMPTY >
|
||||||
<!ATTLIST parameter id ID #REQUIRED >
|
<!ATTLIST parameter id ID #REQUIRED >
|
||||||
|
<!ATTLIST parameter livedata ( selected ) #IMPLIED >
|
||||||
|
<!ATTLIST parameter graph ( selected ) #IMPLIED >
|
||||||
|
<!ATTLIST parameter dash ( selected ) #IMPLIED >
|
||||||
|
|
||||||
<!ELEMENT parameters ( parameter+ ) >
|
<!ELEMENT parameters ( parameter+ ) >
|
||||||
|
|
||||||
<!ELEMENT switch EMPTY >
|
<!ELEMENT switch EMPTY >
|
||||||
<!ATTLIST switch id ID #REQUIRED >
|
<!ATTLIST switch id ID #REQUIRED >
|
||||||
|
<!ATTLIST switch livedata ( selected ) #IMPLIED >
|
||||||
|
<!ATTLIST switch graph ( selected ) #IMPLIED >
|
||||||
|
<!ATTLIST switch dash ( selected ) #IMPLIED >
|
||||||
|
|
||||||
<!ELEMENT switches ( switch+ ) >
|
<!ELEMENT switches ( switch+ ) >
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
<parameter id="P5"/>
|
<parameter id="P5"/>
|
||||||
<parameter id="P6"/>
|
<parameter id="P6"/>
|
||||||
<parameter id="P7"/>
|
<parameter id="P7"/>
|
||||||
<parameter id="P8"/>
|
<parameter id="P8" livedata="selected"/>
|
||||||
<parameter id="P9"/>
|
<parameter id="P9"/>
|
||||||
<parameter id="P10"/>
|
<parameter id="P10"/>
|
||||||
<parameter id="P11"/>
|
<parameter id="P11"/>
|
||||||
|
@ -117,7 +117,7 @@
|
||||||
<switch id="S17"/>
|
<switch id="S17"/>
|
||||||
<switch id="S18"/>
|
<switch id="S18"/>
|
||||||
<switch id="S19"/>
|
<switch id="S19"/>
|
||||||
<switch id="S20"/>
|
<switch id="S20" livedata="selected"/>
|
||||||
<switch id="S21"/>
|
<switch id="S21"/>
|
||||||
<switch id="S22"/>
|
<switch id="S22"/>
|
||||||
<switch id="S23"/>
|
<switch id="S23"/>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package enginuity.logger;
|
package enginuity.logger;
|
||||||
|
|
||||||
import enginuity.Settings;
|
import enginuity.Settings;
|
||||||
|
import enginuity.logger.definition.EcuData;
|
||||||
import enginuity.logger.definition.EcuDataLoader;
|
import enginuity.logger.definition.EcuDataLoader;
|
||||||
import enginuity.logger.definition.EcuDataLoaderImpl;
|
import enginuity.logger.definition.EcuDataLoaderImpl;
|
||||||
import enginuity.logger.definition.EcuParameter;
|
import enginuity.logger.definition.EcuParameter;
|
||||||
|
@ -171,6 +172,8 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC
|
||||||
UserProfile profile = profileLoader.loadProfile(profileFilePath);
|
UserProfile profile = profileLoader.loadProfile(profileFilePath);
|
||||||
List<EcuParameter> ecuParams = dataLoader.getEcuParameters();
|
List<EcuParameter> ecuParams = dataLoader.getEcuParameters();
|
||||||
addConvertorUpdateListeners(ecuParams);
|
addConvertorUpdateListeners(ecuParams);
|
||||||
|
clearParamTableModels();
|
||||||
|
clearSwitchTableModels();
|
||||||
loadEcuParams(ecuParams, profile);
|
loadEcuParams(ecuParams, profile);
|
||||||
loadEcuSwitches(dataLoader.getEcuSwitches(), profile);
|
loadEcuSwitches(dataLoader.getEcuSwitches(), profile);
|
||||||
}
|
}
|
||||||
|
@ -184,18 +187,6 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadEcuParams(List<EcuParameter> 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() {
|
private void clearParamTableModels() {
|
||||||
stopLogging();
|
stopLogging();
|
||||||
dataTabParamListTableModel.clear();
|
dataTabParamListTableModel.clear();
|
||||||
|
@ -203,18 +194,6 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC
|
||||||
dashboardTabParamListTableModel.clear();
|
dashboardTabParamListTableModel.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadEcuSwitches(List<EcuSwitch> 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() {
|
private void clearSwitchTableModels() {
|
||||||
stopLogging();
|
stopLogging();
|
||||||
dataTabSwitchListTableModel.clear();
|
dataTabSwitchListTableModel.clear();
|
||||||
|
@ -222,6 +201,40 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC
|
||||||
dashboardTabSwitchListTableModel.clear();
|
dashboardTabSwitchListTableModel.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void loadEcuParams(List<EcuParameter> 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<EcuSwitch> 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() {
|
private void initDataUpdateHandlers() {
|
||||||
DataUpdateHandler threadedFileUpdateHandler = startHandlerInThread(fileUpdateHandler);
|
DataUpdateHandler threadedFileUpdateHandler = startHandlerInThread(fileUpdateHandler);
|
||||||
dataHandlerManager.addHandler(startHandlerInThread(liveDataUpdateHandler));
|
dataHandlerManager.addHandler(startHandlerInThread(liveDataUpdateHandler));
|
||||||
|
|
|
@ -56,12 +56,7 @@ public final class ParameterListTableModel extends AbstractTableModel {
|
||||||
ParameterRow paramRow = paramRowMap.get(registeredEcuData.get(row));
|
ParameterRow paramRow = paramRowMap.get(registeredEcuData.get(row));
|
||||||
if (col == 0 && paramRow != null) {
|
if (col == 0 && paramRow != null) {
|
||||||
Boolean selected = (Boolean) value;
|
Boolean selected = (Boolean) value;
|
||||||
paramRow.setSelected(selected);
|
setSelected(paramRow, selected);
|
||||||
if (selected) {
|
|
||||||
broker.registerEcuDataForLogging(paramRow.getEcuData());
|
|
||||||
} else {
|
|
||||||
broker.deregisterEcuDataFromLogging(paramRow.getEcuData());
|
|
||||||
}
|
|
||||||
fireTableRowsUpdated(row, row);
|
fireTableRowsUpdated(row, row);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -70,10 +65,12 @@ public final class ParameterListTableModel extends AbstractTableModel {
|
||||||
return getValueAt(0, col).getClass();
|
return getValueAt(0, col).getClass();
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void addParam(EcuData ecuData) {
|
public synchronized void addParam(EcuData ecuData, boolean selected) {
|
||||||
if (!registeredEcuData.contains(ecuData)) {
|
if (!registeredEcuData.contains(ecuData)) {
|
||||||
paramRowMap.put(ecuData, new ParameterRow(ecuData));
|
ParameterRow paramRow = new ParameterRow(ecuData);
|
||||||
|
paramRowMap.put(ecuData, paramRow);
|
||||||
registeredEcuData.add(ecuData);
|
registeredEcuData.add(ecuData);
|
||||||
|
setSelected(paramRow, selected);
|
||||||
fireTableDataChanged();
|
fireTableDataChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -84,4 +81,13 @@ public final class ParameterListTableModel extends AbstractTableModel {
|
||||||
registeredEcuData.clear();
|
registeredEcuData.clear();
|
||||||
fireTableDataChanged();
|
fireTableDataChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setSelected(ParameterRow paramRow, Boolean selected) {
|
||||||
|
paramRow.setSelected(selected);
|
||||||
|
if (selected) {
|
||||||
|
broker.registerEcuDataForLogging(paramRow.getEcuData());
|
||||||
|
} else {
|
||||||
|
broker.deregisterEcuDataFromLogging(paramRow.getEcuData());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,15 @@
|
||||||
package enginuity.logger.ui;
|
package enginuity.logger.ui;
|
||||||
|
|
||||||
import enginuity.logger.definition.EcuParameter;
|
import enginuity.logger.definition.EcuData;
|
||||||
import enginuity.logger.definition.EcuSwitch;
|
|
||||||
|
|
||||||
public interface UserProfile {
|
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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,32 +3,44 @@ package enginuity.logger.ui;
|
||||||
import org.xml.sax.Attributes;
|
import org.xml.sax.Attributes;
|
||||||
import org.xml.sax.helpers.DefaultHandler;
|
import org.xml.sax.helpers.DefaultHandler;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashMap;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public final class UserProfileHandler extends DefaultHandler {
|
public final class UserProfileHandler extends DefaultHandler {
|
||||||
|
private static final String SELECTED = "selected";
|
||||||
private static final String TAG_PARAMETER = "parameter";
|
private static final String TAG_PARAMETER = "parameter";
|
||||||
private static final String TAG_SWITCH = "switch";
|
private static final String TAG_SWITCH = "switch";
|
||||||
private static final String ATTR_ID = "id";
|
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 UserProfile profile;
|
||||||
private Set<String> params;
|
private HashMap<String, Boolean[]> params;
|
||||||
private Set<String> switches;
|
private HashMap<String, Boolean[]> switches;
|
||||||
|
|
||||||
public void startDocument() {
|
public void startDocument() {
|
||||||
params = new HashSet<String>();
|
params = new HashMap<String, Boolean[]>();
|
||||||
switches = new HashSet<String>();
|
switches = new HashMap<String, Boolean[]>();
|
||||||
profile = new UserProfileImpl(params, switches);
|
profile = new UserProfileImpl(params, switches);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startElement(String uri, String localName, String qName, Attributes attributes) {
|
public void startElement(String uri, String localName, String qName, Attributes attributes) {
|
||||||
if (TAG_PARAMETER.equals(qName)) {
|
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)) {
|
} else if (TAG_SWITCH.equals(qName)) {
|
||||||
switches.add(attributes.getValue(ATTR_ID));
|
switches.put(attributes.getValue(ATTR_ID), getSelectedValues(attributes));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public UserProfile getUserProfile() {
|
public UserProfile getUserProfile() {
|
||||||
return profile;
|
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))
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,27 +1,52 @@
|
||||||
package enginuity.logger.ui;
|
package enginuity.logger.ui;
|
||||||
|
|
||||||
|
import enginuity.logger.definition.EcuData;
|
||||||
import enginuity.logger.definition.EcuParameter;
|
import enginuity.logger.definition.EcuParameter;
|
||||||
import enginuity.logger.definition.EcuSwitch;
|
import enginuity.logger.definition.EcuSwitch;
|
||||||
import static enginuity.util.ParamChecker.checkNotNull;
|
import static enginuity.util.ParamChecker.checkNotNull;
|
||||||
|
|
||||||
import java.util.Set;
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public final class UserProfileImpl implements UserProfile {
|
public final class UserProfileImpl implements UserProfile {
|
||||||
private final Set<String> params;
|
private final HashMap<String, Boolean[]> params;
|
||||||
private final Set<String> switches;
|
private final HashMap<String, Boolean[]> switches;
|
||||||
|
|
||||||
public UserProfileImpl(Set<String> params, Set<String> switches) {
|
public UserProfileImpl(HashMap<String, Boolean[]> params, HashMap<String, Boolean[]> switches) {
|
||||||
checkNotNull(params, "params");
|
checkNotNull(params, "params");
|
||||||
checkNotNull(switches, "switches");
|
checkNotNull(switches, "switches");
|
||||||
this.params = params;
|
this.params = params;
|
||||||
this.switches = switches;
|
this.switches = switches;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean contains(EcuParameter ecuParam) {
|
public boolean contains(EcuData ecuData) {
|
||||||
return params.contains(ecuParam.getId());
|
return getMap(ecuData).keySet().contains(ecuData.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean contains(EcuSwitch ecuSwitch) {
|
public boolean isSelectedOnLiveDataTab(EcuData ecuData) {
|
||||||
return switches.contains(ecuSwitch.getId());
|
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<String, Boolean[]> 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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue