94 |
94 |
import eu.etaxonomy.vaadin.ui.navigation.NavigationEvent;
|
95 |
95 |
import eu.etaxonomy.vaadin.ui.view.DoneWithPopupEvent;
|
96 |
96 |
import eu.etaxonomy.vaadin.ui.view.DoneWithPopupEvent.Reason;
|
|
97 |
import eu.etaxonomy.vaadin.ui.view.PopupView;
|
97 |
98 |
|
98 |
99 |
/**
|
99 |
100 |
* @author a.kohlbecker
|
... | ... | |
340 |
341 |
}
|
341 |
342 |
}
|
342 |
343 |
|
343 |
|
@EventBusListenerMethod
|
344 |
|
public void onDoneWithSpecimenTypeDesignationWorkingsetPopupEditor(DoneWithPopupEvent event) throws RegistrationValidationException{
|
345 |
|
if(event.getPopup() instanceof SpecimenTypeDesignationWorkingsetPopupEditor){
|
346 |
|
if(event.getReason().equals(Reason.SAVE)){
|
347 |
|
refreshView(true);
|
348 |
|
}
|
349 |
|
}
|
350 |
|
}
|
351 |
|
|
352 |
344 |
@EventBusListenerMethod(filter = EditorActionTypeFilter.Edit.class)
|
353 |
345 |
public void onRegistrationEditorAction(RegistrationEditorAction event) {
|
354 |
346 |
|
... | ... | |
423 |
415 |
* @throws RegistrationValidationException
|
424 |
416 |
*/
|
425 |
417 |
@EventBusListenerMethod
|
426 |
|
public void onDoneWithTaxonnameEditor(DoneWithPopupEvent event) throws RegistrationValidationException{
|
|
418 |
public void onDoneWithTaxonnameEditor(DoneWithPopupEvent event) {
|
427 |
419 |
if(event.getPopup() instanceof TaxonNamePopupEditor){
|
|
420 |
Registration registration = null;
|
|
421 |
boolean doRefreshView = false;
|
428 |
422 |
if(newNameForRegistrationPopupEditor != null && event.getPopup().equals(newNameForRegistrationPopupEditor)){
|
429 |
423 |
if(event.getReason().equals(Reason.SAVE)){
|
430 |
424 |
try {
|
431 |
425 |
TaxonName taxonName = newNameForRegistrationPopupEditor.getBean().cdmEntity();
|
432 |
|
registrationWorkflowService.createRegistration(taxonName, newNameBlockingRegistrations);
|
|
426 |
registration = registrationWorkflowService.createRegistration(taxonName, newNameBlockingRegistrations);
|
433 |
427 |
loadWorkingSet(workingset.getCitationUuid());
|
434 |
|
refreshView(true);
|
435 |
|
getView().getAddNewNameRegistrationButton().setEnabled(true);
|
436 |
428 |
} finally {
|
437 |
429 |
clearSession();
|
438 |
|
refreshView(true);
|
|
430 |
doRefreshView = true;
|
439 |
431 |
getView().getAddNewNameRegistrationButton().setEnabled(true);
|
440 |
432 |
}
|
441 |
433 |
}
|
... | ... | |
443 |
435 |
newNameForRegistrationPopupEditor = null;
|
444 |
436 |
newNameBlockingRegistrations.clear();
|
445 |
437 |
getView().getAddNewNameRegistrationButton().setEnabled(true);
|
446 |
|
} else {
|
447 |
|
refreshView(true);
|
448 |
438 |
}
|
|
439 |
|
|
440 |
if(registration == null){
|
|
441 |
// no new registration has been created above, so there must be an existing one.
|
|
442 |
registration = findRegistrationInContext(event.getPopup());
|
|
443 |
}
|
|
444 |
|
|
445 |
// Check if the other names used in the context of the name are registered yet.
|
|
446 |
TaxonNamePopupEditor nameEditor = (TaxonNamePopupEditor)event.getPopup();
|
|
447 |
Set<TaxonName> namesToCheck = new HashSet<>();
|
|
448 |
|
|
449 |
namesToCheck.addAll(nameEditor.getBasionymComboboxSelect().getValue());
|
|
450 |
namesToCheck.addAll(nameEditor.getReplacedSynonymsComboboxSelect().getValue());
|
|
451 |
namesToCheck.add(nameEditor.getValidationField().getRelatedNameComboBox().getValue());
|
|
452 |
namesToCheck.add(nameEditor.getOrthographicVariantField().getRelatedNameComboBox().getValue());
|
|
453 |
|
|
454 |
for(TaxonName name : namesToCheck){
|
|
455 |
if(name != null){
|
|
456 |
doRefreshView |= registrationWorkflowService.addBlockingRegistration(name.getUuid(), registration) != null;
|
|
457 |
}
|
|
458 |
}
|
|
459 |
|
|
460 |
refreshView(doRefreshView);
|
449 |
461 |
}
|
450 |
462 |
}
|
451 |
463 |
|
... | ... | |
605 |
617 |
}
|
606 |
618 |
} else if(event.getPopup() instanceof NameTypeDesignationPopupEditor){
|
607 |
619 |
if(event.getReason().equals(Reason.SAVE)){
|
|
620 |
|
|
621 |
Registration registration = null;
|
|
622 |
boolean doRefreshView = false;
|
|
623 |
|
608 |
624 |
UUID typeDesignationUuid = ((NameTypeDesignationPopupEditor)event.getPopup()).getBean().getUuid();
|
609 |
625 |
|
610 |
626 |
try {
|
611 |
627 |
clearSession();
|
612 |
|
Stack<EditorActionContext>context = ((AbstractPopupEditor)event.getPopup()).getEditorActionContext();
|
613 |
|
Registration registration = findRegistrationInContext(context);
|
614 |
628 |
getRepo().getSession().clear();
|
615 |
629 |
registrationWorkflowService.addTypeDesignation(typeDesignationUuid, registration);
|
616 |
630 |
nameTypeDesignationPopupEditorRegistrationUUIDMap.remove(event.getPopup());
|
617 |
631 |
} finally {
|
618 |
632 |
clearSession();
|
619 |
|
refreshView(true);
|
|
633 |
doRefreshView = true;
|
|
634 |
}
|
|
635 |
|
|
636 |
if(registration == null){
|
|
637 |
// no new registration has been created above, so there must be an existing one.
|
|
638 |
registration = findRegistrationInContext(event.getPopup());
|
|
639 |
}
|
|
640 |
|
|
641 |
// Check if the other names used in the context of the name are registered yet.
|
|
642 |
NameTypeDesignationPopupEditor nameEditor = (NameTypeDesignationPopupEditor)event.getPopup();
|
|
643 |
Set<TaxonName> namesToCheck = new HashSet<>();
|
|
644 |
|
|
645 |
namesToCheck.add(nameEditor.getTypeNameField().getValue());
|
|
646 |
|
|
647 |
for(TaxonName name : namesToCheck){
|
|
648 |
if(name != null){
|
|
649 |
doRefreshView |= registrationWorkflowService.addBlockingRegistration(name.getUuid(), registration) != null;
|
|
650 |
}
|
|
651 |
|
620 |
652 |
}
|
|
653 |
|
|
654 |
refreshView(doRefreshView);
|
|
655 |
|
621 |
656 |
} else if(event.getReason().equals(Reason.CANCEL)){
|
622 |
657 |
// noting to do
|
623 |
658 |
}
|
... | ... | |
719 |
754 |
}
|
720 |
755 |
}
|
721 |
756 |
|
|
757 |
public Registration findRegistrationInContext(PopupView popupView) {
|
|
758 |
Stack<EditorActionContext>context = ((AbstractPopupEditor)popupView).getEditorActionContext();
|
|
759 |
return findRegistrationInContext(context);
|
|
760 |
}
|
722 |
761 |
/**
|
723 |
762 |
* Finds the Registration in the EditorContext stack
|
724 |
763 |
*
|
ref #8050 creating blocking registrations for exising names which are used in the context of another registration