From 7f7dfc3e9a3995894a0eb7dec43d785bb68b03de Mon Sep 17 00:00:00 2001 From: Ludovic Apvrille <ludovic.apvrille@telecom-paristech.fr> Date: Tue, 30 May 2017 15:09:54 +0200 Subject: [PATCH] Update on network model. Can now load remote model desc file, but cannot yet display them --- .../JDialogLoadingNetworkModel.java | 104 ++++++++++++++---- src/ui/networkmodelloader/NetworkModel.java | 24 +++- .../networkmodelloader/NetworkModelPanel.java | 26 ++++- .../networkmodelloader/NetworkModelType.java | 2 +- 4 files changed, 131 insertions(+), 25 deletions(-) diff --git a/src/ui/networkmodelloader/JDialogLoadingNetworkModel.java b/src/ui/networkmodelloader/JDialogLoadingNetworkModel.java index 4048f226d3..835d72d674 100644 --- a/src/ui/networkmodelloader/JDialogLoadingNetworkModel.java +++ b/src/ui/networkmodelloader/JDialogLoadingNetworkModel.java @@ -52,18 +52,20 @@ import java.awt.event.*; import java.io.File; import java.util.*; import javax.swing.*; +import java.net.*; +import java.io.*; import ui.*; import myutil.*; public class JDialogLoadingNetworkModel extends javax.swing.JFrame implements ActionListener, Runnable { - private static ArrayList<NetworkModel> listOfModels; + private ArrayList<NetworkModel> listOfModels; protected Frame f; protected MainGUI mgui; - protected final static int NOT_LISTED = 1; + protected final static int NOT_LISTED = 1; protected final static int LISTED = 2; protected final static int SELECTED = 3; @@ -84,7 +86,7 @@ public class JDialogLoadingNetworkModel extends javax.swing.JFrame implements Ac private String url; private NetworkModelPanel panel; - + /** Creates new form */ public JDialogLoadingNetworkModel(Frame _f, MainGUI _mgui, String title, String _url) { @@ -93,12 +95,17 @@ public class JDialogLoadingNetworkModel extends javax.swing.JFrame implements Ac f = _f; mgui = _mgui; - url = _url; + url = _url; + + listOfModels = new ArrayList<NetworkModel>(); initComponents(); myInitComponents(); pack(); + Thread t = new Thread(this); + t.start(); + //getGlassPane().addMouseListener( new MouseAdapter() {}); getGlassPane().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); @@ -108,7 +115,7 @@ public class JDialogLoadingNetworkModel extends javax.swing.JFrame implements Ac protected void myInitComponents() { mode = NOT_LISTED; setButtons(); - } + } protected void initComponents() { @@ -117,8 +124,8 @@ public class JDialogLoadingNetworkModel extends javax.swing.JFrame implements Ac c.setLayout(new BorderLayout()); //setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); - panel = new NetworkModelPanel(); - jsp = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); + panel = new NetworkModelPanel(listOfModels); + jsp = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); c.add(jsp, BorderLayout.NORTH); @@ -127,7 +134,7 @@ public class JDialogLoadingNetworkModel extends javax.swing.JFrame implements Ac jta.setEditable(false); jta.setMargin(new Insets(10, 10, 10, 10)); jta.setTabSize(3); - jta.append("Select options and then, click on 'start' to launch code generation / compilation / execution\n"); + jta.append("Connecting to " + url + ".\n Please wait ...\n\n"); Font f = new Font("Courrier", Font.BOLD, 12); jta.setFont(f); textAreaWriter = new JTextAreaWriter( jta ); @@ -136,18 +143,18 @@ public class JDialogLoadingNetworkModel extends javax.swing.JFrame implements Ac c.add(jsp, BorderLayout.CENTER); - start = new JButton("Load", IconManager.imgic53); + start = new JButton("Load", IconManager.imgic23); stop = new JButton("Cancel", IconManager.imgic55); - start.setPreferredSize(new Dimension(100, 30)); - stop.setPreferredSize(new Dimension(100, 30)); + start.setPreferredSize(new Dimension(200, 30)); + stop.setPreferredSize(new Dimension(200, 30)); start.addActionListener(this); stop.addActionListener(this); JPanel jp2 = new JPanel(); - jp2.add(start); jp2.add(stop); + jp2.add(start); c.add(jp2, BorderLayout.SOUTH); @@ -161,21 +168,74 @@ public class JDialogLoadingNetworkModel extends javax.swing.JFrame implements Ac loadFile(); } else if (evt.getSource() == stop) { cancel(); - } + } } public void loadFile() { - // Run the retreiver + analyzer + // Run the retreiver + analyzer } public void cancel() { - dispose(); + dispose(); } - - + + public void run() { - + // Loading main file describing models, giving information on this, and filling the array of models + // Accsing the main file + try { + HttpURLConnection connection; + TraceManager.addDev("URL: going to create it to: " + url); + URL mainFile = new URL(url); + TraceManager.addDev("URL creation"); + connection = (HttpURLConnection)(mainFile.openConnection()); + TraceManager.addDev("Connection setup 0"); + String redirect = connection.getHeaderField("Location"); + if (redirect != null){ + TraceManager.addDev("Redirection found"); + connection = (HttpURLConnection)(new URL(redirect).openConnection()); + } + //connection.setRequestMethod("GET"); + //connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11"); + TraceManager.addDev("Connection setup 1"); + BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); + jta.append("Connection established...\n"); + String inputLine; + NetworkModel nm = null; + while ((inputLine = in.readLine()) != null) { + if (inputLine.startsWith("#FILE")) { + nm = new NetworkModel(inputLine.substring(5, inputLine.length()).trim()); + listOfModels.add(nm); + } + if (inputLine.startsWith("-TYPE")) { + if (nm != null) { + nm.type = NetworkModel.stringToNetworkModelType(inputLine.substring(5, inputLine.length()).trim()); + } + } + + if (inputLine.startsWith("-DESCRIPTION")) { + if (nm != null) { + nm.description = inputLine.substring(12, inputLine.length()).trim(); + } + } + + if (inputLine.startsWith("-IMG")) { + if (nm != null) { + nm.image = inputLine.substring(4, inputLine.length()).trim(); + } + } + + //System.out.println(inputLine); + + } + jta.append("\n" + listOfModels.size() + " loaded, you can now select a model to be loaded\n"); + mode = LISTED; + panel.repaint(); + in.close(); + } catch (Exception e) { + jta.append("Error: " + e.getMessage() + " when retreiving file " + url ); + } } protected void checkMode() { @@ -185,8 +245,8 @@ public class JDialogLoadingNetworkModel extends javax.swing.JFrame implements Ac protected void setButtons() { switch(mode) { case NOT_LISTED: - start.setEnabled(true); - stop.setEnabled(false); + start.setEnabled(false); + stop.setEnabled(true); //setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); getGlassPane().setVisible(false); break; @@ -198,8 +258,8 @@ public class JDialogLoadingNetworkModel extends javax.swing.JFrame implements Ac break; case SELECTED: default: - start.setEnabled(false); - stop.setEnabled(false); + start.setEnabled(true); + stop.setEnabled(true); getGlassPane().setVisible(false); break; } diff --git a/src/ui/networkmodelloader/NetworkModel.java b/src/ui/networkmodelloader/NetworkModel.java index bdd4019d61..a9dcc2b823 100644 --- a/src/ui/networkmodelloader/NetworkModel.java +++ b/src/ui/networkmodelloader/NetworkModel.java @@ -54,11 +54,33 @@ public class NetworkModel { public String fileName; public NetworkModelType type; - public String decription; + public String description; public String image; + public int x, y, width, height; public NetworkModel(String _fileName) { fileName = _fileName; } + public static NetworkModelType stringToNetworkModelType(String type) { + type = type.toLowerCase(); + if (type.compareTo("software design") == 0) { + return NetworkModelType.SOFTWARE_DESIGN; + } + + if (type.compareTo("partitioning") == 0) { + return NetworkModelType.PARTITIONING; + } + + if (type.compareTo("attack tree") == 0) { + return NetworkModelType.ATTACK_TREE; + } + + if (type.compareTo("security protocol") == 0) { + return NetworkModelType.SECURITY_PROTOCOL; + } + + return NetworkModelType.SOFTWARE_DESIGN; + } + } diff --git a/src/ui/networkmodelloader/NetworkModelPanel.java b/src/ui/networkmodelloader/NetworkModelPanel.java index b70af6b256..5535fea384 100644 --- a/src/ui/networkmodelloader/NetworkModelPanel.java +++ b/src/ui/networkmodelloader/NetworkModelPanel.java @@ -50,12 +50,36 @@ package ui.networkmodelloader; import java.awt.*; import java.awt.event.*; import javax.swing.*; +import javax.swing.border.*; + +import java.util.*; + public class NetworkModelPanel extends JPanel { + private ArrayList<NetworkModel> listOfModels; + + public NetworkModelPanel(ArrayList<NetworkModel> _listOfModels) { + listOfModels = _listOfModels; + + Dimension pSize = new Dimension(500, 400); + Dimension mSize = new Dimension(200, 100); + + setPreferredSize(pSize); + setMinimumSize(mSize); + setBackground(new java.awt.Color(250, 250, 250)); + setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED)); + } + - public NetworkModelPanel() { + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + + g.drawString(listOfModels.size() + " model(s) available", 20, 20); + g.drawRect(200, 200, 200, 200); } + } diff --git a/src/ui/networkmodelloader/NetworkModelType.java b/src/ui/networkmodelloader/NetworkModelType.java index 6bb01735af..ab6635f3c2 100644 --- a/src/ui/networkmodelloader/NetworkModelType.java +++ b/src/ui/networkmodelloader/NetworkModelType.java @@ -49,5 +49,5 @@ package ui.networkmodelloader; public enum NetworkModelType { - SOFTWARE_DESIGN, PARTITIONING, ATTACK_TREE, SECURiTY_PROTOCOL + SOFTWARE_DESIGN, PARTITIONING, ATTACK_TREE, SECURITY_PROTOCOL } -- GitLab