diff --git a/nbproject/project.properties b/nbproject/project.properties index bfa1249..b20d2f0 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -1,3 +1,7 @@ +annotation.processing.enabled=true +annotation.processing.enabled.in.editor=false +annotation.processing.processors.list= +annotation.processing.run.all.processors=true application.title=MyGame application.vendor=MyCompany assets.jar.name=assets.jar @@ -35,6 +39,8 @@ javac.classpath=\ # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false +javac.processorpath=\ + ${javac.classpath} javac.source=1.5 javac.target=1.5 javac.test.classpath=\ @@ -60,6 +66,7 @@ jnlp.signed=false main.class=org.nhl.containing.simulator.Main meta.inf.dir=${src.dir}/META-INF manifest.file=MANIFEST.MF +mkdist.disabled=false platform.active=default_platform run.classpath=\ ${javac.classpath}:\ diff --git a/src/main/java/org/nhl/containing/controller/Communication.java b/src/main/java/org/nhl/containing/controller/Communication.java new file mode 100644 index 0000000..9ebce54 --- /dev/null +++ b/src/main/java/org/nhl/containing/controller/Communication.java @@ -0,0 +1,164 @@ +package org.nhl.containing.controller; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.Socket; +/* + * Commands; + * + * OK + [OBJECT] + [OBJECTID] + /OK + * + */ + +/** + * @author TRJMM Used to communicate with the Backend system + */ +public class Communication { + + private enum Status { + + LISTEN, SENDING, INITIALIZE, DISPOSE + }; + private Status status; + private Socket client; + private InputStream inFromServer; + private DataOutputStream out; + private final int PORT = 6666; + private final String serverName = "localhost"; + private Thread operation; + private String commando = ""; + + public Communication() { + status = Status.INITIALIZE; + } + + public String getCommando() { + return commando; + } + + /** + * Starts the client + */ + public void startClient() { + try { + + System.out.println("Connecting to " + serverName + + " on port " + PORT); + client = new Socket(serverName, PORT); + System.out.println(" Just connected to " + + client.getRemoteSocketAddress()); + } catch (IOException e) { + } + sleep(1000); + } + + /** + * Listens for input from the backend system + */ + public void listen() { + try { + if (client == null) { + client = new Socket(serverName, PORT); + sleep(100); + } + System.out.println("Listening to " + + client.getRemoteSocketAddress() + "..."); + inFromServer = client.getInputStream(); + DataInputStream input = + new DataInputStream(inFromServer); + commando = input.readUTF(); + if (commando.equals("")) { + input.reset(); + commando = ""; + } else { + System.out.println("Recieved string " + commando + " from backend system!"); + } + } catch (IOException e) { + } + } + + /** + * Sends a message to the backend system + * + * @param message The message + */ + public void sendMessage(String message) { + status = Status.SENDING; + + try { + if (client == null) { + client = new Socket(serverName, PORT); + sleep(100); + } + System.out.println("Trying to send message " + message + " to the Backend system!"); + out = new DataOutputStream(client.getOutputStream()); + out.writeUTF(message); + System.out.println("Sent message " + message + " to the Backend system!"); + + } catch (Exception e) { + } + status = Status.LISTEN; + } + + /** + * Stops the client and stops this thread + */ + public void stopClient() { + try { + client.close(); + status = Status.DISPOSE; + } catch (Exception e) { + } + } + + /** + * This method will be called once and loops until the thread stops. + */ + public void Start() { + operation = new Thread(new Runnable() { + @Override + public void run() { + while (true) { + try { + switch (status) { + case INITIALIZE: + startClient(); + status = Status.LISTEN; + break; + case LISTEN: + listen(); + status = Status.LISTEN; + break; + case SENDING: + sleep(100); + status = Status.SENDING; + break; + case DISPOSE: + operation.stop(); + break; + } + + } catch (Throwable e) { + } + } + } + }); + operation.setName("Simulation Communicator"); + operation.start(); + } + + /** + * Sleep this thread we are working with for x milliseconds + * + * @param milliseconds How long are we waiting in milliseconds? + */ + public void sleep(int milliseconds) { + try { + operation.currentThread().sleep(milliseconds); //1000 milliseconds is one second. + } catch (InterruptedException ex) { + operation.currentThread().interrupt(); + } + } +} diff --git a/src/main/java/org/nhl/containing/controller/Container.java b/src/main/java/org/nhl/containing/controller/Container.java index ecd27cf..4edfdd7 100644 --- a/src/main/java/org/nhl/containing/controller/Container.java +++ b/src/main/java/org/nhl/containing/controller/Container.java @@ -1,23 +1,26 @@ package org.nhl.containing.controller; +import java.util.Date; + /** * Data model for a container. - * + * * @author Ruben Bakker */ public class Container { - private int arrivalDate; // Probably change to DateTime format. + + private Date arrivalDate; private String arrivalTransportType; // Method of transport through which the container was delivered. private String arrivalCompany; private String owner; - private int departureDate; // Probably change to DateTime format. + private Date departureDate; private String departureTransportType; // Method of transport through which the container must be dispatched. private String departureCompany; private float weight; // Weight in kilogrammes. private String contents; // What's in the container? - - public Container(int arrivalDate, String arrivalTransportType, String arrivalCompany, String owner, - int departureDate, String departureTransportType, String departureCompany, float weight, String contents) { + + public Container(Date arrivalDate, String arrivalTransportType, String arrivalCompany, String owner, + Date departureDate, String departureTransportType, String departureCompany, float weight, String contents) { this.arrivalDate = arrivalDate; this.arrivalTransportType = arrivalTransportType; this.arrivalCompany = arrivalCompany; diff --git a/src/main/java/org/nhl/containing/controller/Controller.java b/src/main/java/org/nhl/containing/controller/Controller.java index d77c45e..19598d8 100644 --- a/src/main/java/org/nhl/containing/controller/Controller.java +++ b/src/main/java/org/nhl/containing/controller/Controller.java @@ -2,11 +2,18 @@ /** * Central logic controller. - * - * @author Ruben Bakker + * + * @author TRJMM */ public class Controller { + + private Communication client; + public Controller() { - + client = new Communication(); + } + + public void Start() { + client.Start(); } } diff --git a/src/main/java/org/nhl/containing/simulator/Main.java b/src/main/java/org/nhl/containing/controller/Main.java similarity index 81% rename from src/main/java/org/nhl/containing/simulator/Main.java rename to src/main/java/org/nhl/containing/controller/Main.java index 13b3964..b41012b 100644 --- a/src/main/java/org/nhl/containing/simulator/Main.java +++ b/src/main/java/org/nhl/containing/controller/Main.java @@ -1,22 +1,24 @@ -package org.nhl.containing.simulator; +package org.nhl.containing.controller; import com.jme3.app.SimpleApplication; import com.jme3.material.Material; import com.jme3.math.ColorRGBA; -import com.jme3.math.Vector3f; import com.jme3.renderer.RenderManager; import com.jme3.scene.Geometry; import com.jme3.scene.shape.Box; /** - * test - * @author normenhansen + * + * + * @author TRJMM */ public class Main extends SimpleApplication { public static void main(String[] args) { - Main app = new Main(); - app.start(); + //Main app = new Main(); + //app.start(); + Controller controller = new Controller(); + controller.Start(); } @Override