/** * 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.commissionings; import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; 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 org.apache.myfaces.custom.fileupload.UploadedFile; import com.autentia.tnt.bean.BaseBean; import com.autentia.tnt.bean.NavigationResults; import com.autentia.tnt.businessobject.BillPaymentMode; import com.autentia.tnt.businessobject.Collaborator; import com.autentia.tnt.businessobject.Commissioning; import com.autentia.tnt.businessobject.CommissioningChange; import com.autentia.tnt.businessobject.CommissioningDelay; import com.autentia.tnt.businessobject.CommissioningFile; import com.autentia.tnt.businessobject.CommissioningPaymentData; import com.autentia.tnt.businessobject.CommissioningStatus; import com.autentia.tnt.businessobject.Objective; import com.autentia.tnt.businessobject.ObjectiveState; import com.autentia.tnt.businessobject.Project; import com.autentia.tnt.businessobject.User; import com.autentia.tnt.dao.SortCriteria; import com.autentia.tnt.dao.search.CommissioningSearch; import com.autentia.tnt.mail.DefaultMailService; import com.autentia.tnt.mail.MailService; import com.autentia.tnt.manager.activity.ObjectiveManager; import com.autentia.tnt.manager.admin.ProjectManager; import com.autentia.tnt.manager.admin.UserManager; import com.autentia.tnt.manager.commissioning.CommissioningManager; import com.autentia.tnt.manager.contacts.CollaboratorManager; import com.autentia.tnt.manager.security.AuthenticationManager; import com.autentia.tnt.manager.security.impl.fixed.IWorkFlowConfiguration; import com.autentia.tnt.manager.workflow.Field; import com.autentia.tnt.manager.workflow.State; import com.autentia.tnt.manager.workflow.WorkFlow; import com.autentia.tnt.manager.workflow.Field.Permission; import com.autentia.tnt.upload.Uploader; import com.autentia.tnt.upload.UploaderFactory; import com.autentia.tnt.util.ConfigurationUtil; import com.autentia.tnt.util.FacesUtils; import com.autentia.tnt.util.FileUtil; import com.autentia.tnt.util.ReportUtil; import com.autentia.tnt.util.SpringUtils; public class CommissioningBean extends BaseBean { private static final long serialVersionUID = 14353454354355L; /* Commissioning - generated by stajanov (do not edit/delete) */ /** Envio de correos */ private MailService mailService; /** Logger */ private static final Log log = LogFactory.getLog(CommissioningBean.class); /** Active search object */ private CommissioningSearch search = new CommissioningSearch(); /** Manager */ private static CommissioningManager manager = CommissioningManager .getDefault(); /** Manager */ private static ObjectiveManager objectiveManager = ObjectiveManager .getDefault(); /** Manager */ private static AuthenticationManager authManager = AuthenticationManager .getDefault(); /** Upload service */ private static final Uploader uploader = UploaderFactory .getInstance("commissioning"); /** Active Commissioning object */ private Commissioning commissioning; /** Commissioning delay to fill */ private CommissioningDelay commissioningDelay; /** Default sort column */ private String sortColumn = "insertDate"; /** Default sort order */ private boolean sortAscending = false; private WorkFlow workFlow; /** Uploaded file object */ private UploadedFile uploadFile; private Collaborator selectedCollaborator; /** Changes Datatable only for showing texts purposes **/ private UIData changesDataTable; public UIData getChangesDataTable() { return changesDataTable; } public void setChangesDataTable(UIData changesDataTable) { this.changesDataTable = changesDataTable; } /** * Returns the current change in changes data table "old value" * * @return */ public String getChangeOldValue() { String oldValue = ((CommissioningChange)changesDataTable.getRowData()).getOldValue(); return getChangeValue(oldValue); } /** * Returns the current change in changes data table "new value" * * @return */ public String getChangeNewValue() { String newValue = ((CommissioningChange)changesDataTable.getRowData()).getNewValue(); return getChangeValue(newValue); } private String getChangeValue(String changeValue) { String strReturn = changeValue; if (changeValue != null) { if (changeValue.equals("true")) { strReturn = FacesUtils.formatMessage("msg.yes"); } else if (changeValue.equals("false")) { strReturn = FacesUtils.formatMessage("msg.no"); } else if (changeValue.indexOf(BillPaymentMode.CARD.name()) != -1 || changeValue.indexOf(BillPaymentMode.CHECK.name()) != -1 || changeValue.indexOf(BillPaymentMode.MONEY.name()) != -1 || changeValue.indexOf(BillPaymentMode.PROMISSORYNOTE.name()) != -1 || changeValue.indexOf(BillPaymentMode.RECEIPT.name()) != -1 || changeValue.indexOf(BillPaymentMode.TRANSFER.name()) != -1 || changeValue.indexOf(BillPaymentMode.UNKNOWN.name()) != -1) { int i = changeValue.indexOf("]"); if (i != -1) { String user = changeValue.substring(0, i + 2); changeValue = changeValue.substring(i + 2); strReturn = user + FacesUtils.formatMessage("BillPaymentMode." + changeValue); } } } return strReturn; } public CommissioningBean() { super(); // las busquedas por defecto de pedidos no eliminados search.setStartDeleteDate(null); mailService = new DefaultMailService(ConfigurationUtil.getDefault()); final IWorkFlowConfiguration wf = (IWorkFlowConfiguration) SpringUtils .getSpringBean("securityConfiguration"); workFlow = wf.getWorkFlowMatrix().get("Commissioning"); } /** * List commissionings. Order depends on Faces parameter sort. * * @return the list of all commissionings sorted by requested criterion */ public List<Commissioning> getAll() { return manager.getAllEntities(search, new SortCriteria(sortColumn, sortAscending)); } // Getters to list possible values of related entities /** * Get the list of all revisers * * @return the list of all revisers */ public List<SelectItem> getAllRevisers() { List<User> refs = UserManager.getDefault().getAllEntities(null, new SortCriteria("name", true)); ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); for (User ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } /** * Get the list of all projects * * @return the list of all projects */ public List<SelectItem> getProjects() { List<Project> refs = ProjectManager.getDefault().getAllEntities(null, new SortCriteria("name")); ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); for (Project ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } /** * Get the list of all PaymentMode values * * @return the list of all PaymentMode values */ public List<SelectItem> getPaymentModes() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); BillPaymentMode[] vals = BillPaymentMode.values(); for (BillPaymentMode val : vals) { ret.add(new SelectItem(val, FacesUtils .formatMessage("BillPaymentMode." + val.name()))); } return ret; } public String getStatusFormatted() { if (this.getStatus() != null) { return FacesUtils.formatMessage("CommissioningStatus." + this.getStatus().name()); } else { return ""; } } /** * Get the list of all Status values * * @return the list of all Status values */ public List<SelectItem> getStatuss() { ArrayList<SelectItem> ret = new ArrayList<SelectItem>(); CommissioningStatus[] vals = CommissioningStatus.values(); for (CommissioningStatus val : vals) { ret.add(new SelectItem(val, FacesUtils .formatMessage("CommissioningStatus." + 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 Commissioning */ public boolean isCreateAvailable() { return SpringUtils .isRolePermissionGranted(com.autentia.tnt.manager.security.Permission .Entity_Create(Commissioning.class)); } /** * Whether or not edit button is available for user * * @return true if user can edit current object */ public boolean isEditAvailable() { return SpringUtils.isAclPermissionGranted(commissioning, BasePermission.WRITE); } /** * Whether or not delete button is available for user * * @return true if user can delete current object */ public boolean isDeleteAvailable() { if (commissioning == null) return false; return (commissioning.getId() != null) && SpringUtils.isAclPermissionGranted(commissioning, BasePermission.DELETE); } /** * Go to create page * * @return forward to CREATE page */ public String create() { commissioning = new Commissioning(); // when we create a new commissioning status is created // and default reviser is actual user commissioning.setStatus(CommissioningStatus.CREATED); commissioning.setRequestDate(new Date()); final Set<User> revisers = new HashSet<User>(); revisers.add(authManager.getCurrentPrincipal().getUser()); commissioning.setRevisers(revisers); return NavigationResults.CREATE; } /** * Go to detail page * * @return forward to DETAIL page */ public String detail() { Integer id = Integer.parseInt(FacesUtils.getRequestParameter(ROW_ID)); commissioning = manager.getEntityById(id); commissioningDelay = new CommissioningDelay(); commissioningDelay.setOriginalDate(commissioning.getDeliveryDate()); commissioningDelay.setStatus(commissioning.getStatus()); return SpringUtils.isAclPermissionGranted(commissioning, BasePermission.WRITE) ? NavigationResults.EDIT : NavigationResults.DETAIL; } public String showHistory() { Integer id = Integer.parseInt(FacesUtils.getRequestParameter(ROW_ID)); commissioning = manager.getEntityById(id); return "changes"; } /** * Save bean and stay on it * * @return forward to list page */ public String save() { // reloads the page with the message errors if validation is not // possible if (!validateTextFields()) { return NavigationResults.EDIT; } // Handle uploads for file field String result = doBeforeSave(); if (result != null) { return result; } // performs saving if (commissioning.getId() == null) { manager.insertEntity(commissioning); } else { manager.updateEntity(commissioning); } // Calls an after save action return doAfterSave(NavigationResults.LIST); } @Override public String doBeforeSave() { String result = super.doBeforeSave(); // performs file upload try { if (uploadFile != null) { String fileName = FileUtil.getFileName(uploadFile.getName()); if (uploader.exists(Integer.toString(commissioning.getId()), fileName)) { // el fichero ya existe y lo versionamos fileName = uploader.version(Integer.toString(commissioning .getId()), fileName, uploadFile); } else { uploader.store(Integer.toString(commissioning.getId()), uploadFile); } final CommissioningFile file = new CommissioningFile(); file.setInsertDate(new Date()); file.setUser(authManager.getCurrentPrincipal().getUser()); file.setCommissioning(commissioning); file.setFile(fileName); file.setFileMime(uploadFile.getContentType()); commissioning.getFiles().add(file); } } catch (IOException e) { log.error("save - exception uploading field file", e); FacesUtils.addErrorMessage("commissioning:file", "error.fileTransfer", uploadFile.getName()); return NavigationResults.EDIT; } return result; } /** * Valida que el contenido de las cajas de texto no exceda del tamaño de que * disponen los campos en base de datos */ private boolean validateTextFields() { boolean allValidationPassed = true; if (commissioning.getName() != null && commissioning.getName().length() >= 1024) { allValidationPassed = false; FacesUtils.addErrorMessage(null, "commissioning.error.textFieldTooLong", FacesUtils .formatMessage("commissioning.name")); } if (commissioning.getScope() != null && commissioning.getScope().length() >= 512) { allValidationPassed = false; FacesUtils.addErrorMessage(null, "commissioning.error.textFieldTooLong", FacesUtils .formatMessage("commissioning.scope")); } if (commissioning.getContent() != null && commissioning.getContent().length() >= 1024) { allValidationPassed = false; FacesUtils.addErrorMessage(null, "commissioning.error.textFieldTooLong", FacesUtils .formatMessage("commissioning.content")); } if (commissioning.getProducts() != null && commissioning.getProducts().length() >= 1024) { allValidationPassed = false; FacesUtils.addErrorMessage(null, "commissioning.error.textFieldTooLong", FacesUtils .formatMessage("commissioning.products")); } if (commissioning.getNotes() != null && commissioning.getNotes().length() >= 1024) { allValidationPassed = false; FacesUtils.addErrorMessage(null, "commissioning.error.textFieldTooLong", FacesUtils .formatMessage("commissioning.notes")); } if (commissioning.getDevelopedActivities() != null && commissioning.getDevelopedActivities().length() >= 1024) { allValidationPassed = false; FacesUtils .addErrorMessage( null, "commissioning.error.textFieldTooLong", FacesUtils .formatMessage("commissioning.developedActivities")); } if (commissioning.getDifficultiesAppeared() != null && commissioning.getDifficultiesAppeared().length() >= 1024) { allValidationPassed = false; FacesUtils .addErrorMessage( null, "commissioning.error.textFieldTooLong", FacesUtils .formatMessage("commissioning.difficultiesAppeared")); } if (commissioning.getResults() != null && commissioning.getResults().length() >= 1024) { allValidationPassed = false; FacesUtils.addErrorMessage(null, "commissioning.error.textFieldTooLong", FacesUtils .formatMessage("commissioning.results")); } if (commissioning.getConclusions() != null && commissioning.getConclusions().length() >= 1024) { allValidationPassed = false; FacesUtils.addErrorMessage(null, "commissioning.error.textFieldTooLong", FacesUtils .formatMessage("commissioning.conclusions")); } if (commissioning.getEvaluation() != null && commissioning.getEvaluation().length() >= 1024) { allValidationPassed = false; FacesUtils.addErrorMessage(null, "commissioning.error.textFieldTooLong", FacesUtils .formatMessage("commissioning.evaluation")); } return allValidationPassed; } private boolean validatePaymentMode() { boolean allValidationPassed = true; for (CommissioningPaymentData paymentData : commissioning .getCollaboratorsPaymentData()) { if (paymentData.getBankAccount().equals("") && paymentData.getBillNumber().equals("") || !paymentData.getBankAccount().equals("") && !paymentData.getBillNumber().equals("")) { allValidationPassed = false; FacesUtils.addErrorMessage(null, "commissioning.error.justSinglePaymentMode", paymentData.getCollaborator().getName()); } } return allValidationPassed; } public String addCollaborator() { final Collaborator collab = getSelectedCollaborator(); try { if (!commissioning.getCollaboratorsPaymentData().contains(collab)) { CommissioningPaymentData newCollab = new CommissioningPaymentData(); newCollab.setCollaborator(collab); newCollab.setCommissioning(commissioning); newCollab.setPaymentMode(BillPaymentMode.UNKNOWN); newCollab.setBillNumber(""); newCollab.setBankAccount(""); commissioning.getCollaboratorsPaymentData().add(newCollab); // Add to history if commissioning is in a valid STATUS if (commissioning.getStatus() == CommissioningStatus.CONFIRMED || commissioning.getStatus() == CommissioningStatus.VALIDATED) { commissioning.getHistory().add( manager.getChange("commissioning.collaborator.add", "", newCollab.getCollaborator().getName(), commissioning)); } } } catch (Exception e) { log.info(e.getCause()); } return NavigationResults.EDIT; } // private List<String> commissioningPaymentDeletedName = new ArrayList<String>(0); public String deleteCollaborator() { UIData table = (UIData) FacesUtils .getComponent("commissioning:collaborators"); CommissioningPaymentData toDelete = (CommissioningPaymentData) table .getRowData(); commissioning.getCollaboratorsPaymentData().remove(toDelete); return NavigationResults.EDIT; } public String deleteFile() { UIData table = (UIData) FacesUtils.getComponent("commissioning:list"); CommissioningFile toDelete = (CommissioningFile) table.getRowData(); commissioning.getFiles().remove(toDelete); return null; } /** * Delete bean and go back to beans list * * @return forward to LIST page */ public String delete() { // borrado logico de la entidad commissioning.setDeleteDate(new Date()); manager.updateEntity(commissioning); commissioning = 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 isCommissioningSelected() { return commissioning != 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 CommissioningSearch getSearch() { return search; } public Date getSearchStartRequestDate() { return search.getStartRequestDate(); } public void setSearchStartRequestDate(Date val) { if (val != null) { search.setStartRequestDate(val); } else { search.unsetStartRequestDate(); } } public boolean isSearchStartRequestDateValid() { return search.isStartRequestDateSet(); } public void setSearchStartRequestDateValid(boolean val) { if (val) { search.setStartRequestDate(search.getStartRequestDate()); } else { search.unsetStartRequestDate(); } } public Date getSearchEndRequestDate() { return search.getEndRequestDate(); } public void setSearchEndRequestDate(Date val) { if (val != null) { search.setEndRequestDate(val); } else { search.unsetEndRequestDate(); } } public boolean isSearchEndRequestDateValid() { return search.isEndRequestDateSet(); } public void setSearchEndRequestDateValid(boolean val) { if (val) { search.setEndRequestDate(search.getEndRequestDate()); } else { search.unsetEndRequestDate(); } } 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 getSearchScope() { return search.getScope(); } public void setSearchScope(String val) { if (search.isScopeSet()) { search.setScope(val); } } public boolean isSearchScopeValid() { return search.isScopeSet(); } public void setSearchScopeValid(boolean val) { if (val) { search.setScope(search.getScope()); } else { search.unsetScope(); } } public String getSearchContent() { return search.getContent(); } public void setSearchContent(String val) { if (search.isContentSet()) { search.setContent(val); } } public boolean isSearchContentValid() { return search.isContentSet(); } public void setSearchContentValid(boolean val) { if (val) { search.setContent(search.getContent()); } else { search.unsetContent(); } } public String getSearchProducts() { return search.getProducts(); } public void setSearchProducts(String val) { if (search.isProductsSet()) { search.setProducts(val); } } public boolean isSearchProductsValid() { return search.isProductsSet(); } public void setSearchProductsValid(boolean val) { if (val) { search.setProducts(search.getProducts()); } else { search.unsetProducts(); } } public Date getSearchStartDeliveryDate() { return search.getStartDeliveryDate(); } public void setSearchStartDeliveryDate(Date val) { if (val != null) { search.setStartDeliveryDate(val); } else { search.unsetStartDeliveryDate(); } } public boolean isSearchStartDeliveryDateValid() { return search.isStartDeliveryDateSet(); } public void setSearchStartDeliveryDateValid(boolean val) { if (val) { search.setStartDeliveryDate(search.getStartDeliveryDate()); } else { search.unsetStartDeliveryDate(); } } public Date getSearchEndDeliveryDate() { return search.getEndDeliveryDate(); } public void setSearchEndDeliveryDate(Date val) { if (val != null) { search.setEndDeliveryDate(val); } else { search.unsetEndDeliveryDate(); } } public boolean isSearchEndDeliveryDateValid() { return search.isEndDeliveryDateSet(); } public void setSearchEndDeliveryDateValid(boolean val) { if (val) { search.setEndDeliveryDate(search.getEndDeliveryDate()); } else { search.unsetEndDeliveryDate(); } } public BigDecimal getSearchBudget() { return search.getBudget(); } public void setSearchBudget(BigDecimal val) { if (search.isBudgetSet()) { search.setBudget(val); } } public boolean isSearchBudgetValid() { return search.isBudgetSet(); } public void setSearchBudgetValid(boolean val) { if (val) { search.setBudget(search.getBudget()); } else { search.unsetBudget(); } } public String getSearchNotes() { return search.getNotes(); } public void setSearchNotes(String val) { if (search.isNotesSet()) { search.setNotes(val); } } public boolean isSearchNotesValid() { return search.isNotesSet(); } public void setSearchNotesValid(boolean val) { if (val) { search.setNotes(search.getNotes()); } else { search.unsetNotes(); } } public java.lang.Boolean getSearchAuthorSignature() { return search.getAuthorSignature(); } public void setSearchAuthorSignature(java.lang.Boolean val) { if (search.isAuthorSignatureSet()) { search.setAuthorSignature(val); } } public boolean isSearchAuthorSignatureValid() { return search.isAuthorSignatureSet(); } public void setSearchAuthorSignatureValid(boolean val) { if (val) { search.setAuthorSignature(search.getAuthorSignature()); } else { search.unsetAuthorSignature(); } } public java.lang.Boolean getSearchReviserSignature() { return search.getReviserSignature(); } public void setSearchReviserSignature(java.lang.Boolean val) { if (search.isReviserSignatureSet()) { search.setReviserSignature(val); } } public boolean isSearchReviserSignatureValid() { return search.isReviserSignatureSet(); } public void setSearchReviserSignatureValid(boolean val) { if (val) { search.setReviserSignature(search.getReviserSignature()); } else { search.unsetReviserSignature(); } } public java.lang.Boolean getSearchAdminSignature() { return search.getAdminSignature(); } public void setSearchAdminSignature(java.lang.Boolean val) { if (search.isAdminSignatureSet()) { search.setAdminSignature(val); } } public boolean isSearchAdminSignatureValid() { return search.isAdminSignatureSet(); } public void setSearchAdminSignatureValid(boolean val) { if (val) { search.setAdminSignature(search.getAdminSignature()); } else { search.unsetAdminSignature(); } } public java.lang.Boolean getSearchDeleted() { return search.getDeleted(); } public void setSearchDeleted(java.lang.Boolean val) { if (search.isDeletedSet()) { search.setDeleted(val); } } public boolean isSearchDeletedValid() { return search.isDeletedSet(); } public void setSearchDeletedValid(boolean val) { if (val) { search.setDeleted(search.getDeleted()); } else { search.unsetDeleted(); } } public java.lang.Boolean getSearchJustifyInformation() { return search.getJustifyInformation(); } public void setSearchJustifyInformation(java.lang.Boolean val) { if (search.isJustifyInformationSet()) { search.setJustifyInformation(val); } } public boolean isSearchJustifyInformationValid() { return search.isJustifyInformationSet(); } public void setSearchJustifyInformationValid(boolean val) { if (val) { search.setJustifyInformation(search.getJustifyInformation()); } else { search.unsetJustifyInformation(); } } public String getSearchDevelopedActivities() { return search.getDevelopedActivities(); } public void setSearchDevelopedActivities(String val) { if (search.isDevelopedActivitiesSet()) { search.setDevelopedActivities(val); } } public boolean isSearchDevelopedActivitiesValid() { return search.isDevelopedActivitiesSet(); } public void setSearchDevelopedActivitiesValid(boolean val) { if (val) { search.setDevelopedActivities(search.getDevelopedActivities()); } else { search.unsetDevelopedActivities(); } } public String getSearchDifficultiesAppeared() { return search.getDifficultiesAppeared(); } public void setSearchDifficultiesAppeared(String val) { if (search.isDifficultiesAppearedSet()) { search.setDifficultiesAppeared(val); } } public boolean isSearchDifficultiesAppearedValid() { return search.isDifficultiesAppearedSet(); } public void setSearchDifficultiesAppearedValid(boolean val) { if (val) { search.setDifficultiesAppeared(search.getDifficultiesAppeared()); } else { search.unsetDifficultiesAppeared(); } } public String getSearchResults() { return search.getResults(); } public void setSearchResults(String val) { if (search.isResultsSet()) { search.setResults(val); } } public boolean isSearchResultsValid() { return search.isResultsSet(); } public void setSearchResultsValid(boolean val) { if (val) { search.setResults(search.getResults()); } else { search.unsetResults(); } } public String getSearchConclusions() { return search.getConclusions(); } public void setSearchConclusions(String val) { if (search.isConclusionsSet()) { search.setConclusions(val); } } public boolean isSearchConclusionsValid() { return search.isConclusionsSet(); } public void setSearchConclusionsValid(boolean val) { if (val) { search.setConclusions(search.getConclusions()); } else { search.unsetConclusions(); } } public String getSearchEvaluation() { return search.getEvaluation(); } public void setSearchEvaluation(String val) { if (search.isEvaluationSet()) { search.setEvaluation(val); } } public boolean isSearchEvaluationValid() { return search.isEvaluationSet(); } public void setSearchEvaluationValid(boolean val) { if (val) { search.setEvaluation(search.getEvaluation()); } else { search.unsetEvaluation(); } } public CommissioningStatus getSearchStatus() { return search.getStatus(); } public void setSearchStatus(CommissioningStatus val) { if (search.isStatusSet()) { search.setStatus(val); } } public boolean isSearchStatusValid() { return search.isStatusSet(); } public void setSearchStatusValid(boolean val) { if (val) { search.setStatus(search.getStatus()); } else { search.unsetStatus(); } } 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 Project getSearchProject() { return search.getProject(); } public void setSearchProject(Project val) { if (search.isProjectSet()) { search.setProject(val); } } public boolean isSearchProjectValid() { return search.isProjectSet(); } public void setSearchProjectValid(boolean val) { if (val) { search.setProject(search.getProject()); } else { search.unsetProject(); } } // Getters and setters to handle uploads // Getters and setters to manipulate active Commissioning object public java.lang.Integer getId() { return commissioning.getId(); } public Date getRequestDate() { return commissioning.getRequestDate(); } public void setRequestDate(Date requestDate) { commissioning.setRequestDate(requestDate); } public String getName() { return commissioning.getName(); } public void setName(String name) { commissioning.setName(name); } public String getScope() { return commissioning.getScope(); } public void setScope(String scope) { commissioning.setScope(scope); } public String getContent() { return commissioning.getContent(); } public void setContent(String content) { commissioning.setContent(content); } public String getProducts() { return commissioning.getProducts(); } public void setProducts(String products) { commissioning.setProducts(products); } public Date getDeliveryDate() { return commissioning.getDeliveryDate(); } public void setDeliveryDate(Date deliveryDate) { commissioning.setDeliveryDate(deliveryDate); } public BigDecimal getBudget() { return commissioning.getBudget(); } public void setBudget(BigDecimal budget) { commissioning.setBudget(budget); } public String getNotes() { return commissioning.getNotes(); } public void setNotes(String notes) { commissioning.setNotes(notes); } public boolean isAuthorSignature() { return commissioning.isAuthorSignature(); } public void setAuthorSignature(boolean authorSignature) { commissioning.setAuthorSignature(authorSignature); } public boolean isReviserSignature() { return commissioning.isReviserSignature(); } public void setReviserSignature(boolean reviserSignature) { commissioning.setReviserSignature(reviserSignature); } public boolean isAdminSignature() { return commissioning.isAdminSignature(); } public void setAdminSignature(boolean adminSignature) { commissioning.setAdminSignature(adminSignature); } public boolean isJustifyInformation() { return commissioning.isJustifyInformation(); } public void setJustifyInformation(boolean justifyInformation) { commissioning.setJustifyInformation(justifyInformation); } public String getDevelopedActivities() { return commissioning.getDevelopedActivities(); } public void setDevelopedActivities(String developedActivities) { commissioning.setDevelopedActivities(developedActivities); } public String getDifficultiesAppeared() { return commissioning.getDifficultiesAppeared(); } public void setDifficultiesAppeared(String difficultiesAppeared) { commissioning.setDifficultiesAppeared(difficultiesAppeared); } public String getResults() { return commissioning.getResults(); } public void setResults(String results) { commissioning.setResults(results); } public String getConclusions() { return commissioning.getConclusions(); } public void setConclusions(String conclusions) { commissioning.setConclusions(conclusions); } public String getEvaluation() { return commissioning.getEvaluation(); } public void setEvaluation(String evaluation) { commissioning.setEvaluation(evaluation); } public CommissioningStatus getStatus() { return commissioning.getStatus(); } public void setStatus(CommissioningStatus status) { commissioning.setStatus(status); } public String getNextAction() { if (commissioning.getStatus().equals(CommissioningStatus.CREATED)) { return FacesUtils.getMessage("CommissioningStatus.action.aprove"); } else if (commissioning.getStatus() .equals(CommissioningStatus.APROVED)) { return FacesUtils.getMessage("CommissioningStatus.action.accept"); } else if (commissioning.getStatus().equals( CommissioningStatus.ACCEPTED)) { return FacesUtils.getMessage("CommissioningStatus.action.confirm"); } else if (commissioning.getStatus().equals( CommissioningStatus.CONFIRMED)) { return FacesUtils.getMessage("CommissioningStatus.action.validate"); } else if (commissioning.getStatus().equals( CommissioningStatus.VALIDATED)) { return FacesUtils.getMessage("CommissioningStatus.action.finalice"); } else { return ""; } } public void setNextAction() { // do nothing ... } public Date getInsertDate() { return commissioning.getInsertDate(); } public void setInsertDate(Date insertDate) { commissioning.setInsertDate(insertDate); } public Date getUpdateDate() { return commissioning.getUpdateDate(); } public void setUpdateDate(Date updateDate) { commissioning.setUpdateDate(updateDate); } public Project getProject() { return commissioning.getProject(); } public void setProject(Project project) { commissioning.setProject(project); } /* Commissioning - generated by stajanov (do not edit/delete) */ public List<CommissioningPaymentData> getCollaboratorsPaymentDAta() { return commissioning.getCollaboratorsPaymentData() == null ? null : new ArrayList<CommissioningPaymentData>(commissioning .getCollaboratorsPaymentData()); } public void setCollaborators(List<CommissioningPaymentData> collaborators) { commissioning .setCollaboratorsPaymentData(new HashSet<CommissioningPaymentData>( collaborators)); } public List<SelectItem> getAllCollaborators() { final List<Collaborator> refs = CollaboratorManager.getDefault() .getAllEntities(null, new SortCriteria("insertDate")); final List<SelectItem> ret = new ArrayList<SelectItem>(); for (Collaborator ref : refs) { ret.add(new SelectItem(ref, ref.getName())); } return ret; } public List<User> getRevisers() { return commissioning.getRevisers() == null ? null : new ArrayList<User>(commissioning.getRevisers()); } public void setRevisers(List<User> users) { commissioning.setRevisers(new HashSet<User>(users)); } public boolean getCanPerformNextFlowStep() { final State st = workFlow .getNextState(commissioning.getStatus().name()); final int rolId = authManager.getCurrentPrincipal().getRoleId(); boolean iHavePermission = false; if (st != null) { if (rolId == ConfigurationUtil.getDefault().getRoleAdminId()) { iHavePermission = st.isPermAdmin(); } if (rolId == ConfigurationUtil.getDefault().getRoleSupervisorId()) { iHavePermission = st.isPermSuper(); } if (rolId == ConfigurationUtil.getDefault().getRoleUserId()) { iHavePermission = st.isPermUser(); } if (rolId == ConfigurationUtil.getDefault().getRoleStaffId()) { iHavePermission = st.isPermStaff(); } if (rolId == ConfigurationUtil.getDefault().getRoleClientId()) { iHavePermission = st.isPermCli(); } if (rolId == ConfigurationUtil.getDefault().getRoleProjectManagerId()) { iHavePermission = st.isPermProjectManager(); } } return iHavePermission && !commissioning.getStatus().equals(nextStep()); } /** * * * @return */ public String nextFlowStep() { if (!validateTextFields()) { return NavigationResults.EDIT; } if (getCanPerformNextFlowStep()) { switch (nextStep()) { case ACCEPTED: doAccept(); break; case APROVED: doAprove(); break; case CONFIRMED: if(!validatePaymentMode()) { return NavigationResults.EDIT; } doConfirm(); break; case FINALIZED: doFinalize(); break; case VALIDATED: doValidate(); break; } } return save(); } protected CommissioningStatus nextStep() { if (CommissioningStatus.FINALIZED == commissioning.getStatus()) { return CommissioningStatus.FINALIZED; } final State st = workFlow .getNextState(commissioning.getStatus().name()); return st != null ? CommissioningStatus.valueOf(st.getName() .toUpperCase()) : null; } private Permission getFieldPermission(String fieldName) { final State st = workFlow.getState(commissioning.getStatus().name()); final Field f = st.getField(fieldName); final int rolId = authManager.getCurrentPrincipal().getRoleId(); Permission permission = Permission.NONE; if (rolId == ConfigurationUtil.getDefault().getRoleAdminId()) { permission = f.getPermAdmin(); } if (rolId == ConfigurationUtil.getDefault().getRoleSupervisorId()) { permission = f.getPermSuper(); } if (rolId == ConfigurationUtil.getDefault().getRoleUserId()) { permission = f.getPermUser(); } if (rolId == ConfigurationUtil.getDefault().getRoleStaffId()) { permission = f.getPermStaff(); } if (rolId == ConfigurationUtil.getDefault().getRoleClientId()) { permission = f.getPermCli(); } return permission; } protected void doAprove() { if (log.isDebugEnabled()) { log.debug("doing approve action"); } // se crea un objetivo para los usuario que estan relacionados con el createObjetives(); // send mail with attachments to the collaborators sendMailToCollaborators(); commissioning.setAdminSignature(true); commissioning.setStatus(CommissioningStatus.APROVED); } private void createObjetives() { for (final User user : commissioning.getRevisers()) { final Objective objective = new Objective(); objective.setUser(user); objective.setProject(commissioning.getProject()); objective.setStartDate(commissioning.getRequestDate()); objective.setEndDate(commissioning.getDeliveryDate()); objective.setState(ObjectiveState.PENDING); objective.setName(FacesUtils.formatMessage( "commissioning.automaticObjectiveName", commissioning .getName())); objectiveManager.insertEntity(objective); } FacesUtils.addInfoMessage(null, "commissioning.info.objectiveCreated"); } protected void doAccept() { if (log.isDebugEnabled()) { log.debug("doing accepting action"); } commissioning.setStatus(CommissioningStatus.ACCEPTED); } private void sendMailToCollaborators() { for (CommissioningPaymentData collaboratorPaymentData : commissioning .getCollaboratorsPaymentData()) { try { final InputStream is = ReportUtil .getReportWithoutDatabaseConnectionAsInputStream( "document/ficha.de.proyecto", populateReportProperties(commissioning, collaboratorPaymentData)); if (is != null) { final Map<InputStream, String> oses = new HashMap<InputStream, String>(); oses.put(is, "ficha_proyecto.pdf"); mailService.sendOutputStreams(collaboratorPaymentData .getCollaborator().getEMail(), ConfigurationUtil .getDefault().getCommissioningMailSubject(), ConfigurationUtil.getDefault() .getCommissioningMailBody(), oses); FacesUtils.addInfoMessage(null, "commissioning.info.mailSentToCollaborator",collaboratorPaymentData.getCollaborator() .getName(), collaboratorPaymentData .getCollaborator().getEMail()); } else { log.warn("the report resume cannot be created"); FacesUtils.addErrorMessage(null, "commissioning.error.projectReportCannotBeCreated"); } } catch (Exception e) { log.warn( "emails cannot be sent to the collaborators: " + e, e); FacesUtils .addErrorMessage( null, "commissioning.error.mailNotSentToCollaborator", collaboratorPaymentData.getCollaborator() .getName(), collaboratorPaymentData .getCollaborator().getEMail()); } } } /** * Puebla los parámetros a enviar al informe. No lo pongo en el manager * porque da problemas con acegi */ private Map<String, Object> populateReportProperties( final Commissioning commissioning, final CommissioningPaymentData commissioningPaymentData) { final Map<String, Object> properties = new HashMap<String, Object>(); properties.put("projectName", this.getReportProjectName()); properties.put("projectContent", this.getReportProjectContent()); properties.put("projectPurpose", this.getReportProjectPurpose()); properties.put("endDate", this.getReportEndDate()); properties.put("budget", this.getReportBudget()); properties.put("day", this.getReportDay()); properties.put("month", this.getReportMonth()); properties.put("year", this.getReportYear()); properties.put("collaboratorName", commissioningPaymentData.getCollaborator().getName()); properties.put("revisorName", this.getRevisorName()); return properties; } public String getReportProjectName() { return commissioning.getProject().getName(); } public String getReportProjectContent() { return commissioning.getContent(); } public String getReportProjectPurpose() { return commissioning.getScope(); } public String getRevisorName() { String name = ""; if (commissioning.getRevisers() == null || commissioning.getRevisers().isEmpty() || commissioning.getRevisers().size() > 1) { name = ""; } else { for (User reviser: commissioning.getRevisers()) { name = reviser.getName(); } } return name; } public String getReportEndDate() { final SimpleDateFormat completeDateFormatter = new SimpleDateFormat( "EEEEE, d MMMMM yyyy"); return completeDateFormatter.format(commissioning.getDeliveryDate()); } public String getReportBudget() { return commissioning.getBudget().toString(); } public Integer getReportDay() { final Calendar today = Calendar.getInstance(); return today.get(Calendar.DATE); } public String getReportMonth() { final Calendar today = Calendar.getInstance(); final SimpleDateFormat justMonthFormatter = new SimpleDateFormat("MMMMM"); return justMonthFormatter.format(today.getTime()); } public Integer getReportYear() { final Calendar today = Calendar.getInstance(); return today.get(Calendar.YEAR); } protected void doConfirm() { if (log.isDebugEnabled()) { log.debug("doing approve action"); } commissioning.setAuthorSignature(true); commissioning.setStatus(CommissioningStatus.CONFIRMED); } protected void doValidate() { if (log.isDebugEnabled()) { log.debug("doing approve action"); } commissioning.setReviserSignature(true); commissioning.setStatus(CommissioningStatus.VALIDATED); } protected void doFinalize() { if (log.isDebugEnabled()) { log.debug("doing approve action"); } commissioning.setStatus(CommissioningStatus.FINALIZED); } public String getCommissioningFlowKey() { return "CommissioningStatus.flow." + commissioning.getStatus().name(); } public String delay() { commissioning = manager.getEntityById(commissioning.getId()); commissioning.setDeliveryDate(commissioningDelay.getDelayedToDate()); commissioning.getCommissioningDelays().add(commissioningDelay); commissioningDelay.setCommissioning(commissioning); commissioningDelay.setInsertDate(new Date()); commissioningDelay.setUpdateDate(new Date()); commissioningDelay.setOriginalDate(commissioning.getDeliveryDate()); commissioningDelay.setStatus(commissioning.getStatus()); // se crean nuevos objetivos por haberse generado retrasos createObjetives(); manager.updateEntity(commissioning); // como hemos guardado pero seguimos en edición refrescamos los cambios del pedido volviendo a inicializarlos commissioning.initChanges(); // se oculta el panel de inserción de nuevos retrasos hideAddDelay(); return SpringUtils.isAclPermissionGranted(commissioning, BasePermission.WRITE) ? NavigationResults.EDIT : NavigationResults.DETAIL; } public boolean getHasCommissionDelays() { return commissioning.getCommissioningDelays() != null && commissioning.getCommissioningDelays().size() > 0; } public CommissioningDelay getCommissioningDelay() { return commissioningDelay; } public void setCommissioningDelay(CommissioningDelay commissioningDelay) { this.commissioningDelay = commissioningDelay; } public Set<CommissioningDelay> getCommissioningDelays() { return commissioning.getCommissioningDelays(); } public boolean isRenderRequestDate() { return getFieldPermission("requestDate") != Permission.NONE; } public boolean isRenderStatus() { return getFieldPermission("status") != Permission.NONE; } public boolean isRenderName() { return getFieldPermission("name") != Permission.NONE; } public boolean isRenderScope() { return getFieldPermission("scope") != Permission.NONE; } public boolean isRenderContent() { return getFieldPermission("content") != Permission.NONE; } public boolean isRenderProducts() { return getFieldPermission("products") != Permission.NONE; } public boolean isRenderDeliveryDate() { return getFieldPermission("deliveryDate") != Permission.NONE; } public boolean isRenderBudget() { return getFieldPermission("budget") != Permission.NONE; } public boolean isRenderPaymentMode() { return getFieldPermission("paymentMode") != Permission.NONE; } public boolean isRenderNotes() { return getFieldPermission("notes") != Permission.NONE; } public boolean isRenderAuthorSignature() { return getFieldPermission("authorSignature") != Permission.NONE; } public boolean isRenderReviserSignature() { return getFieldPermission("reviserSignature") != Permission.NONE; } public boolean isRenderAdminSignature() { return getFieldPermission("adminSignature") != Permission.NONE; } public boolean isRenderJustifyInformation() { return getFieldPermission("justifyInformation") != Permission.NONE; } public boolean isRenderDevelopedActivities() { return (getFieldPermission("developedActivities") != Permission.NONE) && isJustifyInformation(); } public boolean isRenderResults() { return (getFieldPermission("results") != Permission.NONE) & isJustifyInformation(); } public boolean isRenderConclusions() { return (getFieldPermission("conclusions") != Permission.NONE) && isJustifyInformation(); } public boolean isRenderEvaluation() { return (getFieldPermission("evaluation") != Permission.NONE) && isJustifyInformation(); } public boolean isRenderProject() { return getFieldPermission("project") != Permission.NONE; } public boolean isRenderRevisers() { return getFieldPermission("revisers") != Permission.NONE; } public boolean isRenderCollaborators() { return getFieldPermission("collaborators") != Permission.NONE; } public boolean isRenderDifficultiesAppeared() { return (getFieldPermission("difficultiesAppeared") != Permission.NONE) && isJustifyInformation(); } public boolean isEditRequestDate() { return getFieldPermission("requestDate") == Permission.EDIT; } public boolean isEditStatus() { return getFieldPermission("status") == Permission.EDIT; } public boolean isAddDelay() { return getFieldPermission("addDelay") == Permission.EDIT && (commissioning.getId() != null); } public boolean isChangeCollaborators() { return getFieldPermission("changeCollaborators") == Permission.EDIT; } public boolean isEditName() { return getFieldPermission("name") == Permission.EDIT; } public boolean isEditScope() { return getFieldPermission("scope") == Permission.EDIT; } public boolean isEditContent() { return getFieldPermission("content") == Permission.EDIT; } public boolean isEditProducts() { return getFieldPermission("products") == Permission.EDIT; } public boolean isEditDeliveryDate() { return getFieldPermission("deliveryDate") == Permission.EDIT; } public boolean isEditBudget() { return getFieldPermission("budget") == Permission.EDIT; } public boolean isEditPaymentMode() { return getFieldPermission("paymentMode") == Permission.EDIT; } public boolean isEditNotes() { return getFieldPermission("notes") == Permission.EDIT; } public boolean isEditAuthorSignature() { return getFieldPermission("authorSignature") == Permission.EDIT; } public boolean isEditReviserSignature() { return getFieldPermission("reviserSignature") == Permission.EDIT; } public boolean isEditAdminSignature() { return getFieldPermission("adminSignature") == Permission.EDIT; } public boolean isEditJustifyInformation() { return getFieldPermission("justifyInformation") == Permission.EDIT; } public boolean isEditDevelopedActivities() { return getFieldPermission("developedActivities") == Permission.EDIT; } public boolean isEditResults() { return getFieldPermission("results") == Permission.EDIT; } public boolean isEditConclusions() { return getFieldPermission("conclusions") == Permission.EDIT; } public boolean isEditEvaluation() { return getFieldPermission("evaluation") == Permission.EDIT; } public boolean isEditProject() { return getFieldPermission("project") == Permission.EDIT; } public boolean isEditRevisers() { return getFieldPermission("revisers") == Permission.EDIT; } public boolean isEditCollaborators() { return getFieldPermission("collaborators") == Permission.EDIT; } public boolean isEditDifficultiesAppeared() { return getFieldPermission("difficultiesAppeared") == Permission.EDIT; } public void setMailService(MailService mailService) { this.mailService = mailService; } /** * @return * @see com.autentia.tnt.businessobject.Commissioning#getHistory() */ public Set<CommissioningChange> getHistory() { return commissioning.getHistory(); } // Getters and setters to handle uploads public void setUploadFile(UploadedFile uploadFile) { this.uploadFile = uploadFile; } public UploadedFile getUploadFile() { return uploadFile; } /** * @return * @see com.autentia.tnt.businessobject.Commissioning#getFiles() */ public Set<CommissioningFile> getFiles() { return commissioning.getFiles(); } /** * @param files * @see com.autentia.tnt.businessobject.Commissioning#setFiles(java.util.Set) */ public void setFiles(Set<CommissioningFile> files) { commissioning.setFiles(files); } public Set<CommissioningPaymentData> getCollaboratorsPaymentData() { return commissioning.getCollaboratorsPaymentData(); } public void setCollaboratorsPaymentData( Set<CommissioningPaymentData> collaboratorsPaymentData) { commissioning.setCollaboratorsPaymentData(collaboratorsPaymentData); } public boolean isCanInsertDelay() { return commissioning.getStatus() == CommissioningStatus.ACCEPTED || commissioning.getStatus() == CommissioningStatus.CONFIRMED; } /** * @return the selectedCollaborator */ public Collaborator getSelectedCollaborator() { return selectedCollaborator; } /** * @param selectedCollaborator * the selectedCollaborator to set */ public void setSelectedCollaborator(Collaborator selectedCollaborator) { this.selectedCollaborator = selectedCollaborator; } public boolean getPuedoImprimir() { return (commissioning.getId() != null); } private boolean showAddDelayPanel = false; public void showAddDelay() { showAddDelayPanel = true; FacesUtils.renderResponse(); } public void hideAddDelay() { showAddDelayPanel = false; commissioningDelay = new CommissioningDelay(); FacesUtils.renderResponse(); } public boolean isShowAddDelayPanel() { return showAddDelayPanel; } public void setShowAddDelayPanel(boolean showAddDelayPanel) { this.showAddDelayPanel = showAddDelayPanel; } // --------------------- // seleccion de tecnicos // --------------------- private User selectedReviser; public User getSelectedReviser() { return selectedReviser; } public void setSelectedReviser(User selectedReviser) { this.selectedReviser = selectedReviser; } public String addReviser() { commissioning.getRevisers().add(selectedReviser); return NavigationResults.EDIT; } public Set<User> getCommissioningRevisers () { return commissioning.getRevisers(); } public void setCommissioningRevisers(Set<User> revisers) { commissioning.setRevisers(revisers); } public String deleteReviser() { final UIData table = (UIData) FacesUtils.getComponent("commissioning:revisers"); final User toDelete = (User) table.getRowData(); commissioning.getRevisers().remove(toDelete); return NavigationResults.EDIT; } public boolean isNew() { boolean ret = false; if (commissioning == null || commissioning.getId() == null) { ret = true; } return ret; } }