From 9d45ed28f20d3f918b41557864635422b6490b1c Mon Sep 17 00:00:00 2001 From: derNiklaas Date: Thu, 7 Nov 2019 23:51:40 +0100 Subject: [PATCH 01/12] Added Int, List, Boolean and Double parameter --- .../build/api/RequirementsFile.scala | 3 +- .../parameter/BooleanParameterImpl.scala | 23 +++++++++ .../parameter/DoubleParameterImpl.scala | 25 ++++++++++ .../parameter/IntegerParameterImpl.scala | 24 ++++++++++ .../parameter/ListParameterImpl.scala | 48 +++++++++++++++++++ 5 files changed, 121 insertions(+), 2 deletions(-) create mode 100644 src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/BooleanParameterImpl.scala create mode 100644 src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/DoubleParameterImpl.scala create mode 100644 src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/IntegerParameterImpl.scala create mode 100644 src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ListParameterImpl.scala diff --git a/build/src/main/scala/org/codeoverflow/chatoverflow/build/api/RequirementsFile.scala b/build/src/main/scala/org/codeoverflow/chatoverflow/build/api/RequirementsFile.scala index 1540fa5a..aac78c50 100644 --- a/build/src/main/scala/org/codeoverflow/chatoverflow/build/api/RequirementsFile.scala +++ b/build/src/main/scala/org/codeoverflow/chatoverflow/build/api/RequirementsFile.scala @@ -65,8 +65,7 @@ class RequirementsFile(requirementsDirectory: File, requirementType: String, fil requirement.file.getAbsolutePath.lastIndexOf(File.separator) + 1).replace(".java", "") val requiresValue = if (requirement.requires != "") requirement.requires else className - - val generatedName = className.replace(requirementType, "") + val generatedName = if(requirementType.equalsIgnoreCase("parameter")) className else className.replace(requirementType, "") val methodNameValue = if (requirement.methodName != "") { requirement.methodName.replace(" ", "") diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/BooleanParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/BooleanParameterImpl.scala new file mode 100644 index 00000000..30692971 --- /dev/null +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/BooleanParameterImpl.scala @@ -0,0 +1,23 @@ +package org.codeoverflow.chatoverflow.requirement.parameter + +import org.codeoverflow.chatoverflow.api.io.parameter.BooleanParameter +import org.codeoverflow.chatoverflow.registry.Impl +import java.lang.Boolean + +@Impl(impl = classOf[BooleanParameter]) +class BooleanParameterImpl extends BooleanParameter { + private var value: Boolean = null + + override def getType: Class[Boolean] = classOf[Boolean] + + override def serialize(): String = get().toString + + override def get(): Boolean = value + + override def deserialize(value: String): Unit = { + set(Boolean.parseBoolean(value)) + } + + override def set(value: Boolean): Unit = this.value = value + +} diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/DoubleParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/DoubleParameterImpl.scala new file mode 100644 index 00000000..437b16e4 --- /dev/null +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/DoubleParameterImpl.scala @@ -0,0 +1,25 @@ +package org.codeoverflow.chatoverflow.requirement.parameter + +import org.codeoverflow.chatoverflow.api.io.parameter.DoubleParameter +import org.codeoverflow.chatoverflow.registry.Impl +import java.lang.Double + +@Impl(impl = classOf[DoubleParameter]) +class DoubleParameterImpl extends DoubleParameter { + + private var value: Double = null + + override def getType: Class[Double] = classOf[Double] + + override def serialize(): String = get().toString + + override def get(): Double = value + + override def deserialize(value: String): Unit = { + try { + set(Double.valueOf(value)) + } + } + + override def set(value: Double): Unit = this.value = value +} diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/IntegerParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/IntegerParameterImpl.scala new file mode 100644 index 00000000..e2e5cb97 --- /dev/null +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/IntegerParameterImpl.scala @@ -0,0 +1,24 @@ +package org.codeoverflow.chatoverflow.requirement.parameter + +import org.codeoverflow.chatoverflow.api.io.parameter.IntegerParameter +import org.codeoverflow.chatoverflow.registry.Impl + +@Impl(impl = classOf[IntegerParameter]) +class IntegerParameterImpl extends IntegerParameter { + private var value: Integer = null + + override def getType: Class[Integer] = classOf[Integer] + + override def serialize(): String = get().toString + + override def get(): Integer = value + + override def deserialize(value: String): Unit = { + try { + set(Integer.valueOf(value)) + } + } + + override def set(value: Integer): Unit = this.value = value + +} diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ListParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ListParameterImpl.scala new file mode 100644 index 00000000..fb03c8a2 --- /dev/null +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ListParameterImpl.scala @@ -0,0 +1,48 @@ +package org.codeoverflow.chatoverflow.requirement.parameter + +import java.util.Collections +import java.util.List + +import collection.JavaConverters._ +import org.codeoverflow.chatoverflow.api.io.parameter.ListParameter +import org.codeoverflow.chatoverflow.registry.Impl + +import scala.collection.mutable.ListBuffer + + +@Impl(impl = classOf[ListParameter]) +class ListParameterImpl extends ListParameter { + private var value: List[String] = null + + override def getType: Class[List[String]] = classOf[List[String]] + + override def serialize(): String = { + var out = "" + for (part <- value.toArray()) { + if (out == "") { + out = out + part + } else { + out = out + "," + part + } + } + out + } + + override def get(): List[String] = value + + override def deserialize(value: String): Unit = { + var splits = value.split(","); + if (splits.length == 1) { + set(Collections.singletonList[String](splits(0))) + } else { + var list: ListBuffer[String] = ListBuffer[String]() + for (part <- splits) { + list += part + } + set(mutableSeqAsJavaList[String](list)) + } + } + + override def set(value: List[String]): Unit = this.value = value + +} From be7966e337c54aa9b5a76785f02d961e50c4b732 Mon Sep 17 00:00:00 2001 From: derNiklaas Date: Fri, 8 Nov 2019 20:17:21 +0100 Subject: [PATCH 02/12] Added Map parameter --- .../parameter/MapParameterImpl.scala | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/MapParameterImpl.scala diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/MapParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/MapParameterImpl.scala new file mode 100644 index 00000000..55c3afbb --- /dev/null +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/MapParameterImpl.scala @@ -0,0 +1,58 @@ +package org.codeoverflow.chatoverflow.requirement.parameter + +import java.util.{Collections, List} + +import org.codeoverflow.chatoverflow.registry.Impl +import org.codeoverflow.chatoverflow.api.io.parameter.MapParameter + +import collection.JavaConverters._ +import java.util.Map +/** + * A parameter holding a Map value. + */ +@Impl(impl = classOf[MapParameter]) +class MapParameterImpl extends MapParameter{ + private var value: Map[String, String] = null + + override def getType: Class[Map[String, String]] = classOf[Map[String, String]] + + override def serialize(): String = { + var out = "" + value.keySet().forEach(key => { + var valueSet = value.get(key) + if(out == ""){ + out = out + "("+key+";"+valueSet+")" + }else{ + out = out + ",("+key+";"+valueSet+")" + } + }) + out + } + + override def get(): Map[String, String] = value + + override def deserialize(value: String): Unit = { + var splits = value.split(","); + if (splits.length == 1) { + var obj = splits(0) + obj = obj.replaceAll("\\(" ,"").replaceAll("\\)","").trim + splits = obj.split(";") + if(splits.length == 2){ + set(Collections.singletonMap[String, String](splits(0), splits(1))) + } + } else { + var map = scala.collection.mutable.Map[String, String]() + for (part <- splits) { + var obj: String = part.replaceAll("\\(" ,"").replaceAll("\\)","").trim + var parts = obj.split(";") + if(parts.length == 2){ + map += (parts(0) -> parts(1)) + } + } + if(map.nonEmpty) set(mutableMapAsJavaMap[String, String](map)) + } + } + + override def set(value: Map[String, String]): Unit = this.value = value + +} From e1473ac310433b1d751f184d5719c93a2580a53f Mon Sep 17 00:00:00 2001 From: derNiklaas Date: Fri, 8 Nov 2019 20:18:24 +0100 Subject: [PATCH 03/12] Added javadoc stuff --- .../requirement/parameter/BooleanParameterImpl.scala | 3 +++ .../requirement/parameter/DoubleParameterImpl.scala | 3 +++ .../requirement/parameter/IntegerParameterImpl.scala | 3 +++ .../requirement/parameter/ListParameterImpl.scala | 4 +++- 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/BooleanParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/BooleanParameterImpl.scala index 30692971..73bba8b0 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/BooleanParameterImpl.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/BooleanParameterImpl.scala @@ -4,6 +4,9 @@ import org.codeoverflow.chatoverflow.api.io.parameter.BooleanParameter import org.codeoverflow.chatoverflow.registry.Impl import java.lang.Boolean +/** + * A parameter holding a boolean value. + */ @Impl(impl = classOf[BooleanParameter]) class BooleanParameterImpl extends BooleanParameter { private var value: Boolean = null diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/DoubleParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/DoubleParameterImpl.scala index 437b16e4..60849f21 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/DoubleParameterImpl.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/DoubleParameterImpl.scala @@ -4,6 +4,9 @@ import org.codeoverflow.chatoverflow.api.io.parameter.DoubleParameter import org.codeoverflow.chatoverflow.registry.Impl import java.lang.Double +/** + * A parameter holding a double value. + */ @Impl(impl = classOf[DoubleParameter]) class DoubleParameterImpl extends DoubleParameter { diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/IntegerParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/IntegerParameterImpl.scala index e2e5cb97..88d14549 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/IntegerParameterImpl.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/IntegerParameterImpl.scala @@ -3,6 +3,9 @@ package org.codeoverflow.chatoverflow.requirement.parameter import org.codeoverflow.chatoverflow.api.io.parameter.IntegerParameter import org.codeoverflow.chatoverflow.registry.Impl +/** + * A parameter holding a int value. + */ @Impl(impl = classOf[IntegerParameter]) class IntegerParameterImpl extends IntegerParameter { private var value: Integer = null diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ListParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ListParameterImpl.scala index fb03c8a2..d393e53e 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ListParameterImpl.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ListParameterImpl.scala @@ -9,7 +9,9 @@ import org.codeoverflow.chatoverflow.registry.Impl import scala.collection.mutable.ListBuffer - +/** + * A parameter holding a List value. + */ @Impl(impl = classOf[ListParameter]) class ListParameterImpl extends ListParameter { private var value: List[String] = null From 308de78fb672f00ba0089ec6a5b000d7bdfd2ea3 Mon Sep 17 00:00:00 2001 From: derNiklaas Date: Fri, 8 Nov 2019 23:58:54 +0100 Subject: [PATCH 04/12] Added Color parameter (thanks @justgerd) --- .../parameter/ColorParameterImpl.scala | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ColorParameterImpl.scala diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ColorParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ColorParameterImpl.scala new file mode 100644 index 00000000..9c5cb570 --- /dev/null +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ColorParameterImpl.scala @@ -0,0 +1,53 @@ +package org.codeoverflow.chatoverflow.requirement.parameter + +import org.codeoverflow.chatoverflow.api.io.parameter.ColorParameter +import org.codeoverflow.chatoverflow.registry.Impl +import java.awt.Color + +/** + * A parameter holding a Color value. + */ +@Impl(impl = classOf[ColorParameter]) +class ColorParameterImpl extends ColorParameter { + private var value: Color = null + + override def getType: Class[Color] = classOf[Color] + + override def serialize(): String = s"${value.getRed},${value.getGreen},${value.getBlue},${value.getAlpha}" + + override def get(): Color = value + + override def deserialize(value: String): Unit = { + + val hex3 = "^#([a-fA-F0-9]{6})$".r + val hex4 = "^#([a-fA-F0-9]{8})$".r + val int3 = "^(\\d+),(\\d+),(\\d+)$".r + val int4 = "^(\\d+),(\\d+),(\\d+),(\\d+)$".r + val float3 = "^(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?)$".r + val float4 = "^(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?)$".r + + try { + value match { + case hex3(hex) => { + set(new Color(Integer.valueOf(hex.substring(0, 2), 16), + Integer.valueOf(hex.substring(2, 4), 16), + Integer.valueOf(hex.substring(4, 6), 16))) + } + case hex4(hex) => + set(new Color(Integer.valueOf(hex.substring(0, 2), 16), + Integer.valueOf(hex.substring(2, 4), 16), + Integer.valueOf(hex.substring(4, 6), 16), + Integer.valueOf(hex.substring(6, 8), 16))) + case int3(r, g, b) => set(new Color(r.toInt, g.toInt, b.toInt)) + case int4(r, g, b, a) => set(new Color(r.toInt, g.toInt, b.toInt, a.toInt)) + case float3(r, g, b) => set(new Color(r.toFloat, g.toFloat, b.toFloat)) + case float4(r, g, b, a) => set(new Color(r.toFloat, g.toFloat, b.toFloat, a.toFloat)) + } + } catch { + case _: Exception => print("Can't convert String to color") + } + } + + override def set(value: Color): Unit = this.value = value + +} \ No newline at end of file From b93b8592a28614e9e9e57a375f37227fe03da8a2 Mon Sep 17 00:00:00 2001 From: derNiklaas Date: Sat, 9 Nov 2019 00:12:48 +0100 Subject: [PATCH 05/12] Implemented changes from @justgerd --- .../parameter/ListParameterImpl.scala | 23 +---------- .../parameter/MapParameterImpl.scala | 40 ++++--------------- 2 files changed, 10 insertions(+), 53 deletions(-) diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ListParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ListParameterImpl.scala index d393e53e..514bea2b 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ListParameterImpl.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ListParameterImpl.scala @@ -1,13 +1,11 @@ package org.codeoverflow.chatoverflow.requirement.parameter -import java.util.Collections import java.util.List import collection.JavaConverters._ import org.codeoverflow.chatoverflow.api.io.parameter.ListParameter import org.codeoverflow.chatoverflow.registry.Impl -import scala.collection.mutable.ListBuffer /** * A parameter holding a List value. @@ -19,30 +17,13 @@ class ListParameterImpl extends ListParameter { override def getType: Class[List[String]] = classOf[List[String]] override def serialize(): String = { - var out = "" - for (part <- value.toArray()) { - if (out == "") { - out = out + part - } else { - out = out + "," + part - } - } - out + value.asScala.mkString(",") } override def get(): List[String] = value override def deserialize(value: String): Unit = { - var splits = value.split(","); - if (splits.length == 1) { - set(Collections.singletonList[String](splits(0))) - } else { - var list: ListBuffer[String] = ListBuffer[String]() - for (part <- splits) { - list += part - } - set(mutableSeqAsJavaList[String](list)) - } + set(value.split(",").toSeq.asJava) } override def set(value: List[String]): Unit = this.value = value diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/MapParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/MapParameterImpl.scala index 55c3afbb..ed7ed83e 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/MapParameterImpl.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/MapParameterImpl.scala @@ -1,56 +1,32 @@ package org.codeoverflow.chatoverflow.requirement.parameter -import java.util.{Collections, List} - import org.codeoverflow.chatoverflow.registry.Impl import org.codeoverflow.chatoverflow.api.io.parameter.MapParameter import collection.JavaConverters._ import java.util.Map + /** * A parameter holding a Map value. */ @Impl(impl = classOf[MapParameter]) -class MapParameterImpl extends MapParameter{ +class MapParameterImpl extends MapParameter { private var value: Map[String, String] = null override def getType: Class[Map[String, String]] = classOf[Map[String, String]] override def serialize(): String = { - var out = "" - value.keySet().forEach(key => { - var valueSet = value.get(key) - if(out == ""){ - out = out + "("+key+";"+valueSet+")" - }else{ - out = out + ",("+key+";"+valueSet+")" - } - }) - out + value.asScala.map({ case (key, value) => s"($key;$value)" }).mkString(",") } override def get(): Map[String, String] = value override def deserialize(value: String): Unit = { - var splits = value.split(","); - if (splits.length == 1) { - var obj = splits(0) - obj = obj.replaceAll("\\(" ,"").replaceAll("\\)","").trim - splits = obj.split(";") - if(splits.length == 2){ - set(Collections.singletonMap[String, String](splits(0), splits(1))) - } - } else { - var map = scala.collection.mutable.Map[String, String]() - for (part <- splits) { - var obj: String = part.replaceAll("\\(" ,"").replaceAll("\\)","").trim - var parts = obj.split(";") - if(parts.length == 2){ - map += (parts(0) -> parts(1)) - } - } - if(map.nonEmpty) set(mutableMapAsJavaMap[String, String](map)) - } + val kvpair = "\\((.+);(.+)\\)".r + val konly = "\\((.+);\\)".r + set(value.split(",") + .map({ case kvpair(k, v) => (k -> v); case konly(k) => (k -> ""); case _ => ("" -> "") }) + .toMap.asJava) } override def set(value: Map[String, String]): Unit = this.value = value From 946595c94895920aaa25ef6d94fe512e8bb786e0 Mon Sep 17 00:00:00 2001 From: derNiklaas Date: Sat, 9 Nov 2019 12:44:06 +0100 Subject: [PATCH 06/12] Added URI parameter --- .../parameter/UriParameterImpl.scala | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/UriParameterImpl.scala diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/UriParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/UriParameterImpl.scala new file mode 100644 index 00000000..30208f08 --- /dev/null +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/UriParameterImpl.scala @@ -0,0 +1,20 @@ +package org.codeoverflow.chatoverflow.requirement.parameter + +import org.codeoverflow.chatoverflow.api.io.parameter.UriParameter +import org.codeoverflow.chatoverflow.registry.Impl +import java.net.URI + +@Impl(impl = classOf[UriParameter]) +class UriParameterImpl extends UriParameter { + private var value: URI = null + + override def getType: Class[URI] = classOf[URI] + + override def serialize(): String = get().toString + + override def get(): URI = value + + override def deserialize(value: String): Unit = set(new URI(value)) + + override def set(value: URI): Unit = this.value = value +} From aacdd21fee6c87f635a297d078c14e13754ad818 Mon Sep 17 00:00:00 2001 From: derNiklaas Date: Sat, 9 Nov 2019 12:44:44 +0100 Subject: [PATCH 07/12] Added missing catch block to int/double parsing --- .../requirement/parameter/DoubleParameterImpl.scala | 2 ++ .../requirement/parameter/IntegerParameterImpl.scala | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/DoubleParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/DoubleParameterImpl.scala index 60849f21..2f656d99 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/DoubleParameterImpl.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/DoubleParameterImpl.scala @@ -21,6 +21,8 @@ class DoubleParameterImpl extends DoubleParameter { override def deserialize(value: String): Unit = { try { set(Double.valueOf(value)) + } catch { + case _: Exception => print("Can't convert String to double") } } diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/IntegerParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/IntegerParameterImpl.scala index 88d14549..1ae01303 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/IntegerParameterImpl.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/IntegerParameterImpl.scala @@ -19,6 +19,8 @@ class IntegerParameterImpl extends IntegerParameter { override def deserialize(value: String): Unit = { try { set(Integer.valueOf(value)) + } catch { + case _: Exception => print("Can't convert String to int") } } From e688650b9141bdf3fba2e14f4932f4da5d25fb10 Mon Sep 17 00:00:00 2001 From: derNiklaas Date: Sat, 9 Nov 2019 12:45:52 +0100 Subject: [PATCH 08/12] Added short comments to the regex --- .../requirement/parameter/ColorParameterImpl.scala | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ColorParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ColorParameterImpl.scala index 9c5cb570..d142e21d 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ColorParameterImpl.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ColorParameterImpl.scala @@ -19,12 +19,12 @@ class ColorParameterImpl extends ColorParameter { override def deserialize(value: String): Unit = { - val hex3 = "^#([a-fA-F0-9]{6})$".r - val hex4 = "^#([a-fA-F0-9]{8})$".r - val int3 = "^(\\d+),(\\d+),(\\d+)$".r - val int4 = "^(\\d+),(\\d+),(\\d+),(\\d+)$".r - val float3 = "^(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?)$".r - val float4 = "^(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?)$".r + val hex3 = "^#([a-fA-F0-9]{6})$".r // Test if the value contains # and then 6 hexadecimal numbers + val hex4 = "^#([a-fA-F0-9]{8})$".r // Test if the value contains # and then 8 hexadecimal numbers + val int3 = "^(\\d+),(\\d+),(\\d+)$".r //Test if the value contains 3 ints + val int4 = "^(\\d+),(\\d+),(\\d+),(\\d+)$".r //Test if the value contains 4 ints + val float3 = "^(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?)$".r //Test if the value contains 3 floats + val float4 = "^(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?)$".r //Test if the value contains 4 floats try { value match { From e5bbc816311c92d48d59caa50a974bc9ea14140b Mon Sep 17 00:00:00 2001 From: derNiklaas Date: Sat, 9 Nov 2019 13:46:17 +0100 Subject: [PATCH 09/12] Changed internal List/Map type to scala --- .../requirement/parameter/ListParameterImpl.scala | 12 ++++-------- .../requirement/parameter/MapParameterImpl.scala | 9 ++++----- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ListParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ListParameterImpl.scala index 514bea2b..d5f6b851 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ListParameterImpl.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ListParameterImpl.scala @@ -1,12 +1,9 @@ package org.codeoverflow.chatoverflow.requirement.parameter -import java.util.List - import collection.JavaConverters._ import org.codeoverflow.chatoverflow.api.io.parameter.ListParameter import org.codeoverflow.chatoverflow.registry.Impl - /** * A parameter holding a List value. */ @@ -14,18 +11,17 @@ import org.codeoverflow.chatoverflow.registry.Impl class ListParameterImpl extends ListParameter { private var value: List[String] = null - override def getType: Class[List[String]] = classOf[List[String]] + override def getType: Class[java.util.List[String]] = classOf[java.util.List[String]] override def serialize(): String = { - value.asScala.mkString(",") + value.mkString(",") } - override def get(): List[String] = value + override def get(): java.util.List[String] = value.asJava override def deserialize(value: String): Unit = { set(value.split(",").toSeq.asJava) } - override def set(value: List[String]): Unit = this.value = value - + override def set(value: java.util.List[String]): Unit = this.value = value.asScala.toList } diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/MapParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/MapParameterImpl.scala index ed7ed83e..f86af93b 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/MapParameterImpl.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/MapParameterImpl.scala @@ -4,7 +4,6 @@ import org.codeoverflow.chatoverflow.registry.Impl import org.codeoverflow.chatoverflow.api.io.parameter.MapParameter import collection.JavaConverters._ -import java.util.Map /** * A parameter holding a Map value. @@ -13,13 +12,13 @@ import java.util.Map class MapParameterImpl extends MapParameter { private var value: Map[String, String] = null - override def getType: Class[Map[String, String]] = classOf[Map[String, String]] + override def getType: Class[java.util.Map[String, String]] = classOf[java.util.Map[String, String]] override def serialize(): String = { - value.asScala.map({ case (key, value) => s"($key;$value)" }).mkString(",") + value.map({ case (key, value) => s"($key;$value)" }).mkString(",") } - override def get(): Map[String, String] = value + override def get(): java.util.Map[String, String] = value.asJava override def deserialize(value: String): Unit = { val kvpair = "\\((.+);(.+)\\)".r @@ -29,6 +28,6 @@ class MapParameterImpl extends MapParameter { .toMap.asJava) } - override def set(value: Map[String, String]): Unit = this.value = value + override def set(value: java.util.Map[String, String]): Unit = this.value = value.asScala.toMap } From 067384b92dacd6418c16ee29692f703e1d5c42ff Mon Sep 17 00:00:00 2001 From: derNiklaas Date: Sat, 9 Nov 2019 15:08:24 +0100 Subject: [PATCH 10/12] Removed Errorhandling and removed some useless lines --- .../parameter/BooleanParameterImpl.scala | 4 +-- .../parameter/ColorParameterImpl.scala | 34 ++++++++----------- .../parameter/DoubleParameterImpl.scala | 8 +---- .../parameter/IntegerParameterImpl.scala | 8 +---- .../parameter/ListParameterImpl.scala | 8 ++--- .../parameter/MapParameterImpl.scala | 8 ++--- 6 files changed, 23 insertions(+), 47 deletions(-) diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/BooleanParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/BooleanParameterImpl.scala index 73bba8b0..4b1d3c6f 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/BooleanParameterImpl.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/BooleanParameterImpl.scala @@ -17,9 +17,7 @@ class BooleanParameterImpl extends BooleanParameter { override def get(): Boolean = value - override def deserialize(value: String): Unit = { - set(Boolean.parseBoolean(value)) - } + override def deserialize(value: String): Unit = set(Boolean.parseBoolean(value)) override def set(value: Boolean): Unit = this.value = value diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ColorParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ColorParameterImpl.scala index d142e21d..424c5bbf 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ColorParameterImpl.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ColorParameterImpl.scala @@ -18,7 +18,6 @@ class ColorParameterImpl extends ColorParameter { override def get(): Color = value override def deserialize(value: String): Unit = { - val hex3 = "^#([a-fA-F0-9]{6})$".r // Test if the value contains # and then 6 hexadecimal numbers val hex4 = "^#([a-fA-F0-9]{8})$".r // Test if the value contains # and then 8 hexadecimal numbers val int3 = "^(\\d+),(\\d+),(\\d+)$".r //Test if the value contains 3 ints @@ -26,26 +25,23 @@ class ColorParameterImpl extends ColorParameter { val float3 = "^(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?)$".r //Test if the value contains 3 floats val float4 = "^(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?)$".r //Test if the value contains 4 floats - try { - value match { - case hex3(hex) => { - set(new Color(Integer.valueOf(hex.substring(0, 2), 16), - Integer.valueOf(hex.substring(2, 4), 16), - Integer.valueOf(hex.substring(4, 6), 16))) - } - case hex4(hex) => - set(new Color(Integer.valueOf(hex.substring(0, 2), 16), - Integer.valueOf(hex.substring(2, 4), 16), - Integer.valueOf(hex.substring(4, 6), 16), - Integer.valueOf(hex.substring(6, 8), 16))) - case int3(r, g, b) => set(new Color(r.toInt, g.toInt, b.toInt)) - case int4(r, g, b, a) => set(new Color(r.toInt, g.toInt, b.toInt, a.toInt)) - case float3(r, g, b) => set(new Color(r.toFloat, g.toFloat, b.toFloat)) - case float4(r, g, b, a) => set(new Color(r.toFloat, g.toFloat, b.toFloat, a.toFloat)) + value match { + case hex3(hex) => { + set(new Color(Integer.valueOf(hex.substring(0, 2), 16), + Integer.valueOf(hex.substring(2, 4), 16), + Integer.valueOf(hex.substring(4, 6), 16))) } - } catch { - case _: Exception => print("Can't convert String to color") + case hex4(hex) => + set(new Color(Integer.valueOf(hex.substring(0, 2), 16), + Integer.valueOf(hex.substring(2, 4), 16), + Integer.valueOf(hex.substring(4, 6), 16), + Integer.valueOf(hex.substring(6, 8), 16))) + case int3(r, g, b) => set(new Color(r.toInt, g.toInt, b.toInt)) + case int4(r, g, b, a) => set(new Color(r.toInt, g.toInt, b.toInt, a.toInt)) + case float3(r, g, b) => set(new Color(r.toFloat, g.toFloat, b.toFloat)) + case float4(r, g, b, a) => set(new Color(r.toFloat, g.toFloat, b.toFloat, a.toFloat)) } + } override def set(value: Color): Unit = this.value = value diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/DoubleParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/DoubleParameterImpl.scala index 2f656d99..a3006a74 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/DoubleParameterImpl.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/DoubleParameterImpl.scala @@ -18,13 +18,7 @@ class DoubleParameterImpl extends DoubleParameter { override def get(): Double = value - override def deserialize(value: String): Unit = { - try { - set(Double.valueOf(value)) - } catch { - case _: Exception => print("Can't convert String to double") - } - } + override def deserialize(value: String): Unit = set(Double.valueOf(value)) override def set(value: Double): Unit = this.value = value } diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/IntegerParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/IntegerParameterImpl.scala index 1ae01303..c6501989 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/IntegerParameterImpl.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/IntegerParameterImpl.scala @@ -16,13 +16,7 @@ class IntegerParameterImpl extends IntegerParameter { override def get(): Integer = value - override def deserialize(value: String): Unit = { - try { - set(Integer.valueOf(value)) - } catch { - case _: Exception => print("Can't convert String to int") - } - } + override def deserialize(value: String): Unit = set(Integer.valueOf(value)) override def set(value: Integer): Unit = this.value = value diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ListParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ListParameterImpl.scala index d5f6b851..64dc5c70 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ListParameterImpl.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ListParameterImpl.scala @@ -13,15 +13,11 @@ class ListParameterImpl extends ListParameter { override def getType: Class[java.util.List[String]] = classOf[java.util.List[String]] - override def serialize(): String = { - value.mkString(",") - } + override def serialize(): String = value.mkString(",") override def get(): java.util.List[String] = value.asJava - override def deserialize(value: String): Unit = { - set(value.split(",").toSeq.asJava) - } + override def deserialize(value: String): Unit = set(value.split(",").toSeq.asJava) override def set(value: java.util.List[String]): Unit = this.value = value.asScala.toList } diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/MapParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/MapParameterImpl.scala index f86af93b..acd5f14e 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/MapParameterImpl.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/MapParameterImpl.scala @@ -14,18 +14,16 @@ class MapParameterImpl extends MapParameter { override def getType: Class[java.util.Map[String, String]] = classOf[java.util.Map[String, String]] - override def serialize(): String = { - value.map({ case (key, value) => s"($key;$value)" }).mkString(",") - } + override def serialize(): String = value.map({ case (key, value) => s"($key;$value)" }).mkString(",") override def get(): java.util.Map[String, String] = value.asJava override def deserialize(value: String): Unit = { val kvpair = "\\((.+);(.+)\\)".r val konly = "\\((.+);\\)".r - set(value.split(",") + this.value = value.split(",") .map({ case kvpair(k, v) => (k -> v); case konly(k) => (k -> ""); case _ => ("" -> "") }) - .toMap.asJava) + .toMap } override def set(value: java.util.Map[String, String]): Unit = this.value = value.asScala.toMap From 692858dcb755e16846068b5df16a8065dd30105d Mon Sep 17 00:00:00 2001 From: derNiklaas Date: Sat, 9 Nov 2019 15:15:30 +0100 Subject: [PATCH 11/12] Let the Colorparameter throw an exception if no regex is matched --- .../chatoverflow/requirement/parameter/ColorParameterImpl.scala | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ColorParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ColorParameterImpl.scala index 424c5bbf..2c5550cf 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ColorParameterImpl.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/ColorParameterImpl.scala @@ -40,6 +40,7 @@ class ColorParameterImpl extends ColorParameter { case int4(r, g, b, a) => set(new Color(r.toInt, g.toInt, b.toInt, a.toInt)) case float3(r, g, b) => set(new Color(r.toFloat, g.toFloat, b.toFloat)) case float4(r, g, b, a) => set(new Color(r.toFloat, g.toFloat, b.toFloat, a.toFloat)) + case _ => throw new IllegalArgumentException("Could not convert String to color") } } From 895f22f45bc1fb8bbb99ab89cd0353f8a3a8d6e0 Mon Sep 17 00:00:00 2001 From: derNiklaas Date: Sat, 9 Nov 2019 15:31:47 +0100 Subject: [PATCH 12/12] Let the Mapparameter throw an exception if no regex is matched --- .../chatoverflow/requirement/parameter/MapParameterImpl.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/MapParameterImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/MapParameterImpl.scala index acd5f14e..4f18e32d 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/MapParameterImpl.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/parameter/MapParameterImpl.scala @@ -22,7 +22,7 @@ class MapParameterImpl extends MapParameter { val kvpair = "\\((.+);(.+)\\)".r val konly = "\\((.+);\\)".r this.value = value.split(",") - .map({ case kvpair(k, v) => (k -> v); case konly(k) => (k -> ""); case _ => ("" -> "") }) + .map({ case kvpair(k, v) => (k -> v); case konly(k) => (k -> ""); case _ => throw new IllegalArgumentException("Could not convert String to Map")}) .toMap }