package com.sobey.cmop.mvc.service.basicdata;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.sobey.cmop.mvc.comm.BaseSevcie;
import com.sobey.cmop.mvc.dao.VlanDao;
import com.sobey.cmop.mvc.entity.Vlan;
import com.sobey.framework.utils.DynamicSpecifications;
import com.sobey.framework.utils.SearchFilter;
@Service
@Transactional(readOnly = true)
public class VlanService extends BaseSevcie {
private static Logger logger = LoggerFactory.getLogger(VlanService.class);
@Resource
private VlanDao vlanDao;
/**
* 删除Vlan,同时也删除oneCMDB中的vlan. 如果该Vlan下有ip,则该Vlan不能删除.返回false.
*
* @param id
*/
@Transactional(readOnly = false)
public boolean deleteVlan(Integer id) {
Vlan vlan = this.getVlan(id);
if (!vlan.getIpPools().isEmpty()) {
return false;
}
comm.oneCmdbUtilService.deleteVlanToOneCMDB(vlan);
vlanDao.delete(id);
return true;
}
public Vlan findVlanByName(String name) {
return vlanDao.findByName(name);
}
public Vlan getVlan(Integer id) {
return vlanDao.findOne(id);
}
public List<Vlan> getVlanList() {
return (List<Vlan>) vlanDao.findAll();
}
public List<Vlan> getVlanListByLocationId(Integer locationId) {
return vlanDao.findByLocationId(locationId);
}
public Page<Vlan> getVlanPageable(Map<String, Object> searchParams, int pageNumber, int pageSize) {
PageRequest pageRequest = buildPageRequest(pageNumber, pageSize);
Map<String, SearchFilter> filters = SearchFilter.parse(searchParams);
Specification<Vlan> spec = DynamicSpecifications.bySearchFilter(filters.values(), Vlan.class);
return vlanDao.findAll(spec, pageRequest);
}
/**
* 新增,更新Vlan至oneCMDB,并同步至oneCMDB中.
*
* @param vlan
* @return
*/
@Transactional(readOnly = false)
public Vlan saveOrUpdateVlan(Vlan vlan) {
comm.oneCmdbUtilService.saveVlanToOneCMDB(vlan);
return vlanDao.save(vlan);
}
}