ItEr22S08CUAltaCalendarioLaboralItEr21S10: Created basic controller an model for BaseCalendar.
This commit is contained in:
parent
8d76993847
commit
c42546d5e9
8 changed files with 257 additions and 6 deletions
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
<rows>
|
||||
<row>
|
||||
<label value="Name" />
|
||||
<textbox value="@{controller.calendar.name}" />
|
||||
<textbox value="@{controller.baseCalendar.name}" />
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue