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