18 |
18 |
import java.util.ArrayList;
|
19 |
19 |
import java.util.Calendar;
|
20 |
20 |
import java.util.Collection;
|
|
21 |
import java.util.HashSet;
|
21 |
22 |
import java.util.LinkedHashMap;
|
22 |
23 |
import java.util.List;
|
23 |
24 |
import java.util.Map;
|
... | ... | |
624 |
625 |
public IStatus run(IProgressMonitor monitor) {
|
625 |
626 |
// run the monitor until the operation is finished
|
626 |
627 |
SubMonitor subMonitor = SubMonitor.convert(monitor, 100);
|
627 |
|
// subMonitor.beginTask("Start", 100);
|
|
628 |
|
628 |
629 |
|
629 |
630 |
IRemotingProgressMonitor remotingMonitor;
|
630 |
631 |
try {
|
... | ... | |
642 |
643 |
// collect reports
|
643 |
644 |
// for(String report : remotingMonitor.getResult()) {
|
644 |
645 |
createResult(label, showResult, remotingMonitor);
|
645 |
|
updateNameEditors(remotingMonitor);
|
646 |
|
refreshNavigator();
|
|
646 |
Set<Taxon> taxaToUpdate = getTaxaToUpdate(remotingMonitor);
|
|
647 |
updateNameEditors(taxaToUpdate);
|
|
648 |
if (!taxaToUpdate.isEmpty()){
|
|
649 |
refreshNavigator();
|
|
650 |
}
|
647 |
651 |
return Status.OK_STATUS;
|
648 |
652 |
}
|
649 |
653 |
|
650 |
654 |
|
651 |
655 |
|
|
656 |
private Set<Taxon> getTaxaToUpdate(IRemotingProgressMonitor remotingMonitor) {
|
|
657 |
Set<Taxon> taxaToUpdate = new HashSet<>();
|
|
658 |
if (remotingMonitor.getResult() instanceof UpdateResult){
|
|
659 |
for (CdmBase object: ((UpdateResult)remotingMonitor.getResult()).getUpdatedObjects()){
|
|
660 |
Taxon taxon = null;
|
|
661 |
|
|
662 |
if (object instanceof Taxon){
|
|
663 |
taxon = HibernateProxyHelper.deproxy(object, Taxon.class);
|
|
664 |
|
|
665 |
|
|
666 |
}else if (object instanceof Synonym){
|
|
667 |
Synonym syn = HibernateProxyHelper.deproxy(object, Synonym.class);
|
|
668 |
taxon = syn.getAcceptedTaxon();
|
|
669 |
}
|
|
670 |
|
|
671 |
taxaToUpdate.add(taxon);
|
|
672 |
}
|
|
673 |
}else if (remotingMonitor.getResult() instanceof ImportResult){
|
|
674 |
Map<String, Integer> result = ((ImportResult)remotingMonitor.getResult()).getUpdatedRecords();
|
|
675 |
for (Map.Entry<String, Integer> object: result.entrySet()){
|
|
676 |
Taxon taxon = null;
|
|
677 |
if (object instanceof Taxon){
|
|
678 |
taxon = HibernateProxyHelper.deproxy(object, Taxon.class);
|
|
679 |
}else if (object instanceof Synonym){
|
|
680 |
Synonym syn = HibernateProxyHelper.deproxy(object, Synonym.class);
|
|
681 |
taxon = syn.getAcceptedTaxon();
|
|
682 |
}
|
|
683 |
taxaToUpdate.add(taxon);
|
|
684 |
}
|
|
685 |
|
|
686 |
}
|
|
687 |
return taxaToUpdate;
|
|
688 |
}
|
|
689 |
|
|
690 |
|
|
691 |
|
652 |
692 |
private void refreshNavigator() {
|
653 |
693 |
EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAVIGATOR, true);
|
654 |
694 |
|
... | ... | |
810 |
850 |
}
|
811 |
851 |
}
|
812 |
852 |
}
|
813 |
|
public static void updateNameEditors(IRemotingProgressMonitor remotingMonitor){
|
814 |
|
List<Taxon> taxaToUpdate = new ArrayList();
|
815 |
|
if (remotingMonitor.getResult() instanceof UpdateResult){
|
816 |
|
for (CdmBase object: ((UpdateResult)remotingMonitor.getResult()).getUpdatedObjects()){
|
817 |
|
Taxon taxon = null;
|
818 |
|
|
819 |
|
if (object instanceof Taxon){
|
820 |
|
taxon = HibernateProxyHelper.deproxy(object, Taxon.class);
|
821 |
|
|
822 |
|
|
823 |
|
}else if (object instanceof Synonym){
|
824 |
|
Synonym syn = HibernateProxyHelper.deproxy(object, Synonym.class);
|
825 |
|
taxon = syn.getAcceptedTaxon();
|
826 |
|
}
|
827 |
|
taxaToUpdate.add(taxon);
|
828 |
|
}
|
829 |
|
}else if (remotingMonitor.getResult() instanceof ImportResult){
|
830 |
|
Map<String, Integer> result = ((ImportResult)remotingMonitor.getResult()).getUpdatedRecords();
|
831 |
|
for (Map.Entry<String, Integer> object: result.entrySet()){
|
832 |
|
//TODO
|
833 |
|
}
|
834 |
|
}
|
835 |
|
|
836 |
|
|
|
853 |
public static void updateNameEditors(Set<Taxon> taxaToUpdate){
|
837 |
854 |
EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAME_EDITOR, taxaToUpdate);
|
838 |
855 |
}
|
839 |
856 |
|
code cleaning and fix potential null pointer