Skip to content

Instantly share code, notes, and snippets.

@matsjg
Created July 31, 2011 10:57
Show Gist options
  • Save matsjg/1116697 to your computer and use it in GitHub Desktop.
Save matsjg/1116697 to your computer and use it in GitHub Desktop.
package controllers
import play._
import play.mvc._
import org.scalacheck._
import scala.util.parsing.json._
import java.util.{Calendar, Date}
import java.text.SimpleDateFormat
object Application extends Controller {
import views.Application._
def index = {
html.index("Your Scala application is ready!")
}
def generateMeasures = {
import play.libs.WS;
val url = "http://localhost:9200/dentist/measure/"
val reportDate:Calendar = Calendar.getInstance();
reportDate.set(Calendar.YEAR, 2006)
val dateFormat = new SimpleDateFormat("yyyy-MM-dd")
var id = 0;
val output = for {i <- 1 to 365;
val date = {
reportDate.add(Calendar.DATE, 1)
dateFormat format reportDate.getTime
}
dentistIds <- 1 to 100;
result <- {
val (revenue, nbrOfTreatments, nbrOfPatients) = generateMeasure()
val measure = """{ "id": %d, "party_id": %d, "revenue": %d, "treatments": %d, "patients": %d, "date": "%s" }""".format(id, dentistIds, revenue, nbrOfTreatments, nbrOfPatients, date)
//WS.url(url + id).body(measure.toString()).post()
id = id + 1;
"""curl -XPOST "http://localhost:9200/dentist/measure/%d" -d '%s'
""".format(id, measure)
}
} yield result
Text(output.mkString)
}
def generateMeasure() = {
import org.scalacheck._
/**
* Skapa en generator som utifrån en maxstorlek genererar 1 till max stor lista av ints mha en inskickad generator.
* Dvs, har vi en generator som genererar en en kostnad för behandling mellan 450 och 1000 kr och skickar in den i den här metoden så
* kommer vi få tillbaka en lista med behandlingar som är 1 till max lång där kostnaden är mellan 450 och 2000 kr.
*/
def genBoundedList(maxSize: Int, g: Gen[Int]): Gen[List[Int]] = {
Gen.choose(1, maxSize) flatMap {
sz => Gen.listOfN(sz, g)
}
}
var nbrOfTreatments = 0;
// jobbar som mest 9 timmar där varje arbetstimme fördelas på en eller två patienter.
val patientsPerDay = genBoundedList(9, Gen.choose(1, 2)).sample.get
val revenuePerHour = patientsPerDay map {
patients => {
// En patient får en till två behandlingar med ett pris mellan 450 och 2000 kr.
val treatments = genBoundedList(2, Gen.choose(450, 2000)).sample.get
nbrOfTreatments = nbrOfTreatments + treatments.size
treatments.reduceLeft(_ + _)
}
}
val revenue = revenuePerHour.reduceLeft(_ + _)
(revenue, nbrOfTreatments, patientsPerDay.size)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment