Skip to content
This repository was archived by the owner on Aug 18, 2020. It is now read-only.

Commit 4bd3edb

Browse files
authored
Merge pull request #148 from derNiklaas/develop
Added new parameter
2 parents 471dc4d + 895f22f commit 4bd3edb

File tree

8 files changed

+196
-2
lines changed

8 files changed

+196
-2
lines changed

build/src/main/scala/org/codeoverflow/chatoverflow/build/api/RequirementsFile.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,7 @@ class RequirementsFile(requirementsDirectory: File, requirementType: String, fil
6565
requirement.file.getAbsolutePath.lastIndexOf(File.separator) + 1).replace(".java", "")
6666

6767
val requiresValue = if (requirement.requires != "") requirement.requires else className
68-
69-
val generatedName = className.replace(requirementType, "")
68+
val generatedName = if(requirementType.equalsIgnoreCase("parameter")) className else className.replace(requirementType, "")
7069

7170
val methodNameValue = if (requirement.methodName != "") {
7271
requirement.methodName.replace(" ", "")
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.codeoverflow.chatoverflow.requirement.parameter
2+
3+
import org.codeoverflow.chatoverflow.api.io.parameter.BooleanParameter
4+
import org.codeoverflow.chatoverflow.registry.Impl
5+
import java.lang.Boolean
6+
7+
/**
8+
* A parameter holding a boolean value.
9+
*/
10+
@Impl(impl = classOf[BooleanParameter])
11+
class BooleanParameterImpl extends BooleanParameter {
12+
private var value: Boolean = null
13+
14+
override def getType: Class[Boolean] = classOf[Boolean]
15+
16+
override def serialize(): String = get().toString
17+
18+
override def get(): Boolean = value
19+
20+
override def deserialize(value: String): Unit = set(Boolean.parseBoolean(value))
21+
22+
override def set(value: Boolean): Unit = this.value = value
23+
24+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package org.codeoverflow.chatoverflow.requirement.parameter
2+
3+
import org.codeoverflow.chatoverflow.api.io.parameter.ColorParameter
4+
import org.codeoverflow.chatoverflow.registry.Impl
5+
import java.awt.Color
6+
7+
/**
8+
* A parameter holding a Color value.
9+
*/
10+
@Impl(impl = classOf[ColorParameter])
11+
class ColorParameterImpl extends ColorParameter {
12+
private var value: Color = null
13+
14+
override def getType: Class[Color] = classOf[Color]
15+
16+
override def serialize(): String = s"${value.getRed},${value.getGreen},${value.getBlue},${value.getAlpha}"
17+
18+
override def get(): Color = value
19+
20+
override def deserialize(value: String): Unit = {
21+
val hex3 = "^#([a-fA-F0-9]{6})$".r // Test if the value contains # and then 6 hexadecimal numbers
22+
val hex4 = "^#([a-fA-F0-9]{8})$".r // Test if the value contains # and then 8 hexadecimal numbers
23+
val int3 = "^(\\d+),(\\d+),(\\d+)$".r //Test if the value contains 3 ints
24+
val int4 = "^(\\d+),(\\d+),(\\d+),(\\d+)$".r //Test if the value contains 4 ints
25+
val float3 = "^(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?)$".r //Test if the value contains 3 floats
26+
val float4 = "^(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?),(\\d+(?:\\.\\d+)?)$".r //Test if the value contains 4 floats
27+
28+
value match {
29+
case hex3(hex) => {
30+
set(new Color(Integer.valueOf(hex.substring(0, 2), 16),
31+
Integer.valueOf(hex.substring(2, 4), 16),
32+
Integer.valueOf(hex.substring(4, 6), 16)))
33+
}
34+
case hex4(hex) =>
35+
set(new Color(Integer.valueOf(hex.substring(0, 2), 16),
36+
Integer.valueOf(hex.substring(2, 4), 16),
37+
Integer.valueOf(hex.substring(4, 6), 16),
38+
Integer.valueOf(hex.substring(6, 8), 16)))
39+
case int3(r, g, b) => set(new Color(r.toInt, g.toInt, b.toInt))
40+
case int4(r, g, b, a) => set(new Color(r.toInt, g.toInt, b.toInt, a.toInt))
41+
case float3(r, g, b) => set(new Color(r.toFloat, g.toFloat, b.toFloat))
42+
case float4(r, g, b, a) => set(new Color(r.toFloat, g.toFloat, b.toFloat, a.toFloat))
43+
case _ => throw new IllegalArgumentException("Could not convert String to color")
44+
}
45+
46+
}
47+
48+
override def set(value: Color): Unit = this.value = value
49+
50+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.codeoverflow.chatoverflow.requirement.parameter
2+
3+
import org.codeoverflow.chatoverflow.api.io.parameter.DoubleParameter
4+
import org.codeoverflow.chatoverflow.registry.Impl
5+
import java.lang.Double
6+
7+
/**
8+
* A parameter holding a double value.
9+
*/
10+
@Impl(impl = classOf[DoubleParameter])
11+
class DoubleParameterImpl extends DoubleParameter {
12+
13+
private var value: Double = null
14+
15+
override def getType: Class[Double] = classOf[Double]
16+
17+
override def serialize(): String = get().toString
18+
19+
override def get(): Double = value
20+
21+
override def deserialize(value: String): Unit = set(Double.valueOf(value))
22+
23+
override def set(value: Double): Unit = this.value = value
24+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.codeoverflow.chatoverflow.requirement.parameter
2+
3+
import org.codeoverflow.chatoverflow.api.io.parameter.IntegerParameter
4+
import org.codeoverflow.chatoverflow.registry.Impl
5+
6+
/**
7+
* A parameter holding a int value.
8+
*/
9+
@Impl(impl = classOf[IntegerParameter])
10+
class IntegerParameterImpl extends IntegerParameter {
11+
private var value: Integer = null
12+
13+
override def getType: Class[Integer] = classOf[Integer]
14+
15+
override def serialize(): String = get().toString
16+
17+
override def get(): Integer = value
18+
19+
override def deserialize(value: String): Unit = set(Integer.valueOf(value))
20+
21+
override def set(value: Integer): Unit = this.value = value
22+
23+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.codeoverflow.chatoverflow.requirement.parameter
2+
3+
import collection.JavaConverters._
4+
import org.codeoverflow.chatoverflow.api.io.parameter.ListParameter
5+
import org.codeoverflow.chatoverflow.registry.Impl
6+
7+
/**
8+
* A parameter holding a List<String> value.
9+
*/
10+
@Impl(impl = classOf[ListParameter])
11+
class ListParameterImpl extends ListParameter {
12+
private var value: List[String] = null
13+
14+
override def getType: Class[java.util.List[String]] = classOf[java.util.List[String]]
15+
16+
override def serialize(): String = value.mkString(",")
17+
18+
override def get(): java.util.List[String] = value.asJava
19+
20+
override def deserialize(value: String): Unit = set(value.split(",").toSeq.asJava)
21+
22+
override def set(value: java.util.List[String]): Unit = this.value = value.asScala.toList
23+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package org.codeoverflow.chatoverflow.requirement.parameter
2+
3+
import org.codeoverflow.chatoverflow.registry.Impl
4+
import org.codeoverflow.chatoverflow.api.io.parameter.MapParameter
5+
6+
import collection.JavaConverters._
7+
8+
/**
9+
* A parameter holding a Map<String, String> value.
10+
*/
11+
@Impl(impl = classOf[MapParameter])
12+
class MapParameterImpl extends MapParameter {
13+
private var value: Map[String, String] = null
14+
15+
override def getType: Class[java.util.Map[String, String]] = classOf[java.util.Map[String, String]]
16+
17+
override def serialize(): String = value.map({ case (key, value) => s"($key;$value)" }).mkString(",")
18+
19+
override def get(): java.util.Map[String, String] = value.asJava
20+
21+
override def deserialize(value: String): Unit = {
22+
val kvpair = "\\((.+);(.+)\\)".r
23+
val konly = "\\((.+);\\)".r
24+
this.value = value.split(",")
25+
.map({ case kvpair(k, v) => (k -> v); case konly(k) => (k -> ""); case _ => throw new IllegalArgumentException("Could not convert String to Map")})
26+
.toMap
27+
}
28+
29+
override def set(value: java.util.Map[String, String]): Unit = this.value = value.asScala.toMap
30+
31+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.codeoverflow.chatoverflow.requirement.parameter
2+
3+
import org.codeoverflow.chatoverflow.api.io.parameter.UriParameter
4+
import org.codeoverflow.chatoverflow.registry.Impl
5+
import java.net.URI
6+
7+
@Impl(impl = classOf[UriParameter])
8+
class UriParameterImpl extends UriParameter {
9+
private var value: URI = null
10+
11+
override def getType: Class[URI] = classOf[URI]
12+
13+
override def serialize(): String = get().toString
14+
15+
override def get(): URI = value
16+
17+
override def deserialize(value: String): Unit = set(new URI(value))
18+
19+
override def set(value: URI): Unit = this.value = value
20+
}

0 commit comments

Comments
 (0)