+ @Override
+ public void merge() {
+
+ }
+
+ @Override
+ protected TaxonName loadEntity(UUID entityUuid) {
+ List<String> propertyPaths = Arrays.asList(new String[]{});
+ return CdmStore.getService(INameService.class).load(entityUuid, getPropertyPaths());
+ }
+ @Override
+ public void addSaveCandidate(TaxonName name){
+ if (!name.getHybridChildRelations().isEmpty()){
+ for (HybridRelationship rel: name.getHybridChildRelations()){
+ if (!rel.getParentName().isPersited()){
+ super.addSaveCandidate(rel.getParentName());
+ }
+ if (!rel.getHybridName().isPersited()){
+ super.addSaveCandidate(rel.getHybridName());
+ }
+ }
+ }
+
+ super.addSaveCandidate(name);
+ }
+
+
+ private List<String> getPropertyPaths(){
+ List<String> nameBasePropertyPaths = Arrays.asList(new String[] {
+ "name.descriptions",
+ "name.typeDesignations",
+ "name.status",
+ "name.nomenclaturalReference.inReference",
+ "name.taxonBases.taxonNodes",
+ "name.relationsFromThisName",
+ "name.relationsToThisName",
+ "name.homotypicalGroup.typifiedNames.taxonBases.synonyms.synonym.name.status",
+ "name.homotypicalGroup.typifiedNames.relationsToThisName.fromName"});
+
+ return nameBasePropertyPaths;
+ }