1 package fr.ifremer.tutti.persistence.service.util;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import fr.ifremer.adagio.core.dao.administration.user.Person;
26 import fr.ifremer.adagio.core.dao.administration.user.PersonImpl;
27 import fr.ifremer.adagio.core.dao.data.operation.FishingOperation;
28 import fr.ifremer.adagio.core.dao.data.survey.fishingTrip.FishingTrip;
29 import fr.ifremer.adagio.core.dao.data.vessel.feature.person.VesselPersonFeatures;
30 import fr.ifremer.adagio.core.dao.referential.VesselPersonRole;
31 import fr.ifremer.adagio.core.dao.referential.VesselPersonRoleId;
32 import fr.ifremer.adagio.core.dao.referential.VesselPersonRoleImpl;
33 import fr.ifremer.tutti.persistence.service.AbstractPersistenceService;
34 import org.apache.commons.logging.Log;
35 import org.apache.commons.logging.LogFactory;
36 import org.springframework.stereotype.Component;
37
38 import java.util.Date;
39 import java.util.Map;
40
41
42
43
44
45
46
47 @Component("vesselPersonFeaturesPersistenceHelper")
48 public class VesselPersonFeaturesPersistenceHelper extends AbstractPersistenceService {
49
50
51 private static final Log log =
52 LogFactory.getLog(VesselPersonFeaturesPersistenceHelper.class);
53
54 public VesselPersonFeaturesPersistenceHelper() {
55 }
56
57 public VesselPersonRole getScientificCruiseManagerRole() {
58 return load(VesselPersonRoleImpl.class, VesselPersonRoleId.SCIENTIFIC_CRUISE_MANAGER.getValue());
59 }
60
61 public VesselPersonRole getSortRoomManagerRole() {
62 return load(VesselPersonRoleImpl.class, VesselPersonRoleId.SORT_ROOM_MANAGER.getValue());
63 }
64
65 public VesselPersonRole getRecorderPersonRole() {
66 return load(VesselPersonRoleImpl.class, VesselPersonRoleId.RECORDER_PERSON.getValue());
67 }
68
69 public void fillVesselPersonFeatures(Map<Integer, VesselPersonFeatures> vesselPersonFeaturesPerPerson,
70 Integer personId,
71 FishingTrip fishingTrip,
72 VesselPersonRole role,
73 short rankOrder) {
74
75 VesselPersonFeatures vesselPersonFeatures =
76 vesselPersonFeaturesPerPerson.get(personId);
77 if (vesselPersonFeatures == null) {
78
79 PersonImpl person = load(PersonImpl.class, personId);
80
81 if (log.isDebugEnabled()) {
82 log.debug("Create an new vesselPersonFeatures for person: [" + personId + "]" + person.getFirstname() + " - " + person.getLastname());
83 }
84
85 vesselPersonFeatures = VesselPersonFeatures.Factory.newInstance();
86 vesselPersonFeaturesPerPerson.put(personId, vesselPersonFeatures);
87 vesselPersonFeatures.setPerson(person);
88
89 vesselPersonFeatures.setFishingTrip(fishingTrip);
90 vesselPersonFeatures.setStartDate(fishingTrip.getDepartureDateTime());
91 vesselPersonFeatures.setEndDate(fishingTrip.getReturnDateTime());
92 vesselPersonFeatures.setVessel(fishingTrip.getVessel());
93 vesselPersonFeatures.setProgram(fishingTrip.getProgram());
94
95 vesselPersonFeatures.setCreationDate(fishingTrip.getCreationDate());
96 vesselPersonFeatures.setQualityFlag(fishingTrip.getQualityFlag());
97 vesselPersonFeatures.setRankOrder(rankOrder);
98 }
99
100 addRole(role, vesselPersonFeatures);
101 }
102
103 public void fillVesselPersonFeatures(Map<Integer, VesselPersonFeatures> vesselPersonFeaturesPerPerson,
104 Integer personId,
105 FishingOperation fishingOperation,
106 VesselPersonRole role,
107 short rankOrder) {
108
109 VesselPersonFeatures vesselPersonFeatures =
110 vesselPersonFeaturesPerPerson.get(personId);
111 if (vesselPersonFeatures == null) {
112
113 PersonImpl person = load(PersonImpl.class, personId);
114 if (log.isDebugEnabled()) {
115 log.debug("Create an new vesselPersonFeatures for person: [" + personId + "]" + person.getFirstname() + " - " + person.getLastname());
116 }
117
118 vesselPersonFeatures = VesselPersonFeatures.Factory.newInstance();
119 vesselPersonFeaturesPerPerson.put(personId, vesselPersonFeatures);
120 vesselPersonFeatures.setOperation(fishingOperation);
121 vesselPersonFeatures.setPerson(person);
122 vesselPersonFeatures.setStartDate(fishingOperation.getStartDateTime());
123 vesselPersonFeatures.setEndDate(fishingOperation.getEndDateTime());
124 vesselPersonFeatures.setVessel(fishingOperation.getVessel());
125 vesselPersonFeatures.setProgram(fishingOperation.getFishingTrip().getProgram());
126
127 vesselPersonFeatures.setCreationDate(new Date());
128 vesselPersonFeatures.setQualityFlag(fishingOperation.getQualityFlag());
129 vesselPersonFeatures.setRankOrder(rankOrder);
130 }
131
132 addRole(role, vesselPersonFeatures);
133 }
134
135 protected void addRole(VesselPersonRole role,
136 VesselPersonFeatures vesselPersonFeatures) {
137 Person person = vesselPersonFeatures.getPerson();
138 if (vesselPersonFeatures.getVesselPersonRoles().contains(role)) {
139 if (log.isWarnEnabled()) {
140 log.warn("vessel person feature for person: " + person.getId() + " with role: " + role.getName() + " already exist, do not add it twice.");
141 }
142 } else {
143
144
145 if (log.isInfoEnabled()) {
146 log.info("Add vessel person feature for person: " + person.getId() + " with role: " + role.getName());
147 }
148 vesselPersonFeatures.getVesselPersonRoles().add(role);
149
150 }
151 }
152 }