From 2e3f66800896943674e034836a57863cb3d30da5 Mon Sep 17 00:00:00 2001 From: Isaac Parenteau Date: Mon, 18 Oct 2021 21:28:34 -0500 Subject: [PATCH] Cleaned up the code a little --- pom.xml | 21 ++ .../locusworks/lsproject/driver/Program.java | 12 - .../lsproject/gui/CostViewerWindow.java | 184 +++++----- .../lsproject/gui/RouterViewerWindow.java | 6 +- .../lsproject/gui/RoutingTableWindow.java | 334 +++++++++--------- .../lsproject/gui/StartupWindow.java | 5 - src/test/java/object/NetworkTest.java | 1 - 7 files changed, 273 insertions(+), 290 deletions(-) diff --git a/pom.xml b/pom.xml index 2696897..4d2f194 100644 --- a/pom.xml +++ b/pom.xml @@ -22,6 +22,27 @@ 1.8 + + org.apache.maven.plugins + maven-shade-plugin + + + + shade + + + LSProject + true + + + net.locusworks.lsproject.driver.Program + + + + + + diff --git a/src/main/java/net/locusworks/lsproject/driver/Program.java b/src/main/java/net/locusworks/lsproject/driver/Program.java index 384d40f..3d88a81 100644 --- a/src/main/java/net/locusworks/lsproject/driver/Program.java +++ b/src/main/java/net/locusworks/lsproject/driver/Program.java @@ -28,17 +28,6 @@ public class Program { * and System.err are sent instead to a designated console window. */ public static void setupStreams() { - PrintStream errorStream = new PrintStream(new OutputStream() { - @Override - public void write(int c) throws IOException { - write(new byte[] { Byte.parseByte(Integer.toString(c)) }); - } - - public void write(byte[] b) { - console.writeError(new String(b)); - } - }); - PrintStream outputStream = new PrintStream(new OutputStream() { @Override public void write(int c) throws IOException { @@ -50,7 +39,6 @@ public class Program { } }); - //System.setErr(errorStream); System.setOut(outputStream); } } diff --git a/src/main/java/net/locusworks/lsproject/gui/CostViewerWindow.java b/src/main/java/net/locusworks/lsproject/gui/CostViewerWindow.java index aa4bcca..372a6a9 100644 --- a/src/main/java/net/locusworks/lsproject/gui/CostViewerWindow.java +++ b/src/main/java/net/locusworks/lsproject/gui/CostViewerWindow.java @@ -2,8 +2,6 @@ package net.locusworks.lsproject.gui; import java.awt.BorderLayout; import java.awt.Dimension; -import java.awt.GridLayout; - import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; @@ -12,107 +10,101 @@ import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.TableModel; -import net.locusworks.lsproject.driver.Program; import net.locusworks.lsproject.object.Network; import net.locusworks.lsproject.object.Router; public class CostViewerWindow extends JPanel implements TableModelListener{ - /** - * - */ - private static final long serialVersionUID = 8571350255455457432L; - private boolean DEBUG = false; - private Router router = null; + /** + * + */ + private static final long serialVersionUID = 8571350255455457432L; + private Router router = null; - - public CostViewerWindow(Router _router){ - super(new BorderLayout()); - - router = _router; - - String[] columnNames = {"Connection", - "Cost"}; - - int numberOfConnections = router.getConnections().size(); - - Object data[][]= new Object[numberOfConnections][2]; - - for (int i = 0; i < numberOfConnections; i++){ - - String tempFirstParticipant = router.getConnections() - .get(i).getFirstParticipantAddress(); - - String tempSecondParticipant = router.getConnections() - .get(i).getSecondParticipantAddress(); - - if(tempFirstParticipant.equals(router.getIpAddress())){ - data[i][0] = tempSecondParticipant; - } - else{ - data[i][0] = tempFirstParticipant; - } - data[i][1] = router.getConnections().get(i).getCost(); - } - - final JTable table = new JTable(data, columnNames); - table.setPreferredScrollableViewportSize(new Dimension(300, 70)); - table.setFillsViewportHeight(true); - table.getModel().addTableModelListener(this); - - JScrollPane scrollPane = new JScrollPane(table); - add(scrollPane); - - } - - public void createGUI(){ - - JFrame frame = new JFrame("Cost Viewer For Router " + router.getIpAddress()); - CostViewerWindow newContentPane = new CostViewerWindow(router); - newContentPane.setOpaque(true); - frame.setContentPane(newContentPane); - frame.pack(); - frame.setLocationRelativeTo(null); - frame.setVisible(true); - } - @Override - public void tableChanged(TableModelEvent e) { - if (e.getColumn() == 0) { - return; - } - - int row = e.getFirstRow(); - int column = e.getColumn(); - TableModel model = (TableModel)e.getSource(); - Object data = model.getValueAt(row, column); - - final String otherRouterIp = model.getValueAt(row, 0).toString(); - - final int oldCost = router.getConnectionByParticipant(router.getIpAddress(), otherRouterIp).getCost(); - int newCost = oldCost; - try { - newCost = Integer.parseInt(data.toString()); - - if (newCost < 1 || newCost > 10){ - System.out.println("Cost Has To Be Between 0 - 10"); - - newCost = oldCost; - - return; - } - - router.getConnectionByParticipant( - router.getIpAddress(), otherRouterIp).setCost(newCost); - Router otherRouter = Network.getInstance().getRouterByIp(otherRouterIp); - otherRouter.getConnectionByParticipant( - router.getIpAddress(), otherRouterIp).setCost(newCost); - } - catch (NumberFormatException ex) { - System.out.println("Invalid cost."); - } - } - + public CostViewerWindow(Router _router){ + super(new BorderLayout()); + + router = _router; + + String[] columnNames = {"Connection", "Cost"}; + + int numberOfConnections = router.getConnections().size(); + + Object data[][]= new Object[numberOfConnections][2]; + + for (int i = 0; i < numberOfConnections; i++){ + + String tempFirstParticipant = router.getConnections() + .get(i).getFirstParticipantAddress(); + + String tempSecondParticipant = router.getConnections() + .get(i).getSecondParticipantAddress(); + + if(tempFirstParticipant.equals(router.getIpAddress())){ + data[i][0] = tempSecondParticipant; + } + else{ + data[i][0] = tempFirstParticipant; + } + data[i][1] = router.getConnections().get(i).getCost(); + } + + final JTable table = new JTable(data, columnNames); + table.setPreferredScrollableViewportSize(new Dimension(300, 70)); + table.setFillsViewportHeight(true); + table.getModel().addTableModelListener(this); + + JScrollPane scrollPane = new JScrollPane(table); + add(scrollPane); + + } + + public void createGUI(){ + + JFrame frame = new JFrame("Cost Viewer For Router " + router.getIpAddress()); + CostViewerWindow newContentPane = new CostViewerWindow(router); + newContentPane.setOpaque(true); + frame.setContentPane(newContentPane); + frame.pack(); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } + + @Override + public void tableChanged(TableModelEvent e) { + if (e.getColumn() == 0) { + return; + } + + int row = e.getFirstRow(); + int column = e.getColumn(); + TableModel model = (TableModel)e.getSource(); + Object data = model.getValueAt(row, column); + + final String otherRouterIp = model.getValueAt(row, 0).toString(); + + final int oldCost = router.getConnectionByParticipant(router.getIpAddress(), otherRouterIp).getCost(); + int newCost = oldCost; + try { + newCost = Integer.parseInt(data.toString()); + + if (newCost < 1 || newCost > 10){ + System.out.println("Cost Has To Be Between 0 - 10"); + + newCost = oldCost; + + return; + } + + router.getConnectionByParticipant(router.getIpAddress(), otherRouterIp).setCost(newCost); + Router otherRouter = Network.getInstance().getRouterByIp(otherRouterIp); + otherRouter.getConnectionByParticipant(router.getIpAddress(), otherRouterIp).setCost(newCost); + } catch (NumberFormatException ex) { + System.out.println("Invalid cost."); + } + } + } diff --git a/src/main/java/net/locusworks/lsproject/gui/RouterViewerWindow.java b/src/main/java/net/locusworks/lsproject/gui/RouterViewerWindow.java index b8be99e..c6c0de6 100644 --- a/src/main/java/net/locusworks/lsproject/gui/RouterViewerWindow.java +++ b/src/main/java/net/locusworks/lsproject/gui/RouterViewerWindow.java @@ -360,9 +360,7 @@ public class RouterViewerWindow extends JFrame implements MouseListener, @Override public void keyPressed(KeyEvent e) { keys[e.getKeyCode()] = true; - if (highlightedRouter != null && - !highlightedRouter.equals("") && - keys[KeyEvent.VK_DELETE]) { + if (highlightedRouter != null && !highlightedRouter.equals("") && keys[KeyEvent.VK_DELETE]) { Network.getInstance().removeRouterByIp(highlightedRouter); try { @@ -375,7 +373,7 @@ public class RouterViewerWindow extends JFrame implements MouseListener, updateAllRouters(); } - else if (keys[KeyEvent.VK_S] && ((e.getModifiers() & KeyEvent.VK_CONTROL) == 0)) { + else if (keys[KeyEvent.VK_S] && ((e.getModifiersEx() & KeyEvent.VK_CONTROL) == 0)) { try { Utility.saveNetwork(); diff --git a/src/main/java/net/locusworks/lsproject/gui/RoutingTableWindow.java b/src/main/java/net/locusworks/lsproject/gui/RoutingTableWindow.java index 7cc2896..b2694cc 100644 --- a/src/main/java/net/locusworks/lsproject/gui/RoutingTableWindow.java +++ b/src/main/java/net/locusworks/lsproject/gui/RoutingTableWindow.java @@ -8,7 +8,6 @@ import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; -import net.locusworks.lsproject.driver.Program; import net.locusworks.lsproject.object.Network; import net.locusworks.lsproject.object.Router; import net.locusworks.lsproject.object.helper.DijkstraCallback; @@ -17,181 +16,172 @@ import net.locusworks.lsproject.object.helper.DijkstraCallback; * */ public class RoutingTableWindow extends JFrame implements WindowListener { - private static final long serialVersionUID = 1768859322938299953L; - - private Router router = null; - private JTable table = null; - private RoutingTableModel tableModel = new RoutingTableModel(); - private String set = ""; - - /** - * Display a new routing table window. - * @param _router - */ - public RoutingTableWindow(Router _router) { - super("Routing table - " + _router.getIpAddress()); - - router = _router; - - initializeComponents(); - - setVisible(true); - } - - /** - * Initialize the GUI components used by this window. - */ - private void initializeComponents() { - setLayout(new BorderLayout()); - - table = new JTable(tableModel); - JScrollPane scrollPane = new JScrollPane(table); - - add(table.getTableHeader(), BorderLayout.PAGE_START); - add(scrollPane, BorderLayout.CENTER); - - setSize(425, 200); - - router.getRoutingTable().registerCallback(tableModel); - - router.getRoutingTable().execute(router, null); - } - - /** - * Allow access to which router this window is displaying. - * @return Router object. - */ - public Router getRouter() { - return router; - } - - /** - * Model used for displaying the routing table. - */ - @SuppressWarnings("serial") - private class RoutingTableModel extends AbstractTableModel implements DijkstraCallback { - private ArrayList columnNames = new ArrayList(); - private Object[][] data; - private int currentRow = 0; - - public RoutingTableModel() { - } - - /* - * Handle callback. - */ - - @Override public void reset() { - set = router.getIpAddress(); - columnNames.clear(); - currentRow = 0; - - columnNames.add("N'"); - columnNames.add(router.toString()); - for (Router r : Network.getInstance().getRouters()) { - if (r != router) { - columnNames.add(r.getIpAddress()); - } - } - - fireTableStructureChanged(); - - data = new Object[Network.getInstance().getRouters().size()][columnNames.size()]; - - for (int i = 0; i < data.length; i++) { - for (int j =0; j < data[i].length; j++) { - data[i][j] = ""; - fireTableCellUpdated(i, j); - } - } - - setValueAt(set, 0, 0); - - fireTableDataChanged(); - - System.out.println("Routing table " + router + " reset."); - } - - @Override public void predecessorAdded(Router key, Router value) { - if (key == router) return; - final int columnIndex = getColumnByName(value.getIpAddress()); - - setValueAt(key.getIpAddress() + "," + getValueAt(currentRow, columnIndex), currentRow, columnIndex); - } + private static final long serialVersionUID = 1768859322938299953L; - @Override public void settledRouterAdded(Router r) { - if (set.contains(r.getIpAddress())) return; - - currentRow++; - - set += (set.length() > 0 ? "," : "") + r.getIpAddress(); - - final int rowIndex = set.split("\\,").length - 1; + private Router router = null; + private JTable table = null; + private RoutingTableModel tableModel = new RoutingTableModel(); + private String set = ""; - setValueAt(set, rowIndex, 0); - } + /** + * Display a new routing table window. + * @param _router + */ + public RoutingTableWindow(Router _router) { + super("Routing table - " + _router.getIpAddress()); - @Override public void shortestDistanceUpdated(Router router, int cost) { - final int column = getColumnByName(router.getIpAddress()); - - setValueAt(cost, currentRow, column); - } - - /* - * Override AbstractTableModel functions. - */ - - @Override public String getColumnName(int columnNumber) { - return columnNames.get(columnNumber); - } - - public int getColumnByName(String columnName) { - for (int i = 0; i < columnNames.size(); i++) { - if (columnNames.get(i).equals(columnName)) { - return i; - } - } - - return -1; - } - - public int getRowByFirstCellName(String cellName) { - for (int i = 1; i < getRowCount(); i++) { - if (columnNames.get(i).endsWith(cellName)) { - return i; - } - } - - return -1; - } - - @Override public int getColumnCount() { - return columnNames.size(); - } + router = _router; - @Override public int getRowCount() { - return data.length; - } + initializeComponents(); - @Override public Object getValueAt(int rowIndex, int columnIndex) { - return data[rowIndex][columnIndex]; - } - - @Override public void setValueAt(Object value, int rowIndex, int columnIndex) { - data[rowIndex][columnIndex] = value; - - super.fireTableCellUpdated(rowIndex, columnIndex); - } - } + setVisible(true); + } - @Override public void windowClosing(WindowEvent e) { - router.getRoutingTable().unregisterCallback(tableModel); - } - - @Override public void windowActivated(WindowEvent arg0) {} - @Override public void windowClosed(WindowEvent arg0) {} - @Override public void windowDeactivated(WindowEvent arg0) {} - @Override public void windowDeiconified(WindowEvent arg0) {} - @Override public void windowIconified(WindowEvent arg0) {} - @Override public void windowOpened(WindowEvent arg0) {} + /** + * Initialize the GUI components used by this window. + */ + private void initializeComponents() { + setLayout(new BorderLayout()); + + table = new JTable(tableModel); + JScrollPane scrollPane = new JScrollPane(table); + + add(table.getTableHeader(), BorderLayout.PAGE_START); + add(scrollPane, BorderLayout.CENTER); + + setSize(425, 200); + + router.getRoutingTable().registerCallback(tableModel); + + router.getRoutingTable().execute(router, null); + } + + /** + * Allow access to which router this window is displaying. + * @return Router object. + */ + public Router getRouter() { + return router; + } + + /** + * Model used for displaying the routing table. + */ + @SuppressWarnings("serial") + private class RoutingTableModel extends AbstractTableModel implements DijkstraCallback { + private ArrayList columnNames = new ArrayList(); + private Object[][] data; + private int currentRow = 0; + + public RoutingTableModel() { + } + + /* + * Handle callback. + */ + + @Override public void reset() { + set = router.getIpAddress(); + columnNames.clear(); + currentRow = 0; + + columnNames.add("N'"); + columnNames.add(router.toString()); + for (Router r : Network.getInstance().getRouters()) { + if (r != router) { + columnNames.add(r.getIpAddress()); + } + } + + fireTableStructureChanged(); + + data = new Object[Network.getInstance().getRouters().size()][columnNames.size()]; + + for (int i = 0; i < data.length; i++) { + for (int j =0; j < data[i].length; j++) { + data[i][j] = ""; + fireTableCellUpdated(i, j); + } + } + + setValueAt(set, 0, 0); + + fireTableDataChanged(); + + System.out.println("Routing table " + router + " reset."); + } + + @Override public void predecessorAdded(Router key, Router value) { + if (key == router) return; + final int columnIndex = getColumnByName(value.getIpAddress()); + + setValueAt(key.getIpAddress() + "," + getValueAt(currentRow, columnIndex), currentRow, columnIndex); + } + + @Override public void settledRouterAdded(Router r) { + if (set.contains(r.getIpAddress())) return; + + currentRow++; + + set += (set.length() > 0 ? "," : "") + r.getIpAddress(); + + final int rowIndex = set.split("\\,").length - 1; + + setValueAt(set, rowIndex, 0); + } + + @Override public void shortestDistanceUpdated(Router router, int cost) { + final int column = getColumnByName(router.getIpAddress()); + + setValueAt(cost, currentRow, column); + } + + /* + * Override AbstractTableModel functions. + */ + + @Override public String getColumnName(int columnNumber) { + return columnNames.get(columnNumber); + } + + public int getColumnByName(String columnName) { + for (int i = 0; i < columnNames.size(); i++) { + if (columnNames.get(i).equals(columnName)) { + return i; + } + } + + return -1; + } + + + @Override public int getColumnCount() { + return columnNames.size(); + } + + @Override public int getRowCount() { + return data.length; + } + + @Override public Object getValueAt(int rowIndex, int columnIndex) { + return data[rowIndex][columnIndex]; + } + + @Override public void setValueAt(Object value, int rowIndex, int columnIndex) { + data[rowIndex][columnIndex] = value; + + super.fireTableCellUpdated(rowIndex, columnIndex); + } + } + + @Override public void windowClosing(WindowEvent e) { + router.getRoutingTable().unregisterCallback(tableModel); + } + + @Override public void windowActivated(WindowEvent arg0) {} + @Override public void windowClosed(WindowEvent arg0) {} + @Override public void windowDeactivated(WindowEvent arg0) {} + @Override public void windowDeiconified(WindowEvent arg0) {} + @Override public void windowIconified(WindowEvent arg0) {} + @Override public void windowOpened(WindowEvent arg0) {} } diff --git a/src/main/java/net/locusworks/lsproject/gui/StartupWindow.java b/src/main/java/net/locusworks/lsproject/gui/StartupWindow.java index 76bcae1..1d68a85 100644 --- a/src/main/java/net/locusworks/lsproject/gui/StartupWindow.java +++ b/src/main/java/net/locusworks/lsproject/gui/StartupWindow.java @@ -2,16 +2,11 @@ package net.locusworks.lsproject.gui; import java.awt.*; import java.awt.event.*; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; -import java.io.InputStream; - import javax.swing.*; import javax.swing.filechooser.FileFilter; -import net.locusworks.lsproject.driver.Program; import net.locusworks.lsproject.gui.helper.ImageHelper; import net.locusworks.lsproject.object.Network; import net.locusworks.lsproject.util.Utility; diff --git a/src/test/java/object/NetworkTest.java b/src/test/java/object/NetworkTest.java index ca2f761..7141943 100644 --- a/src/test/java/object/NetworkTest.java +++ b/src/test/java/object/NetworkTest.java @@ -7,7 +7,6 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import net.locusworks.lsproject.driver.Program; import net.locusworks.lsproject.object.Connection; import net.locusworks.lsproject.object.DijkstraEngine; import net.locusworks.lsproject.object.Network;