All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.diboot.framework.service.impl.MetadataServiceImpl Maven / Gradle / Ivy

The newest version!
package com.diboot.framework.service.impl;

import com.diboot.framework.model.BaseModel;
import com.diboot.framework.model.Metadata;
import com.diboot.framework.service.MetadataService;
import com.diboot.framework.service.mapper.BaseMapper;
import com.diboot.framework.service.mapper.MetadataMapper;
import com.diboot.framework.utils.BaseHelper;
import com.diboot.framework.utils.Query;
import com.diboot.framework.utils.V;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Map;

/**
 * @author [email protected]
 * @version 2017/4/17
 *
 */
@Service("metadataService")
public class MetadataServiceImpl extends BaseServiceImpl implements MetadataService {
    private static final Logger logger = LoggerFactory.getLogger(MetadataServiceImpl.class);

    @Autowired
    private MetadataMapper metadataMapper;

    @Override
    protected BaseMapper getMapper(){return metadataMapper;}

    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean createModel(BaseModel model) {
        boolean success = super.createModel(model);
        if(success){
            // 保存子项
            Metadata metadata = (Metadata)model;
            if(V.notEmpty(metadata.getChildren())){
                List modelList = metadata.getChildren();
                for(Metadata child : modelList){
                    child.setParentId(metadata.getId());
                    child.setType(metadata.getType());
                    child.setSystem(metadata.isSystem());
                }
                if(!modelList.isEmpty()){
                    success = batchCreateModels(modelList);
                }
            }
        }
        return success;
    }

    @Override
    public Metadata getModel(Object id) {
        Metadata model = metadataMapper.get(id);
        if(model.isTopLevel()){
            Map criteria = super.newCriteria(Metadata.F.parentId, id);
            List children = metadataMapper.getList(criteria);
            model.setChildren(children);
        }
        return model;
    }

    @Override
    public List getChildrenByType(String type) {
        Query query = new Query(Metadata.F.type, type);
        query.addGT(Metadata.F.parentId, 0);
        List children = metadataMapper.getList(query.toMap());
        return children;
    }

    @Override
    public List> getKeyValuePairListByType(String type) {
        Query query = new Query(Metadata.F.type, type);
        query.addGT(Metadata.F.parentId, 0);
        return getKeyValuePairList(query.toMap(), Metadata.F.itemValue, Metadata.F.itemName);
    }

    @Override
    public List> getNameTypePairList() {
        return metadataMapper.getNameTypePairList();
    }

    @Override
    public Map getValueKeyMapByType(String type) {
        List> mapList = getKeyValuePairListByType(type);
        return BaseHelper.convert2VKMap(mapList);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy