Skip to content

Commit

Permalink
Bug Fix: NullPointerException in ExportDialog (BugId: 948, 949)
Browse files Browse the repository at this point in the history
-Fixed Formula columns export
-Fixed Column selection list not being enable when selected after restart
  • Loading branch information
GoldenGnu committed Jun 16, 2021
1 parent ff3d8ba commit a4c2edd
Show file tree
Hide file tree
Showing 21 changed files with 116 additions and 132 deletions.
Expand Up @@ -437,7 +437,7 @@ public void actionPerformed(ActionEvent e) {
}

private void updateColumns() {
final List<EnumTableColumn<E>> enumColumns = filterControl.getColumns();
final List<EnumTableColumn<E>> enumColumns = exportFilterControl.getColumns();
columns.clear();
columnIndex.clear();
columnIndex.addAll(enumColumns);
Expand Down Expand Up @@ -573,7 +573,7 @@ private void loadSettings() {
List<Integer> selections = new ArrayList<>();
for (String column : list) {
try {
EnumTableColumn<E> enumColumn = exportFilterControl.toColumn(column);
EnumTableColumn<E> enumColumn = exportFilterControl.valueOf(column);
if (enumColumn != null) {
int index = columnIndex.indexOf(enumColumn);
selections.add(index);
Expand Down Expand Up @@ -698,12 +698,18 @@ public void updateDisplayElements() {
if (columnSelection == ColumnSelection.SHOWN) {
jViewCurrent.setSelected(true);
jViews.setEnabled(false);
jColumnSelection.setEnabled(false);
jViewSelectAll.setEnabled(false);
} else if (columnSelection == ColumnSelection.SAVED && hasItem(jViews, viewName)) {
jViewSaved.setSelected(true);
jViews.setEnabled(true);
jColumnSelection.setEnabled(false);
jViewSelectAll.setEnabled(false);
} else if (columnSelection == ColumnSelection.SELECTED) {
jViewSelect.setSelected(true);
jViews.setEnabled(false);
jColumnSelection.setEnabled(true);
jViewSelectAll.setEnabled(true);
} else {
//If we got here then the column selection didn't match the data and we had to default, so reset the value
//in the settings.
Expand Down Expand Up @@ -851,7 +857,7 @@ protected void save() {
for (E e : items) {
Map<String, String> row = new HashMap<>();
for (EnumTableColumn<E> column : header) {
row.put(column.name(), format(column.getColumnValue(e), Settings.get().getExportSettings(toolName).getCsvDecimalSeparator(), false));
row.put(column.name(), format(exportFilterControl.getColumnValue(e, column.name()), Settings.get().getExportSettings(toolName).getCsvDecimalSeparator(), false));
}
rows.add(row);
}
Expand All @@ -868,7 +874,7 @@ protected void save() {
for (E e : items) {
Map<EnumTableColumn<?>, String> row = new HashMap<>();
for (EnumTableColumn<E> column : header) {
row.put(column, format(column.getColumnValue(e), Settings.get().getExportSettings(toolName).getCsvDecimalSeparator(), Settings.get().getExportSettings(toolName).isHtmlStyled()));
row.put(column, format(exportFilterControl.getColumnValue(e, column.name()), Settings.get().getExportSettings(toolName).getCsvDecimalSeparator(), Settings.get().getExportSettings(toolName).isHtmlStyled()));
}
rows.add(row);
}
Expand All @@ -887,7 +893,7 @@ protected void save() {
for (E e : items) {
Map<EnumTableColumn<?>, Object> row = new HashMap<>();
for (EnumTableColumn<E> column : header) {
row.put(column, column.getColumnValue(e));
row.put(column, exportFilterControl.getColumnValue(e, column.name()));
}
rows.add(row);
}
Expand Down
Expand Up @@ -30,7 +30,9 @@

public abstract class ExportFilterControl<E> {

protected abstract EnumTableColumn<E> toColumn(String column);
protected abstract EnumTableColumn<E> valueOf(String column) throws IllegalArgumentException;
protected abstract Object getColumnValue(E item, String column);
protected abstract List<EnumTableColumn<E>> getColumns();
protected abstract List<EnumTableColumn<E>> getShownColumns();
protected abstract void saveSettings(final String msg);

Expand Down
Expand Up @@ -37,13 +37,8 @@
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTable;
import net.nikr.eve.jeveasset.data.settings.Settings;
import net.nikr.eve.jeveasset.data.settings.SettingsUpdateListener;
import net.nikr.eve.jeveasset.gui.shared.filter.Filter.AllColumn;
import net.nikr.eve.jeveasset.gui.shared.menu.JFormulaDialog.Formula;
import net.nikr.eve.jeveasset.gui.shared.menu.JMenuJumps.Jump;
import net.nikr.eve.jeveasset.gui.shared.table.ColumnManager.FormulaColumn;
import net.nikr.eve.jeveasset.gui.shared.table.ColumnManager.JumpColumn;
import net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;
import net.nikr.eve.jeveasset.gui.shared.table.containers.NumberValue;

Expand Down Expand Up @@ -292,46 +287,6 @@ public void setFilterShown(boolean shown) {
gui.setFilterShown(shown);
}

@Override
protected final EnumTableColumn<E> toColumn(String column) {
try {
EnumTableColumn<E> enumTableColumn = valueOf(column);
if (enumTableColumn != null) {
return enumTableColumn;
}
} catch (IllegalArgumentException e) {
//No problem
}
return toColumn(column, name);
}

public static <E> EnumTableColumn<E> toColumn(String column, String toolName) {
return toColumn(Settings.get(), column, toolName);
}

public static <E> EnumTableColumn<E> toColumn(Settings setting, String column, String toolName) {
if (setting == null) {
return null;
}
for (Formula formula : setting.getTableFormulas(toolName)) {
if (formula.getColumnName().equals(column)) {
return new FormulaColumn<>(formula);
}
}
for (Jump jump : setting.getTableJumps(toolName)) {
if (jump.getName().equals(column)) {
return new JumpColumn<>(jump);
}
}
return null;
}

protected abstract List<EnumTableColumn<E>> getColumns();

protected abstract EnumTableColumn<E> valueOf(String column) throws IllegalArgumentException;

protected abstract Object getColumnValue(E item, String column);

/**
* Overwrite to do stuff before filtering.
*/
Expand Down
Expand Up @@ -374,9 +374,13 @@ void setFilter(final Filter filter) {
jColumn.setSelectedItem(filter.getColumn());
jCompare.setSelectedItem(filter.getCompareType());
if (isColumnCompare()) {
EnumTableColumn<E> enumColumn = filterControl.toColumn(filter.getText());
if (enumColumn != null) {
jCompareColumn.setSelectedItem(enumColumn);
try {
EnumTableColumn<E> enumColumn = filterControl.valueOf(filter.getText());
if (enumColumn != null) {
jCompareColumn.setSelectedItem(enumColumn);
}
} catch (IllegalArgumentException ex) {
//ignore missing columns...
}
} else if (isDateCompare()) {
setDateString(Formater.columnStringToDate(filter.getText()));
Expand Down
Expand Up @@ -464,6 +464,10 @@ public String getColumnToolTip(final int i) {
}
}

public EnumTableColumn<Q> valueOf(String column) {
return orderColumnsName.get(column);
}

@Override public Object getColumnValue(final Q e, final int i) {
try {
return getColumnValue(e, getColumn(i));
Expand Down
Expand Up @@ -330,7 +330,7 @@ protected Object getColumnValue(final MyAsset item, final String column) {

@Override
protected EnumTableColumn<MyAsset> valueOf(final String column) {
return AssetTableFormat.valueOf(column);
return tableFormat.valueOf(column);
}

@Override
Expand Down
Expand Up @@ -239,28 +239,22 @@ public ContractsFilterControl(EventList<MyContractItem> exportEventList) {

@Override
protected Object getColumnValue(MyContractItem contract, String column) {
EnumTableColumn<MyContractItem> tableColumn = valueOf(column);
if (tableColumn instanceof ContractsExtendedTableFormat) {
ContractsExtendedTableFormat format = (ContractsExtendedTableFormat) tableColumn;
return format.getColumnValue(contract);
} else {
return tableFormat.getColumnValue(contract, column);
try {
return ContractsExtendedTableFormat.valueOf(column).getColumnValue(contract);
} catch (IllegalArgumentException exception) {

}
return tableFormat.getColumnValue(contract, column);
}

@Override
protected EnumTableColumn<MyContractItem> valueOf(String column) {
try {
return ContractsTableFormat.valueOf(column);
} catch (IllegalArgumentException exception) {

}
try {
return ContractsExtendedTableFormat.valueOf(column);
} catch (IllegalArgumentException exception) {

}
return null;
return tableFormat.valueOf(column);
}

@Override
Expand Down
Expand Up @@ -179,7 +179,7 @@ protected Object getColumnValue(final Item item, final String column) {

@Override
protected EnumTableColumn<Item> valueOf(final String column) {
return ItemTableFormat.valueOf(column);
return tableFormat.valueOf(column);
}

@Override
Expand Down
Expand Up @@ -242,7 +242,7 @@ protected Object getColumnValue(final MyIndustryJob item, final String column) {

@Override
protected EnumTableColumn<MyIndustryJob> valueOf(final String column) {
return IndustryJobTableFormat.valueOf(column);
return tableFormat.valueOf(column);
}

@Override
Expand Down
Expand Up @@ -230,7 +230,7 @@ protected Object getColumnValue(final IndustrySlot value, final String column) {

@Override
protected EnumTableColumn<IndustrySlot> valueOf(final String column) {
return IndustrySlotTableFormat.valueOf(column);
return tableFormat.valueOf(column);
}

@Override
Expand Down
Expand Up @@ -171,7 +171,7 @@ protected Object getColumnValue(final MyJournal journal, final String column) {

@Override
protected EnumTableColumn<MyJournal> valueOf(final String column) {
return JournalTableFormat.valueOf(column);
return tableFormat.valueOf(column);
}

@Override
Expand Down
Expand Up @@ -62,7 +62,6 @@
import net.nikr.eve.jeveasset.gui.shared.components.ListComboBoxModel;
import net.nikr.eve.jeveasset.gui.shared.filter.ExportDialog;
import net.nikr.eve.jeveasset.gui.shared.filter.ExportFilterControl;
import net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;
import net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo;
import net.nikr.eve.jeveasset.gui.shared.menu.MenuData;
import net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;
Expand Down Expand Up @@ -613,18 +612,28 @@ public void actionPerformed(final ActionEvent e) {

private class LoadoutsFilterControl extends ExportFilterControl<Loadout> {
@Override
protected EnumTableColumn<Loadout> toColumn(final String column) {
protected Object getColumnValue(Loadout item, String column) {
try {
return LoadoutTableFormat.valueOf(column);
return LoadoutExtendedTableFormat.valueOf(column).getColumnValue(item);
} catch (IllegalArgumentException exception) {

}
return tableFormat.getColumnValue(item, column);
}

@Override
protected EnumTableColumn<Loadout> valueOf(final String column) {
try {
return LoadoutExtendedTableFormat.valueOf(column);
} catch (IllegalArgumentException exception) {

}
return FilterControl.toColumn(column, NAME);
return tableFormat.valueOf(column);
}

@Override
protected List<EnumTableColumn<Loadout>> getColumns() {
return new ArrayList<>(tableFormat.getOrderColumns());
}

@Override
Expand Down
Expand Up @@ -52,7 +52,6 @@
import net.nikr.eve.jeveasset.gui.shared.components.ListComboBoxModel;
import net.nikr.eve.jeveasset.gui.shared.filter.ExportDialog;
import net.nikr.eve.jeveasset.gui.shared.filter.ExportFilterControl;
import net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;
import net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo;
import net.nikr.eve.jeveasset.gui.shared.menu.MenuData;
import net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;
Expand Down Expand Up @@ -387,18 +386,28 @@ public void actionPerformed(final ActionEvent e) {
private class MaterialsFilterControl extends ExportFilterControl<Material> {

@Override
protected EnumTableColumn<Material> toColumn(final String column) {
protected Object getColumnValue(final Material item, final String column) {
try {
return MaterialTableFormat.valueOf(column);
return MaterialExtenedTableFormat.valueOf(column).getColumnValue(item);
} catch (IllegalArgumentException exception) {

}
return tableFormat.getColumnValue(item, column);
}

@Override
protected EnumTableColumn<Material> valueOf(final String column) {
try {
return MaterialExtenedTableFormat.valueOf(column);
} catch (IllegalArgumentException exception) {

}
return FilterControl.toColumn(column, NAME);
return tableFormat.valueOf(column);
}

@Override
protected List<EnumTableColumn<Material>> getColumns() {
return new ArrayList<>(tableFormat.getOrderColumns());
}

@Override
Expand Down
Expand Up @@ -729,7 +729,7 @@ protected Object getColumnValue(final MyMarketOrder marketOrder, final String co

@Override
protected EnumTableColumn<MyMarketOrder> valueOf(final String column) {
return MarketTableFormat.valueOf(column);
return tableFormat.valueOf(column);
}

@Override
Expand Down
Expand Up @@ -63,7 +63,6 @@
import net.nikr.eve.jeveasset.gui.shared.filter.ExportDialog;
import net.nikr.eve.jeveasset.gui.shared.filter.ExportFilterControl;
import net.nikr.eve.jeveasset.gui.shared.filter.Filter;
import net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;
import net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo;
import net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.InfoItem;
import net.nikr.eve.jeveasset.gui.shared.menu.MenuData;
Expand Down Expand Up @@ -677,13 +676,18 @@ public List<Filter> getFilters() {
private class OverviewFilterControl extends ExportFilterControl<Overview> {

@Override
protected EnumTableColumn<Overview> toColumn(final String column) {
try {
return OverviewTableFormat.valueOf(column);
} catch (IllegalArgumentException exception) {
protected Object getColumnValue(Overview item, String column) {
return tableFormat.getColumnValue(item, column);
}

}
return FilterControl.toColumn(column, NAME);
@Override
protected EnumTableColumn<Overview> valueOf(final String column) {
return tableFormat.valueOf(column);
}

@Override
protected List<EnumTableColumn<Overview>> getColumns() {
return new ArrayList<>(tableFormat.getOrderColumns());
}

@Override
Expand Down

0 comments on commit a4c2edd

Please sign in to comment.