/** * TNTConcept Easy Enterprise Management by Autentia Real Bussiness Solution S.L. * Copyright (C) 2007 Autentia Real Bussiness Solution S.L. * <p> * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License. * <p> * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * <p> * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.autentia.tnt.bean.holiday; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.List; import javax.faces.model.SelectItem; import javax.mail.MessagingException; import com.autentia.tnt.mail.DefaultMailService; import com.autentia.tnt.util.ConfigurationUtil; import org.acegisecurity.acls.domain.BasePermission; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.autentia.tnt.bean.BaseBean; import com.autentia.tnt.bean.NavigationResults; import com.autentia.tnt.businessobject.AdminHoliday; import com.autentia.tnt.businessobject.HolidayState; import com.autentia.tnt.businessobject.User; import com.autentia.tnt.dao.SortCriteria; import com.autentia.tnt.dao.search.AdminHolidaySearch; import com.autentia.tnt.manager.admin.UserManager; import com.autentia.tnt.manager.holiday.AdminHolidayManager; import com.autentia.tnt.manager.security.Permission; import com.autentia.tnt.upload.Uploader; import com.autentia.tnt.upload.UploaderFactory; import com.autentia.tnt.util.FacesUtils; import com.autentia.tnt.util.SpringUtils; public class AdminHolidayBean extends BaseBean { /* adminHoliday - generated by stajanov (do not edit/delete) */ /** Logger */ private static final Log log = LogFactory.getLog(AdminHolidayBean.class); /** Active search object */ private AdminHolidaySearch search = new AdminHolidaySearch(); /** Manager */ private static AdminHolidayManager manager = AdminHolidayManager.getDefault(); /** Upload service */ private static final Uploader uploader = UploaderFactory.getInstance("adminHoliday"); /** Active AdminHoliday object */ private AdminHoliday adminHoliday; /** Default sort column */ private String sortColumn = "beginDate"; /** Default sort order */ private boolean sortAscending = false; /** * List adminHolidays. Order depends on Faces parameter sort. * @return the list of all adminHolidays sorted by requested criterion */ public List<AdminHoliday> getAll() { return manager.getAllEntities(search, new SortCriteria(sortColumn, sortAscending)); } // Getters to list possible values of related entities /** * Get the list of all userRequests * @return the list of all userRequests */ public List<SelectItem> getUserRequests() { List<User> refs = UserManager.getDefault().getAllEntities(null, new SortCriteria("name")); ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); for (User ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } // Getters to list possible values of enum fields public String getStateFormatted() { if (this.getState() != null) { return FacesUtils.formatMessage("HolidayState." + this.getState().name()); } else { return ""; } } /** * Get the list of all State values * @return the list of all State values */ public List<SelectItem> getStates() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); HolidayState[] vals = HolidayState.values(); for (HolidayState val : vals) { ret.add(new SelectItem(val, FacesUtils.formatMessage("HolidayState." + val.name()))); } return ret; } // Methods to create/remove instances of one-to-many entities (slave entities) /** * Whether or not create button is available for user * @return true if user can create objects of type AdminHoliday */ public boolean isCreateAvailable() { return SpringUtils.isRolePermissionGranted(Permission.Entity_Create(AdminHoliday.class)); } /** * Whether or not edit button is available for user * @return true if user can edit current object */ public boolean isEditAvailable() { return SpringUtils.isAclPermissionGranted(adminHoliday, BasePermission.WRITE); } /** * Whether or not delete button is available for user * @return true if user can delete current object */ public boolean isDeleteAvailable() { return (adminHoliday.getId() != null) && SpringUtils.isAclPermissionGranted(adminHoliday, BasePermission.DELETE); } /** * Go to create page * @return forward to CREATE page */ public String create() { adminHoliday = new AdminHoliday(); // return NavigationResults.CREATE; } /** * Go to detail page * @return forward to DETAIL page */ public String detail() { Integer id = Integer.parseInt(FacesUtils.getRequestParameter(ROW_ID)); adminHoliday = manager.getEntityById(id); return SpringUtils.isAclPermissionGranted(adminHoliday, BasePermission.WRITE) ? NavigationResults.EDIT : NavigationResults.DETAIL; } /** * Save bean and stay on it * @return forward to list page */ public String save() { doBeforeSave(); if (adminHoliday.getId() == null) { manager.insertEntity(adminHoliday); } else { manager.updateEntity(adminHoliday); } // Calls an after save action String result = doAfterSave(NavigationResults.LIST); sendEmail(); // Unselect object adminHoliday = null; return result; } protected void sendEmail() { final DefaultMailService mailService = (DefaultMailService) SpringUtils.getSpringBean("mailService"); final Collection<String> mailNotificationReceivers = new ArrayList<String>(ConfigurationUtil.getDefault().getMailSendToHolidayApprovers()); mailNotificationReceivers.add(this.adminHoliday.getUserRequest().getEmail()); for (String sendTo : mailNotificationReceivers) { final String name = this.adminHoliday.getUserRequest().getName(); String subject = "Solicitud de vacaciones de " + name + "["+ getState()+"]"; DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy" + ""); final String beginDate = dateFormat.format(this.adminHoliday.getBeginDate()); final String finalDate = dateFormat.format(this.adminHoliday.getFinalDate()); final String newLine = "</div><div>"; String messageBody = ("<div>Usuario: ") .concat("<b>" + name + "</b>") .concat(newLine) .concat("Fecha de inicio: ") .concat("<b>" + beginDate + "</b>") .concat(newLine) .concat("Fecha de fin: ") .concat("<b>" + finalDate + "</b>") .concat(newLine) .concat("Comentarios: ") .concat(this.adminHoliday.getUserComment()) .concat(newLine); mailService.sendHtml(sendTo, subject, messageBody); } } /** * Delete bean and go back to beans list * @return forward to LIST page */ public String delete() { manager.deleteEntity(adminHoliday); adminHoliday = null; return NavigationResults.LIST; } /** * Go back to beans list * @return forward to LIST page */ public String list() { return NavigationResults.LIST; } /** * Reset search criteria * @return forward to LIST page */ public String reset() { search.reset(); return list(); } /** * Go to search page * @return forward to SEARCH page */ public String search() { return NavigationResults.SEARCH; } /** * Check if we have an active object. * @return true is an object is selected */ public boolean isAdminHolidaySelected() { return adminHoliday != null; } // Getters and setters to manipulate sorting public boolean isSortAscending() { return sortAscending; } public void setSortAscending(boolean sortAscending) { this.sortAscending = sortAscending; } public String getSortColumn() { return sortColumn; } public void setSortColumn(String sortColumn) { this.sortColumn = sortColumn; } // Getters and setters to handle search public AdminHolidaySearch getSearch() { return search; } public Date getSearchStartBeginDate() { return search.getStartBeginDate(); } public void setSearchStartBeginDate(Date val) { if (val != null) { search.setStartBeginDate(val); } else { search.unsetStartBeginDate(); } } public boolean isSearchStartBeginDateValid() { return search.isStartBeginDateSet(); } public void setSearchStartBeginDateValid(boolean val) { if (val) { search.setStartBeginDate(search.getStartBeginDate()); } else { search.unsetStartBeginDate(); } } public Date getSearchEndBeginDate() { return search.getEndBeginDate(); } public void setSearchEndBeginDate(Date val) { if (val != null) { search.setEndBeginDate(val); } else { search.unsetEndBeginDate(); } } public boolean isSearchEndBeginDateValid() { return search.isEndBeginDateSet(); } public void setSearchEndBeginDateValid(boolean val) { if (val) { search.setEndBeginDate(search.getEndBeginDate()); } else { search.unsetEndBeginDate(); } } public Date getSearchStartFinalDate() { return search.getStartFinalDate(); } public void setSearchStartFinalDate(Date val) { if (val != null) { search.setStartFinalDate(val); } else { search.unsetStartFinalDate(); } } public boolean isSearchStartFinalDateValid() { return search.isStartFinalDateSet(); } public void setSearchStartFinalDateValid(boolean val) { if (val) { search.setStartFinalDate(search.getStartFinalDate()); } else { search.unsetStartFinalDate(); } } public Date getSearchEndFinalDate() { return search.getEndFinalDate(); } public void setSearchEndFinalDate(Date val) { if (val != null) { search.setEndFinalDate(val); } else { search.unsetEndFinalDate(); } } public boolean isSearchEndFinalDateValid() { return search.isEndFinalDateSet(); } public void setSearchEndFinalDateValid(boolean val) { if (val) { search.setEndFinalDate(search.getEndFinalDate()); } else { search.unsetEndFinalDate(); } } public HolidayState getSearchState() { return search.getState(); } public void setSearchState(HolidayState val) { if (search.isStateSet()) { search.setState(val); } } public boolean isSearchStateValid() { return search.isStateSet(); } public void setSearchStateValid(boolean val) { if (val) { search.setState(search.getState()); } else { search.unsetState(); } } public String getSearchObservations() { return search.getObservations(); } public void setSearchObservations(String val) { if (search.isObservationsSet()) { search.setObservations(val); } } public boolean isSearchObservationsValid() { return search.isObservationsSet(); } public void setSearchObservationsValid(boolean val) { if (val) { search.setObservations(search.getObservations()); } else { search.unsetObservations(); } } public String getSearchUserComment() { return search.getUserComment(); } public void setSearchUserComment(String val) { if (search.isUserCommentSet()) { search.setUserComment(val); } } public boolean isSearchUserCommentValid() { return search.isUserCommentSet(); } public void setSearchUserCommentValid(boolean val) { if (val) { search.setUserComment(search.getUserComment()); } else { search.unsetUserComment(); } } public Date getSearchStartChargeYear() { return search.getStartChargeYear(); } public void setSearchStartChargeYear(Date val) { if (val != null) { search.setStartChargeYear(val); } else { search.unsetStartChargeYear(); } } public boolean isSearchStartChargeYearValid() { return search.isStartChargeYearSet(); } public void setSearchStartChargeYearValid(boolean val) { if (val) { search.setStartChargeYear(search.getStartChargeYear()); } else { search.unsetStartChargeYear(); } } public Date getSearchEndChargeYear() { return search.getEndChargeYear(); } public void setSearchEndChargeYear(Date val) { if (val != null) { search.setEndChargeYear(val); } else { search.unsetEndChargeYear(); } } public boolean isSearchEndChargeYearValid() { return search.isEndChargeYearSet(); } public void setSearchEndChargeYearValid(boolean val) { if (val) { search.setEndChargeYear(search.getEndChargeYear()); } else { search.unsetEndChargeYear(); } } public Integer getSearchDepartmentId() { return search.getDepartmentId(); } public void setSearchDepartmentId(Integer val) { if (search.isDepartmentIdSet()) { search.setDepartmentId(val); } } public boolean isSearchDepartmentIdValid() { return search.isDepartmentIdSet(); } public void setSearchDepartmentIdValid(boolean val) { if (val) { search.setDepartmentId(search.getDepartmentId()); } else { search.unsetDepartmentId(); } } public Date getSearchStartInsertDate() { return search.getStartInsertDate(); } public void setSearchStartInsertDate(Date val) { if (val != null) { search.setStartInsertDate(val); } else { search.unsetStartInsertDate(); } } public boolean isSearchStartInsertDateValid() { return search.isStartInsertDateSet(); } public void setSearchStartInsertDateValid(boolean val) { if (val) { search.setStartInsertDate(search.getStartInsertDate()); } else { search.unsetStartInsertDate(); } } public Date getSearchEndInsertDate() { return search.getEndInsertDate(); } public void setSearchEndInsertDate(Date val) { if (val != null) { search.setEndInsertDate(val); } else { search.unsetEndInsertDate(); } } public boolean isSearchEndInsertDateValid() { return search.isEndInsertDateSet(); } public void setSearchEndInsertDateValid(boolean val) { if (val) { search.setEndInsertDate(search.getEndInsertDate()); } else { search.unsetEndInsertDate(); } } public Date getSearchStartUpdateDate() { return search.getStartUpdateDate(); } public void setSearchStartUpdateDate(Date val) { if (val != null) { search.setStartUpdateDate(val); } else { search.unsetStartUpdateDate(); } } public boolean isSearchStartUpdateDateValid() { return search.isStartUpdateDateSet(); } public void setSearchStartUpdateDateValid(boolean val) { if (val) { search.setStartUpdateDate(search.getStartUpdateDate()); } else { search.unsetStartUpdateDate(); } } public Date getSearchEndUpdateDate() { return search.getEndUpdateDate(); } public void setSearchEndUpdateDate(Date val) { if (val != null) { search.setEndUpdateDate(val); } else { search.unsetEndUpdateDate(); } } public boolean isSearchEndUpdateDateValid() { return search.isEndUpdateDateSet(); } public void setSearchEndUpdateDateValid(boolean val) { if (val) { search.setEndUpdateDate(search.getEndUpdateDate()); } else { search.unsetEndUpdateDate(); } } public User getSearchUserRequest() { return search.getUserRequest(); } public void setSearchUserRequest(User val) { if (search.isUserRequestSet()) { search.setUserRequest(val); } } public boolean isSearchUserRequestValid() { return search.isUserRequestSet(); } public void setSearchUserRequestValid(boolean val) { if (val) { search.setUserRequest(search.getUserRequest()); } else { search.unsetUserRequest(); } } // Getters and setters to handle uploads // Getters and setters to manipulate active AdminHoliday object public java.lang.Integer getId() { return adminHoliday.getId(); } public Date getBeginDate() { return adminHoliday.getBeginDate(); } public void setBeginDate(Date beginDate) { adminHoliday.setBeginDate(beginDate); } public Date getFinalDate() { return adminHoliday.getFinalDate(); } public void setFinalDate(Date finalDate) { adminHoliday.setFinalDate(finalDate); } public HolidayState getState() { return adminHoliday.getState(); } public void setState(HolidayState state) { adminHoliday.setState(state); } public String getObservations() { return adminHoliday.getObservations(); } public void setObservations(String observations) { adminHoliday.setObservations(observations); } public String getUserComment() { return adminHoliday.getUserComment(); } public void setUserComment(String userComment) { adminHoliday.setUserComment(userComment); } public Date getChargeYear() { return adminHoliday.getChargeYear(); } public void setChargeYear(Date chargeYear) { adminHoliday.setChargeYear(chargeYear); } public Integer getDepartmentId() { return adminHoliday.getDepartmentId(); } public void setDepartmentId(Integer departmentId) { adminHoliday.setDepartmentId(departmentId); } public Date getInsertDate() { return adminHoliday.getInsertDate(); } public void setInsertDate(Date insertDate) { adminHoliday.setInsertDate(insertDate); } public Date getUpdateDate() { return adminHoliday.getUpdateDate(); } public void setUpdateDate(Date updateDate) { adminHoliday.setUpdateDate(updateDate); } public User getUserRequest() { return adminHoliday.getUserRequest(); } public void setUserRequest(User userRequest) { adminHoliday.setUserRequest(userRequest); } /* adminHoliday - generated by stajanov (do not edit/delete) */ }