Created
July 31, 2011 10:57
-
-
Save matsjg/1116697 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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