Package org.jclouds.abiquo.internal

Source Code of org.jclouds.abiquo.internal.BasePricingService

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.jclouds.abiquo.internal;

import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.collect.Iterables.filter;
import static com.google.common.collect.Iterables.getFirst;
import static org.jclouds.abiquo.domain.DomainWrapper.wrap;

import java.util.Collection;

import javax.inject.Inject;
import javax.inject.Singleton;

import org.jclouds.abiquo.AbiquoApi;
import org.jclouds.abiquo.domain.config.CostCode;
import org.jclouds.abiquo.domain.config.CostCodeCurrency;
import org.jclouds.abiquo.domain.config.Currency;
import org.jclouds.abiquo.domain.config.PricingCostCode;
import org.jclouds.abiquo.domain.config.PricingTemplate;
import org.jclouds.abiquo.domain.config.PricingTier;
import org.jclouds.abiquo.features.services.PricingService;
import org.jclouds.rest.ApiContext;

import com.abiquo.server.core.pricing.CostCodeCurrenciesDto;
import com.abiquo.server.core.pricing.CostCodeDto;
import com.abiquo.server.core.pricing.CostCodesDto;
import com.abiquo.server.core.pricing.CurrenciesDto;
import com.abiquo.server.core.pricing.CurrencyDto;
import com.abiquo.server.core.pricing.PricingCostCodeDto;
import com.abiquo.server.core.pricing.PricingCostCodesDto;
import com.abiquo.server.core.pricing.PricingTemplateDto;
import com.abiquo.server.core.pricing.PricingTemplatesDto;
import com.abiquo.server.core.pricing.PricingTierDto;
import com.abiquo.server.core.pricing.PricingTiersDto;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;

/**
* Provides access to Abiquo pricing features.
*
* @author Ignasi Barrera
* @author Susana Acedo
*/
@Singleton
public class BasePricingService implements PricingService {
   @VisibleForTesting
   protected ApiContext<AbiquoApi> context;

   @Inject
   protected BasePricingService(final ApiContext<AbiquoApi> context) {
      this.context = checkNotNull(context, "context");
   }

   /*********************** Currency ********************** */

   @Override
   public Iterable<Currency> listCurrencies() {
      CurrenciesDto result = context.getApi().getPricingApi().listCurrencies();
      return wrap(context, Currency.class, result.getCollection());
   }

   @Override
   public Iterable<Currency> listCurrencies(final Predicate<Currency> filter) {
      return filter(listCurrencies(), filter);
   }

   @Override
   public Currency findCurrency(final Predicate<Currency> filter) {
      return getFirst(listCurrencies(filter), null);
   }

   @Override
   public Currency getCurrency(final Integer currencyId) {
      CurrencyDto result = context.getApi().getPricingApi().getCurrency(currencyId);
      return wrap(context, Currency.class, result);
   }

   /*********************** CostCode ********************** */

   @Override
   public Iterable<CostCode> listCostCodes() {
      CostCodesDto result = context.getApi().getPricingApi().listCostCodes();
      return wrap(context, CostCode.class, result.getCollection());
   }

   @Override
   public Iterable<CostCode> listCostCodes(final Predicate<CostCode> filter) {
      return filter(listCostCodes(), filter);
   }

   @Override
   public CostCode findCostCode(final Predicate<CostCode> filter) {
      return Iterables.getFirst(listCostCodes(filter), null);
   }

   @Override
   public CostCode getCostCode(Integer costCodeId) {
      CostCodeDto result = context.getApi().getPricingApi().getCostCode(costCodeId);
      return wrap(context, CostCode.class, result);
   }

   /*********************** PricingTemplate ********************** */

   @Override
   public Iterable<PricingTemplate> listPricingTemplates() {
      PricingTemplatesDto result = context.getApi().getPricingApi().listPricingTemplates();
      return wrap(context, PricingTemplate.class, result.getCollection());
   }

   @Override
   public Iterable<PricingTemplate> listPricingTemplates(final Predicate<PricingTemplate> filter) {
      return filter(listPricingTemplates(), filter);
   }

   @Override
   public PricingTemplate findPricingTemplate(final Predicate<PricingTemplate> filter) {
      return getFirst(listPricingTemplates(filter), null);
   }

   @Override
   public PricingTemplate getPricingTemplate(Integer pricingTemplateId) {
      PricingTemplateDto result = context.getApi().getPricingApi().getPricingTemplate(pricingTemplateId);
      return wrap(context, PricingTemplate.class, result);
   }

   /*********************** CostCodeCurrency ********************** */

   @Override
   public Iterable<CostCodeCurrency> getCostCodeCurrencies(final Integer costcodeId, final Integer currencyId) {
      CostCodeCurrenciesDto result = context.getApi().getPricingApi().getCostCodeCurrencies(costcodeId, currencyId);
      return wrap(context, CostCodeCurrency.class, result.getCollection());
   }

   /*********************** Pricing Cost Code ********************** */

   @Override
   public Collection<PricingCostCode> getPricingCostCodes(final Integer pricingTemplateId) {
      PricingCostCodesDto result = context.getApi().getPricingApi().getPricingCostCodes(pricingTemplateId);
      return wrap(context, PricingCostCode.class, result.getCollection());
   }

   @Override
   public PricingCostCode getPricingCostCode(final Integer pricingTemplateId, final Integer pricingCostCodeId) {
      PricingCostCodeDto pricingcostcode = context.getApi().getPricingApi()
            .getPricingCostCode(pricingTemplateId, pricingCostCodeId);
      return wrap(context, PricingCostCode.class, pricingcostcode);
   }

   /*********************** Pricing Tier********************** */

   @Override
   public Collection<PricingTier> getPricingTiers(final Integer pricingTemplateId) {
      PricingTiersDto result = context.getApi().getPricingApi().getPricingTiers(pricingTemplateId);
      return wrap(context, PricingTier.class, result.getCollection());
   }

   @Override
   public PricingTier getPricingTier(final Integer pricingTemplateId, final Integer pricingTierId) {
      PricingTierDto pricingtier = context.getApi().getPricingApi().getPricingTier(pricingTemplateId, pricingTierId);
      return wrap(context, PricingTier.class, pricingtier);
   }
}
TOP

Related Classes of org.jclouds.abiquo.internal.BasePricingService

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.