package com.eswaraj.core.convertors; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.eswaraj.core.exceptions.ApplicationException; import com.eswaraj.domain.nodes.division.Boundary; import com.eswaraj.domain.nodes.division.GeoPoint; import com.eswaraj.domain.repo.BoundaryRepository; import com.eswaraj.domain.repo.GeoPointRepository; import com.eswaraj.web.dto.GeoPointDto; @Component public class GeoPointConvertor extends BaseConvertor<GeoPoint, GeoPointDto> { @Autowired private GeoPointRepository geoPointRepository; @Autowired private BoundaryRepository boundaryRepository; @Override protected GeoPoint convertInternal(GeoPointDto geoPointDto) throws ApplicationException { GeoPoint geoPoint = getObjectIfExists(geoPointDto, "GeoPoint", geoPointRepository) ; if(geoPoint == null){ geoPoint = new GeoPoint(); } BeanUtils.copyProperties(geoPointDto, geoPoint); if(geoPointDto.getBoundaryId() != null){ Boundary boundary = boundaryRepository.findOne(geoPointDto.getBoundaryId()); if(boundary == null){ throw new ApplicationException("No such Boundary exists[id="+geoPointDto.getBoundaryId()+"]"); } geoPoint.setBoundary(boundary); } return geoPoint; } @Override protected GeoPointDto convertBeanInternal(GeoPoint dbDto) { GeoPointDto geoPointDto = new GeoPointDto(); BeanUtils.copyProperties(dbDto, geoPointDto); if(dbDto.getBoundary() != null){ geoPointDto.setBoundaryId(dbDto.getBoundary().getId()); } return geoPointDto; } }