Hi,
ich hatte damit auch mal rumgespielt - aber wegen Urlaub noch nicht dazu gekommen, es auch auszuprobieren. Aber vielleicht hilft dir das hier (ist zwar PHP, aber das sollte sich ja wohl übertragen lassen ):
Mit der folgenden Klasse kannst du den Parameter-Berg für so ein Temperature-Set anlegen:
class tempsetInstance {
public $presetWorkday = array("MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY");
public $presetWeekend = array("SATURDAY", "SUNDAY");
private $tempset = array();
private $currentTimesetId = 1;
function addTemp($startTime,$temperature,$days = array("MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY")) {
if(preg_match("/^(\d+):(\d+)$/",$startTime,$timeParts)) {
$startTimeSeconds = (floatval($timeParts[0] . "." . $timeParts[1]) * 60);
foreach($days AS $day) {
$this->tempset["ENDTIME_" . $day . "_" . $this->currentTimesetId] = $startTimeSeconds;
$this->tempset["TEMPERATURE_" . $day . "_" . $this->currentTimesetId] = $temperature;
}
$this->currentTimesetId++;
return true;
}
else {
return false;
}
}
function tempsetInstance() {
}
function prepareTempset() {
$countStart = 1;
$countEnd = 13;
$days = array("MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY");
$sets = array("ENDTIME","TEMPERATURE");
$defaults = array("ENDTIME" => 1440, "TEMPERATURE" => 17);
foreach($sets AS $set) {
foreach($days AS $day) {
for($i = $countStart; $i <= $countEnd; $i++) {
$key = $set . "_" . $day . "_". $i;
if(!isset($this->tempset[$key])) {
$this->tempset[$key] = $defaults[$set];
echo "Added " . $key . " => " . $defaults[$set] . "\n";
}
}
}
}
}
function getTempset() {
$this->prepareTempset();
return $this->tempset;
}
}
Beispiel:
$tempset = new tempsetInstance;
$tempset->addTemp("07:00",19,$tempset->presetWorkday);
$tempset->addTemp("09:00",17,$tempset->presetWorkday);
$tempset->addTemp("18:00",19,$tempset->presetWorkday);
$tempset->addTemp("23:00",17,$tempset->presetWorkday);
$tempset->addTemp("08:00",20,$tempset->presetWeekend);
$tempset->addTemp("11:00",17,$tempset->presetWorkday);
Wenn man das jetzt mittels $tempset->getTempset() abruft, sollte da ein vollständiges Array herauskommen, dass man an putParamSet() übergeben kann. Ist nicht schön, sollte in der Theorie aber funktionieren. Falls es jemand hilft, über Rückmeldungen freu’ ich mich. Wie gesagt, ich kam am Ende nicht mehr dazu, das Ergebnis auch mal wirklich per putParamSet() abzusetzen