ComponentManagerImpl.java 2.9 KB
package com.myproject.manager.impl;

import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.myproject.bean.search.PageList;
import com.myproject.bean.update.Component;
import com.myproject.dao.mongo.IComponentDao;
import com.myproject.exception.ValidateException;
import com.myproject.manager.IComponentManager;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * Created by kangmor on 2015/9/15.
 */
@Service
public class ComponentManagerImpl implements IComponentManager {

    @Autowired
    private IComponentDao componentDao;
    protected final transient Logger log = LogManager.getLogger(getClass());

    @Override
    public List findAll() {
        return componentDao.findAll();
    }

    @Override
    public Component findByPartNumber(String partNumber) {
        if (StringUtils.isEmpty(partNumber))
            return null;
        else return componentDao.findOneByCondition(new String[] {"partNumber"}, new String[] {partNumber});
    }

    @Override
    public List<Component> allNeedAlarmComponents(){
        Criteria c = Criteria.where("minStoreNum").gt(0);
        Query query = Query.query(c);
        return componentDao.findByQuery(query);
    }

    @Override
    public PageList findByQuery(Query query, PageList pageList)
    {
        return componentDao.findByQuery(query, pageList);
    }

    @Override
    public List<Component> findByType(int type){
        return componentDao.findByType(type);
    }

    public Component get(String id) {
        return componentDao.findOneById(id);
    }


    public Component save(Component component) throws ValidateException{
        String partNumber = component.getPartNumber();
        Component dbComponent = findByPartNumber(partNumber);
        if(dbComponent != null){
            //数据库中已存在,但不是更新(要保存的没有 ID,或者有 ID但与数据库中的 ID不一致)
            if(Strings.isNullOrEmpty(component.getId())  || !dbComponent.getId().equals(component.getId()) ){
                throw new ValidateException("component.partNumber.exist");
            }
        }
        String name = component.getName();
        if(name == null || name.isEmpty()){
            component.setName(partNumber);
        }
        return componentDao.save(component);
    }

    @Override
    public void delete(Component component) throws ValidateException{
        componentDao.removeOne(component);
    }

    @Override
    public void validate(Component component, List errors) {

    }


    public void setComponentDao(IComponentDao componentDao) {
        this.componentDao = componentDao;
    }

}