conflicts resolved

This commit is contained in:
Fredrik Friis 2011-12-08 19:31:58 +09:00
commit 60ed0fcb29
8 changed files with 140 additions and 8 deletions

@ -1,2 +1,4 @@
ALTER TABLE `worker_data` ADD `lastSuccessfulRun` DATETIME NOT NULL DEFAULT '2011-11-28 13:33:37' AFTER `lastRun`;
ALTER TABLE `checklist_template` ADD `templateNumber` INT NOT NULL DEFAULT '999'
ALTER TABLE `checklist_template` ADD `templateNumber` INT NOT NULL DEFAULT '999'
ALTER TABLE project_event_template ADD COLUMN checkListTemplate_id bigint(20);
CREATE INDEX checkListTemplate_index ON project_event_template(checkListTemplate_id);

@ -18,11 +18,15 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import se.su.dsv.scipro.data.dao.interfaces.CheckListDao;
import se.su.dsv.scipro.data.dao.interfaces.CheckListQuestionDao;
import se.su.dsv.scipro.data.dao.interfaces.FileDescriptionDao;
import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
import se.su.dsv.scipro.data.dao.interfaces.ProjectScheduleDao;
import se.su.dsv.scipro.data.dao.interfaces.ProjectScheduleEventDao;
import se.su.dsv.scipro.data.dao.interfaces.ScheduleTemplateDao;
import se.su.dsv.scipro.data.dataobjects.CheckList;
import se.su.dsv.scipro.data.dataobjects.CheckListQuestion;
import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
import se.su.dsv.scipro.data.dataobjects.FileDescription;
import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
@ -41,6 +45,8 @@ import edu.emory.mathcs.backport.java.util.Collections;
*/
@Service
public class ProjectScheduleFacade {
@Autowired
private ProjectDao projectDao;
@Autowired
private ProjectScheduleEventDao projectScheduleEventDao;
@Autowired
@ -55,6 +61,9 @@ public class ProjectScheduleFacade {
private FileDescriptionDao fileDescriptionDao;
private final Logger logger = Logger.getLogger(ProjectScheduleFacade.class);
@Autowired
private CheckListQuestionDao checklistQuestionDao;
public static final String BASE_PATH = "schedule_events";
/**
@ -205,7 +214,28 @@ public class ProjectScheduleFacade {
final User u = (user!=null?user:eventTemplate.getTemplateCreator());
final String title = eventTemplate.getTitle()!=null?eventTemplate.getTitle():"no title";
final String desc = eventTemplate.getDescription()!=null?eventTemplate.getDescription():"";
createNewProjectScheduleEvent(schedule, u, title, desc, eventTemplate.isRequireHandIn(), dateForEvent, null);
//added by fred. takes care of creating and adding a checklist to the events, using the checklist template connected to the event in the event template.
final CheckListTemplate clt = eventTemplate.getChecklistTemplate()!=null?eventTemplate.getChecklistTemplate():null;
if (clt!=null){
CheckList cl = new CheckList(clt.getName(), schedule.getProject());
// checkListDao.save(cl);
for(String question : clt.getQuestions()){
CheckListQuestion clQuestion = new CheckListQuestion(question, cl.getNumberOfQuestions());
cl.addQuestion(checklistQuestionDao.save(clQuestion));
}
cl = checkListDao.save(cl);
Project p = schedule.getProject();
p.addCheckList(cl);
projectDao.save(p);
createNewProjectScheduleEvent(schedule, u, title, desc, eventTemplate.isRequireHandIn(), dateForEvent, cl);
}
else {
createNewProjectScheduleEvent(schedule, u, title, desc, eventTemplate.isRequireHandIn(), dateForEvent, null);
}
//added by fred
}
}
/**

@ -178,8 +178,9 @@ public class CheckListTemplate extends DomainObject implements Comparable<CheckL
return this.templateNumber - other.templateNumber;
}
@Override
public String toString(){
return name;
}
}

@ -6,6 +6,7 @@ import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
@Entity
@ -45,6 +46,9 @@ public class ProjectEventTemplate extends DomainObject implements Comparable<Pro
@Column(nullable=false)
private int numberInOrder = Integer.MAX_VALUE;
@ManyToOne(optional=true)
private CheckListTemplate checklistTemplate;
public ProjectEventTemplate(){}
public ProjectEventTemplate(int daysOffset){
@ -162,4 +166,12 @@ public class ProjectEventTemplate extends DomainObject implements Comparable<Pro
public int compareTo(ProjectEventTemplate other){
return numberInOrder - other.numberInOrder;
}
public CheckListTemplate getChecklistTemplate() {
return checklistTemplate;
}
public void setChecklistTemplate(CheckListTemplate checklistTemplate) {
this.checklistTemplate = checklistTemplate;
}
}

@ -20,6 +20,15 @@
<div class="formRow">
<strong>Days from previous event: </strong><input style="width:27px;" maxlength="3" type="text" wicket:id="daysOffset"/>
</div>
<div class="formRow">
<strong>Checklist template: </strong><br/>
<select wicket:id="checklistTemplate"></select>
</div>
<div class="formRow">
<button type="submit" wicket:id="addEventTemplateButton">
<img wicket:id="addIcon" alt=""/> Add

@ -1,17 +1,27 @@
package se.su.dsv.scipro.schedule.templates.panels;
import java.util.ArrayList;
import java.util.List;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import se.su.dsv.scipro.components.FormFeedbackPanel;
import se.su.dsv.scipro.data.dao.interfaces.CheckListTemplateDao;
import se.su.dsv.scipro.data.dataobjects.CheckList;
import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
import se.su.dsv.scipro.data.dataobjects.ProjectEventTemplate;
import se.su.dsv.scipro.data.dataobjects.ScheduleTemplate;
import se.su.dsv.scipro.icons.ImageObject;
@ -24,6 +34,9 @@ public class EventTemplateFormPanel extends Panel {
private ScheduleTemplate owner;
private boolean isEdit;
@SpringBean
private CheckListTemplateDao checklistTemplateDao;
public EventTemplateFormPanel(String id, ProjectEventTemplate eventTemplate, ScheduleTemplate owner, boolean isEdit){
super(id);
this.eventTemplate = eventTemplate;
@ -61,6 +74,43 @@ public class EventTemplateFormPanel extends Panel {
add(new TextField<Long>("daysOffset"));
add(new CheckBox("requireHandIn"));
DropDownChoice<CheckList> checklistDropDown;
List<CheckListTemplate> templateList = checklistTemplateDao.findAll();
templateList.add(null);
add(new DropDownChoice<CheckListTemplate>("checklistTemplate", templateList).setChoiceRenderer(new ChoiceRenderer<CheckListTemplate>(){
private static final long serialVersionUID = 1L;
@Override
public Object getDisplayValue(final CheckListTemplate checklist){
if(checklist == null)
return "No checklist";
else
return (checklist.getName());
}
}));
//checklistDropDown = new DropDownChoice<CheckListTemplate>("checklist",new PropertyModel<CheckList>(formWrapper.getModelObject(),"checkList"),checkLists);
// checklistDropDown.setVisible(checkLists.size()>0);
// checklistDropDown.setChoiceRenderer(new ChoiceRenderer<CheckList>(){
// private static final long serialVersionUID = 1L;
// @Override
// public Object getDisplayValue(final CheckList checklist){
// if(checklist == null)
// return "No checklist";
// else
// return (checklist.getName());
// }
// });
AjaxButton addEventTemplateButton = new AjaxButton("addEventTemplateButton", new Model<String>(isEdit ? "Done" : "Add")){
private static final long serialVersionUID = 1L;

@ -61,9 +61,10 @@
<img wicket:id="deleteEventTemplateIcon" class="right round-box-icon" />
<img wicket:id="editEventTemplateIcon" class="right round-box-icon"></img>
</div>
<div>
<span>Days from previous event: </span><span wicket:id="eventTemplateOffset">Days from previous event</span>
</div>
<!-- <div><b>Description:</b><span wicket:id="descriptionLabel"></span></div> -->
<div><b>Days from previous event:</b><span wicket:id="eventTemplateOffset">Days from previous event</span></div>
<!-- <div><b>Hand-in required</b><input type="checkbox" wicket:id="handinLabel"/></div> -->
<!-- <div><b>Checklist:</b><span wicket:id="checklistLabel"></span></div> -->
</div>
<div wicket:id="editEventTemplateContainer">
<div wicket:id="eventTemplateFormContainer">

@ -9,6 +9,7 @@ import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.form.TextField;
@ -43,6 +44,8 @@ public class ScheduleTemplateFormPanel extends Panel {
@SpringBean
private ScheduleTemplateDao scheduleTemplateDao;
private boolean editmode = false;
public ScheduleTemplateFormPanel(String id, ScheduleTemplate template, boolean isSysAdminView) {
super(id);
@ -133,8 +136,29 @@ public class ScheduleTemplateFormPanel extends Panel {
item.add(evTitle);
final Label evEstTimeCons = new Label("eventTemplateOffset", new PropertyModel<Long>(et, "daysOffset"));
evEstTimeCons.setOutputMarkupId(true);
evEstTimeCons.setVisible(!editmode);
item.add(evEstTimeCons);
// Label descriptionLabel = new Label("descriptionLabel", new PropertyModel<String>(et, "description"));
// descriptionLabel.setOutputMarkupId(true);
// descriptionLabel.setVisible(!editmode);
// item.add(descriptionLabel);
//
// CheckBox handinLabel;
// handinLabel = new CheckBox("handinLabel", new PropertyModel<Boolean>(et, "requireHandIn"));
//
// handinLabel.setOutputMarkupId(true);
// handinLabel.setVisible(!editmode);
// handinLabel.setEnabled(false);
// item.add(handinLabel);
//
// Label checklistLabel;
// checklistLabel = new Label("checklistLabel", new PropertyModel<String>(et, "checklistTemplate"));
// checklistLabel.setOutputMarkupId(true);
// checklistLabel.setVisible(!editmode);
// item.add(checklistLabel);
final WebMarkupContainer editEventContainer = new WebMarkupContainer("editEventTemplateContainer");
editEventContainer.setOutputMarkupId(true);
final WebMarkupContainer eventTemplateFormContainer = new WebMarkupContainer("eventTemplateFormContainer");
@ -148,6 +172,9 @@ public class ScheduleTemplateFormPanel extends Panel {
private static final long serialVersionUID = 1L;
@Override
protected void onClick(AjaxRequestTarget target) {
editmode = true;
eventTemplateFormContainer.replace(new EventTemplateFormPanel("editEventTemplateFormPanel", et, template, true){
private static final long serialVersionUID = 1L;
protected void onEventTemplateAdded(AjaxRequestTarget target){