From 0b9b861f22a19001bdbe2468783aa17872b32fa2 Mon Sep 17 00:00:00 2001 From: WickedJack99 Date: Mon, 23 May 2022 00:32:05 +0200 Subject: [PATCH] Removed command queue, command is changed via set method, removed time measurement, edited chance to write letter, --- Learning_is_keyboard/src/Controller/Main.java | 21 +++++++++++++++---- Learning_is_keyboard/src/Model/ModelData.java | 4 ++++ Learning_is_keyboard/src/Model/MyModel.java | 12 +++++------ .../src/Model/RandomTextCreator.java | 14 ++++++++----- 4 files changed, 35 insertions(+), 16 deletions(-) diff --git a/Learning_is_keyboard/src/Controller/Main.java b/Learning_is_keyboard/src/Controller/Main.java index b43d2b0..e92d873 100644 --- a/Learning_is_keyboard/src/Controller/Main.java +++ b/Learning_is_keyboard/src/Controller/Main.java @@ -1,6 +1,7 @@ package Controller; import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.Scanner; import Model.ModelData; import Model.MyModel; @@ -9,7 +10,6 @@ import View.MyView; public class Main { public static void main(String[] args) { - ConcurrentLinkedQueue qCommands = new ConcurrentLinkedQueue(); ConcurrentLinkedQueue qDataFromModel = new ConcurrentLinkedQueue(); Object oThreadLock = new Object(); @@ -20,16 +20,29 @@ public class Main { MyView oView = new MyView(oModelData); - + int iCommand = 2; oModel.start(); - while (true) { - + while (iCommand != 0) { + Scanner oScanner = new Scanner(System.in); + System.out.print("Enter command: "); + iCommand = oScanner.nextInt(); //TODO remove statement if gui finished + + oModel.setModelCommand(iCommand); //Wake up model thread if new task to execute. synchronized(oThreadLock) { oThreadLock.notifyAll(); } + + while (qDataFromModel.isEmpty() && (iCommand == 1)) { + //Wait for model to finish TODO remove loop if gui is finished + } + if (!qDataFromModel.isEmpty()) { + oModelData = qDataFromModel.poll(); + System.out.println("Data received from Model:\n" + oModelData.getModelString()); + } } + System.out.println("Main-Thread stopped."); } } diff --git a/Learning_is_keyboard/src/Model/ModelData.java b/Learning_is_keyboard/src/Model/ModelData.java index 3f77e71..ac86db4 100644 --- a/Learning_is_keyboard/src/Model/ModelData.java +++ b/Learning_is_keyboard/src/Model/ModelData.java @@ -6,4 +6,8 @@ public class ModelData { public ModelData(String sText) { this.sText = sText; } + + public String getModelString() { + return this.sText; + } } diff --git a/Learning_is_keyboard/src/Model/MyModel.java b/Learning_is_keyboard/src/Model/MyModel.java index 28ae2dd..d8ba0cc 100644 --- a/Learning_is_keyboard/src/Model/MyModel.java +++ b/Learning_is_keyboard/src/Model/MyModel.java @@ -6,12 +6,9 @@ public class MyModel extends Thread { private Object oThreadLock; - private long liStart; - private long liStop; - private ConcurrentLinkedQueue qDataToMain; - private int iModelCommand; + private int iModelCommand = 2; private ModelData oModelData; @@ -28,7 +25,6 @@ public class MyModel extends Thread { //Model will be suspended at start until main notifies, that new task has to be executed. synchronized(oThreadLock) { try { - liStart = System.nanoTime(); System.out.println("Model suspended"); oThreadLock.wait(); } catch (InterruptedException e) { @@ -36,18 +32,20 @@ public class MyModel extends Thread { e.printStackTrace(); } } - liStop = System.nanoTime(); System.out.println("Model unsuspended"); - System.out.println("Time suspended: " + ((liStop - liStart) / 1000000) + "ms"); + System.out.println("Command: " + iModelCommand); switch (iModelCommand) { case (1): { oModelData = new ModelData(RandomTextCreator.createText(300)); + qDataToMain.add(oModelData); }break; case (2): { }break; } } + + System.out.println("Model-Thread stopped."); } public void setModelCommand(int iModelCommand) { diff --git a/Learning_is_keyboard/src/Model/RandomTextCreator.java b/Learning_is_keyboard/src/Model/RandomTextCreator.java index 29f0ce9..7fe116c 100644 --- a/Learning_is_keyboard/src/Model/RandomTextCreator.java +++ b/Learning_is_keyboard/src/Model/RandomTextCreator.java @@ -6,9 +6,13 @@ public class RandomTextCreator { int iLastOption = 0; for (int i = 0; i < iTextLength; i++) { - //Formula to calculate random value between max and min. Math.random() * (max - min + 1) + min int iMin = 0; int iMax = 3; + if (i % 2 == 0) { + iMin = 1; + iMax = 2; + } + //Formula to calculate random value between max and min. Math.random() * (max - min + 1) + min int iOption = (int)(Math.random() * (iMax - iMin + 1) + iMin); while (iOption == iLastOption) { iOption = (int)(Math.random() * (iMax - iMin + 1) + iMin); @@ -45,7 +49,7 @@ public class RandomTextCreator { int iMin = 48; int iMax = 57; int iOption = (int)(Math.random() * (iMax - iMin + 1) + iMin); - return Integer.toString(iOption); + return String.valueOf(Character.toChars(iOption)); } //65-90 A-Z @@ -54,7 +58,7 @@ public class RandomTextCreator { int iMin = 65; int iMax = 90; int iOption = (int)(Math.random() * (iMax - iMin + 1) + iMin); - return Integer.toString(iOption); + return String.valueOf(Character.toChars(iOption)); } //97-122 a-z @@ -63,7 +67,7 @@ public class RandomTextCreator { int iMin = 97; int iMax = 122; int iOption = (int)(Math.random() * (iMax - iMin + 1) + iMin); - return Integer.toString(iOption); + return String.valueOf(Character.toChars(iOption)); } //?!()=+,-[]{} @@ -74,6 +78,6 @@ public class RandomTextCreator { int iMin = 0; int iMax = 11; int iOption = (int)(Math.random() * (iMax - iMin + 1) + iMin); - return Integer.toString(aiOptions[iOption]); + return String.valueOf(Character.toChars(aiOptions[iOption])); } } \ No newline at end of file