ItEr22S08CUAltaCalendarioLaboralItEr21S10: Created basic controller an model for BaseCalendar.

This commit is contained in:
Manuel Rego Casasnovas 2009-08-18 11:50:02 +02:00 committed by Óscar González Fernández
parent 8d76993847
commit c42546d5e9
8 changed files with 257 additions and 6 deletions

View file

@ -1,5 +1,7 @@
package org.navalplanner.business.calendars.daos;
import java.util.List;
import org.navalplanner.business.calendars.entities.BaseCalendar;
import org.navalplanner.business.common.daos.GenericDAOHibernate;
import org.springframework.beans.factory.config.BeanDefinition;
@ -16,4 +18,9 @@ import org.springframework.stereotype.Repository;
public class BaseCalendarDAO extends GenericDAOHibernate<BaseCalendar, Long>
implements IBaseCalendarDAO {
@Override
public List<BaseCalendar> getBaseCalendars() {
return list(BaseCalendar.class);
}
}

View file

@ -1,8 +1,12 @@
package org.navalplanner.business.calendars.daos;
import java.util.List;
import org.navalplanner.business.calendars.entities.BaseCalendar;
import org.navalplanner.business.common.daos.IGenericDAO;
public interface IBaseCalendarDAO extends IGenericDAO<BaseCalendar, Long> {
List<BaseCalendar> getBaseCalendars();
}

View file

@ -1,7 +1,17 @@
package org.navalplanner.web.calendars;
import java.util.List;
import org.navalplanner.business.calendars.entities.BaseCalendar;
import org.navalplanner.business.common.exceptions.ValidationException;
import org.navalplanner.web.common.IMessagesForUser;
import org.navalplanner.web.common.Level;
import org.navalplanner.web.common.MessagesForUser;
import org.navalplanner.web.common.OnlyOneVisible;
import org.navalplanner.web.common.Util;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.api.Window;
/**
* Controller for CRUD actions over a {@link BaseCalendar}
@ -10,4 +20,120 @@ import org.zkoss.zk.ui.util.GenericForwardComposer;
*/
public class BaseCalendarCRUDController extends GenericForwardComposer {
private IBaseCalendarModel baseCalendarModel;
private Window listWindow;
private Window createWindow;
private Window editWindow;
private Window confirmRemove;
private boolean confirmingRemove = false;
private OnlyOneVisible visibility;
private IMessagesForUser messagesForUser;
private Component messagesContainer;
public List<BaseCalendar> getBaseCalendars() {
return baseCalendarModel.getBaseCalendars();
}
public BaseCalendar getBaseCalendar() {
return baseCalendarModel.getBaseCalendar();
}
@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
messagesForUser = new MessagesForUser(messagesContainer);
comp.setVariable("controller", this, true);
getVisibility().showOnly(listWindow);
}
public void cancel() {
goToList();
}
public void goToList() {
Util.reloadBindings(listWindow);
getVisibility().showOnly(listWindow);
}
public void goToEditForm(BaseCalendar BaseCalendar) {
baseCalendarModel.initEdit(BaseCalendar);
getVisibility().showOnly(editWindow);
Util.reloadBindings(editWindow);
}
public void save() {
try {
baseCalendarModel.save();
messagesForUser.showMessage(Level.INFO, "base calendar saved");
goToList();
} catch (ValidationException e) {
messagesForUser.showInvalidValues(e);
}
}
public void confirmRemove(BaseCalendar BaseCalendar) {
baseCalendarModel.prepareForRemove(BaseCalendar);
showConfirmingWindow();
}
public void cancelRemove() {
confirmingRemove = false;
confirmRemove.setVisible(false);
Util.reloadBindings(confirmRemove);
}
public boolean isConfirmingRemove() {
return confirmingRemove;
}
private void hideConfirmingWindow() {
confirmingRemove = false;
Util.reloadBindings(confirmRemove);
}
private void showConfirmingWindow() {
confirmingRemove = true;
try {
Util.reloadBindings(confirmRemove);
confirmRemove.doModal();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public void remove(BaseCalendar BaseCalendar) {
baseCalendarModel.remove(BaseCalendar);
hideConfirmingWindow();
Util.reloadBindings(listWindow);
messagesForUser.showMessage(Level.INFO, "removed "
+ BaseCalendar.getName());
}
public void goToEditForm() {
getVisibility().showOnly(editWindow);
Util.reloadBindings(editWindow);
}
public void goToCreateForm() {
baseCalendarModel.prepareForCreate();
getVisibility().showOnly(createWindow);
Util.reloadBindings(createWindow);
}
private OnlyOneVisible getVisibility() {
if (visibility == null) {
visibility = new OnlyOneVisible(listWindow, createWindow,
editWindow);
}
return visibility;
}
}

View file

@ -1,8 +1,19 @@
package org.navalplanner.web.calendars;
import java.util.List;
import org.apache.commons.lang.Validate;
import org.hibernate.validator.ClassValidator;
import org.hibernate.validator.InvalidValue;
import org.navalplanner.business.calendars.daos.IBaseCalendarDAO;
import org.navalplanner.business.calendars.entities.BaseCalendar;
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
import org.navalplanner.business.common.exceptions.ValidationException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
@ -14,4 +25,86 @@ import org.springframework.stereotype.Service;
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public class BaseCalendarModel implements IBaseCalendarModel {
private BaseCalendar baseCalendar;
private boolean editing = false;
private ClassValidator<BaseCalendar> baseCalendarValidator = new ClassValidator<BaseCalendar>(
BaseCalendar.class);
@Autowired
private IBaseCalendarDAO baseCalendarDAO;
@Override
@Transactional(readOnly = true)
public List<BaseCalendar> getBaseCalendars() {
return baseCalendarDAO.getBaseCalendars();
}
@Override
public BaseCalendar getBaseCalendar() {
return baseCalendar;
}
@Override
public void prepareForCreate() {
editing = false;
this.baseCalendar = BaseCalendar.create();
}
@Override
@Transactional(readOnly = true)
public void initEdit(BaseCalendar BaseCalendar) {
editing = true;
Validate.notNull(BaseCalendar);
this.baseCalendar = getFromDB(BaseCalendar);
}
private BaseCalendar getFromDB(BaseCalendar BaseCalendar) {
return getFromDB(BaseCalendar.getId());
}
@Transactional(readOnly = true)
private BaseCalendar getFromDB(Long id) {
try {
BaseCalendar BaseCalendar = baseCalendarDAO.find(id);
return BaseCalendar;
} catch (InstanceNotFoundException e) {
throw new RuntimeException(e);
}
}
@Override
public void prepareForRemove(BaseCalendar BaseCalendar) {
this.baseCalendar = BaseCalendar;
}
@Override
@Transactional
public void save() throws ValidationException {
InvalidValue[] invalidValues = baseCalendarValidator
.getInvalidValues(baseCalendar);
if (invalidValues.length > 0) {
throw new ValidationException(invalidValues);
}
baseCalendarDAO.save(baseCalendar);
}
@Override
@Transactional
public void remove(BaseCalendar BaseCalendar) {
try {
baseCalendarDAO.remove(baseCalendar.getId());
} catch (InstanceNotFoundException e) {
throw new RuntimeException(e);
}
}
@Override
public boolean isEditing() {
return this.editing;
}
}

View file

@ -1,5 +1,10 @@
package org.navalplanner.web.calendars;
import java.util.List;
import org.navalplanner.business.calendars.entities.BaseCalendar;
import org.navalplanner.business.common.exceptions.ValidationException;
/**
* Contract for {@link BaseCalendarModel}
*
@ -7,4 +12,20 @@ package org.navalplanner.web.calendars;
*/
public interface IBaseCalendarModel {
List<BaseCalendar> getBaseCalendars();
BaseCalendar getBaseCalendar();
void save() throws ValidationException;
void remove(BaseCalendar BaseCalendar);
void prepareForCreate();
void initEdit(BaseCalendar BaseCalendar);
void prepareForRemove(BaseCalendar BaseCalendar);
boolean isEditing();
}

View file

@ -9,7 +9,7 @@
<rows>
<row>
<label value="Name" />
<textbox value="@{controller.calendar.name}" />
<textbox value="@{controller.baseCalendar.name}" />
</row>
</rows>
</grid>

View file

@ -1,12 +1,12 @@
<window id="${arg.top_id}" title="Calendars List">
<grid id="listing" model="@{controller.calendars}" mold="paging"
<grid id="listing" model="@{controller.baseCalendars}" mold="paging"
pageSize="5">
<columns>
<column label="Operations" />
<column label="Name" sort="auto(name)" />
</columns>
<rows>
<row self="@{each='calendar'}" value="@{calendar}">
<row self="@{each='baseCalendar'}" value="@{baseCalendar}">
<hbox>
<button label="Edit"
onClick="controller.goToEditForm(self.parent.parent.value);">
@ -16,7 +16,7 @@
onClick="controller.confirmRemove(self.parent.parent.value);">
</button>
</hbox>
<label value="@{calendar.name}" />
<label value="@{baseCalendar.name}" />
</row>
</rows>
</grid>

View file

@ -25,12 +25,12 @@
<vbox align = "center">
<hbox align = "center">
<label value = "¿ Do you want to delete"/>
<label value ="@{controller.calendar.name}"/>
<label value ="@{controller.baseCalendar.name}"/>
<label value = "?"/>
</hbox>
<hbox align = "center">
<button label="Yes"
onClick="controller.remove(controller.calendar);" />
onClick="controller.remove(controller.baseCalendar);" />
<button label="No"
onClick="controller.cancelRemove();" />
</hbox>