/** * Copyright (c) 2009 - 2012 Red Hat, Inc. * * This software is licensed to you under the GNU General Public License, * version 2 (GPLv2). There is NO WARRANTY for this software, express or * implied, including the implied warranties of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 * along with this software; if not, see * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. * * Red Hat trademarks are not licensed under GPLv2. No permission is * granted to use or replicate Red Hat trademarks that are incorporated * in this software or its documentation. */ package org.candlepin.service.impl; import org.candlepin.common.exceptions.ServiceUnavailableException; import org.candlepin.model.Consumer; import org.candlepin.model.Owner; import org.candlepin.model.dto.ProductData; import org.candlepin.model.dto.Subscription; import org.candlepin.service.SubscriptionServiceAdapter; import org.xnap.commons.i18n.I18n; import com.google.inject.Inject; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; /** * @author mstead * */ public class ImportSubscriptionServiceAdapter implements SubscriptionServiceAdapter { private List<Subscription> subscriptions; private Map<String, Subscription> subsBySubId = new HashMap<String, Subscription>(); @Inject private I18n i18n; public ImportSubscriptionServiceAdapter() { this(new LinkedList<Subscription>()); } public ImportSubscriptionServiceAdapter(List<Subscription> subs) { this.subscriptions = subs; for (Subscription sub : this.subscriptions) { subsBySubId.put(sub.getId(), sub); } } @Override public List<Subscription> getSubscriptions(Owner owner) { return subscriptions; } @Override public List<String> getSubscriptionIds(Owner owner) { return new ArrayList<String>(subsBySubId.keySet()); } @Override public Subscription getSubscription(String subscriptionId) { return this.subsBySubId.get(subscriptionId); } @Override public List<Subscription> getSubscriptions() { return subscriptions; } @Override public void activateSubscription(Consumer consumer, String email, String emailLocale) { throw new ServiceUnavailableException( i18n.tr("Standalone candlepin does not support redeeming a subscription.")); } @Override public Subscription createSubscription(Subscription s) { return s; } @Override public void deleteSubscription(Subscription s) { // no op for now. } @Override public boolean isReadOnly() { return false; } @Override public boolean hasUnacceptedSubscriptionTerms(Owner owner) { return false; } @Override public void sendActivationEmail(String subscriptionId) { // hosted-only } @Override public boolean canActivateSubscription(Consumer consumer) { return false; } @Override public List<Subscription> getSubscriptions(ProductData product) { List<Subscription> subs = new LinkedList<Subscription>(); for (Subscription sub : this.subscriptions) { if (product.getUuid().equals(sub.getProduct().getUuid())) { subs.add(sub); continue; } for (ProductData p : sub.getProvidedProducts()) { if (product.getUuid().equals(p.getUuid())) { subs.add(sub); break; } } } return subs; } }