Project

General

Profile

« Previous | Next » 

Revision 8af7fcc2

Added by Andreas Kohlbecker about 5 years ago

ref #8050 creating blocking registrations for exising names which are used in the context of another registration

View differences:

src/main/java/eu/etaxonomy/cdm/service/RegistrationWorkflowService.java
21 21
import eu.etaxonomy.cdm.api.service.dto.RegistrationDTO;
22 22
import eu.etaxonomy.cdm.api.service.dto.RegistrationWorkingSet;
23 23
import eu.etaxonomy.cdm.api.service.exception.RegistrationValidationException;
24
import eu.etaxonomy.cdm.api.service.idminter.RegistrationIdentifierMinter;
24 25
import eu.etaxonomy.cdm.model.name.Registration;
25 26
import eu.etaxonomy.cdm.model.name.TaxonName;
26 27
import eu.etaxonomy.cdm.model.reference.Reference;
......
40 41
    @Qualifier("cdmRepository")
41 42
    private CdmRepository repo;
42 43

  
44
    @Autowired
45
    private RegistrationIdentifierMinter minter;
46

  
43 47
    private CdmRepository getRepo() {
44 48
        return repo;
45 49
    }
......
109 113
     * @param registration
110 114
     */
111 115
    @Override
112
    public void addBlockingRegistration(UUID taxonNameUUID, Registration registration) {
113
        Registration blockingRegistration = getRepo().getRegistrationService().createRegistrationForName(taxonNameUUID);
114
        reloadRegistration(registration);
115
        registration.getBlockedBy().add(blockingRegistration);
116
        if(registration.isPersited()){
117
            getRepo().getRegistrationService().saveOrUpdate(registration);
118
            logger.debug("Blocking registration created, added to registion and persited");
116
    public Registration addBlockingRegistration(UUID nameUUID, Registration registration) {
117

  
118
        TaxonName name = getRepo().getNameService().load(nameUUID);
119

  
120
        boolean registrationExists = false;
121
        for(Registration regForName : name.getRegistrations()){
122
            if(minter.identifierPattern().matcher(regForName.getIdentifier()).matches()){
123
                registrationExists = true;
124
                break;
125
            }
126
        }
127

  
128
        if(!registrationExists){
129
            Registration blockingRegistration = getRepo().getRegistrationService().createRegistrationForName(nameUUID);
130
            reloadRegistration(registration);
131
            registration.getBlockedBy().add(blockingRegistration);
132
            if(registration.isPersited()){
133
                getRepo().getRegistrationService().saveOrUpdate(registration);
134
                logger.debug("Blocking registration created, added to registion and persited");
135
            }
136
            return blockingRegistration;
119 137
        }
138
        return null;
120 139
    }
121 140

  
122 141
    /**

Also available in: Unified diff