package com.bitmonlab.osiris.api.core.map.assemblers; import java.util.ArrayList; import java.util.Collection; import java.util.List; import javax.inject.Inject; import javax.inject.Named; import com.bitmonlab.osiris.api.core.map.transferobject.LineStringDTO; import com.bitmonlab.osiris.api.core.map.transferobject.PolygonDTO; import com.bitmonlab.osiris.commons.map.model.geojson.LineString; import com.bitmonlab.osiris.commons.map.model.geojson.Polygon; import com.bitmonlab.osiris.core.assembler.Assembler; import com.bitmonlab.osiris.core.assembler.AssemblyException; import com.bitmonlab.osiris.core.assembler.SimpleAssembler; @Named("PolygonAssembler") public class PolygonAssemblerImpl extends SimpleAssembler<PolygonDTO, Polygon>{ @Inject @Named("LineStringAssembler") private Assembler<LineStringDTO, LineString> lineStringAssembler; public PolygonAssemblerImpl() { super(PolygonDTO.class,Polygon.class); } @Override public Polygon createDomainObject(PolygonDTO polygonDTO) throws AssemblyException{ Polygon polygon = new Polygon(); Collection<List<List<Double>>> coordinates=new ArrayList<List<List<Double>>>(); Collection<LineStringDTO> collectionLineString=polygonDTO.getCollectionLineStringDTO(); for(LineStringDTO lineStringDTO: collectionLineString){ LineString lineString=lineStringAssembler.createDomainObject(lineStringDTO); List<List<Double>> coordinatesLineString=lineString.getCoordinates(); coordinates.add(coordinatesLineString); } polygon.setCoordinates(coordinates); return polygon; } @Override public PolygonDTO createDataTransferObject(Polygon polygon) throws AssemblyException{ PolygonDTO polygonDTO = new PolygonDTO(); List<LineStringDTO> collectionLineStringDTO = new ArrayList<LineStringDTO>(); Collection<List<List<Double>>> collectionCoordinates=polygon.getCoordinates(); for(List<List<Double>> coordinates: collectionCoordinates){ LineString lineString=new LineString(); lineString.setCoordinates(coordinates); LineStringDTO lineStringDTO=lineStringAssembler.createDataTransferObject(lineString); collectionLineStringDTO.add(lineStringDTO); } polygonDTO.setCollectionLineStringDTO(collectionLineStringDTO); return polygonDTO; } @Override public Collection<PolygonDTO> createDataTransferObjects(Collection<Polygon> collectionPolygon) throws AssemblyException{ Collection<PolygonDTO> collectionPolygonDTO = new ArrayList<PolygonDTO>(); for(Polygon polygon:collectionPolygon){ collectionPolygonDTO.add(createDataTransferObject(polygon)); } return collectionPolygonDTO; } }