Skip to content
Snippets Groups Projects
Commit e7b6e23d authored by Jan Sandr's avatar Jan Sandr
Browse files

Canvas - addShape

parent c85355af
No related branches found
No related tags found
No related merge requests found
...@@ -3,4 +3,6 @@ package cz.cvut.fit.tjv.vectorSandbox_api.service; ...@@ -3,4 +3,6 @@ package cz.cvut.fit.tjv.vectorSandbox_api.service;
import cz.cvut.fit.tjv.vectorSandbox_api.domain.Canvas; import cz.cvut.fit.tjv.vectorSandbox_api.domain.Canvas;
   
public interface CanvasService extends CrudService<Canvas,String> { public interface CanvasService extends CrudService<Canvas,String> {
void addShape ( String canvasId, long shapeId ) ;
} }
package cz.cvut.fit.tjv.vectorSandbox_api.service; package cz.cvut.fit.tjv.vectorSandbox_api.service;
   
import cz.cvut.fit.tjv.vectorSandbox_api.domain.Canvas; import cz.cvut.fit.tjv.vectorSandbox_api.domain.Canvas;
import cz.cvut.fit.tjv.vectorSandbox_api.domain.Shape;
import cz.cvut.fit.tjv.vectorSandbox_api.repository.CanvasRepository; import cz.cvut.fit.tjv.vectorSandbox_api.repository.CanvasRepository;
import cz.cvut.fit.tjv.vectorSandbox_api.repository.ShapeRepository;
import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
   
import java.util.Optional;
@Component
public class CanvasServiceImpl extends CrudServiceImpl<Canvas, String >implements CanvasService public class CanvasServiceImpl extends CrudServiceImpl<Canvas, String >implements CanvasService
{ {
private CanvasRepository canvasRepository; private CanvasRepository canvasRepository;
   
public CanvasServiceImpl ( CanvasRepository canvasRepository) { this.canvasRepository = canvasRepository;} private ShapeRepository shapeRepository;
public CanvasServiceImpl ( CanvasRepository canvasRepository, ShapeRepository shapeRepository)
{ this.canvasRepository = canvasRepository;
this.shapeRepository = shapeRepository;}
@Override
public void addShape (String canvasId, long shapeId )
{
Optional<Canvas> optCanvas = canvasRepository.findById(canvasId);
Optional<Shape> optShape = shapeRepository.findById(shapeId);
if ( optCanvas.isEmpty() || optShape.isEmpty())
throw new IllegalArgumentException("invalid ID");
Canvas canvas = optCanvas.get();
Shape shape = optShape.get();
if ( canvas.getShapes().stream().anyMatch(s -> s.getDefinition().equals(shape.getDefinition())))
throw new IllegalArgumentException ( "Canvas already contains shape with exact definition!");
canvas.getShapes().add(shape);
}
   
@Override @Override
protected CrudRepository<Canvas,String> getRepository() {return canvasRepository;} protected CrudRepository<Canvas,String> getRepository() {return canvasRepository;}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment