diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/users/IOrderAuthorizationModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/users/IOrderAuthorizationModel.java index d237e69b7..084106a54 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/users/IOrderAuthorizationModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/users/IOrderAuthorizationModel.java @@ -4,6 +4,7 @@ import java.util.List; import org.navalplanner.business.orders.entities.Order; import org.navalplanner.business.users.entities.OrderAuthorization; +import org.navalplanner.business.users.entities.OrderAuthorizationType; import org.navalplanner.business.users.entities.Profile; import org.navalplanner.business.users.entities.ProfileOrderAuthorization; import org.navalplanner.business.users.entities.User; @@ -26,11 +27,27 @@ public interface IOrderAuthorizationModel { List getUserOrderAuthorizations(); - void addUserOrderAuthorization(User user, boolean readAuthorization, - boolean writeAuthorization); + /** + * Adds {@link UserOrderAuthorization} objects in the model. + * + * @param user User object to receive the authorization + * @param authorizations list of AuthorizationTypes + * @return A list of the AuthorizationTypes which failed, + * or null if all AuthorizationTypes were added successfully. + */ + List addUserOrderAuthorization( + User user, List authorizations); - void addProfileOrderAuthorization(Profile profile, boolean readAuthorization, - boolean writeAuthorization); + /** + * Adds {@link ProfileOrderAuthorization} objects in the model. + * + * @param profile Profile object to receive the authorization + * @param authorizations list of AuthorizationTypes + * @return A list of the AuthorizationTypes which failed, + * or null if all AuthorizationTypes were added successfully. + */ + List addProfileOrderAuthorization( + Profile profile, List authorizations); void removeOrderAuthorization(OrderAuthorization orderAuthorization); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/users/OrderAuthorizationController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/users/OrderAuthorizationController.java index 8a8112653..2983bf428 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/users/OrderAuthorizationController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/users/OrderAuthorizationController.java @@ -20,10 +20,12 @@ package org.navalplanner.web.users; +import java.util.ArrayList; import java.util.List; import org.navalplanner.business.orders.entities.Order; import org.navalplanner.business.users.entities.OrderAuthorization; +import org.navalplanner.business.users.entities.OrderAuthorizationType; import org.navalplanner.business.users.entities.Profile; import org.navalplanner.business.users.entities.ProfileOrderAuthorization; import org.navalplanner.business.users.entities.User; @@ -77,13 +79,21 @@ public class OrderAuthorizationController extends GenericForwardComposer{ public void addOrderAuthorization(Comboitem comboItem, boolean readAuthorization, boolean writeAuthorization) { if(comboItem != null) { + List authorizations = + new ArrayList(); + if(readAuthorization) { + authorizations.add(OrderAuthorizationType.READ_AUTHORIZATION); + } + if(writeAuthorization) { + authorizations.add(OrderAuthorizationType.WRITE_AUTHORIZATION); + } if (comboItem.getValue() instanceof User) { orderAuthorizationModel.addUserOrderAuthorization( - (User)comboItem.getValue(), readAuthorization, writeAuthorization); + (User)comboItem.getValue(), authorizations); } else if (comboItem.getValue() instanceof Profile) { orderAuthorizationModel.addProfileOrderAuthorization( - (Profile)comboItem.getValue(), readAuthorization, writeAuthorization); + (Profile)comboItem.getValue(), authorizations); } } Util.reloadBindings(window); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/users/OrderAuthorizationModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/users/OrderAuthorizationModel.java index 20044da16..ad8db6755 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/users/OrderAuthorizationModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/users/OrderAuthorizationModel.java @@ -45,41 +45,27 @@ public class OrderAuthorizationModel implements IOrderAuthorizationModel { private IOrderDAO orderDAO; @Override - public void addProfileOrderAuthorization(Profile profile, - boolean readAuthorization, boolean writeAuthorization) { - if (readAuthorization) { + public List addProfileOrderAuthorization( + Profile profile, List authorizations) { + for(OrderAuthorizationType type : authorizations) { ProfileOrderAuthorization orderAuthorization = createProfileOrderAuthorization(order, profile); - orderAuthorization.setAuthorizationType( - OrderAuthorizationType.READ_AUTHORIZATION); - profileOrderAuthorizationList.add(orderAuthorization); - } - if (writeAuthorization) { - ProfileOrderAuthorization orderAuthorization = - createProfileOrderAuthorization(order, profile); - orderAuthorization.setAuthorizationType( - OrderAuthorizationType.WRITE_AUTHORIZATION); + orderAuthorization.setAuthorizationType(type); profileOrderAuthorizationList.add(orderAuthorization); } + return null; } @Override - public void addUserOrderAuthorization(User user, - boolean readAuthorization, boolean writeAuthorization) { - if (readAuthorization) { - UserOrderAuthorization userOrderAuthorization = + public List addUserOrderAuthorization( + User user, List authorizations) { + for(OrderAuthorizationType type : authorizations) { + UserOrderAuthorization orderAuthorization = createUserOrderAuthorization(order, user); - userOrderAuthorization.setAuthorizationType( - OrderAuthorizationType.READ_AUTHORIZATION); - userOrderAuthorizationList.add(userOrderAuthorization); - } - if (writeAuthorization) { - UserOrderAuthorization userOrderAuthorization = - createUserOrderAuthorization(order, user); - userOrderAuthorization.setAuthorizationType( - OrderAuthorizationType.WRITE_AUTHORIZATION); - userOrderAuthorizationList.add(userOrderAuthorization); + orderAuthorization.setAuthorizationType(type); + userOrderAuthorizationList.add(orderAuthorization); } + return null; } @Override