/**
* Abiquo community edition
* cloud management application for hybrid clouds
* Copyright (C) 2008-2010 - Abiquo Holdings S.L.
*
* This application is free software; you can redistribute it and/or
* modify it under the terms of the GNU LESSER GENERAL PUBLIC
* LICENSE as published by the Free Software Foundation under
* version 3 of the License
*
* This software 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
* LESSER GENERAL PUBLIC LICENSE v.3 for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
package com.abiquo.server.core.pricing;
import java.util.Collection;
import java.util.List;
import javax.persistence.EntityManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.abiquo.server.core.common.DefaultRepBase;
import com.abiquo.server.core.enterprise.EnterpriseRep;
import com.abiquo.server.core.infrastructure.storage.StorageRep;
import com.abiquo.server.core.infrastructure.storage.Tier;
@Repository
@Transactional
public class PricingRep extends DefaultRepBase
{
@Autowired
private CurrencyDAO currencyDao;
@Autowired
private PricingTemplateDAO pricingTemplateDao;
@Autowired
private CostCodeDAO costCodeDao;
@Autowired
private CostCodeCurrencyDAO costCodeCurrencyDao;
@Autowired
private PricingCostCodeDAO pricingCostCodeDao;
@Autowired
private PricingTierDAO pricingTierDao;
@Autowired
private EnterpriseRep enterpriseRep;
@Autowired
private StorageRep storageRep;
public PricingRep()
{
}
public PricingRep(final EntityManager entityManager)
{
assert entityManager != null;
assert entityManager.isOpen();
this.entityManager = entityManager;
enterpriseRep = new EnterpriseRep(entityManager);
storageRep = new StorageRep(entityManager);
pricingTemplateDao = new PricingTemplateDAO(entityManager);
currencyDao = new CurrencyDAO(entityManager);
costCodeDao = new CostCodeDAO(entityManager);
costCodeCurrencyDao = new CostCodeCurrencyDAO(entityManager);
pricingCostCodeDao = new PricingCostCodeDAO(entityManager);
pricingTierDao = new PricingTierDAO(entityManager);
}
public List<Currency> findAllCurrency()
{
return currencyDao.findAll();
}
public Integer insertCurrency(final Currency currency)
{
if (currency != null)
{
currencyDao.persist(currency);
currencyDao.flush();
}
return currency.getId();
}
public Currency findCurrencyById(final Integer currencyId)
{
return currencyDao.findById(currencyId);
}
public void removeCurrency(final Currency currency)
{
if (currency != null)
{
currencyDao.remove(currency);
currencyDao.flush();
}
}
public void updateCurrency(final Currency currency)
{
assert currency != null;
assert currencyDao.isManaged(currency);
// assert !existsAnyOtherRackWithName(rack, rack.getName()) :
// BUG_UPDATE_RACK_NAME_MUST_BE_UNIQUE;
this.currencyDao.flush();
}
public void insertPricingTemplate(final PricingTemplate pricingTemplate)
{
if (pricingTemplate != null)
{
pricingTemplateDao.persist(pricingTemplate);
pricingTemplateDao.flush();
}
}
public boolean existAnyPricTempWithSameName(final String name)
{
return pricingTemplateDao.existAnyPricTempWithSameName(name);
}
public Collection<PricingTemplate> findPricingTemplates(final String filter,
final String order, final boolean desc, final Integer page, final Integer numResults,
final Integer startwith)
{
return pricingTemplateDao.find(filter, order, desc, page, numResults, startwith);
}
public PricingTemplate findPricingTemplateById(final Integer id)
{
return pricingTemplateDao.findById(id);
}
public List<PricingTemplate> findPricingTemplatesByCurrency(final Integer id)
{
return pricingTemplateDao.findPricingTemplatesByCurrency(id);
}
public void updatePricingTemplate(final PricingTemplate pricingTemplate)
{
pricingTemplateDao.flush();
}
public List<PricingTemplate> findAllPricingTemplateByName(final String name)
{
return pricingTemplateDao.findAllPricingTemplateByName(name);
}
public List<PricingTemplate> findPricingTemplats()
{
return pricingTemplateDao.findAll();
}
public boolean existAnyOtherPricingTempWithName(final PricingTemplate pricingTemplate,
final String name)
{
return pricingTemplateDao.existAnyOtherPricingTempWithName(pricingTemplate, name);
}
public boolean existAnyEnterpriseWithPricingTemplate(final PricingTemplate pricingTemplate)
{
return enterpriseRep.existAnyEnterpriseWithPricingTemplate(pricingTemplate);
}
public void deletePricingTemplate(final PricingTemplate pricingTemplate)
{
pricingTemplateDao.remove(pricingTemplate);
}
public void deletePricingTier(final PricingTier pricingTier)
{
pricingTierDao.remove(pricingTier);
}
public CostCode findCostCodeById(final Integer costCodeId)
{
return costCodeDao.findById(costCodeId);
}
public CostCodeCurrency findCurrencyCostCode(final CostCode costCode, final Currency currency)
{
return costCodeCurrencyDao.findCurrencyCostCode(costCode, currency);
}
public void insertCostCodeCurrency(final CostCodeCurrency costCodeCurrency)
{
costCodeCurrencyDao.persist(costCodeCurrency);
}
public void insertCostCode(final CostCode costCode)
{
if (costCode != null)
{
costCodeDao.persist(costCode);
costCodeDao.flush();
}
}
public CostCodeCurrency findCostCodeCurrencyById(final Integer id)
{
return costCodeCurrencyDao.findById(id);
}
public void updateCostCodeCurrency(final CostCodeCurrency costCodeCurrency)
{
costCodeCurrencyDao.flush();
}
public boolean existAnyOtherWithCurrency(final CostCodeCurrency costCodeCurrency,
final Currency currency, final CostCode costCode)
{
return costCodeCurrencyDao.existAnyOtherWithCurrency(costCodeCurrency, currency, costCode);
}
public void deleteCostCode(final CostCode costCode)
{
costCodeDao.remove(costCode);
}
public void deleteCostCodecurrency(final CostCodeCurrency costCodeCurrency)
{
costCodeCurrencyDao.remove(costCodeCurrency);
}
public boolean existAnyOtherCostCodeWithName(final CostCode costCode, final String name)
{
return costCodeDao.existAnyOtherCostCodeWithName(costCode, name);
}
public void updateCostCode(final CostCode costCode)
{
costCodeDao.flush();
}
public boolean existAnyOtherCostCodeWithName(final String name)
{
return costCodeDao.existAnyOtherCostCodeWithName(name);
}
public Collection<CostCodeCurrency> findCostCodeCurrencies(final CostCode cc,
final Currency currency)
{
return costCodeCurrencyDao.find(cc, currency);
}
public Collection<CostCode> findCostCodes(final String filter, final String order,
final boolean desc, final int page, final int numResults)
{
return costCodeDao.find(filter, order, desc, page, numResults);
}
public PricingCostCode findPricingCostCode(final CostCode costCode,
final PricingTemplate pricing)
{
return pricingCostCodeDao.findPricingCostCode(costCode, pricing);
}
public void insertPricingCostCode(final PricingCostCode pricingCostCode)
{
pricingCostCodeDao.persist(pricingCostCode);
}
public List<CostCode> findCostCodesIds()
{
return costCodeCurrencyDao.findCostCodesIds();
}
public boolean existAnyOtherCurrencyWithName(final String name)
{
return currencyDao.existAnyOtherCurrencyWithName(name);
}
public Collection<PricingCostCode> findPricingCostCodes(final PricingTemplate pricing)
{
return pricingCostCodeDao.findPricingCostCodes(pricing);
}
public List<Currency> findCurrencies()
{
return currencyDao.findAll();
}
public PricingCostCode findPricingCostCodeById(final Integer id)
{
return pricingCostCodeDao.findById(id);
}
public boolean existAnyOtherWithCostCode(final PricingCostCode pricingCostCode,
final CostCode costCode, final PricingTemplate pricingTemplate)
{
return pricingCostCodeDao.existAnyOtherWithCostCode(pricingCostCode, costCode,
pricingTemplate);
}
public void updatePricingCostCode(final PricingCostCode old)
{
pricingCostCodeDao.flush();
}
public Collection<PricingTier> findPricingTiers(final PricingTemplate pricing)
{
return pricingTierDao.findPricingTiers(pricing);
}
public void insertPricingTier(final PricingTier pricingTier)
{
pricingTierDao.persist(pricingTier);
}
public PricingTier findPricingTier(final Tier tier, final PricingTemplate pricing)
{
return pricingTierDao.findPricingTier(tier, pricing);
}
public PricingTier findPricingTierById(final Integer id)
{
return pricingTierDao.findById(id);
}
public void updatePricingTier(final PricingTier old)
{
pricingTierDao.flush();
}
public Collection<PricingTier> findPricingTierByTier(final Tier tier)
{
return pricingTierDao.findPricingTiers(tier);
}
public Tier findTierById(final Integer id)
{
return storageRep.findTierById(id);
}
public boolean existAnyOtherCurrencyWithName(final Currency currency, final String name)
{
return currencyDao.existAnyOtherCurrencyWithName(currency, name);
}
public Collection<Currency> findAllCurrency(final String filter, final String orderBy,
final boolean desc, final Integer page, final Integer numResults)
{
return currencyDao.find(filter, orderBy, desc, page, numResults);
}
}