From 3528d9ad358beaeb8ede0c2f4e586314deb24fca Mon Sep 17 00:00:00 2001
From: Lucas Stratmann <lucas.stratmann@student.reutlingen-university.de>
Date: Mon, 13 Jul 2020 10:54:52 +0200
Subject: [PATCH] Added toSim for If and Delay

---
 pom.xml                                       | 35 +++++++++++++++++++
 .../com/ardublock/translator/Translator.java  |  3 +-
 .../translator/block/TranslatorBlock.java     |  4 ++-
 .../translator/block/code/CommentBlock.java   |  4 ++-
 .../block/code/CommentHeadBlock.java          |  4 ++-
 .../block/code/CommentProgramBlock.java       |  4 ++-
 .../translator/block/control/DelayBlock.java  | 11 ++++++
 .../translator/block/control/IfBlock.java     | 27 ++++++++++++++
 .../block/control/InterruptBlock.java         |  4 ++-
 .../translator/block/control/LoopBlock.java   |  2 ++
 10 files changed, 92 insertions(+), 6 deletions(-)

diff --git a/pom.xml b/pom.xml
index 543fdec..c32300f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -88,6 +88,41 @@
 				</executions>
 			</plugin>
 		</plugins>
+		<pluginManagement>
+			<plugins>
+				<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
+				<plugin>
+					<groupId>org.eclipse.m2e</groupId>
+					<artifactId>lifecycle-mapping</artifactId>
+					<version>1.0.0</version>
+					<configuration>
+						<lifecycleMappingMetadata>
+							<pluginExecutions>
+								<pluginExecution>
+									<pluginExecutionFilter>
+										<groupId>
+											org.apache.maven.plugins
+										</groupId>
+										<artifactId>
+											maven-install-plugin
+										</artifactId>
+										<versionRange>
+											[2.5,)
+										</versionRange>
+										<goals>
+											<goal>install-file</goal>
+										</goals>
+									</pluginExecutionFilter>
+									<action>
+										<ignore></ignore>
+									</action>
+								</pluginExecution>
+							</pluginExecutions>
+						</lifecycleMappingMetadata>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
 	</build>
 	<repositories>
 		<repository>
diff --git a/src/main/java/com/ardublock/translator/Translator.java b/src/main/java/com/ardublock/translator/Translator.java
index aaeccc3..443963a 100644
--- a/src/main/java/com/ardublock/translator/Translator.java
+++ b/src/main/java/com/ardublock/translator/Translator.java
@@ -21,6 +21,7 @@ import com.ardublock.util.SimCodeObject;
 import edu.mit.blocks.codeblocks.Block;
 import edu.mit.blocks.renderable.RenderableBlock;
 import edu.mit.blocks.workspace.Workspace;
+import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 
 public class Translator
 {
@@ -136,7 +137,7 @@ public class Translator
 	//added by letsoING -> simulator
 	//TODO check if it works as expected ;-P 
 	//-> only changed rootTranslatorBlock.toCode to .toSim from translate
-	public SimCodeObject simulate(Long blockId) throws SocketNullException, SubroutineNotDeclaredException, BlockException
+	public SimCode simulate(Long blockId) throws SocketNullException, SubroutineNotDeclaredException, BlockException
 	{
 		TranslatorBlockFactory translatorBlockFactory = new TranslatorBlockFactory();
 		Block block = workspace.getEnv().getBlock(blockId);
diff --git a/src/main/java/com/ardublock/translator/block/TranslatorBlock.java b/src/main/java/com/ardublock/translator/block/TranslatorBlock.java
index 5a286d2..73b730e 100644
--- a/src/main/java/com/ardublock/translator/block/TranslatorBlock.java
+++ b/src/main/java/com/ardublock/translator/block/TranslatorBlock.java
@@ -9,6 +9,8 @@ import com.ardublock.translator.block.exception.SocketNullException;
 import com.ardublock.translator.block.exception.SubroutineNotDeclaredException;
 import com.ardublock.util.SimCodeObject;
 
+import tec.letsgoing.ardublock.simulator.simcode.SimCode;
+
 abstract public class TranslatorBlock
 {
 	abstract public String toCode() throws SocketNullException, SubroutineNotDeclaredException, BlockException;
@@ -112,7 +114,7 @@ abstract public class TranslatorBlock
 	//***********************************************	
 	//added by letsgoING -> simulator
 	// TODO change type SimCodeObject to actual object from simulator
-	public SimCodeObject toSim() throws BlockException {
+	public SimCode toSim() throws BlockException,SocketNullException {
 		// remove exception by @Override in sim-suitable blocks
 		throw new BlockException(blockId, uiMessageBundle.getString("ardublock.error_msg.no_sim_for_block"));
 	}
diff --git a/src/main/java/com/ardublock/translator/block/code/CommentBlock.java b/src/main/java/com/ardublock/translator/block/code/CommentBlock.java
index b5de78f..fcc6841 100644
--- a/src/main/java/com/ardublock/translator/block/code/CommentBlock.java
+++ b/src/main/java/com/ardublock/translator/block/code/CommentBlock.java
@@ -6,6 +6,8 @@ import com.ardublock.translator.block.exception.SocketNullException;
 import com.ardublock.translator.block.exception.SubroutineNotDeclaredException;
 import com.ardublock.util.SimCodeObject;
 
+import tec.letsgoing.ardublock.simulator.simcode.SimCode;
+
 public class CommentBlock extends TranslatorBlock
 {
 	public CommentBlock(Long blockId, Translator translator, String codePrefix, String codeSuffix, String label)
@@ -23,7 +25,7 @@ public class CommentBlock extends TranslatorBlock
 	}
 	
 	@Override
-	public SimCodeObject toSim() {
+	public SimCode toSim() {
 		//SimCodeObject sim = new SimCodeObject(); //-> return empty object or null?
 		return null;
 	}
diff --git a/src/main/java/com/ardublock/translator/block/code/CommentHeadBlock.java b/src/main/java/com/ardublock/translator/block/code/CommentHeadBlock.java
index 79d5b65..cde5786 100644
--- a/src/main/java/com/ardublock/translator/block/code/CommentHeadBlock.java
+++ b/src/main/java/com/ardublock/translator/block/code/CommentHeadBlock.java
@@ -6,6 +6,8 @@ import com.ardublock.translator.block.exception.SocketNullException;
 import com.ardublock.translator.block.exception.SubroutineNotDeclaredException;
 import com.ardublock.util.SimCodeObject;
 
+import tec.letsgoing.ardublock.simulator.simcode.SimCode;
+
 public class CommentHeadBlock extends TranslatorBlock
 {
 	public CommentHeadBlock(Long blockId, Translator translator, String codePrefix, String codeSuffix, String label)
@@ -24,7 +26,7 @@ public class CommentHeadBlock extends TranslatorBlock
 	}
 	
 	@Override
-	public SimCodeObject toSim() {
+	public SimCode toSim() {
 		//SimCodeObject sim = new SimCodeObject(); //-> return empty object or null?
 		return null;
 	}
diff --git a/src/main/java/com/ardublock/translator/block/code/CommentProgramBlock.java b/src/main/java/com/ardublock/translator/block/code/CommentProgramBlock.java
index 98777ce..4db4f5b 100644
--- a/src/main/java/com/ardublock/translator/block/code/CommentProgramBlock.java
+++ b/src/main/java/com/ardublock/translator/block/code/CommentProgramBlock.java
@@ -6,6 +6,8 @@ import com.ardublock.translator.block.exception.SocketNullException;
 import com.ardublock.translator.block.exception.SubroutineNotDeclaredException;
 import com.ardublock.util.SimCodeObject;
 
+import tec.letsgoing.ardublock.simulator.simcode.SimCode;
+
 public class CommentProgramBlock extends TranslatorBlock
 {
 	public CommentProgramBlock(Long blockId, Translator translator, String codePrefix, String codeSuffix, String label)
@@ -61,7 +63,7 @@ public class CommentProgramBlock extends TranslatorBlock
 	}
 	
 	@Override
-	public SimCodeObject toSim() {
+	public SimCode toSim() {
 		//SimCodeObject sim = new SimCodeObject(); //-> return empty object or null?
 		return null;
 	}
diff --git a/src/main/java/com/ardublock/translator/block/control/DelayBlock.java b/src/main/java/com/ardublock/translator/block/control/DelayBlock.java
index 387513f..7aebd88 100644
--- a/src/main/java/com/ardublock/translator/block/control/DelayBlock.java
+++ b/src/main/java/com/ardublock/translator/block/control/DelayBlock.java
@@ -2,9 +2,14 @@ package com.ardublock.translator.block.control;
 
 import com.ardublock.translator.Translator;
 import com.ardublock.translator.block.TranslatorBlock;
+import com.ardublock.translator.block.exception.BlockException;
 import com.ardublock.translator.block.exception.SocketNullException;
 import com.ardublock.translator.block.exception.SubroutineNotDeclaredException;
 
+import tec.letsgoing.ardublock.simulator.simcode.SimCode;
+import tec.letsgoing.ardublock.simulator.simcode.control.CodeDelay;
+import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt;
+
 public class DelayBlock extends TranslatorBlock
 {
 
@@ -22,5 +27,11 @@ public class DelayBlock extends TranslatorBlock
 		ret = ret + " );\n";
 		return ret;
 	}
+	
+	@Override
+	public SimCode toSim() throws BlockException, SocketNullException {
+		CodeDelay delay = new CodeDelay((SimTypeInt)this.getRequiredTranslatorBlockAtSocket(0).toSim()); 
+		return delay;
+	}
 
 }
diff --git a/src/main/java/com/ardublock/translator/block/control/IfBlock.java b/src/main/java/com/ardublock/translator/block/control/IfBlock.java
index 34511f5..4174547 100644
--- a/src/main/java/com/ardublock/translator/block/control/IfBlock.java
+++ b/src/main/java/com/ardublock/translator/block/control/IfBlock.java
@@ -1,9 +1,18 @@
 package com.ardublock.translator.block.control;
 
+import java.util.Vector;
+
 import com.ardublock.translator.Translator;
 import com.ardublock.translator.block.TranslatorBlock;
+import com.ardublock.translator.block.exception.BlockException;
 import com.ardublock.translator.block.exception.SocketNullException;
 import com.ardublock.translator.block.exception.SubroutineNotDeclaredException;
+import com.ardublock.util.SimCodeObject;
+
+import tec.letsgoing.ardublock.simulator.simcode.SimCode;
+import tec.letsgoing.ardublock.simulator.simcode.control.CodeIf;
+import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeBool;
+
 
 public class IfBlock extends TranslatorBlock
 {
@@ -28,4 +37,22 @@ public class IfBlock extends TranslatorBlock
 		ret = ret + "}\n";
 		return ret;
 	}
+	
+	@Override
+	public SimCode toSim() throws BlockException, SocketNullException {
+		//TODO Ardublock muss mein Projekt in den Buildvariabel haben
+		//TODO If Block benötigt den folgenden Block irgendwie vermutlich muss das der Loop Block durchführen
+		SimTypeBool condition= (SimTypeBool) this.getRequiredTranslatorBlockAtSocket(0).toSim();
+		Vector<SimCode> vector = new Vector<SimCode>();
+		TranslatorBlock translatorBlock = getTranslatorBlockAtSocket(1);
+		while (translatorBlock != null)
+		{
+			vector.add(translatorBlock.toSim());
+			translatorBlock = translatorBlock.nextTranslatorBlock();
+		}
+		CodeIf output=new CodeIf(null, condition,vector); 
+		return null;
+	}
+	
+	
 }
diff --git a/src/main/java/com/ardublock/translator/block/control/InterruptBlock.java b/src/main/java/com/ardublock/translator/block/control/InterruptBlock.java
index c55c3cb..4234b22 100644
--- a/src/main/java/com/ardublock/translator/block/control/InterruptBlock.java
+++ b/src/main/java/com/ardublock/translator/block/control/InterruptBlock.java
@@ -6,6 +6,8 @@ import com.ardublock.translator.block.exception.SocketNullException;
 import com.ardublock.translator.block.exception.SubroutineNotDeclaredException;
 import com.ardublock.util.SimCodeObject;
 
+import tec.letsgoing.ardublock.simulator.simcode.SimCode;
+
 public class InterruptBlock extends TranslatorBlock
 {
 
@@ -58,7 +60,7 @@ public class InterruptBlock extends TranslatorBlock
 	}
 	
 	@Override
-	public SimCodeObject toSim() {
+	public SimCode toSim() {
 		//SimCodeObject sim = new SimCodeObject(); //-> return empty object or null?
 		return null;
 	}
diff --git a/src/main/java/com/ardublock/translator/block/control/LoopBlock.java b/src/main/java/com/ardublock/translator/block/control/LoopBlock.java
index 0ca41b9..768a062 100644
--- a/src/main/java/com/ardublock/translator/block/control/LoopBlock.java
+++ b/src/main/java/com/ardublock/translator/block/control/LoopBlock.java
@@ -29,4 +29,6 @@ public class LoopBlock extends TranslatorBlock
 		ret = ret + "}\n\n";
 		return ret;
 	}
+	
+	//FIXME Hier ToSim Begin and Vector Handling
 }
-- 
GitLab