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.LocationDao; import com.sobey.cmop.mvc.entity.Location; 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 LocationService extends BaseSevcie { private static Logger logger = LoggerFactory.getLogger(LocationService.class); @Resource private LocationDao locationDao; /** * 删除Location,同时删除oneCMDB中的数据.如果关联的Vlan有关联ip,则返回false. * * @param id */ @Transactional(readOnly = false) public boolean deleteLocation(Integer id) { Location location = this.getLocation(id); for (Vlan vlan : location.getVlans()) { if (!vlan.getIpPools().isEmpty()) { return false; } } for (Vlan vlan : location.getVlans()) { comm.vlanService.deleteVlan(vlan.getId()); } comm.oneCmdbUtilService.deleteLocationToOneCMDB(location); locationDao.delete(id); return true; } public Location getLocation(Integer id) { return locationDao.findOne(id); } public Location findLocationByName(String name) { return locationDao.findByName(name); } public Location findLocationByAlias(String alias) { return locationDao.findByAlias(alias); } /** * 获得所有的IDC * * @return */ public List<Location> getLocationList() { return (List<Location>) locationDao.findAll(); } public Page<Location> getLocationPageable(Map<String, Object> searchParams, int pageNumber, int pageSize) { PageRequest pageRequest = buildPageRequest(pageNumber, pageSize); Map<String, SearchFilter> filters = SearchFilter.parse(searchParams); Specification<Location> spec = DynamicSpecifications.bySearchFilter(filters.values(), Location.class); return locationDao.findAll(spec, pageRequest); } /** * 新增,更新Location,并同步至oneCMDB * * @param location * @return */ @Transactional(readOnly = false) public Location saveLocation(Location location) { comm.oneCmdbUtilService.saveLocationToOneCMDB(location); return locationDao.save(location); } }