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

Added new parameter #148

Merged
merged 12 commits into from
Nov 9, 2019
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -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(" ", "")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package org.codeoverflow.chatoverflow.requirement.parameter

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

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

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
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 // 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

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))
case _ => throw new IllegalArgumentException("Could not convert String to color")
}

}

override def set(value: Color): Unit = this.value = value

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package org.codeoverflow.chatoverflow.requirement.parameter

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 {

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 = set(Double.valueOf(value))

override def set(value: Double): Unit = this.value = value
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
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

override def getType: Class[Integer] = classOf[Integer]

override def serialize(): String = get().toString

override def get(): Integer = value

override def deserialize(value: String): Unit = set(Integer.valueOf(value))

override def set(value: Integer): Unit = this.value = value

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package org.codeoverflow.chatoverflow.requirement.parameter

import collection.JavaConverters._
import org.codeoverflow.chatoverflow.api.io.parameter.ListParameter
import org.codeoverflow.chatoverflow.registry.Impl

/**
* A parameter holding a List<String> value.
*/
@Impl(impl = classOf[ListParameter])
class ListParameterImpl extends ListParameter {
private var value: List[String] = null

override def getType: Class[java.util.List[String]] = classOf[java.util.List[String]]

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 set(value: java.util.List[String]): Unit = this.value = value.asScala.toList
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package org.codeoverflow.chatoverflow.requirement.parameter

import org.codeoverflow.chatoverflow.registry.Impl
import org.codeoverflow.chatoverflow.api.io.parameter.MapParameter

import collection.JavaConverters._

/**
* A parameter holding a Map<String, String> value.
*/
@Impl(impl = classOf[MapParameter])
class MapParameterImpl extends MapParameter {
private var value: Map[String, String] = null

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 get(): java.util.Map[String, String] = value.asJava

override def deserialize(value: String): Unit = {
val kvpair = "\\((.+);(.+)\\)".r
val konly = "\\((.+);\\)".r
this.value = value.split(",")
.map({ case kvpair(k, v) => (k -> v); case konly(k) => (k -> ""); case _ => throw new IllegalArgumentException("Could not convert String to Map")})
.toMap
}

override def set(value: java.util.Map[String, String]): Unit = this.value = value.asScala.toMap

}
Original file line number Diff line number Diff line change
@@ -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
}