/* * Copyright (c) 2010 Lockheed Martin Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.eurekastreams.server.persistence.mappers.cache; import java.util.HashSet; import java.util.Set; import org.apache.commons.logging.Log; import org.eurekastreams.commons.logging.LogFactory; import org.eurekastreams.server.action.request.profile.OrganizationCacheUpdaterRequest; import org.eurekastreams.server.persistence.mappers.stream.BaseArgCachedDomainMapper; /** * Save the list of coordinators for an organization in cache. */ public class SaveOrganizationCoordinatorIdsToCache extends BaseArgCachedDomainMapper<OrganizationCacheUpdaterRequest, Boolean> { /** * Logger. */ private Log log = LogFactory.make(); /** * Save a set of coordinator person ids for an organization in cache. * * @param inRequest * the SaveOrganizationCoordinatorIdsToCacheRequest * @return True if successful. */ @Override public Boolean execute(final OrganizationCacheUpdaterRequest inRequest) { Long orgId = inRequest.getOrganizationId(); Set<Long> coordIds = inRequest.getCoordinatorIds(); Set<Long> origCoordIds = inRequest.getOriginalCoordinatorIds() == null ? new HashSet<Long>(0) : inRequest .getOriginalCoordinatorIds(); log.info("Saving org #" + orgId + "'s cordinators to cache - coordinator ids: " + coordIds.toString()); getCache().set(CacheKeys.ORGANIZATION_COORDINATORS_BY_ORG_ID + inRequest.getOrganizationId(), inRequest.getCoordinatorIds()); // update orgs directly coordinated by people cache keys. // do additions for (Long newId : coordIds) { if (!origCoordIds.contains(newId)) { getCache().addToSet(CacheKeys.ORG_IDS_DIRECTLY_COORD_BY_PERSON + newId, orgId); } } // do removes for (Long origId : origCoordIds) { if (!coordIds.contains(origId)) { getCache().removeFromSet(CacheKeys.ORG_IDS_DIRECTLY_COORD_BY_PERSON + origId, orgId); } } return true; } }