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;