/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ro.nextreports.server.web.schedule.time;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.validation.validator.RangeValidator;
import ro.nextreports.server.domain.SchedulerJob;
import ro.nextreports.server.domain.SchedulerTime;
import java.util.ArrayList;
//
// Created by IntelliJ IDEA.
// User: mihai.panaitescu
// Date: 21-May-2009
// Time: 10:54:06
//
public class HourlyJobPanel extends Panel {
private SchedulerJob schedulerJob;
private Label minuteLabel;
private DropDownChoice minuteChoice;
private Label hLabel;
private IntervalFieldPanel hoursPanel;
private Label dLabel;
private IntervalFieldPanel daysPanel;
private Label mLabel;
private IntervalFieldPanel monthsPanel;
private Label hourLabel;
private TextField<Integer> hourText;
public HourlyJobPanel(String id, SchedulerJob schedulerJob) {
super(id);
this.schedulerJob = schedulerJob;
hourLabel = new Label("hourLabel", getString("JobPanel.everyHour"));
add(hourLabel);
hourText = new TextField<Integer>("hourText", new PropertyModel<Integer>(schedulerJob, "time.gap"));
hourText.setLabel(new Model<String>(getString("JobPanel.everyHour")));
hourText.add(new RangeValidator<Integer>(1, 23));
add(hourText);
add(minuteLabel = new Label("minuteLabel", getString("JobPanel.minute")));
add(minuteChoice = new DropDownChoice<Integer>("minuteChoice", new PropertyModel<Integer>(schedulerJob, "time.minute"), getMinutes()));
add(hLabel = new Label("hLabel", getString("hours")));
add(hoursPanel = new IntervalFieldPanel("hoursPanel", new PropertyModel(schedulerJob, "time.hours"), SelectIntervalPanel.HOUR_ENTITY,TimeValues.INTERVAL_TYPE));
add(dLabel = new Label("dLabel", getString("days")));
add(daysPanel = new IntervalFieldPanel("daysPanel", new PropertyModel(schedulerJob, "time.days"), SelectIntervalPanel.DAY_ENTITY, null));
add(mLabel = new Label("mLabel", getString("months")));
add(monthsPanel = new IntervalFieldPanel("monthsPanel", new PropertyModel(schedulerJob, "time.months"), SelectIntervalPanel.MONTH_ENTITY, null));
setAdvancedType(false);
}
public SchedulerTime getSchedulerTime() {
return schedulerJob.getTime();
}
public ArrayList<Integer> getMinutes() {
ArrayList<Integer> result = new ArrayList<Integer>();
for (int i = 0; i <= 59; i++) {
result.add(i);
}
return result;
}
public void setAdvancedType(boolean advanced) {
hourLabel.setVisible(advanced);
hourText.setVisible(advanced);
hLabel.setVisible(advanced);
dLabel.setVisible(advanced);
mLabel.setVisible(advanced);
hoursPanel.setVisible(advanced);
daysPanel.setVisible(advanced);
monthsPanel.setVisible(advanced);
}
public void reset(boolean advanced) {
if (!advanced) {
schedulerJob.getTime().setGap(1);
schedulerJob.getTime().setHours(null);
schedulerJob.getTime().setDays(null);
schedulerJob.getTime().setMonths(null);
} else {
schedulerJob.getTime().setGap(0);
}
}
}