Skip to content

Commit

Permalink
Merge branch 'bug-6909-5.15' into core-5.15.x
Browse files Browse the repository at this point in the history
  • Loading branch information
mmoqui committed Nov 24, 2015
2 parents 0593359 + 1d84e36 commit bb8ce81
Show file tree
Hide file tree
Showing 14 changed files with 358 additions and 54 deletions.
Expand Up @@ -25,6 +25,7 @@
package com.silverpeas.subscribe;

import com.silverpeas.subscribe.constant.SubscriptionMethod;
import com.silverpeas.subscribe.util.SubscriptionList;
import com.silverpeas.subscribe.util.SubscriptionSubscriberList;

import java.util.Collection;
Expand Down Expand Up @@ -107,16 +108,15 @@ public interface SubscriptionService {
* @param resource
* @return list of subscriptions
*/
public Collection<Subscription> getByResource(SubscriptionResource resource);
public SubscriptionList getByResource(SubscriptionResource resource);

/**
* Gets all subscriptions in relation to the given resource.
* @param resource
* @param method
* @return list of subscriptions
*/
public Collection<Subscription> getByResource(SubscriptionResource resource,
SubscriptionMethod method);
public SubscriptionList getByResource(SubscriptionResource resource, SubscriptionMethod method);

/**
* Gets all subscriptions (COMPONENT/NODE and SELF_CREATION/FORCED) in relation to a user.
Expand All @@ -125,14 +125,14 @@ public Collection<Subscription> getByResource(SubscriptionResource resource,
* of users that are subscribed through a subscribed group and of users that have been
* subscribed by an other user
*/
public Collection<Subscription> getByUserSubscriber(String userId);
public SubscriptionList getByUserSubscriber(String userId);

/**
* Gets all subscriptions (COMPONENT/NODE and SELF_CREATION/FORCED) in relation to a subscriber.
* @param subscriber
* @return list of subscriptions
*/
public Collection<Subscription> getBySubscriber(SubscriptionSubscriber subscriber);
public SubscriptionList getBySubscriber(SubscriptionSubscriber subscriber);

/**
* Gets all subscriptions (COMPONENT/NODE and SELF_CREATION/FORCED) in relation to a subscriber
Expand All @@ -141,7 +141,7 @@ public Collection<Subscription> getByResource(SubscriptionResource resource,
* @param instanceId
* @return list of subscriptions
*/
public Collection<Subscription> getBySubscriberAndComponent(SubscriptionSubscriber subscriber,
public SubscriptionList getBySubscriberAndComponent(SubscriptionSubscriber subscriber,
String instanceId);

/**
Expand All @@ -151,7 +151,7 @@ public Collection<Subscription> getBySubscriberAndComponent(SubscriptionSubscrib
* @param resource
* @return list of subscriptions
*/
public Collection<Subscription> getBySubscriberAndResource(SubscriptionSubscriber subscriber,
public SubscriptionList getBySubscriberAndResource(SubscriptionSubscriber subscriber,
SubscriptionResource resource);

/**
Expand Down
Expand Up @@ -29,9 +29,9 @@
import com.silverpeas.subscribe.SubscriptionService;
import com.silverpeas.subscribe.SubscriptionSubscriber;
import com.silverpeas.subscribe.constant.SubscriptionMethod;
import com.silverpeas.subscribe.util.SubscriptionList;
import com.silverpeas.subscribe.util.SubscriptionSubscriberList;
import com.stratelia.silverpeas.silvertrace.SilverTrace;
import com.stratelia.webactiv.beans.admin.UserDetail;
import com.stratelia.webactiv.util.DBUtil;
import com.stratelia.webactiv.util.JNDINames;
import com.stratelia.webactiv.util.exception.SilverpeasRuntimeException;
Expand All @@ -43,8 +43,6 @@
import java.sql.SQLException;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

/**
* Class declaration
Expand Down Expand Up @@ -185,12 +183,12 @@ public boolean existsSubscription(final Subscription subscription) {
}

@Override
public Collection<Subscription> getByResource(final SubscriptionResource resource) {
public SubscriptionList getByResource(final SubscriptionResource resource) {
return getByResource(resource, SubscriptionMethod.UNKNOWN);
}

@Override
public Collection<Subscription> getByResource(final SubscriptionResource resource,
public SubscriptionList getByResource(final SubscriptionResource resource,
final SubscriptionMethod method) {
SilverTrace.info("subscribe", "SubscriptionService.getByResource", "root.MSG_GEN_ENTER_METHOD");
Connection con = null;
Expand All @@ -207,10 +205,10 @@ public Collection<Subscription> getByResource(final SubscriptionResource resourc
}

@Override
public Collection<Subscription> getByUserSubscriber(final String userId) {
public SubscriptionList getByUserSubscriber(final String userId) {
SilverTrace
.info("subscribe", "SubscriptionService.getByUserSubscriber", "root.MSG_GEN_ENTER_METHOD");
Collection<Subscription> subscriptions =
SubscriptionList subscriptions =
getBySubscriber(UserSubscriptionSubscriber.from(userId));
for (String groupId : organisationController.getAllGroupIdsOfUser(userId)) {
subscriptions.addAll(getBySubscriber(GroupSubscriptionSubscriber.from(groupId)));
Expand All @@ -219,7 +217,7 @@ public Collection<Subscription> getByUserSubscriber(final String userId) {
}

@Override
public Collection<Subscription> getBySubscriber(SubscriptionSubscriber subscriber) {
public SubscriptionList getBySubscriber(SubscriptionSubscriber subscriber) {
SilverTrace
.info("subscribe", "SubscriptionService.getBySubscriber", "root.MSG_GEN_ENTER_METHOD");
Connection con = null;
Expand All @@ -235,8 +233,8 @@ public Collection<Subscription> getBySubscriber(SubscriptionSubscriber subscribe
}

@Override
public Collection<Subscription> getBySubscriberAndComponent(
final SubscriptionSubscriber subscriber, final String instanceId) {
public SubscriptionList getBySubscriberAndComponent(final SubscriptionSubscriber subscriber,
final String instanceId) {
SilverTrace.info("subscribe", "SubscriptionService.getBySubscriberAndComponent",
"root.MSG_GEN_ENTER_METHOD");
Connection con = null;
Expand All @@ -253,7 +251,7 @@ public Collection<Subscription> getBySubscriberAndComponent(
}

@Override
public Collection<Subscription> getBySubscriberAndResource(SubscriptionSubscriber subscriber,
public SubscriptionList getBySubscriberAndResource(SubscriptionSubscriber subscriber,
SubscriptionResource resource) {
SilverTrace.info("subscribe", "SubscriptionService.getBySubscriberAndResource",
"root.MSG_GEN_ENTER_METHOD");
Expand Down
Expand Up @@ -30,6 +30,7 @@
import com.silverpeas.subscribe.constant.SubscriberType;
import com.silverpeas.subscribe.constant.SubscriptionMethod;
import com.silverpeas.subscribe.constant.SubscriptionResourceType;
import com.silverpeas.subscribe.util.SubscriptionList;
import com.silverpeas.subscribe.util.SubscriptionSubscriberList;
import com.silverpeas.util.ForeignPK;
import com.silverpeas.util.StringUtil;
Expand All @@ -43,12 +44,10 @@
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
Expand Down Expand Up @@ -234,7 +233,7 @@ public boolean existsSubscription(Connection con, Subscription subscription) thr
* @throws SQLException
* @see
*/
public Collection<Subscription> getSubscriptionsBySubscriber(Connection con,
public SubscriptionList getSubscriptionsBySubscriber(Connection con,
SubscriptionSubscriber subscriber) throws SQLException {
SilverTrace.info("subscribe", "SubscriptionDao.getSubscriptionsBySubscriber",
"root.MSG_GEN_ENTER_METHOD");
Expand All @@ -259,7 +258,7 @@ public Collection<Subscription> getSubscriptionsBySubscriber(Connection con,
* @throws SQLException
* @see
*/
public Collection<Subscription> getSubscriptionsBySubscriberAndComponent(Connection con,
public SubscriptionList getSubscriptionsBySubscriberAndComponent(Connection con,
SubscriptionSubscriber subscriber, String instanceId) throws SQLException {
SilverTrace.info("subscribe", "SubscriptionDao.getSubscriptionsBySubscriberAndComponent",
"root.MSG_GEN_ENTER_METHOD");
Expand All @@ -286,7 +285,7 @@ public Collection<Subscription> getSubscriptionsBySubscriberAndComponent(Connect
* @throws SQLException
* @see
*/
public Collection<Subscription> getSubscriptionsByResource(Connection con,
public SubscriptionList getSubscriptionsByResource(Connection con,
SubscriptionResource resource, final SubscriptionMethod method) throws SQLException {
SilverTrace.info("subscribe", "SubscriptionDao.getSubscriptionsByResource",
"root.MSG_GEN_ENTER_METHOD");
Expand Down Expand Up @@ -320,7 +319,7 @@ public Collection<Subscription> getSubscriptionsByResource(Connection con,
* @throws SQLException
* @see
*/
public Collection<Subscription> getSubscriptionsBySubscriberAndResource(Connection con,
public SubscriptionList getSubscriptionsBySubscriberAndResource(Connection con,
SubscriptionSubscriber subscriber, SubscriptionResource resource) throws SQLException {
SilverTrace.info("subscribe", "SubscriptionDao.getSubscriptionsBySubscriberAndResource",
"root.MSG_GEN_ENTER_METHOD");
Expand Down Expand Up @@ -374,7 +373,7 @@ public SubscriptionSubscriberList getSubscribers(Connection con,
}

/**
* Centralied method.
* Centralized method.
* @param con
* @param resource
* @param result
Expand Down Expand Up @@ -417,8 +416,8 @@ private void findSubscribers(Connection con, SubscriptionResource resource,
* @return
* @throws SQLException
*/
private Collection<Subscription> toList(ResultSet rs) throws SQLException {
List<Subscription> list = new ArrayList<Subscription>();
private SubscriptionList toList(ResultSet rs) throws SQLException {
SubscriptionList list = new SubscriptionList();
Subscription subscription;
while (rs.next()) {
subscription = createSubscriptionInstance(rs);
Expand Down
@@ -0,0 +1,57 @@
/*
* Copyright (C) 2000 - 2015 Silverpeas
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* As a special exception to the terms and conditions of version 3.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* Open Source Software ("FLOSS") applications as described in Silverpeas's
* FLOSS exception. You should have recieved a copy of the text describing
* the FLOSS exception, and it is also available here:
* "http://www.silverpeas.org/docs/core/legal/floss_exception.html"
*
* 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.silverpeas.subscribe.util;

import com.silverpeas.subscribe.Subscription;
import com.stratelia.webactiv.beans.admin.UserDetail;

import java.util.ArrayList;
import java.util.Iterator;

import static com.silverpeas.subscribe.util.SubscriptionUtil.isSameVisibilityAsTheCurrentRequester;

/**
* @author Yohann Chastagnier
*/
public class SubscriptionList extends ArrayList<Subscription> {
private static final long serialVersionUID = -2314233862350010699L;

/**
* Removes from this list the subscription that the linked subscriber has not the same
* domain visibility as the one of the given user.
* @param user the user that represents the visibility to verify.
*/
public SubscriptionList filterOnDomainVisibilityFrom(final UserDetail user) {
if (user.isDomainRestricted()) {
Iterator<Subscription> itOfSubscriptions = this.iterator();
while (itOfSubscriptions.hasNext()) {
Subscription subscription = itOfSubscriptions.next();
if (!isSameVisibilityAsTheCurrentRequester(subscription.getSubscriber(), user)) {
itOfSubscriptions.remove();
}
}
}
return this;
}
}
Expand Up @@ -31,9 +31,12 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import static com.silverpeas.subscribe.util.SubscriptionUtil.isSameVisibilityAsTheCurrentRequester;

/**
* @author Yohann Chastagnier
*/
Expand Down Expand Up @@ -106,4 +109,23 @@ public List<String> getAllUserIds() {
public SubscriptionSubscriberMapBySubscriberType indexBySubscriberType() {
return new SubscriptionSubscriberMapBySubscriberType(this);
}

/**
* Removes from this list the subscribers that have not the same domain visibility as the one
* of the given user.
* @param user the user that represents the visibility to verify.
* @return itself.
*/
public SubscriptionSubscriberList filterOnDomainVisibilityFrom(final UserDetail user) {
if (user.isDomainRestricted()) {
Iterator<SubscriptionSubscriber> itOfSubscribers = this.iterator();
while (itOfSubscribers.hasNext()) {
SubscriptionSubscriber subscriber = itOfSubscribers.next();
if (!isSameVisibilityAsTheCurrentRequester(subscriber, user)) {
itOfSubscribers.remove();
}
}
}
return this;
}
}
Expand Up @@ -26,13 +26,16 @@
import com.silverpeas.subscribe.SubscriptionSubscriber;
import com.silverpeas.subscribe.constant.SubscriberType;
import com.silverpeas.util.CollectionUtil;
import com.stratelia.webactiv.beans.admin.UserDetail;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
Expand Down Expand Up @@ -119,4 +122,18 @@ public List<String> getAllUserIds() {
}
return new ArrayList<String>(userIds);
}

/**
* Removes from this map the subscribers that have not the same domain visibility as the one
* of the given user.
* @param user the user that represents the visibility to verify.
* @return itself.
*/
public SubscriptionSubscriberMapBySubscriberType filterOnDomainVisibilityFrom(
final UserDetail user) {
for (final Map.Entry<SubscriberType, SubscriptionSubscriberList> entry : entrySet()) {
entry.getValue().filterOnDomainVisibilityFrom(user);
}
return this;
}
}

0 comments on commit bb8ce81

Please sign in to comment.