1 package net.sumaris.core.service.data;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 import com.google.common.base.Preconditions;
27 import net.sumaris.core.dao.data.VesselPositionDao;
28 import net.sumaris.core.dao.data.VesselPositionDao;
29 import net.sumaris.core.dao.technical.SortDirection;
30 import net.sumaris.core.vo.data.VesselPositionVO;
31 import net.sumaris.core.vo.data.VesselPositionVO;
32 import org.apache.commons.collections4.CollectionUtils;
33 import org.slf4j.Logger;
34 import org.slf4j.LoggerFactory;
35 import org.springframework.beans.factory.annotation.Autowired;
36 import org.springframework.stereotype.Service;
37
38 import java.util.List;
39 import java.util.Objects;
40 import java.util.stream.Collectors;
41
42 @Service("vesselPositionService")
43 public class VesselPositionServiceImpl implements VesselPositionService {
44
45 private static final Logger log = LoggerFactory.getLogger(VesselPositionServiceImpl.class);
46
47 @Autowired
48 protected VesselPositionDao vesselPositionDao;
49
50 @Override
51 public List<VesselPositionVO> getAllByOperationId(int operationId, int offset, int size, String sortAttribute,
52 SortDirection sortDirection) {
53 return vesselPositionDao.getAllByOperationId(operationId, offset, size, sortAttribute, sortDirection);
54 }
55
56 @Override
57 public VesselPositionVO get(int vesselPositionId) {
58 return vesselPositionDao.get(vesselPositionId);
59 }
60
61 @Override
62 public VesselPositionVOsitionVO.html#VesselPositionVO">VesselPositionVO save(final VesselPositionVO vesselPosition) {
63 Preconditions.checkNotNull(vesselPosition);
64 Preconditions.checkNotNull(vesselPosition.getDateTime(), "Missing startDateTime");
65 Preconditions.checkNotNull(vesselPosition.getLatitude(), "Missing latitude");
66 Preconditions.checkNotNull(vesselPosition.getLongitude(), "Missing longitude");
67 Preconditions.checkNotNull(vesselPosition.getRecorderDepartment(), "Missing recorderDepartment");
68 Preconditions.checkNotNull(vesselPosition.getRecorderDepartment().getId(), "Missing recorderDepartment.id");
69
70 VesselPositionVO savedVesselPosition = vesselPositionDao.save(vesselPosition);
71
72 return savedVesselPosition;
73 }
74
75 @Override
76 public List<VesselPositionVO> save(List<VesselPositionVO> vesselPositions) {
77 Preconditions.checkNotNull(vesselPositions);
78
79 return vesselPositions.stream()
80 .map(this::save)
81 .collect(Collectors.toList());
82 }
83
84 @Override
85 public void delete(int id) {
86 vesselPositionDao.delete(id);
87 }
88
89 @Override
90 public void delete(List<Integer> ids) {
91 Preconditions.checkNotNull(ids);
92 ids.stream()
93 .filter(Objects::nonNull)
94 .forEach(this::delete);
95 }
96
97 }