/** * TNTConcept Easy Enterprise Management by Autentia Real Bussiness Solution S.L. * Copyright (C) 2007 Autentia Real Bussiness Solution S.L. * * 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. * * 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. * * 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.contacts; import java.util.ArrayList; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.faces.component.UIData; import javax.faces.model.SelectItem; 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.Contact; import com.autentia.tnt.businessobject.Department; import com.autentia.tnt.businessobject.Organization; import com.autentia.tnt.businessobject.Position; import com.autentia.tnt.businessobject.Tag; import com.autentia.tnt.dao.SortCriteria; import com.autentia.tnt.dao.search.PositionSearch; import com.autentia.tnt.dao.search.TagSearch; import com.autentia.tnt.manager.admin.DepartmentManager; import com.autentia.tnt.manager.contacts.ContactManager; import com.autentia.tnt.manager.contacts.OrganizationManager; import com.autentia.tnt.manager.contacts.PositionManager; import com.autentia.tnt.manager.security.Permission; import com.autentia.tnt.manager.tags.TagManager; 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 TagBean extends BaseBean { private static final long serialVersionUID = -7427390897740849690L; /* Tag - generated by stajanov (do not edit/delete) */ /** Logger */ private static final Log log = LogFactory.getLog(TagBean.class); /** Active search object */ private TagSearch search = new TagSearch(); /** Manager */ private static TagManager manager = TagManager.getDefault(); /** Upload service */ private static final Uploader uploader = UploaderFactory.getInstance("tag"); /** Active Tag object */ private Tag tag; /** Default sort column */ private String sortColumn = "name"; /** Default sort order */ private boolean sortAscending = true; /** * List tags. Order depends on Faces parameter sort. * * @return the list of all tags sorted by requested criterion */ public List<Tag> getAll() { return manager.getAllEntities(search, new SortCriteria(sortColumn, sortAscending)); } // Getters to list possible values of related entities /** * Get the list of all contactTags selected * * @return the list of all contactTags selected */ public List<SelectItem> getContactTagsSelected() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); List<Contact> refs = this.getContactTags(); for (Contact ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } /** * Get the list of all contactTagss * * @return the list of all contactTagss */ public List<SelectItem> getContactTagss() { List<Contact> refs = ContactManager.getDefault().getAllEntities(null, new SortCriteria("name")); List<SelectItem> ret = new ArrayList<SelectItem>(); for (Contact ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } /** * Get the list of all positionTags selected * * @return the list of all positionTags selected */ public List<SelectItem> getPositionTagsSelected() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); List<Position> refs = this.getPositionTags(); for (Position ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } /** * Get the list of all positionTagss * * @return the list of all positionTagss */ public List<SelectItem> getPositionTagss() { List<Position> refs = PositionManager.getDefault().getAllEntities(null, new SortCriteria("name")); ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); for (Position ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } /** * Get the list of all departmentTags selected * * @return the list of all departmentTags selected */ public List<SelectItem> getDepartmentTagsSelected() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); List<Department> refs = this.getDepartmentTags(); for (Department ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } /** * Get the list of all departmentTagss * * @return the list of all departmentTagss */ public List<SelectItem> getDepartmentTagss() { List<Department> refs = DepartmentManager.getDefault().getAllEntities( null, new SortCriteria("name")); ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); for (Department ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } /** * Get the list of all organizationTags selected * * @return the list of all organizationTags selected */ public List<SelectItem> getOrganizationTagsSelected() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); List<Organization> refs = this.getOrganizationTags(); for (Organization ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } /** * Get the list of all organizationTagss * * @return the list of all organizationTagss */ public List<SelectItem> getOrganizationTagss() { List<Organization> refs = OrganizationManager.getDefault() .getAllEntities(null, new SortCriteria("name")); ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); for (Organization ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } // Getters to list possible values of enum fields // Methods to create/remove instances of one-to-many entities (slave // entities) /** * Create a new empty instance of the one-to-many field * * @return forward to the same page */ public String createContactTags() { Contact item = new Contact(); if (tag.getContactTags() == null) { tag.setContactTags(new HashSet()); } tag.getContactTags().add(item); return null; } /** * Create a new empty instance of the one-to-many field * * @return forward to the same page */ public String editContactTags() { Contact item = new Contact(); if (tag.getContactTags() == null) { tag.setContactTags(new HashSet()); } tag.getContactTags().add(item); return null; } /** * Delete selected instance of the one-to-many field * * @return forward to the same page */ public String deleteContactTags() { UIData table = (UIData) FacesUtils.getComponent("tag:contactTags"); tag.getContactTags().remove(table.getRowData()); return null; } /** * Create a new empty instance of the one-to-many field * * @return forward to the same page */ public String createPositionTags() { Position item = new Position(); if (tag.getPositionTags() == null) { tag.setPositionTags(new HashSet()); } tag.getPositionTags().add(item); return null; } /** * Create a new empty instance of the one-to-many field * * @return forward to the same page */ public String editPositionTags() { Position item = new Position(); if (tag.getPositionTags() == null) { tag.setPositionTags(new HashSet()); } tag.getPositionTags().add(item); return null; } /** * Delete selected instance of the one-to-many field * * @return forward to the same page */ public String deletePositionTags() { UIData table = (UIData) FacesUtils.getComponent("tag:positionTags"); tag.getPositionTags().remove(table.getRowData()); return null; } /** * Create a new empty instance of the one-to-many field * * @return forward to the same page */ public String createDepartmentTags() { Department item = new Department(); if (tag.getDepartmentTags() == null) { tag.setDepartmentTags(new HashSet()); } tag.getDepartmentTags().add(item); return null; } /** * Create a new empty instance of the one-to-many field * * @return forward to the same page */ public String editDepartmentTags() { Department item = new Department(); if (tag.getDepartmentTags() == null) { tag.setDepartmentTags(new HashSet()); } tag.getDepartmentTags().add(item); return null; } /** * Delete selected instance of the one-to-many field * * @return forward to the same page */ public String deleteDepartmentTags() { UIData table = (UIData) FacesUtils.getComponent("tag:departmentTags"); tag.getDepartmentTags().remove(table.getRowData()); return null; } /** * Create a new empty instance of the one-to-many field * * @return forward to the same page */ public String createOrganizationTags() { Organization item = new Organization(); if (tag.getOrganizationTags() == null) { tag.setOrganizationTags(new HashSet()); } tag.getOrganizationTags().add(item); return null; } /** * Create a new empty instance of the one-to-many field * * @return forward to the same page */ public String editOrganizationTags() { Organization item = new Organization(); if (tag.getOrganizationTags() == null) { tag.setOrganizationTags(new HashSet()); } tag.getOrganizationTags().add(item); return null; } /** * Delete selected instance of the one-to-many field * * @return forward to the same page */ public String deleteOrganizationTags() { UIData table = (UIData) FacesUtils.getComponent("tag:organizationTags"); tag.getOrganizationTags().remove(table.getRowData()); return null; } /** * Whether or not create button is available for user * * @return true if user can create objects of type Tag */ public boolean isCreateAvailable() { return SpringUtils.isRolePermissionGranted(Permission .Entity_Create(Tag.class)); } /** * Whether or not edit button is available for user * * @return true if user can edit current object */ public boolean isEditAvailable() { return SpringUtils.isAclPermissionGranted(tag, BasePermission.WRITE); } /** * Whether or not delete button is available for user * * @return true if user can delete current object */ public boolean isDeleteAvailable() { return (tag.getId() != null) && SpringUtils.isAclPermissionGranted(tag, BasePermission.DELETE); } /** * Go to create page * * @return forward to CREATE page */ public String create() { tag = new Tag(); tag.setInsertDate(new Date()); return NavigationResults.CREATE; } /** * Go to detail page * * @return forward to DETAIL page */ public String detail() { Integer id = Integer.parseInt(FacesUtils.getRequestParameter(ROW_ID)); tag = manager.getEntityById(id); return SpringUtils.isAclPermissionGranted(tag, BasePermission.WRITE) ? NavigationResults.EDIT : NavigationResults.DETAIL; } /** * Save bean and stay on it * * @return forward to list page */ public String save() { doBeforeSave(); if (tag.getId() == null) { manager.insertEntity(tag); } else { manager.updateEntity(tag); } // Calls an after save action String result = doAfterSave(NavigationResults.LIST); // Unselect object tag = null; return result; } /** * Delete bean and go back to beans list * * @return forward to LIST page */ public String delete() { try { manager.deleteEntity(tag); tag = null; return NavigationResults.LIST; } catch (Exception e) { FacesUtils.addErrorMessage(null, "tag.error.referenced"); return null; } } /** * 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 isTagSelected() { return tag != 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 TagSearch getSearch() { return search; } public String getSearchName() { return search.getName(); } public void setSearchName(String val) { if (search.isNameSet()) { search.setName(val); } } public boolean isSearchNameValid() { return search.isNameSet(); } public void setSearchNameValid(boolean val) { if (val) { search.setName(search.getName()); } else { search.unsetName(); } } public String getSearchDescription() { return search.getDescription(); } public void setSearchDescription(String val) { if (search.isDescriptionSet()) { search.setDescription(val); } } public boolean isSearchDescriptionValid() { return search.isDescriptionSet(); } public void setSearchDescriptionValid(boolean val) { if (val) { search.setDescription(search.getDescription()); } else { search.unsetDescription(); } } public Integer getSearchOwnerId() { return search.getOwnerId(); } public void setSearchOwnerId(Integer val) { if (search.isOwnerIdSet()) { search.setOwnerId(val); } } public boolean isSearchOwnerIdValid() { return search.isOwnerIdSet(); } public void setSearchOwnerIdValid(boolean val) { if (val) { search.setOwnerId(search.getOwnerId()); } else { search.unsetOwnerId(); } } 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 List<Contact> getSearchContactTags() { return search.getContactTags(); } public void setSearchContactTags(List<Contact> val) { if (search.isContactTagsSet()) { search.setContactTags(val); } } public boolean isSearchContactTagsValid() { return search.isContactTagsSet(); } public void setSearchContactTagsValid(boolean val) { if (val) { search.setContactTags(search.getContactTags()); } else { search.unsetContactTags(); } } public List<Position> getSearchPositionTags() { return search.getPositionTags(); } public void setSearchPositionTags(List<Position> val) { if (search.isPositionTagsSet()) { search.setPositionTags(val); } } public boolean isSearchPositionTagsValid() { return search.isPositionTagsSet(); } public void setSearchPositionTagsValid(boolean val) { if (val) { search.setPositionTags(search.getPositionTags()); } else { search.unsetPositionTags(); } } public List<Department> getSearchDepartmentTags() { return search.getDepartmentTags(); } public void setSearchDepartmentTags(List<Department> val) { if (search.isDepartmentTagsSet()) { search.setDepartmentTags(val); } } public boolean isSearchDepartmentTagsValid() { return search.isDepartmentTagsSet(); } public void setSearchDepartmentTagsValid(boolean val) { if (val) { search.setDepartmentTags(search.getDepartmentTags()); } else { search.unsetDepartmentTags(); } } public List<Organization> getSearchOrganizationTags() { return search.getOrganizationTags(); } public void setSearchOrganizationTags(List<Organization> val) { if (search.isOrganizationTagsSet()) { search.setOrganizationTags(val); } } public boolean isSearchOrganizationTagsValid() { return search.isOrganizationTagsSet(); } public void setSearchOrganizationTagsValid(boolean val) { if (val) { search.setOrganizationTags(search.getOrganizationTags()); } else { search.unsetOrganizationTags(); } } // Getters and setters to handle uploads // Getters and setters to manipulate active Tag object public java.lang.Integer getId() { return tag.getId(); } public String getName() { return tag.getName(); } public void setName(String name) { tag.setName(name); } public String getDescription() { return tag.getDescription(); } public void setDescription(String description) { tag.setDescription(description); } public Integer getOwnerId() { return tag.getOwnerId(); } public void setOwnerId(Integer ownerId) { tag.setOwnerId(ownerId); } public Integer getDepartmentId() { return tag.getDepartmentId(); } public void setDepartmentId(Integer departmentId) { tag.setDepartmentId(departmentId); } public Date getInsertDate() { return tag.getInsertDate(); } public void setInsertDate(Date insertDate) { tag.setInsertDate(insertDate); } public Date getUpdateDate() { return tag.getUpdateDate(); } public void setUpdateDate(Date updateDate) { tag.setUpdateDate(updateDate); } public List<Contact> getContactTags() { List<Contact> contactTags = new ArrayList<Contact>(); if (tag.getContactTags() != null && !tag.getContactTags().isEmpty()) { contactTags.addAll(tag.getContactTags()); } return contactTags; } public void setContactTags(List<Contact> contactTags) { Set<Contact> result = new HashSet<Contact>(); if (contactTags != null && !contactTags.isEmpty()) { result.addAll(contactTags); } tag.setContactTags(result); } public List<Position> getPositionTags() { List<Position> positionTags = new ArrayList<Position>(); if (tag.getPositionTags() != null && !tag.getPositionTags().isEmpty()) { positionTags.addAll(tag.getPositionTags()); } return positionTags; } public void setPositionTags(List<Position> positionTags) { Set<Position> result = new HashSet<Position>(); if (positionTags != null && !positionTags.isEmpty()) { result.addAll(positionTags); } tag.setPositionTags(result); } public List<Department> getDepartmentTags() { List<Department> departmentTags = new ArrayList<Department>(); if (tag.getDepartmentTags() != null && !tag.getDepartmentTags().isEmpty()) { departmentTags.addAll(tag.getDepartmentTags()); } return departmentTags; } public void setDepartmentTags(List<Department> departmentTags) { Set<Department> result = new HashSet<Department>(); if (departmentTags != null && !departmentTags.isEmpty()) { result.addAll(departmentTags); } tag.setDepartmentTags(result); } public List<Organization> getOrganizationTags() { List<Organization> organizationTags = new ArrayList<Organization>(); if (tag.getOrganizationTags() != null && !tag.getOrganizationTags().isEmpty()) { organizationTags.addAll(tag.getOrganizationTags()); } return organizationTags; } public void setOrganizationTags(List<Organization> organizationTags) { Set<Organization> result = new HashSet<Organization>(); if (organizationTags != null && !organizationTags.isEmpty()) { result.addAll(organizationTags); } tag.setOrganizationTags(result); } // ---------------------- // seleccion de contactos // ---------------------- private Contact selectedContact; public Contact getSelectedContact() { return selectedContact; } public void setSelectedContact(Contact selectedContact) { this.selectedContact = selectedContact; } public List<SelectItem> getAllContacts() { final List<Contact> refs = ContactManager.getDefault().getAllEntities(null, new SortCriteria("name")); final List<SelectItem> ret = new ArrayList<SelectItem>(); for (Contact ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } public String addContact() { tag.getContactTags().add(getSelectedContact()); return NavigationResults.EDIT; } public Set<Contact> getContacts () { return tag.getContactTags(); } public void setContacts(Set<Contact> contacts) { tag.setContactTags(contacts); } public String deleteContact() { final UIData table = (UIData) FacesUtils.getComponent("tag:contacts"); final Contact toDelete = (Contact) table.getRowData(); tag.getContactTags().remove(toDelete); return NavigationResults.EDIT; } // -------------------- // seleccion de puestos // -------------------- private Position selectedPosition; public Position getSelectedPosition() { return selectedPosition; } public void setSelectedPosition(Position selectedPosition) { this.selectedPosition = selectedPosition; } public List<SelectItem> getAllPositions() { final PositionSearch positionSearch = new PositionSearch(); positionSearch.setDeleted(false); final List<Position> refs = PositionManager.getDefault().getAllEntities(positionSearch, new SortCriteria("name")); final List<SelectItem> ret = new ArrayList<SelectItem>(); for (Position ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } public String addPosition() { tag.getPositionTags().add(getSelectedPosition()); return NavigationResults.EDIT; } public Set<Position> getPosition () { return tag.getPositionTags(); } public void setPosition(Set<Position> positions) { tag.setPositionTags(positions); } public String deletePosition() { final UIData table = (UIData) FacesUtils.getComponent("tag:positions"); final Position toDelete = (Position) table.getRowData(); tag.getPositionTags().remove(toDelete); return NavigationResults.EDIT; } // -------------------------- // seleccion de departamentos // -------------------------- private Department selectedDepartment; public Department getSelectedDepartment() { return selectedDepartment; } public void setSelectedDepartment(Department selectedDepartment) { this.selectedDepartment = selectedDepartment; } public List<SelectItem> getAllDepartments() { final List<Department> refs = DepartmentManager.getDefault().getAllEntities(null, new SortCriteria("name")); final List<SelectItem> ret = new ArrayList<SelectItem>(); for (Department ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } public String addDepartment() { tag.getDepartmentTags().add(getSelectedDepartment()); return NavigationResults.EDIT; } public Set<Department> getDepartment () { return tag.getDepartmentTags(); } public void setDepartment(Set<Department> departments) { tag.setDepartmentTags(departments); } public String deleteDepartment() { final UIData table = (UIData) FacesUtils.getComponent("tag:departments"); final Department toDelete = (Department) table.getRowData(); tag.getDepartmentTags().remove(toDelete); return NavigationResults.EDIT; } // --------------------------- // seleccion de organizaciones // --------------------------- private Organization selectedOrganization; public Organization getSelectedOrganization() { return selectedOrganization; } public void setSelectedOrganization(Organization selectedOrganization) { this.selectedOrganization = selectedOrganization; } public List<SelectItem> getAllOrganizations() { final List<Organization> refs = OrganizationManager.getDefault().getAllEntities(null, new SortCriteria("name")); final List<SelectItem> ret = new ArrayList<SelectItem>(); for (Organization ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } public String addOrganization() { tag.getOrganizationTags().add(getSelectedOrganization()); return NavigationResults.EDIT; } public Set<Organization> getOrganization () { return tag.getOrganizationTags(); } public void setOrganization(Set<Organization> organizations) { tag.setOrganizationTags(organizations); } public String deleteOrganization() { final UIData table = (UIData) FacesUtils.getComponent("tag:organizations"); final Organization toDelete = (Organization) table.getRowData(); tag.getOrganizationTags().remove(toDelete); return NavigationResults.EDIT; } }