diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/ExternalCompanyCRUDController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/ExternalCompanyCRUDController.java index 50848dc56..4415be48e 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/ExternalCompanyCRUDController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/ExternalCompanyCRUDController.java @@ -75,7 +75,9 @@ public class ExternalCompanyCRUDController extends GenericForwardComposer @Override public void goToEditForm(ExternalCompany company) { - // TODO implement + externalCompanyModel.initEdit(company); + getVisibility().showOnly(createWindow); + Util.reloadBindings(createWindow); } @Override diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/ExternalCompanyModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/ExternalCompanyModel.java index 2b8a2fd7e..74f559436 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/ExternalCompanyModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/ExternalCompanyModel.java @@ -22,6 +22,8 @@ package org.navalplanner.web.externalcompanies; import java.util.List; +import org.apache.commons.lang.Validate; +import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.externalcompanies.daos.IExternalCompanyDAO; import org.navalplanner.business.externalcompanies.entities.ExternalCompany; import org.springframework.beans.factory.annotation.Autowired; @@ -65,4 +67,39 @@ public class ExternalCompanyModel implements IExternalCompanyModel { externalCompanyDAO.save(externalCompany); } + @Override + @Transactional(readOnly = true) + public void initEdit(ExternalCompany company) { + Validate.notNull(company); + externalCompany = getFromDB(company); + } + + @Transactional(readOnly = true) + private ExternalCompany getFromDB(ExternalCompany company) { + return getFromDB(company.getId()); + } + + @Transactional(readOnly = true) + private ExternalCompany getFromDB(Long id) { + try { + ExternalCompany result = externalCompanyDAO.find(id); + forceLoadEntities(result); + return result; + } catch (InstanceNotFoundException e) { + throw new RuntimeException(e); + } + } + + /** + * Load entities that will be needed in the conversation + * + * @param company + */ + private void forceLoadEntities(ExternalCompany company) { + company.getName(); + if(company.getCompanyUser() != null) { + company.getCompanyUser().getLoginName(); + } + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/IExternalCompanyModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/IExternalCompanyModel.java index a692190f4..2493cd418 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/IExternalCompanyModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/IExternalCompanyModel.java @@ -52,6 +52,14 @@ public interface IExternalCompanyModel { */ void initCreate(); + /** + * Makes some operations needed before edit a {@link ExternalCompany}. + * + * @param company + * The object to be edited + */ + void initEdit(ExternalCompany company); + /** * Stores the current {@link ExternalCompany}. * diff --git a/navalplanner-webapp/src/main/webapp/externalcompanies/_listExternalCompanies.zul b/navalplanner-webapp/src/main/webapp/externalcompanies/_listExternalCompanies.zul index 2cc51b4ee..d00837657 100644 --- a/navalplanner-webapp/src/main/webapp/externalcompanies/_listExternalCompanies.zul +++ b/navalplanner-webapp/src/main/webapp/externalcompanies/_listExternalCompanies.zul @@ -40,7 +40,7 @@