Skip to content

bug #14595: In case of the validation of a reservation, we now check … #891

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Feb 21, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -23,7 +23,7 @@
*/
package org.silverpeas.components.resourcesmanager.service;

import org.silverpeas.core.exception.SilverpeasRuntimeException;
import org.silverpeas.kernel.SilverpeasRuntimeException;

public class ResourcesManagerRuntimeException extends SilverpeasRuntimeException {

@@ -33,28 +33,16 @@ public class ResourcesManagerRuntimeException extends SilverpeasRuntimeException
* --------------------------------------------------------------------------
* constructors
*/
public ResourcesManagerRuntimeException(String callingClass, int errorLevel, String message) {
super(callingClass, errorLevel, message);
public ResourcesManagerRuntimeException(final String message) {
super(message);
}

public ResourcesManagerRuntimeException(String callingClass, int errorLevel, String message,
String extraParams) {
super(callingClass, errorLevel, message, extraParams);
public ResourcesManagerRuntimeException(final String message, final Throwable cause) {
super(message, cause);
}

public ResourcesManagerRuntimeException(String callingClass, int errorLevel, String message,
Exception nested) {
super(callingClass, errorLevel, message, nested);
}

public ResourcesManagerRuntimeException(String callingClass, int errorLevel, String message,
String extraParams, Exception nested) {
super(callingClass, errorLevel, message, extraParams, nested);
}

@Override
public String getModule() {
return "ResourcesManager";
public ResourcesManagerRuntimeException(final Throwable cause) {
super(cause);
}

}
Original file line number Diff line number Diff line change
@@ -37,7 +37,6 @@
import org.silverpeas.core.contribution.template.publication.PublicationTemplate;
import org.silverpeas.core.contribution.template.publication.PublicationTemplateManager;
import org.silverpeas.core.date.period.Period;
import org.silverpeas.core.exception.SilverpeasRuntimeException;
import org.silverpeas.core.index.indexing.model.FullIndexEntry;
import org.silverpeas.core.index.indexing.model.IndexEngineProxy;
import org.silverpeas.core.index.indexing.model.IndexEntryKey;
@@ -375,8 +374,7 @@ private void indexResourceForm(Resource resource, FullIndexEntry indexEntry, Str
RecordSet set = pubTemplate.getRecordSet();
set.indexRecord(String.valueOf(resource.getIdAsLong()), xmlFormName, indexEntry);
} catch (Exception e) {
throw new ResourcesManagerRuntimeException("ResourceManagerBmEJB.createIndex_Resource()",
SilverpeasRuntimeException.ERROR, "resourcesManager.EX_CREATE_INDEX_FAILED", e);
throw new ResourcesManagerRuntimeException("SimpleResourcesManager.indexResourceForm()",e);
}
}

@@ -409,8 +407,7 @@ public void indexResourceManager(String instanceId) {
try {
createReservationIndex(reservation);
} catch (Exception e) {
throw new ResourcesManagerRuntimeException("ResourcesManagerBmEJB.indexResourceManager()",
SilverpeasRuntimeException.ERROR, "resourcesManager.MSG_INDEXRESERVATIONS", e);
throw new ResourcesManagerRuntimeException("SimpleResourcesManager.indexResourceManager()",e);
}
}
}
Original file line number Diff line number Diff line change
@@ -35,7 +35,6 @@
import org.silverpeas.core.admin.service.OrganizationControllerProvider;
import org.silverpeas.core.admin.user.model.SilverpeasRole;
import org.silverpeas.core.admin.user.model.UserDetail;
import org.silverpeas.core.exception.SilverpeasRuntimeException;
import org.silverpeas.core.notification.NotificationException;
import org.silverpeas.core.notification.user.client.NotificationMetaData;
import org.silverpeas.core.notification.user.client.NotificationParameters;
@@ -76,6 +75,9 @@ public class ResourcesManagerSessionController extends AbstractComponentSessionC
private NotificationSender notifSender;
private MultiSilverpeasBundle resources;

private static final String RESOURCES_MANAGER_BUNDLE = "org.silverpeas.resourcesmanager.multilang.resourcesManagerBundle";
private static final String RESOURCES_MANAGER_ICONS = "org.silverpeas.resourcesmanager.settings.resourcesManagerIcons";

public ReservationTimeWindowViewContext getViewContext() {
if (viewContext == null) {
// Initialization
@@ -135,8 +137,7 @@ public void setProvenanceResource(String provenanceResource) {
public ResourcesManagerSessionController(MainSessionController mainSessionCtrl,
ComponentContext componentContext) {
super(mainSessionCtrl, componentContext,
"org.silverpeas.resourcesmanager.multilang.resourcesManagerBundle",
"org.silverpeas.resourcesmanager.settings.resourcesManagerIcons");
RESOURCES_MANAGER_BUNDLE,RESOURCES_MANAGER_ICONS);
}

public boolean isResponsible() {
@@ -239,8 +240,7 @@ public void saveReservation() {
}
} catch (Exception e) {
throw new ResourcesManagerRuntimeException(
"ResourcesManagerSessionController.saveReservation()", SilverpeasRuntimeException.ERROR,
"root.EX_CANT_GET_REMOTE_OBJECT", e);
"ResourcesManagerSessionController.saveReservation()",e);
}
}

@@ -286,8 +286,7 @@ public void updateReservation(Reservation reservation, List<Long> resourceIds,
}
} catch (Exception e) {
throw new ResourcesManagerRuntimeException(
"ResourcesManagerSessionController.updateReservation()", SilverpeasRuntimeException.ERROR,
"root.EX_CANT_GET_REMOTE_OBJECT", e);
"ResourcesManagerSessionController.updateReservation()", e);
}
}

@@ -306,15 +305,15 @@ public void sendNotificationForValidation(Long resourceId, Long reservationId)
String user = orga.getUserDetail(getUserId()).getDisplayedName();

LocalizationBundle message = ResourceLocator.getLocalizationBundle(
"org.silverpeas.resourcesmanager.multilang.resourcesManagerBundle",
RESOURCES_MANAGER_BUNDLE,
DisplayI18NHelper.getDefaultLanguage());

StringBuilder messageBody = new StringBuilder();

// liste des responsables (de la ressource) à notifier
List<ResourceValidator> validators = ResourcesManagerProvider.getResourcesManager().
getManagers(resource.getIdAsLong());
List<UserRecipient> managers = new ArrayList<UserRecipient>(validators.size());
List<UserRecipient> managers = new ArrayList<>(validators.size());
if (!ResourcesManagerProvider.getResourcesManager()
.isManager(Long.parseLong(getUserId()), resourceId)) {
// envoie de la notification seulement si le user courant n'est pas aussi responsable
@@ -334,7 +333,7 @@ public void sendNotificationForValidation(Long resourceId, Long reservationId)

for (String language : DisplayI18NHelper.getLanguages()) {
message = ResourceLocator.getLocalizationBundle(
"org.silverpeas.resourcesmanager.multilang.resourcesManagerBundle", language);
RESOURCES_MANAGER_BUNDLE, language);
subject = message.getString("resourcesManager.notifSubject");
messageBody = new StringBuilder();
messageBody = messageBody.append(user).append(" ").append(message.getString(
@@ -360,12 +359,18 @@ public NotificationSender getNotificationSender() {
return notifSender;
}

public List<String> getManagerIds(Long resourceId) {
public List<Long> getManagerIds(Long resourceId) {
List<ResourceValidator> validators = listValidators(resourceId);
List<String> managerIds = new ArrayList<>(validators.size());
List<Long> managerIds = new ArrayList<>(validators.size());
for (ResourceValidator validator : validators) {
managerIds.add(String.valueOf(validator.getManagerId()));
//Check if currentUser is validator of the resource and has been removed from the Role "Responsibles"
boolean removeUserAsResponsible = (validator.getManagerId()==Long.parseLong(getUserId()) && !isResponsible());
if (!removeUserAsResponsible) {
managerIds.add(validator.getManagerId());
}
}
//Update list of the managers of the resource
ResourcesManagerProvider.getResourcesManager().updateResource(getResource(resourceId), managerIds);
return managerIds;
}

@@ -450,7 +455,7 @@ public void setListReservationCurrent(List<Long> listReservationCurrent) {
// AJOUT : pour traiter l'affichage des semaines sur 5 ou 7 jours
public boolean isWeekendNotVisible() {
String parameterValue = getComponentParameterValue("weekendNotVisible");
return "yes".equals(parameterValue.toLowerCase());
return "yes".equalsIgnoreCase(parameterValue);
}

public String getDefaultView() {
@@ -574,13 +579,11 @@ private String getMessageBodyValidReservation(LocalizationBundle message, Reserv
public void sendNotificationValidateReservation(Reservation reservation)
throws NotificationException {
// envoyer une notification au créateur de la réservation
OrganizationController orga = OrganizationControllerProvider.getOrganisationController();
String user = orga.getUserDetail(getUserId()).getDisplayedName();
String url = URLUtil.getURL(null, getComponentId()) +
"ViewReservation?reservationId=" + reservation.getId();

LocalizationBundle message = ResourceLocator.getLocalizationBundle(
"org.silverpeas.resourcesmanager.multilang.resourcesManagerBundle",
RESOURCES_MANAGER_BUNDLE,
DisplayI18NHelper.getDefaultLanguage());

String subject = message.getString("resourcesManager.notifSubjectValide");
@@ -590,7 +593,7 @@ public void sendNotificationValidateReservation(Reservation reservation)

for (String language : DisplayI18NHelper.getLanguages()) {
message = ResourceLocator.getLocalizationBundle(
"org.silverpeas.resourcesmanager.multilang.resourcesManagerBundle", language);
RESOURCES_MANAGER_BUNDLE, language);
subject = message.getString("resourcesManager.notifSubjectValide");
notifMetaData.addLanguage(language, subject, getMessageBodyValidReservation(message, reservation));

@@ -621,13 +624,11 @@ private String getMessageBodyRefusedReservation(LocalizationBundle message, Reso
public void sendNotificationRefuseReservation(Reservation reservation, Long resourceId,
String motive) throws NotificationException {
// envoyer une notification au créateur de la réservation
OrganizationController orga = OrganizationControllerProvider.getOrganisationController();
String user = orga.getUserDetail(getUserId()).getDisplayedName();
String url = URLUtil.getURL(null, getComponentId()) +
"ViewReservation?reservationId=" + reservation.getId();

LocalizationBundle message = ResourceLocator.getLocalizationBundle(
"org.silverpeas.resourcesmanager.multilang.resourcesManagerBundle",
RESOURCES_MANAGER_BUNDLE,
DisplayI18NHelper.getDefaultLanguage());

Resource resource = getResource(resourceId);
@@ -639,7 +640,7 @@ public void sendNotificationRefuseReservation(Reservation reservation, Long reso

for (String language : DisplayI18NHelper.getLanguages()) {
message = ResourceLocator.getLocalizationBundle(
"org.silverpeas.resourcesmanager.multilang.resourcesManagerBundle",
RESOURCES_MANAGER_BUNDLE,
language);
subject = message.getString("resourcesManager.notifSubjectRefuse");

Original file line number Diff line number Diff line change
@@ -172,8 +172,8 @@ function refuseResource(resourceId, resourceName, objectView) {
String resourceName = maResource.getName();
// afficher les icones de validation et refus si la ressource est en etat a valider
// et si l'utilisateur est le responsable de cette ressource
String currentUser = resourcesManagerSC.getUserId() ;
List<String> managers = resourcesManagerSC.getManagerIds(resourceId);
Long currentUser = Long.parseLong(resourcesManagerSC.getUserId());
List<Long> managers = resourcesManagerSC.getManagerIds(resourceId);
if (maResource.isValidationRequired()) { %>
<a class="resource waitingForValidation" href="javascript:getResource(<%=resourceId%>, '<%=objectView%>')"><%=resourceName%></a>
<% } else if (maResource.isRefused()) { %>