Revision 5df69434
Added by Katja Luther about 8 years ago
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/AgentServiceImpl.java | ||
---|---|---|
173 | 173 |
|
174 | 174 |
@Override |
175 | 175 |
@Transactional(readOnly = false) |
176 |
public Person convertTeam2Person(UUID teamUuid) throws MergeException {
|
|
176 |
public UpdateResult convertTeam2Person(UUID teamUuid) throws MergeException {
|
|
177 | 177 |
Team team = CdmBase.deproxy(dao.load(teamUuid), Team.class); |
178 | 178 |
return convertTeam2Person(team); |
179 | 179 |
} |
180 | 180 |
|
181 | 181 |
@Override |
182 |
public Person convertTeam2Person(Team team) throws MergeException { |
|
183 |
Person result = null; |
|
182 |
public UpdateResult convertTeam2Person(Team team) throws MergeException { |
|
183 |
UpdateResult result = new UpdateResult(); |
|
184 |
Person newPerson = null; |
|
184 | 185 |
team = CdmBase.deproxy(team, Team.class); |
185 | 186 |
if (team.getTeamMembers().size() > 1){ |
186 | 187 |
throw new IllegalArgumentException("Team must not have more than 1 member to be convertable into a person"); |
187 | 188 |
}else if (team.getTeamMembers().size() == 1){ |
188 |
result = team.getTeamMembers().get(0);
|
|
189 |
newPerson = team.getTeamMembers().get(0);
|
|
189 | 190 |
IMergeStrategy strategy = DefaultMergeStrategy.NewInstance(TeamOrPersonBase.class); |
190 | 191 |
strategy.setDefaultCollectionMergeMode(MergeMode.FIRST); |
191 |
genericDao.merge(result, team, strategy);
|
|
192 |
genericDao.merge(newPerson, team, strategy);
|
|
192 | 193 |
}else if (team.getTeamMembers().isEmpty()){ |
193 |
result = Person.NewInstance();
|
|
194 |
genericDao.save(result);
|
|
194 |
newPerson = Person.NewInstance();
|
|
195 |
genericDao.save(newPerson);
|
|
195 | 196 |
IMergeStrategy strategy = DefaultMergeStrategy.NewInstance(TeamOrPersonBase.class); |
196 | 197 |
strategy.setDefaultMergeMode(MergeMode.SECOND); |
197 | 198 |
strategy.setDefaultCollectionMergeMode(MergeMode.SECOND); |
198 |
genericDao.merge(result, team, strategy);
|
|
199 |
genericDao.merge(newPerson, team, strategy);
|
|
199 | 200 |
}else{ |
200 | 201 |
throw new IllegalStateException("Unhandled state of team members collection"); |
201 | 202 |
} |
202 |
|
|
203 |
result.setCdmEntity(newPerson); |
|
203 | 204 |
return result; |
204 | 205 |
} |
205 | 206 |
|
206 | 207 |
@Override |
207 | 208 |
@Transactional(readOnly = false) |
208 |
public Team convertPerson2Team(UUID personUuid) throws MergeException, IllegalArgumentException {
|
|
209 |
public UpdateResult convertPerson2Team(UUID personUuid) throws MergeException, IllegalArgumentException {
|
|
209 | 210 |
Person person = CdmBase.deproxy(dao.load(personUuid), Person.class); |
210 | 211 |
return convertPerson2Team(person); |
211 | 212 |
} |
212 | 213 |
|
213 | 214 |
@Override |
214 |
public Team convertPerson2Team(Person person) throws MergeException, IllegalArgumentException { |
|
215 |
Team team = Team.NewInstance(); |
|
215 |
public UpdateResult convertPerson2Team(Person person) throws MergeException, IllegalArgumentException { |
|
216 |
UpdateResult result = new UpdateResult(); |
|
217 |
Team team = Team.NewInstance(); |
|
216 | 218 |
ConvertMergeStrategy strategy = ConvertMergeStrategy.NewInstance(TeamOrPersonBase.class); |
217 | 219 |
strategy.setDefaultMergeMode(MergeMode.SECOND); |
218 | 220 |
strategy.setDefaultCollectionMergeMode(MergeMode.SECOND); |
... | ... | |
235 | 237 |
} catch (Exception e) { |
236 | 238 |
throw new MergeException("Unhandled merge exception", e); |
237 | 239 |
} |
238 |
return team; |
|
240 |
result.setCdmEntity(team); |
|
241 |
return result; |
|
239 | 242 |
} |
240 | 243 |
|
241 | 244 |
|
Also available in: Unified diff
minor