Skip to content

Commit

Permalink
Merge pull request #1 from paulograbin/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
Paulo Gräbin authored May 12, 2017
2 parents 6fd3602 + 38ef8e5 commit 0462498
Show file tree
Hide file tree
Showing 6 changed files with 48 additions and 58 deletions.
38 changes: 26 additions & 12 deletions src/main/java/com/sap/lightsControl/LightCommandRoute.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.sap.lightsControl

import org.eclipse.jetty.http.HttpStatus
import spark.Request
import spark.Response
import spark.Route
Expand All @@ -8,36 +9,49 @@ import spark.Route
class LightCommandRoute(val lightDriver: LightDriver) : Route {

override fun handle(req: Request?, res: Response?): String {
println()
println("Header: " + req?.headers())
println("Request from " + req?.host())
println("URL " + req?.url())

var commandParam = req!!.params(":command")
val commandParam = req!!.params(":command")

if(commandParam!!.length != 3) {
res!!.status(404)
return "NOK \n"
return sendErrorResponse(res)
}

var state = extractLightsState(commandParam?.split(""))
val state = extractLightsState(commandParam.split(""))

if(state.isValid())
activateLights(state);
if(!state.isValid())
return sendErrorResponse(res)

res!!.status(200)
return "OK \n";
activateLights(state)

return sendSucessfulResponse(res)
}

private fun activateLights(state: State) {
lightDriver.applyState(state);
lightDriver.applyState(state)
}

private fun extractLightsState(lights: List<String>?): State {
var red = Integer.valueOf(lights?.get(1))
var yellow = Integer.valueOf(lights?.get(2))
var green = Integer.valueOf(lights?.get(3))
val red = Integer.valueOf(lights?.get(1))
val yellow = Integer.valueOf(lights?.get(2))
val green = Integer.valueOf(lights?.get(3))

return State(red = red, yellow = yellow, green = green)
}


private fun sendSucessfulResponse(res: Response?): String {
res!!.status(HttpStatus.OK_200)
return "OK \n"
}

private fun sendErrorResponse(res: Response?): String {
res!!.status(HttpStatus.NOT_FOUND_404)
return "NOK \n"
}

}

33 changes: 16 additions & 17 deletions src/main/java/com/sap/lightsControl/LightDriver.kt
Original file line number Diff line number Diff line change
@@ -1,39 +1,38 @@
package com.sap.lightsControl

import java.io.BufferedReader
import java.lang.ProcessBuilder.Redirect.INHERIT

class LightDriver(driverPath: String) {

val driverPath = driverPath
val driverFileName = "clewarecontrol"
class LightDriver {

val sudoCommand = "sudo"
val driverCommand = "clewarecontrol"
val driverFlag = "-as"

val redLightPosition = "0";
val yellowLightPosition = "1";
val greenLightPosition = "2";
val redLightPosition = "0"
val yellowLightPosition = "1"
val greenLightPosition = "2"


fun applyState(state: State) {
if(!state.isValid())
RuntimeException("Invalid state")

executeCommand(state);
executeCommand(state)
}

fun executeCommand(state: State) {
val builder = ProcessBuilder(driverPath + driverFileName,

val builder = ProcessBuilder(sudoCommand, driverCommand,
"-d", "902435",
driverFlag, redLightPosition, state.getRed(),
driverFlag, yellowLightPosition, state.getYellow(),
driverFlag, greenLightPosition, state.getGreen());

println(builder.command())
driverFlag, greenLightPosition, state.getGreen())
.redirectOutput(INHERIT)
.redirectError(INHERIT)

builder.start()

val pr = builder.start();

val allText = pr.inputStream.bufferedReader().use { BufferedReader::readLine }

System.out.println(allText)
println(builder.command())
}
}
11 changes: 3 additions & 8 deletions src/main/java/com/sap/lightsControl/Main.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,13 @@ import spark.Spark.port

class Main {

fun start(driverPath: String) {
fun start() {
port(3000)

val driver = LightDriver(driverPath)

get("/lights/:command", LightCommandRoute(lightDriver = driver));
get("/lights/:command", LightCommandRoute(LightDriver()))
}
}

fun main(args: Array<String>) {
if (args.size != 1)
error("Invalid parameters...");

Main().start(args[0])
Main().start()
}
6 changes: 3 additions & 3 deletions src/main/java/com/sap/lightsControl/State.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ class State(private var yellow: Int, private var red: Int, private var green: In

fun isValid(): Boolean {
if(red != 0 && red != 1)
return false;
return false

if(yellow != 0 && yellow != 1)
return false;
return false

if(green != 0 && green != 1)
return false;
return false

return true
}
Expand Down
18 changes: 0 additions & 18 deletions src/main/java/com/sap/lightsControl/StateTranslator.kt

This file was deleted.

Binary file modified target/lightsControl-1.0-SNAPSHOT-jar-with-dependencies.jar
Binary file not shown.

0 comments on commit 0462498

Please sign in to comment.