Package org.hoteia.qalingo.core.service

Source Code of org.hoteia.qalingo.core.service.AttributeService

/**
* Most of the code in the Qalingo project is copyrighted Hoteia and licensed
* under the Apache License Version 2.0 (release version 0.8.0)
*         http://www.apache.org/licenses/LICENSE-2.0
*
*                   Copyright (c) Hoteia, 2012-2014
* http://www.hoteia.com - http://twitter.com/hoteia - contact@hoteia.com
*
*/
package org.hoteia.qalingo.core.service;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

import org.hoteia.qalingo.core.dao.AttributeDao;
import org.hoteia.qalingo.core.domain.AttributeDefinition;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service("attributeService")
@Transactional
public class AttributeService {

    @Autowired
    private AttributeDao attributeDao;

    public AttributeDefinition getAttributeDefinitionById(final Long attributeId) {
        return attributeDao.getAttributeDefinitionById(attributeId);
    }

    public AttributeDefinition getAttributeDefinitionById(final String rawAttributeId) {
        long attributeId = -1;
        try {
            attributeId = Long.parseLong(rawAttributeId);
        } catch (NumberFormatException e) {
            throw new IllegalArgumentException(e);
        }
        return getAttributeDefinitionById(attributeId);
    }

    public AttributeDefinition getAttributeDefinitionByCode(final String code) {
        return attributeDao.getAttributeDefinitionByCode(code);
    }

    public List<AttributeDefinition> findAttributeDefinitions() {
        return attributeDao.findAttributeDefinitions();
    }

    // CATALOG CATEGORY
    public List<AttributeDefinition> findCatalogCategoryAllAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = attributeDao.findAttributeDefinitionsByObjectType(AttributeDefinition.OBJECT_TYPE_CATALOG_CATEGORY);
        return sortAttributes(allAttributeDefinitions);
    }

    public List<AttributeDefinition> findCatalogCategoryGlobalAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = findCatalogCategoryAllAttributeDefinitions();
        return sortAttributes(getGlobalAttributeDefinitions(allAttributeDefinitions));
    }

    public List<AttributeDefinition> findCatalogCategoryMarketAreaAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = findCatalogCategoryAllAttributeDefinitions();
        return sortAttributes(getMarketAreaAttributeDefinitions(allAttributeDefinitions));
    }
   
    // PRODUCT MARKETING
    public List<AttributeDefinition> findProductMarketingAllAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = attributeDao.findAttributeDefinitionsByObjectType(AttributeDefinition.OBJECT_TYPE_PRODUCT_MARKETING);
        return sortAttributes(allAttributeDefinitions);
    }

    public List<AttributeDefinition> findProductMarketingGlobalAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = findProductMarketingAllAttributeDefinitions();
        return sortAttributes(getGlobalAttributeDefinitions(allAttributeDefinitions));
    }

    public List<AttributeDefinition> findProductMarketingMarketAreaAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = findProductMarketingAllAttributeDefinitions();
        return sortAttributes(getMarketAreaAttributeDefinitions(allAttributeDefinitions));
    }
   
    // PRODUCT SKU
    public List<AttributeDefinition> findProductSkuAllAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = attributeDao.findAttributeDefinitionsByObjectType(AttributeDefinition.OBJECT_TYPE_PRODUCT_SKU);
        return sortAttributes(allAttributeDefinitions);
    }

    public List<AttributeDefinition> findProductSkuGlobalAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = findProductSkuAllAttributeDefinitions();
        return sortAttributes(getGlobalAttributeDefinitions(allAttributeDefinitions));
    }

    public List<AttributeDefinition> findProductSkuMarketAreaAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = findProductSkuAllAttributeDefinitions();
        return sortAttributes(getMarketAreaAttributeDefinitions(allAttributeDefinitions));
    }
   
    // CUSTOMER
    public List<AttributeDefinition> findCustomerAllAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = attributeDao.findAttributeDefinitionsByObjectType(AttributeDefinition.OBJECT_TYPE_CUSTOMER);
        return sortAttributes(allAttributeDefinitions);
    }
   
    public List<AttributeDefinition> findCustomerGlobalAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = findCustomerAllAttributeDefinitions();
        return sortAttributes(getGlobalAttributeDefinitions(allAttributeDefinitions));
    }

    public List<AttributeDefinition> findCustomerMarketAreaAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = findCustomerAllAttributeDefinitions();
        return sortAttributes(getMarketAreaAttributeDefinitions(allAttributeDefinitions));
    }

    // STORE
    public List<AttributeDefinition> findStoreAllAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = attributeDao.findAttributeDefinitionsByObjectType(AttributeDefinition.OBJECT_TYPE_STORE);
        return sortAttributes(allAttributeDefinitions);
    }
   
    public List<AttributeDefinition> findStoreGlobalAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = findStoreAllAttributeDefinitions();
        return sortAttributes(getGlobalAttributeDefinitions(allAttributeDefinitions));
    }

    public List<AttributeDefinition> findStoreMarketAreaAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = findStoreAllAttributeDefinitions();
        return sortAttributes(getMarketAreaAttributeDefinitions(allAttributeDefinitions));
    }
   
    // RETAILER
    public List<AttributeDefinition> findRetailerAllAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = attributeDao.findAttributeDefinitionsByObjectType(AttributeDefinition.OBJECT_TYPE_RETAILER);
        return sortAttributes(allAttributeDefinitions);
    }
   
    public List<AttributeDefinition> findRetailerGlobalAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = findRetailerAllAttributeDefinitions();
        return sortAttributes(getGlobalAttributeDefinitions(allAttributeDefinitions));
    }

    public List<AttributeDefinition> findRetailerMarketAreaAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = findRetailerAllAttributeDefinitions();
        return sortAttributes(getMarketAreaAttributeDefinitions(allAttributeDefinitions));
    }
   
    // PAYMENT GATEWAY
    public List<AttributeDefinition> findPaymentGatewayAllAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = attributeDao.findAttributeDefinitionsByObjectType(AttributeDefinition.OBJECT_TYPE_PAYMENT_GATEWAY);
        return sortAttributes(allAttributeDefinitions);
    }
   
    public List<AttributeDefinition> findPaymentGatewayGlobalAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = findPaymentGatewayAllAttributeDefinitions();
        return sortAttributes(getGlobalAttributeDefinitions(allAttributeDefinitions));
    }
   
    public List<AttributeDefinition> findPaymentGatewayMarketAreaAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = findPaymentGatewayAllAttributeDefinitions();
        return sortAttributes(getMarketAreaAttributeDefinitions(allAttributeDefinitions));
    }
   
    // MARKET AREA
    public List<AttributeDefinition> findMarketAreaAllAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = attributeDao.findAttributeDefinitionsByObjectType(AttributeDefinition.OBJECT_TYPE_MARKET_AREA);
        return sortAttributes(allAttributeDefinitions);
    }
   
    public List<AttributeDefinition> findMarketAreaGlobalAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = findMarketAreaAllAttributeDefinitions();
        return sortAttributes(getGlobalAttributeDefinitions(allAttributeDefinitions));
    }
   
    // TAX
    public List<AttributeDefinition> findTaxAllAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = attributeDao.findAttributeDefinitionsByObjectType(AttributeDefinition.OBJECT_TYPE_TAX);
        return sortAttributes(allAttributeDefinitions);
    }
   
    public List<AttributeDefinition> findTaxGlobalAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = findTaxAllAttributeDefinitions();
        return sortAttributes(getGlobalAttributeDefinitions(allAttributeDefinitions));
    }
   
    public List<AttributeDefinition> findTaxMarketAreaAttributeDefinitions() {
        List<AttributeDefinition> allAttributeDefinitions = findTaxAllAttributeDefinitions();
        return sortAttributes(getMarketAreaAttributeDefinitions(allAttributeDefinitions));
    }

    public void saveOrUpdateAttributeDefinition(final AttributeDefinition attributeDefinition) {
        attributeDao.saveOrUpdateAttributeDefinition(attributeDefinition);
    }

    public void deleteAttributeDefinition(final AttributeDefinition attributeDefinition) {
        attributeDao.deleteAttributeDefinition(attributeDefinition);
    }
   
    protected List<AttributeDefinition> getGlobalAttributeDefinitions(final List<AttributeDefinition> allAttributeDefinitions) {
        List<AttributeDefinition> attributeDefinitions = new ArrayList<AttributeDefinition>();
        for (Iterator<AttributeDefinition> iterator = allAttributeDefinitions.iterator(); iterator.hasNext();) {
            AttributeDefinition attributeDefinition = (AttributeDefinition) iterator.next();
            if(attributeDefinition.isGlobal()){
                attributeDefinitions.add(attributeDefinition);
            }
        }
        return sortAttributes(attributeDefinitions);
    }
   
    protected List<AttributeDefinition> getMarketAreaAttributeDefinitions(final List<AttributeDefinition> allAttributeDefinitions) {
        List<AttributeDefinition> attributeDefinitions = new ArrayList<AttributeDefinition>();
        for (Iterator<AttributeDefinition> iterator = allAttributeDefinitions.iterator(); iterator.hasNext();) {
            AttributeDefinition attributeDefinition = (AttributeDefinition) iterator.next();
            if(!attributeDefinition.isGlobal()){
                attributeDefinitions.add(attributeDefinition);
            }
        }
        return sortAttributes(attributeDefinitions);
    }
   
    protected List<AttributeDefinition> sortAttributes(List<AttributeDefinition> attributeDefinitions){
        if (attributeDefinitions != null) {
            List<AttributeDefinition> sortedObjects = new LinkedList<AttributeDefinition>(attributeDefinitions);
                Collections.sort(sortedObjects, new Comparator<AttributeDefinition>() {
                    @Override
                    public int compare(AttributeDefinition o1, AttributeDefinition o2) {
                        if (o1 != null && o2 != null) {
                            int compare = o1.getOrdering().compareTo(o2.getOrdering());
                            if(compare != 0){
                                return compare;
                            }
                            return o1.getCode().compareTo(o2.getCode());
                        }
                        return 0;
                    }
                });
            return sortedObjects;
        }
        return attributeDefinitions;
    }

}
TOP

Related Classes of org.hoteia.qalingo.core.service.AttributeService

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.