Project

General

Profile

« Previous | Next » 

Revision 10cc0e5e

Added by Cherian Mathew almost 9 years ago

NewTaxonBaseComposite : add exception handling when name already exists
StatusComposite : added tab sheet with main / excluded tabs
CdmQueryFactory, LeafNodeTaxonContainer : added rank filter for ranks below species aggregate
NewTaxonBasePresenter : added check if name exists
NewTaxonBasePresenterTest (.xml) : corrected data for valid names and added test for name check
CdmVaadinOperation : added method to set exception

View differences:

src/main/java/eu/etaxonomy/cdm/vaadin/component/NewTaxonBaseComposite.java
180 180
                    }
181 181
                } catch (EmptyValueException e) {
182 182
                    Notification notification = new Notification("Invalid input", "Neither Name or Secundum can be empty", Type.WARNING_MESSAGE);
183
                    notification.setDelayMsec(2000);
184 183
                    notification.show(Page.getCurrent());
185 184
                    return;
186 185
                }
187 186

  
188 187
                CdmVaadinUtilities.setEnabled(mainLayout, false, null);
189 188

  
190
                CdmVaadinUtilities.exec(new CdmVaadinOperation(1000, cdmProgressComponent) {
189
                CdmVaadinUtilities.exec(new CdmVaadinOperation(500, cdmProgressComponent) {
191 190
                    @Override
192 191
                    public boolean execute() {
193 192
                        setProgress("Saving Taxon " + nameTextField.getValue());
194 193
                        IdUuidName taxonBaseIdUuid;
195 194
                        boolean newTaxon = false;
196
                        if(accTaxonIun == null) {
197
                            taxonBaseIdUuid = listener.newTaxon(nameTextField.getValue(),accTaxonSecComboBox.getValue(), classificationIun.getUuid());
198
                            newTaxon = true;
199
                        } else {
200
                            taxonBaseIdUuid = listener.newSynonym(nameTextField.getValue(),
201
                                    accTaxonSecComboBox.getValue(),
202
                                    accTaxonSecComboBox.getValue(),
203
                                    accTaxonIun.getUuid());
204
                            newTaxon = false;
195
                        try {
196
                            if(accTaxonIun == null) {
197
                                taxonBaseIdUuid = listener.newTaxon(nameTextField.getValue(),accTaxonSecComboBox.getValue(), classificationIun.getUuid());
198
                                newTaxon = true;
199
                            } else {
200
                                taxonBaseIdUuid = listener.newSynonym(nameTextField.getValue(),
201
                                        accTaxonSecComboBox.getValue(),
202
                                        accTaxonSecComboBox.getValue(),
203
                                        accTaxonIun.getUuid());
204
                                newTaxon = false;
205
                            }
206
                            Object rowId = new RowId(taxonBaseIdUuid.getId());
207
                            registerDelayedEvent(new CdmChangeEvent(Action.Create, Arrays.asList(rowId, newTaxon), NewTaxonBaseComposite.this));
208
                        } catch (IllegalArgumentException iae) {
209
                            setException(iae);
210
                            return false;
205 211
                        }
206
                        Object rowId = new RowId(taxonBaseIdUuid.getId());
207
                        registerDelayedEvent(new CdmChangeEvent(Action.Create, Arrays.asList(rowId, newTaxon), NewTaxonBaseComposite.this));
208 212
                        return true;
209 213
                    }
210 214

  
src/main/java/eu/etaxonomy/cdm/vaadin/component/StatusComposite.java
47 47
import com.vaadin.ui.Label;
48 48
import com.vaadin.ui.Notification;
49 49
import com.vaadin.ui.Notification.Type;
50
import com.vaadin.ui.TabSheet;
50 51
import com.vaadin.ui.Table;
51 52
import com.vaadin.ui.Table.ColumnHeaderMode;
52 53
import com.vaadin.ui.Table.TableDragMode;
......
82 83
    @AutoGenerated
83 84
    private Label inViewLabel;
84 85
    @AutoGenerated
85
    private TreeTable taxaTreeTable;
86
    private TabSheet taxaTabSheet;
86 87
    @AutoGenerated
87 88
    private HorizontalLayout searchHorizontalLayout;
88 89
    @AutoGenerated
......
100 101
    private static final Logger logger = Logger.getLogger(StatusComposite.class);
101 102
    private StatusComponentListener listener;
102 103

  
103

  
104
    private TreeTable mainTaxaTreeTable, excludedTaxaTreeTable;
104 105

  
105 106

  
106 107
    private static final String SELECT_CLASSIFICATION = "Select classification ...";
......
149 150

  
150 151
        this.listener = new StatusPresenter();
151 152
        CdmVaadinSessionUtilities.getCurrentCdmDataChangeService().register(this);
152
        addUIListeners();
153 153

  
154
        initSearchTextField();
155
        initClearSearchButton();
156
        setEnabledAll(false);
154

  
155

  
157 156

  
158 157
        init();
158

  
159
        addUIListeners();
159 160
    }
160 161

  
161 162

  
......
174 175
    }
175 176

  
176 177
    public void init() {
178
        initSearchTextField();
179
        initClearSearchButton();
180
        initTaxaTabSheet();
177 181
        initClassificationComboBox();
182

  
183
        setEnabledAll(false);
178 184
        setExpandRatios();
179 185
    }
180 186

  
......
188 194

  
189 195
    public void setEnabledAll(boolean enabled) {
190 196
        CdmVaadinUtilities.setEnabled(mainLayout, enabled, Arrays.asList(classificationComboBox));
197
        taxaTabSheet.getTab(mainTaxaTreeTable).setEnabled(enabled);
198
        taxaTabSheet.getTab(excludedTaxaTreeTable).setEnabled(enabled);
191 199
    }
192 200

  
193 201

  
194 202
    public TreeTable getTaxaTreeTable() {
195
        return taxaTreeTable;
203
        return mainTaxaTreeTable;
196 204
    }
197 205

  
198 206
    public LeafNodeTaxonContainer getTaxonContainer() {
......
200 208
    }
201 209

  
202 210
    public void clearTaxaTableSelections() {
203
        taxaTreeTable.setValue(null);
211
        mainTaxaTreeTable.setValue(null);
204 212
    }
205 213

  
206 214
    public UUID getSelectedClassificationUuid() {
......
210 218
        return null;
211 219
    }
212 220

  
213
    private void initTaxaTable() {
214
        taxaTreeTable.setSelectable(true);
215
        taxaTreeTable.setImmediate(true);
216
        taxaTreeTable.setDragMode(TableDragMode.ROW);
221
    private void initMainTaxaTable() {
222
        mainTaxaTreeTable.setSelectable(true);
223
        mainTaxaTreeTable.setImmediate(true);
224
        mainTaxaTreeTable.setDragMode(TableDragMode.ROW);
217 225

  
218
        taxaTreeTable.setColumnExpandRatio(LeafNodeTaxonContainer.NAME_ID, 1);
219
        taxaTreeTable.setColumnWidth(LeafNodeTaxonContainer.PB_ID, 25);
226
        mainTaxaTreeTable.setColumnExpandRatio(LeafNodeTaxonContainer.NAME_ID, 1);
227
        mainTaxaTreeTable.setColumnWidth(LeafNodeTaxonContainer.PB_ID, 25);
220 228

  
221 229

  
222
        taxaTreeTable.addGeneratedColumn(LeafNodeTaxonContainer.PB_ID, new TaxonTableCheckBoxGenerator());
230
        mainTaxaTreeTable.addGeneratedColumn(LeafNodeTaxonContainer.PB_ID, new TaxonTableCheckBoxGenerator());
223 231

  
224
        taxaTreeTable.setCellStyleGenerator(new Table.CellStyleGenerator() {
232
        mainTaxaTreeTable.setCellStyleGenerator(new Table.CellStyleGenerator() {
225 233

  
226 234
            @Override
227 235
            public String getStyle(Table source, Object itemId, Object propertyId) {
......
239 247
        });
240 248

  
241 249
        taxaTableContextMenu = new ContextMenu();
242
        taxaTableContextMenu.setAsContextMenuOf(taxaTreeTable);
250
        taxaTableContextMenu.setAsContextMenuOf(mainTaxaTreeTable);
243 251
        addTaxaTreeContextMenuItemListener();
244 252
        isTaxaTableInitialised = true;
245 253
    }
246 254

  
247 255
    private void refreshTaxaTable(int classificationId) {
248 256
        if(!isTaxaTableInitialised) {
249
            initTaxaTable();
257
            initMainTaxaTable();
250 258
        }
251 259

  
252 260
        try {
......
254 262
            // second argument, since this method is taken from the Table class and
255 263
            // hence the container strategy is not set to null, implying that the old
256 264
            // preorder list is not cleaned up - potential bug in the tree table api ?
257
            taxaTreeTable.setContainerDataSource(listener.loadTaxa(classificationId));
258
            taxaTreeTable.setVisibleColumns(LeafNodeTaxonContainer.NAME_ID, LeafNodeTaxonContainer.PB_ID);
265
            mainTaxaTreeTable.setContainerDataSource(listener.loadTaxa(classificationId));
266
            mainTaxaTreeTable.setVisibleColumns(LeafNodeTaxonContainer.NAME_ID, LeafNodeTaxonContainer.PB_ID);
259 267
        } catch (SQLException e) {
260 268
            //TODO : throw up warning dialog
261 269
            e.printStackTrace();
......
264 272
        // reset it to the name column else the sort is not performed
265 273
        // since the sort property id has not changed - potential bug
266 274
        // in the tree table api ?
267
        taxaTreeTable.setSortContainerPropertyId(null);
268
        taxaTreeTable.setSortContainerPropertyId(LeafNodeTaxonContainer.NAME_ID);
275
        mainTaxaTreeTable.setSortContainerPropertyId(null);
276
        mainTaxaTreeTable.setSortContainerPropertyId(LeafNodeTaxonContainer.NAME_ID);
269 277
        updateInViewLabel();
270 278

  
271 279
    }
......
287 295
        }
288 296
    }
289 297

  
298
    private void initTaxaTabSheet() {
299
        mainTaxaTreeTable = buildTaxaTreeTable();
300
        mainTaxaTreeTable.setCaption("Main");
301

  
302
        excludedTaxaTreeTable = buildTaxaTreeTable();
303
        excludedTaxaTreeTable.setCaption("Excluded");
304

  
305
        taxaTabSheet.addComponent(mainTaxaTreeTable);
306
        taxaTabSheet.addComponent(excludedTaxaTreeTable);
307
    }
308

  
290 309
    private void initFilterTable() {
291 310
        filterTable.setNullSelectionAllowed(false);
292 311
        final IndexedContainer container = new IndexedContainer();
......
391 410

  
392 411
                    setEnabledAll(false);
393 412
                    filterTable.setReadOnly(true);
394
                    taxaTreeTable.setSelectable(false);
413
                    mainTaxaTreeTable.setSelectable(false);
395 414

  
396 415
                    CdmVaadinUtilities.exec(new CdmVaadinOperation(100, null) {
397 416

  
......
407 426
                            initFilterTable();
408 427
                            setEnabledAll(true);
409 428
                            filterTable.setReadOnly(false);
410
                            taxaTreeTable.setSelectable(true);
429
                            mainTaxaTreeTable.setSelectable(true);
411 430
                        }
412 431
                    });
413 432

  
......
419 438

  
420 439
    private void addTaxaTreeTableListener() {
421 440

  
422
        taxaTreeTable.addValueChangeListener(new ValueChangeListener() {
441
        mainTaxaTreeTable.addValueChangeListener(new ValueChangeListener() {
423 442

  
424 443
            @Override
425 444
            public void valueChange(ValueChangeEvent event) {
426
                Object itemId = taxaTreeTable.getValue();
445
                Object itemId = mainTaxaTreeTable.getValue();
427 446
                Object taxonIun = null;
428
                if(taxaTreeTable.isSelectable() && itemId != null) {
447
                if(mainTaxaTreeTable.isSelectable() && itemId != null) {
429 448
                    boolean isSynonym = listener.isSynonym(itemId);
430 449
                    if(!isSynonym) {
431 450
                        UUID taxonUuid = listener.getCurrentLeafNodeTaxonContainer().getUuid(itemId);
......
439 458
            }
440 459
        });
441 460

  
442
        taxaTreeTable.addItemClickListener(new ItemClickListener() {
461
        mainTaxaTreeTable.addItemClickListener(new ItemClickListener() {
443 462
            @Override
444 463
            public void itemClick(ItemClickEvent event) {
445 464
                Object itemId = event.getItemId();
446
                if(taxaTreeTable.isSelectable() && itemId != null) {
465
                if(mainTaxaTreeTable.isSelectable() && itemId != null) {
447 466
                    boolean isSynonym = listener.isSynonym(itemId);
448
                    taxaTreeTable.setValue(itemId);
467
                    mainTaxaTreeTable.setValue(itemId);
449 468
                    generateTaxaTreeTableContextMenu(isSynonym);
450 469
                }
451 470
            }
......
523 542
            IdUuidName accTaxonIdUuid = null;
524 543
            String accTaxonName = null;
525 544
            if(action.equals(CREATE_SYNONYM)) {
526
                selectedItemId = taxaTreeTable.getValue();
545
                selectedItemId = mainTaxaTreeTable.getValue();
527 546

  
528 547
                // if a synonym is selected then throw warning
529 548
                if(listener.isSynonym(selectedItemId)) {
......
685 704
                // filter in only the newly created taxon and select it
686 705
                clearDynamicFilters();
687 706
                listener.setIdFilter(itemId);
688
                taxaTreeTable.setValue(itemId);
707
                mainTaxaTreeTable.setValue(itemId);
689 708
            } else {
690 709
                // after creating a new synonym we expand the selected taxon
691 710
                // and select the newly created synonym
692
                taxaTreeTable.setCollapsed(taxaTreeTable.getValue(), false);
711
                mainTaxaTreeTable.setCollapsed(mainTaxaTreeTable.getValue(), false);
693 712
                listener.refresh();
694
                taxaTreeTable.setValue(itemId);
713
                mainTaxaTreeTable.setValue(itemId);
695 714
            }
696 715

  
697 716
        }
......
724 743

  
725 744
    }
726 745

  
746
    private TreeTable buildTaxaTreeTable() {
747
        TreeTable taxaTreeTable = new TreeTable();
748
        taxaTreeTable.setImmediate(false);
749
        taxaTreeTable.setWidth("100.0%");
750
        taxaTreeTable.setHeight("100.0%");
751
        return taxaTreeTable;
752
    }
753

  
727 754
    @AutoGenerated
728 755
    private GridLayout buildMainLayout() {
729 756
        // common part: create layout
......
756 783
        mainLayout.addComponent(searchHorizontalLayout, 0, 2);
757 784
        mainLayout.setComponentAlignment(searchHorizontalLayout, new Alignment(48));
758 785

  
759
        // taxaTreeTable
760
        taxaTreeTable = new TreeTable();
761
        taxaTreeTable.setImmediate(false);
762
        taxaTreeTable.setWidth("100.0%");
763
        taxaTreeTable.setHeight("100.0%");
764
        mainLayout.addComponent(taxaTreeTable, 0, 3);
765
        mainLayout.setComponentAlignment(taxaTreeTable, new Alignment(20));
786
        // taxaTabSheet
787
        taxaTabSheet = new TabSheet();
788
        taxaTabSheet.setImmediate(false);
789
        taxaTabSheet.setWidth("100.0%");
790
        taxaTabSheet.setHeight("100.0%");
791
        mainLayout.addComponent(taxaTabSheet, 0, 3);
792
        mainLayout.setComponentAlignment(taxaTabSheet, new Alignment(20));
766 793

  
767 794
        // inViewLabel
768 795
        inViewLabel = new Label();
......
814 841
        searchHorizontalLayout = new HorizontalLayout();
815 842
        searchHorizontalLayout.setImmediate(false);
816 843
        searchHorizontalLayout.setWidth("100.0%");
817
        searchHorizontalLayout.setHeight("100.0%");
844
        searchHorizontalLayout.setHeight("-1px");
818 845
        searchHorizontalLayout.setMargin(false);
819 846
        searchHorizontalLayout.setSpacing(true);
820 847

  
src/main/java/eu/etaxonomy/cdm/vaadin/container/LeafNodeTaxonContainer.java
30 30
import com.vaadin.data.util.sqlcontainer.RowId;
31 31
import com.vaadin.data.util.sqlcontainer.RowItem;
32 32

  
33
import eu.etaxonomy.cdm.model.name.Rank;
33 34
import eu.etaxonomy.cdm.vaadin.util.CdmQueryFactory;
34 35

  
35 36
/**
......
79 80
        initFilters();
80 81
        addContainerFilter(classificationFilter);
81 82
        enableCacheFlushNotifications();
82
        //addContainerFilter(rankFilter);
83
        addContainerFilter(rankFilter);
83 84
    }
84 85

  
85 86
    private void initFilters() {
......
88 89
        //unfFilter = new Compare.Equal(StatusPresenter.FN_ID, false);
89 90
        unpbFilter = new Compare.Equal("tb.publish", false);
90 91
        classificationFilter = new Compare.Equal("tn.classification_id",classificationId);
91
        rankFilter = new Compare.Equal("dtb.titleCache","Species");
92

  
93
        // get species aggregate rank order index
94
        int saoIndex = Rank.SPECIESAGGREGATE().getOrderIndex();
95
        rankFilter = new Compare.GreaterOrEqual("dtb.orderindex", saoIndex);
96

  
92 97
        synonymFilter = new Not(new IsNull("sr.relatedto_id"));
93 98

  
94 99
        currentFilters = new HashSet<Filter>();
src/main/java/eu/etaxonomy/cdm/vaadin/presenter/NewTaxonBasePresenter.java
20 20

  
21 21
import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
22 22
import eu.etaxonomy.cdm.api.service.IClassificationService;
23
import eu.etaxonomy.cdm.api.service.INameService;
23 24
import eu.etaxonomy.cdm.api.service.IReferenceService;
24 25
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
25 26
import eu.etaxonomy.cdm.api.service.ITaxonService;
27
import eu.etaxonomy.cdm.api.service.pager.Pager;
26 28
import eu.etaxonomy.cdm.model.common.CdmBase;
27 29
import eu.etaxonomy.cdm.model.name.NonViralName;
30
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
28 31
import eu.etaxonomy.cdm.model.reference.Reference;
29 32
import eu.etaxonomy.cdm.model.taxon.Classification;
30 33
import eu.etaxonomy.cdm.model.taxon.Synonym;
31 34
import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
32 35
import eu.etaxonomy.cdm.model.taxon.Taxon;
33 36
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
37
import eu.etaxonomy.cdm.persistence.query.MatchMode;
34 38
import eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl;
35 39
import eu.etaxonomy.cdm.vaadin.container.CdmSQLContainer;
36 40
import eu.etaxonomy.cdm.vaadin.container.IdUuidName;
......
53 57
    private final ITaxonNodeService taxonNodeService;
54 58
    private final ITaxonService taxonService;
55 59
    private final IClassificationService classificationService;
60
    private final INameService nameService;
56 61
    private final ICdmApplicationConfiguration app;
57 62

  
58 63

  
......
73 78
        referenceService = CdmSpringContextHelper.getReferenceService();
74 79
        taxonNodeService = CdmSpringContextHelper.getTaxonNodeService();
75 80
        taxonService = CdmSpringContextHelper.getTaxonService();
81
        nameService = CdmSpringContextHelper.getNameService();
82

  
76 83
        classificationService = CdmSpringContextHelper.getClassificationService();
77 84
        app = CdmSpringContextHelper.getApplicationConfiguration();
78 85
    }
79 86

  
87
    private boolean checkIfNameExists(NonViralName name) {
88
        Pager<TaxonNameBase> names = nameService.findByName(name.getClass(),
89
                name.getNameCache(),
90
                MatchMode.EXACT,
91
                null,
92
                null,
93
                -1,
94
                null,
95
                null);
96
        if(names.getCount() > 0) {
97
            return true;
98
        }
99
        return false;
100
    }
80 101
    /* (non-Javadoc)
81 102
     * @see eu.etaxonomy.cdm.vaadin.view.INewTaxonBaseComponentListener#newTaxon(java.lang.String, java.lang.Object, java.util.UUID)
82 103
     */
83 104
    @Override
84 105
    public IdUuidName newTaxon(String scientificName, Object secRefItemId, UUID classificationUuid) {
106
        NonViralNameParserImpl parser = NonViralNameParserImpl.NewInstance();
107
        NonViralName name = parser.parseFullName(scientificName);
108

  
109
        if(checkIfNameExists(name)) {
110
            throw new IllegalArgumentException("Given name already exists");
111
        }
85 112
        TransactionStatus tx = app.startTransaction();
86 113
        UUID uuid = accTaxonSecRefContainer.getUuid(secRefItemId);
87

  
88 114
        Reference sec = CdmBase.deproxy(referenceService.load(uuid), Reference.class);
89 115

  
90
        NonViralNameParserImpl parser = NonViralNameParserImpl.NewInstance();
91
        NonViralName name = parser.parseFullName(scientificName);
92
        name.setTitleCache(scientificName, true);
116
        //name.setTitleCache(scientificName, true);
93 117
        Taxon newTaxon = Taxon.NewInstance(name, sec);
94 118
        newTaxon.setUnplaced(true);
95 119
        List<String> CLASSIFICATION_INIT_STRATEGY = Arrays.asList(new String []{
......
108 132
     */
109 133
    @Override
110 134
    public IdUuidName newSynonym(String scientificName, Object synSecRefItemId, Object accTaxonSecRefItemId, UUID accTaxonUuid) {
135
        NonViralNameParserImpl parser = NonViralNameParserImpl.NewInstance();
136
        NonViralName name = parser.parseFullName(scientificName);
137

  
138
        if(checkIfNameExists(name)) {
139
            throw new IllegalArgumentException("Given name already exists");
140
        }
111 141
        TransactionStatus tx = app.startTransaction();
112 142
        List<String> ACC_TAXON_INIT_STRATEGY = Arrays.asList(new String []{
113 143
                "synonymRelations"
......
115 145

  
116 146
        UUID synRefUuid = synSecRefContainer.getUuid(synSecRefItemId);
117 147
        Reference synSec = CdmBase.deproxy(referenceService.load(synRefUuid), Reference.class);
118
        NonViralNameParserImpl parser = NonViralNameParserImpl.NewInstance();
119
        NonViralName name = parser.parseFullName(scientificName);
120
        name.setTitleCache(scientificName, true);
148

  
149
        //name.setTitleCache(scientificName, true);
121 150
        Synonym newSynonym = Synonym.NewInstance(name, synSec);
122 151

  
123 152

  
src/main/java/eu/etaxonomy/cdm/vaadin/util/CdmQueryFactory.java
34 34
            String has_syn_id) throws SQLException {
35 35
        String FROM_QUERY = " FROM TaxonBase tb " +
36 36
                "INNER JOIN TaxonNode tn on tn.taxon_id=tb.id " +
37
                "INNER JOIN TaxonNameBase tnb on tb.name_id=tnb.id ";
37
                "INNER JOIN TaxonNameBase tnb on tb.name_id=tnb.id " +
38
                "INNER JOIN DefinedTermBase dtb on tnb.rank_id = dtb.id";
38 39
        String SELECT_QUERY="SELECT tb.id as " + ID +
39 40
                ", tb.uuid as " + UUID_ID +
40 41
                ", tnb.titleCache as " + name_id +
41 42
                ", tb.publish as " + pb_id +
42 43
                ", tb.unplaced as " + unp_id +
44
                ", dtb.titleCache as " + rank_id +
43 45
                ", (SELECT COUNT(*) FROM  SynonymRelationship sr WHERE tb.id = sr.relatedto_id) as " + has_syn_id +
44 46
                FROM_QUERY;
45 47
        String COUNT_QUERY = "SELECT count(*) " + FROM_QUERY;
src/main/java/eu/etaxonomy/cdm/vaadin/util/CdmVaadinOperation.java
15 15

  
16 16
import org.apache.log4j.Logger;
17 17

  
18
import com.vaadin.server.Page;
19
import com.vaadin.ui.Notification;
20
import com.vaadin.ui.Notification.Type;
18 21
import com.vaadin.ui.UI;
19 22

  
20 23
import eu.etaxonomy.cdm.vaadin.component.CdmProgressComponent;
......
37 40

  
38 41
    private Date now = new java.util.Date();
39 42

  
43
    private Exception exception;
44

  
45

  
46

  
40 47
    public CdmVaadinOperation(int pollInterval, CdmProgressComponent progressComponent) {
41 48
        this.pollInterval = pollInterval;
42 49
        this.progressComponent = progressComponent;
......
115 122
     */
116 123
    @Override
117 124
    public void run() {
118

  
119
        final boolean success = execute();
120
        //logger.warn(new Timestamp(now.getTime()) + " : ran execute");
121
        endProgress();
122

  
123
        if(isAsync()) {
124
            UI.getCurrent().access(new Runnable() {
125
                @Override
126
                public void run() {
127
                    try {
128
                        if(success) {
129
                            fireDelayedEvents();
125
        try {
126
            final boolean success = execute();
127
            //logger.warn(new Timestamp(now.getTime()) + " : ran execute");
128

  
129
            if(isAsync()) {
130
                UI.getCurrent().access(new Runnable() {
131
                    @Override
132
                    public void run() {
133
                        try {
134
                            if(success) {
135
                                fireDelayedEvents();
136
                            }
137
                            if(exception != null) {
138
                                Notification notification = new Notification(exception.getMessage(), "", Type.WARNING_MESSAGE);
139
                                notification.show(Page.getCurrent());
140
                                exception = null;
141
                            }
142
                            postOpUIUpdate(success);
143
                            //logger.warn(new Timestamp(now.getTime()) + " : ran postOpUIUpdate ");
144
                        } finally {
145
                            UI.getCurrent().setPollInterval(-1);
146
                            opDone = true;
147
                            //logger.warn(new Timestamp(now.getTime()) + " : switched off pollling");
130 148
                        }
131
                        postOpUIUpdate(success);
132
                        //logger.warn(new Timestamp(now.getTime()) + " : ran postOpUIUpdate ");
133
                    } finally {
134
                        UI.getCurrent().setPollInterval(-1);
135
                        opDone = true;
136
                        //logger.warn(new Timestamp(now.getTime()) + " : switched off pollling");
137 149
                    }
138
                }
139
            });
140
        } else {
141
            postOpUIUpdate(success);
150
                });
151
            } else {
152
                postOpUIUpdate(success);
153
            }
154
        } finally {
155
            endProgress();
142 156
        }
143

  
144 157
    }
145 158

  
146 159
    public abstract  boolean execute();
......
166 179
        return pollInterval > 0;
167 180
    }
168 181

  
182
    /**
183
     * @return the exception
184
     */
185
    public Exception getException() {
186
        return exception;
187
    }
188

  
189
    /**
190
     * @param exception the exception to set
191
     */
192
    public void setException(Exception exception) {
193
        this.exception = exception;
194
    }
169 195

  
170 196

  
171 197
}
src/main/java/eu/etaxonomy/cdm/vaadin/util/CdmVaadinSessionUtilities.java
43 43
    }
44 44

  
45 45
    public static void initCdmDataChangeService() {
46
        if(getCurrentCdmDataChangeService() != null) {
47
           logger.info("replacing data change service with new one");
48
        }
46
//        if(getCurrentCdmDataChangeService() != null) {
47
//           logger.info("replacing data change service with new one");
48
//        }
49 49
        setCurrentAttribute(CdmDataChangeService.KEY, new CdmDataChangeService());
50 50
    }
51 51

  
......
54 54
    }
55 55

  
56 56
    public static void initSelectionService() {
57
        if(getCurrentSelectionService() != null) {
58
            logger.info("replacing selection service with new one");
59
        }
57
//        if(getCurrentSelectionService() != null) {
58
//            logger.info("replacing selection service with new one");
59
//        }
60 60
        setCurrentAttribute(SelectionService.KEY, new SelectionService());
61 61
    }
62 62

  
......
65 65
    }
66 66

  
67 67
    public static void initBasicEventService() {
68
        if(getCurrentBasicEventService() != null) {
69
            logger.info("replacing basic event service with new one");
70
        }
68
//        if(getCurrentBasicEventService() != null) {
69
//            logger.info("replacing basic event service with new one");
70
//        }
71 71
        setCurrentAttribute(BasicEventService.KEY, new BasicEventService());
72 72
    }
73 73

  
src/test/java/eu/etaxonomy/cdm/vaadin/presenter/NewTaxonBasePresenterTest.java
54 54
    public void testNewTaxonBase() throws SQLException {
55 55
        RowId refId20 = new RowId(20);
56 56
        RowId refId21 = new RowId(21);
57
        UUID newTaxonUuid = ntbp.newTaxon("Taxon E", refId20, UUID.fromString("6595638e-4993-421a-9fe5-76b09d94f36a")).getUuid();
57
        UUID newTaxonUuid = ntbp.newTaxon("Taxon  h", refId20, UUID.fromString("6595638e-4993-421a-9fe5-76b09d94f36a")).getUuid();
58 58
        List<String> ACC_TAXON_INIT_STRATEGY = Arrays.asList(new String []{
59 59
                "sec",
60 60
                "synonymRelations"
61 61
        });
62 62
        Taxon taxon = CdmBase.deproxy(CdmSpringContextHelper.getTaxonService().load(newTaxonUuid,ACC_TAXON_INIT_STRATEGY),Taxon.class);
63 63

  
64
        UUID newSynonymUuid = ntbp.newSynonym("Synonym OfE", refId20, refId21, newTaxonUuid).getUuid();
64
        UUID newSynonymUuid = ntbp.newSynonym("Synonym ofe", refId20, refId21, newTaxonUuid).getUuid();
65 65
        taxon = CdmBase.deproxy(CdmSpringContextHelper.getTaxonService().load(newTaxonUuid,ACC_TAXON_INIT_STRATEGY),Taxon.class);
66 66

  
67 67
        Set<Synonym> synonyms = taxon.getSynonyms();
......
78 78
        Assert.assertEquals(taxon.getSec().getId(), 21);
79 79
    }
80 80

  
81
    @Test
82
    public void testNewTaxonBaseWhenNameAlreadyExists() {
83
        RowId refId20 = new RowId(20);
84
        // test taxa
85
        try {
86
            ntbp.newTaxon("Taxon e", refId20, UUID.fromString("6595638e-4993-421a-9fe5-76b09d94f36a")).getUuid();
87
            Assert.fail("Exception should be thrown as name already exists");;
88
        } catch (IllegalArgumentException iae) {
89

  
90
        }
91

  
92
        try {
93
            ntbp.newTaxon("Taxon  e", refId20, UUID.fromString("6595638e-4993-421a-9fe5-76b09d94f36a")).getUuid();
94
            Assert.fail("Exception should be thrown as name already exists");;
95
        } catch (IllegalArgumentException iae) {
96

  
97
        }
98
        try{
99
            ntbp.newTaxon("Taxon e Me.", refId20, UUID.fromString("6595638e-4993-421a-9fe5-76b09d94f36a")).getUuid();
100
            Assert.fail("Exception should be thrown as name already exists");;
101
        } catch (IllegalArgumentException iae) {
102

  
103
        }
104

  
105
        // test synonym
106
        RowId refId21 = new RowId(21);
107
        UUID newTaxonUuid = ntbp.newTaxon("Taxon  h", refId20, UUID.fromString("6595638e-4993-421a-9fe5-76b09d94f36a")).getUuid();
108
        List<String> ACC_TAXON_INIT_STRATEGY = Arrays.asList(new String []{
109
                "sec",
110
                "synonymRelations"
111
        });
112
        Taxon taxon = CdmBase.deproxy(CdmSpringContextHelper.getTaxonService().load(newTaxonUuid,ACC_TAXON_INIT_STRATEGY),Taxon.class);
113
        try {
114
            ntbp.newSynonym("Htsynonym bofa", refId20, refId21, newTaxonUuid);
115
            Assert.fail("Exception should be thrown as name already exists");;
116
        } catch (IllegalArgumentException iae) {
117

  
118
        }
119

  
120
        try {
121
            ntbp.newSynonym("Htsynonym  bofa", refId20, refId21, newTaxonUuid);
122
            Assert.fail("Exception should be thrown as name already exists");;
123
        } catch (IllegalArgumentException iae) {
124

  
125
        }
126
        try{
127
            ntbp.newSynonym("Htsynonym bofa Me.", refId20, refId21, newTaxonUuid);
128
            Assert.fail("Exception should be thrown as name already exists");;
129
        } catch (IllegalArgumentException iae) {
130

  
131
        }
132

  
133
    }
81 134

  
82 135
    public static class MockNewTaxonBaseComposite implements INewTaxonBaseComposite {
83 136

  
src/test/resources/eu/etaxonomy/cdm/vaadin/presenter/NewTaxonBasePresenterTest.xml
1 1
<?xml version="1.0" encoding="UTF-8"?><!--
2
  generated by Jailer 4.3, Mon Apr 13 17:27:53 CEST 2015 from cmathew@cmbgbm-t530
2
  generated by Jailer 4.3, Thu May 07 11:44:01 CEST 2015 from cmathew@cmbgbm-t530
3 3
  
4
  Extraction Model:  all rows from Classification (extractionmodel/by-example/SbE-Classification-17-27-41-688.csv)
4
  Extraction Model:  all rows from Classification (extractionmodel/by-example/SbE-Classification-11-43-31-634.csv)
5 5
  Database URL:      jdbc:mysql://127.0.0.1:3306/local-redlist
6 6
  Database User:     root
7 7
  
8
  Exported Rows:     67
9
      AgentBase                      7
10
      Classification                 2
11
      HomotypicalGroup               10
12
      LanguageString                 2
8
  Exported Rows:     76
9
      AgentBase                      1
10
      Classification                 3
11
      HomotypicalGroup               13
12
      LanguageString                 3
13 13
      Reference                      2
14 14
      SynonymRelationship            7
15
      TaxonBase                      14
16
      TaxonNameBase                  14
17
      TaxonNode                      9
15
      TaxonBase                      17
16
      TaxonNameBase                  17
17
      TaxonNode                      13
18 18
  
19 19
--><dataset>
20 20
  <TaxonNode id="11" created="2015-03-09 15:48:30.0" uuid="38f9a5e6-1a5c-4eae-8c63-3311a3102417" updated="2015-03-09 15:48:42.0" countchildren="4" sortindex="-1" treeindex="#t11#11#" createdby_id="10" updatedby_id="10" classification_id="11"/>
......
26 26
  <TaxonNode id="17" created="2015-03-09 15:53:23.0" uuid="e804ca8b-3520-41fd-8146-a93181ed57e4" updated="2015-03-09 15:53:23.0" countchildren="0" sortindex="1" treeindex="#t12#15#17#" createdby_id="10" updatedby_id="10" classification_id="12" parent_id="15" taxon_id="19"/>
27 27
  <TaxonNode id="18" created="2015-03-09 15:53:32.0" uuid="5c43f991-c4ad-414b-a4f3-2d6a26ff1ccf" updated="2015-03-09 15:53:32.0" countchildren="0" sortindex="2" treeindex="#t12#15#18#" createdby_id="10" updatedby_id="10" classification_id="12" parent_id="15" taxon_id="20"/>
28 28
  <TaxonNode id="20" created="2015-03-10 13:40:31.0" uuid="6a6ee4dd-5727-47ba-a53d-3a985623dd93" updated="2015-03-10 13:40:31.0" countchildren="0" sortindex="3" treeindex="#t11#11#20#" createdby_id="10" updatedby_id="10" classification_id="11" parent_id="11" taxon_id="30"/>
29
  <TaxonNode id="30" created="2015-04-15 14:53:15.0" uuid="7d8c370a-8025-4c1b-b23b-0499cdba212f" updated="2015-04-15 14:53:24.0" countchildren="3" sortindex="-1" treeindex="#t20#30#" createdby_id="10" updatedby_id="10" classification_id="20"/>
30
  <TaxonNode id="31" created="2015-04-15 14:54:07.0" uuid="365f7939-08c4-420a-8585-3ca49f62ef31" updated="2015-04-15 14:54:07.0" countchildren="0" sortindex="0" treeindex="#t20#30#31#" createdby_id="10" updatedby_id="10" classification_id="20" parent_id="30" taxon_id="50"/>
31
  <TaxonNode id="32" created="2015-04-15 14:54:28.0" uuid="f4182c7b-e92c-43c0-b0c6-e399f666b85b" updated="2015-04-15 14:54:28.0" countchildren="0" sortindex="1" treeindex="#t20#30#32#" createdby_id="10" updatedby_id="10" classification_id="20" parent_id="30" taxon_id="51"/>
32
  <TaxonNode id="40" created="2015-05-06 11:07:17.0" uuid="7a9af8fe-c014-466d-be15-5c65b5ddd8df" updated="2015-05-06 11:07:17.0" countchildren="0" sortindex="2" treeindex="#t20#30#40#" createdby_id="10" updatedby_id="10" classification_id="20" parent_id="30" taxon_id="60"/>
29 33

  
30 34
  <HomotypicalGroup id="10" created="2015-03-09 15:49:22.0" uuid="d7dd294a-8750-4ca9-afc2-b0beebaa53fa" updated="2015-03-09 15:49:25.0" createdby_id="10" updatedby_id="10"/>
31 35
  <HomotypicalGroup id="11" created="2015-03-09 15:49:30.0" uuid="5eb658bb-f57c-4ec6-94a2-91dbeffce78e" updated="2015-03-09 15:50:21.0" createdby_id="10" updatedby_id="10"/>
......
37 41
  <HomotypicalGroup id="17" created="2015-03-09 15:53:30.0" uuid="bafedb10-2a56-4457-8c48-ecb0aae18bf5" updated="2015-03-09 15:53:32.0" createdby_id="10" updatedby_id="10"/>
38 42
  <HomotypicalGroup id="20" created="2015-03-10 13:40:30.0" uuid="61c41e51-72cd-40d1-9a56-554732036c57" updated="2015-03-10 13:40:31.0" createdby_id="10" updatedby_id="10"/>
39 43
  <HomotypicalGroup id="30" created="2015-04-10 10:31:09.0" uuid="91f7c49a-cb6f-457f-9483-4ae85706d0aa" updated="2015-04-10 10:31:09.0"/>
44
  <HomotypicalGroup id="40" created="2015-04-15 14:53:53.0" uuid="c751bf62-5b23-4a10-ac3b-dda56bd55406" updated="2015-04-15 14:54:07.0" createdby_id="10" updatedby_id="10"/>
45
  <HomotypicalGroup id="41" created="2015-04-15 14:54:26.0" uuid="0d5f6eb1-da00-40fb-b211-b1c204da44fb" updated="2015-04-15 14:54:28.0" createdby_id="10" updatedby_id="10"/>
46
  <HomotypicalGroup id="50" created="2015-05-06 11:07:15.0" uuid="8d03597d-b377-4812-a5f8-1b2bb53bdb76" updated="2015-05-06 11:07:17.0" createdby_id="10" updatedby_id="10"/>
40 47

  
41 48
  <LanguageString id="11" created="2015-03-09 15:48:39.0" uuid="74793377-eeec-40e1-a971-b1b7e65c05f2" updated="2015-03-09 15:48:42.0" text="Classification1" createdby_id="10" updatedby_id="10" language_id="124"/>
42 49
  <LanguageString id="12" created="2015-03-09 15:52:14.0" uuid="0bcb7acf-a6c4-4715-a30e-d02614c9f799" updated="2015-03-09 15:52:24.0" text="Classification2" createdby_id="10" updatedby_id="10" language_id="124"/>
50
  <LanguageString id="20" created="2015-04-15 14:53:20.0" uuid="261ea807-6570-4a69-a92d-04dab94a62ce" updated="2015-04-15 14:53:24.0" text="Classification3" createdby_id="10" updatedby_id="10" language_id="124"/>
43 51

  
44
  <TaxonNameBase DTYPE="BotanicalName" id="10" created="2015-03-09 15:49:22.0" uuid="9c0b6c13-562e-4642-9494-58dbcedf45f4" updated="2015-03-09 15:49:25.0" protectedtitlecache="false" titleCache="Taxon A" fullTitleCache="Taxon A" parsingproblem="0" problemends="5" problemstarts="0" protectedfulltitlecache="false" authorshipcache="A" binomhybrid="false" genusoruninomial="Taxon" hybridformula="false" monomhybrid="false" namecache="Taxon" protectedauthorshipcache="false" protectednamecache="false" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="10" rank_id="790" combinationauthorteam_id="10"/>
45
  <TaxonNameBase DTYPE="BotanicalName" id="11" created="2015-03-09 15:49:30.0" uuid="82de3687-f90d-4968-951b-456a21659666" updated="2015-03-09 15:50:21.0" protectedtitlecache="true" titleCache="HTSynonym A1" fullTitleCache="HTSynonym A1" parsingproblem="4" problemends="12" problemstarts="0" protectedfulltitlecache="true" authorshipcache="" binomhybrid="false" hybridformula="false" monomhybrid="false" namecache="HTSynonym A1" protectedauthorshipcache="false" protectednamecache="true" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="11"/>
46
  <TaxonNameBase DTYPE="BotanicalName" id="12" created="2015-03-09 15:50:25.0" uuid="bd86d4f9-8427-4ac5-a8c2-48add63da449" updated="2015-03-09 15:50:54.0" protectedtitlecache="true" titleCache="HMSynonym A1" fullTitleCache="HMSynonym A1" parsingproblem="4" problemends="12" problemstarts="0" protectedfulltitlecache="true" authorshipcache="" binomhybrid="false" hybridformula="false" monomhybrid="false" namecache="HMSynonym A1" protectedauthorshipcache="false" protectednamecache="true" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="10"/>
47
  <TaxonNameBase DTYPE="BotanicalName" id="13" created="2015-03-09 15:51:11.0" uuid="fb76b9cb-29d2-4986-a327-19d1d003159a" updated="2015-03-09 15:51:14.0" protectedtitlecache="false" titleCache="Taxon B" fullTitleCache="Taxon B" parsingproblem="0" problemends="5" problemstarts="0" protectedfulltitlecache="false" authorshipcache="B" binomhybrid="false" genusoruninomial="Taxon" hybridformula="false" monomhybrid="false" namecache="Taxon" protectedauthorshipcache="false" protectednamecache="false" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="12" rank_id="790" combinationauthorteam_id="11"/>
48
  <TaxonNameBase DTYPE="BotanicalName" id="14" created="2015-03-09 15:51:24.0" uuid="a21d5e7c-e8b5-4395-b83b-a219877e80eb" updated="2015-03-09 15:51:25.0" protectedtitlecache="false" titleCache="Taxon C" fullTitleCache="Taxon C" parsingproblem="0" problemends="5" problemstarts="0" protectedfulltitlecache="false" authorshipcache="C" binomhybrid="false" genusoruninomial="Taxon" hybridformula="false" monomhybrid="false" namecache="Taxon" protectedauthorshipcache="false" protectednamecache="false" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="13" rank_id="790" combinationauthorteam_id="12"/>
49
  <TaxonNameBase DTYPE="BotanicalName" id="15" created="2015-03-09 15:51:31.0" uuid="7dd4eaa3-b65f-4d1e-8d2c-26a31ea3ae0b" updated="2015-03-09 15:51:44.0" protectedtitlecache="true" titleCache="HTSynonym C1" fullTitleCache="HTSynonym C1" parsingproblem="4" problemends="12" problemstarts="0" protectedfulltitlecache="true" authorshipcache="" binomhybrid="false" hybridformula="false" monomhybrid="false" namecache="HTSynonym C1" protectedauthorshipcache="false" protectednamecache="true" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="13"/>
50
  <TaxonNameBase DTYPE="BotanicalName" id="16" created="2015-03-09 15:52:34.0" uuid="81444d5e-122f-46aa-9bee-d7c0ba52f8d6" updated="2015-03-09 15:52:42.0" protectedtitlecache="false" titleCache="Taxon A" fullTitleCache="Taxon A" parsingproblem="0" problemends="5" problemstarts="0" protectedfulltitlecache="false" authorshipcache="A" binomhybrid="false" genusoruninomial="Taxon" hybridformula="false" monomhybrid="false" namecache="Taxon" protectedauthorshipcache="false" protectednamecache="false" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="14" rank_id="790" combinationauthorteam_id="13"/>
51
  <TaxonNameBase DTYPE="BotanicalName" id="17" created="2015-03-09 15:52:53.0" uuid="dcdfbc9f-5596-4ae2-85e0-b9c738d8bcec" updated="2015-03-09 15:52:57.0" protectedtitlecache="true" titleCache="HMSynonym A1" fullTitleCache="HMSynonym A1" parsingproblem="4" problemends="12" problemstarts="0" protectedfulltitlecache="true" authorshipcache="" binomhybrid="false" hybridformula="false" monomhybrid="false" namecache="HMSynonym A1" protectedauthorshipcache="false" protectednamecache="true" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="14"/>
52
  <TaxonNameBase DTYPE="BotanicalName" id="18" created="2015-03-09 15:53:06.0" uuid="fa186915-0bb5-4047-a5c5-404d75851f1c" updated="2015-03-09 15:53:07.0" protectedtitlecache="true" titleCache="HTSynonym A1" fullTitleCache="HTSynonym A1" parsingproblem="4" problemends="12" problemstarts="0" protectedfulltitlecache="true" authorshipcache="" binomhybrid="false" hybridformula="false" monomhybrid="false" namecache="HTSynonym A1" protectedauthorshipcache="false" protectednamecache="true" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="15"/>
53
  <TaxonNameBase DTYPE="BotanicalName" id="19" created="2015-03-09 15:53:21.0" uuid="fddf69fa-4f25-4d10-b693-1a9d5d7bbd5c" updated="2015-03-09 15:53:23.0" protectedtitlecache="false" titleCache="Taxon B" fullTitleCache="Taxon B" parsingproblem="0" problemends="5" problemstarts="0" protectedfulltitlecache="false" authorshipcache="B" binomhybrid="false" genusoruninomial="Taxon" hybridformula="false" monomhybrid="false" namecache="Taxon" protectedauthorshipcache="false" protectednamecache="false" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="16" rank_id="790" combinationauthorteam_id="14"/>
54
  <TaxonNameBase DTYPE="BotanicalName" id="20" created="2015-03-09 15:53:30.0" uuid="9e644031-9190-4a4f-94bb-fc1f6066bbab" updated="2015-03-09 15:53:32.0" protectedtitlecache="false" titleCache="Taxon C" fullTitleCache="Taxon C" parsingproblem="0" problemends="5" problemstarts="0" protectedfulltitlecache="false" authorshipcache="C" binomhybrid="false" genusoruninomial="Taxon" hybridformula="false" monomhybrid="false" namecache="Taxon" protectedauthorshipcache="false" protectednamecache="false" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="17" rank_id="790" combinationauthorteam_id="15"/>
55
  <TaxonNameBase DTYPE="BotanicalName" id="21" created="2015-03-09 15:53:49.0" uuid="0755d9d7-007a-4d81-a2f8-2ba1b7020cf4" updated="2015-03-09 15:53:52.0" protectedtitlecache="true" titleCache="HTSynonym C1" fullTitleCache="HTSynonym C1" parsingproblem="4" problemends="12" problemstarts="0" protectedfulltitlecache="true" authorshipcache="" binomhybrid="false" hybridformula="false" monomhybrid="false" namecache="HTSynonym C1" protectedauthorshipcache="false" protectednamecache="true" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="17"/>
56
  <TaxonNameBase DTYPE="BotanicalName" id="30" created="2015-03-10 13:40:30.0" uuid="b1b9abf0-72a6-4a2e-8bd1-3ef189f5b3e9" updated="2015-03-10 13:40:31.0" protectedtitlecache="false" titleCache="Taxon D" fullTitleCache="Taxon D" parsingproblem="1" problemends="5" problemstarts="0" protectedfulltitlecache="false" authorshipcache="D" binomhybrid="false" genusoruninomial="Taxon" hybridformula="false" monomhybrid="false" namecache="Taxon" protectedauthorshipcache="false" protectednamecache="false" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="20" rank_id="800" combinationauthorteam_id="20"/>
57
  <TaxonNameBase DTYPE="NonViralName" id="40" created="2015-04-10 10:31:09.0" uuid="98637ee9-d6b6-4a30-8bb9-17beda8856db" updated="2015-04-10 10:31:09.0" protectedtitlecache="true" titleCache="Synonym A" fullTitleCache="Synonym A" parsingproblem="0" problemends="-1" problemstarts="-1" protectedfulltitlecache="false" authorshipcache="" binomhybrid="false" hybridformula="false" monomhybrid="false" namecache="" protectedauthorshipcache="false" protectednamecache="false" trinomhybrid="false" homotypicalgroup_id="30"/>
52
  <TaxonNameBase DTYPE="BotanicalName" id="10" created="2015-03-09 15:49:22.0" uuid="9c0b6c13-562e-4642-9494-58dbcedf45f4" updated="2015-03-09 15:49:25.0" protectedtitlecache="false" titleCache="Taxon a" fullTitleCache="Taxon a" parsingproblem="0" problemends="-1" problemstarts="-1" protectedfulltitlecache="false" authorshipcache="" binomhybrid="false" genusoruninomial="Taxon" hybridformula="false" monomhybrid="false" namecache="Taxon a" protectedauthorshipcache="false" protectednamecache="false" specificepithet="a" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="10" rank_id="790"/>
53
  <TaxonNameBase DTYPE="BotanicalName" id="11" created="2015-03-09 15:49:30.0" uuid="82de3687-f90d-4968-951b-456a21659666" updated="2015-03-09 15:50:21.0" protectedtitlecache="false" titleCache="Htsynonym bofa" fullTitleCache="Htsynonym bofa" parsingproblem="0" problemends="-1" problemstarts="-1" protectedfulltitlecache="false" authorshipcache="" binomhybrid="false" genusoruninomial="Htsynonym" hybridformula="false" monomhybrid="false" namecache="Htsynonym bofa" protectedauthorshipcache="false" protectednamecache="false" specificepithet="bofa" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="11" rank_id="790"/>
54
  <TaxonNameBase DTYPE="BotanicalName" id="12" created="2015-03-09 15:50:25.0" uuid="bd86d4f9-8427-4ac5-a8c2-48add63da449" updated="2015-03-09 15:50:54.0" protectedtitlecache="false" titleCache="Hmsynonym aofa" fullTitleCache="Hmsynonym aofa" parsingproblem="0" problemends="-1" problemstarts="-1" protectedfulltitlecache="false" authorshipcache="" binomhybrid="false" genusoruninomial="Hmsynonym" hybridformula="false" monomhybrid="false" namecache="Hmsynonym aofa" protectedauthorshipcache="false" protectednamecache="false" specificepithet="aofa" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="10" rank_id="790"/>
55
  <TaxonNameBase DTYPE="BotanicalName" id="13" created="2015-03-09 15:51:11.0" uuid="fb76b9cb-29d2-4986-a327-19d1d003159a" updated="2015-03-09 15:51:14.0" protectedtitlecache="false" titleCache="Taxon b" fullTitleCache="Taxon b" parsingproblem="0" problemends="-1" problemstarts="-1" protectedfulltitlecache="false" authorshipcache="" binomhybrid="false" genusoruninomial="Taxon" hybridformula="false" monomhybrid="false" namecache="Taxon b" protectedauthorshipcache="false" protectednamecache="false" specificepithet="b" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="12" rank_id="790"/>
56
  <TaxonNameBase DTYPE="BotanicalName" id="14" created="2015-03-09 15:51:24.0" uuid="a21d5e7c-e8b5-4395-b83b-a219877e80eb" updated="2015-03-09 15:51:25.0" protectedtitlecache="false" titleCache="Taxon c" fullTitleCache="Taxon c" parsingproblem="0" problemends="-1" problemstarts="-1" protectedfulltitlecache="false" authorshipcache="" binomhybrid="false" genusoruninomial="Taxon" hybridformula="false" monomhybrid="false" namecache="Taxon c" protectedauthorshipcache="false" protectednamecache="false" specificepithet="c" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="13" rank_id="790"/>
57
  <TaxonNameBase DTYPE="BotanicalName" id="15" created="2015-03-09 15:51:31.0" uuid="7dd4eaa3-b65f-4d1e-8d2c-26a31ea3ae0b" updated="2015-03-09 15:51:44.0" protectedtitlecache="false" titleCache="Htsynonym aofc" fullTitleCache="Htsynonym aofc" parsingproblem="0" problemends="-1" problemstarts="-1" protectedfulltitlecache="false" authorshipcache="" binomhybrid="false" genusoruninomial="Htsynonym" hybridformula="false" monomhybrid="false" namecache="Htsynonym aofc" protectedauthorshipcache="false" protectednamecache="false" specificepithet="aofc" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="13" rank_id="790"/>
58
  <TaxonNameBase DTYPE="BotanicalName" id="16" created="2015-03-09 15:52:34.0" uuid="81444d5e-122f-46aa-9bee-d7c0ba52f8d6" updated="2015-03-09 15:52:42.0" protectedtitlecache="false" titleCache="Taxon a" fullTitleCache="Taxon a" parsingproblem="0" problemends="-1" problemstarts="-1" protectedfulltitlecache="false" authorshipcache="" binomhybrid="false" genusoruninomial="Taxon" hybridformula="false" monomhybrid="false" namecache="Taxon a" protectedauthorshipcache="false" protectednamecache="false" specificepithet="a" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="14" rank_id="790"/>
59
  <TaxonNameBase DTYPE="BotanicalName" id="17" created="2015-03-09 15:52:53.0" uuid="dcdfbc9f-5596-4ae2-85e0-b9c738d8bcec" updated="2015-03-09 15:52:57.0" protectedtitlecache="false" titleCache="Hmsynonym aofa" fullTitleCache="Hmsynonym aofa" parsingproblem="0" problemends="-1" problemstarts="-1" protectedfulltitlecache="false" authorshipcache="" binomhybrid="false" genusoruninomial="Hmsynonym" hybridformula="false" monomhybrid="false" namecache="Hmsynonym aofa" protectedauthorshipcache="false" protectednamecache="false" specificepithet="aofa" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="14" rank_id="790"/>
60
  <TaxonNameBase DTYPE="BotanicalName" id="18" created="2015-03-09 15:53:06.0" uuid="fa186915-0bb5-4047-a5c5-404d75851f1c" updated="2015-03-09 15:53:07.0" protectedtitlecache="false" titleCache="Htsynonym bofa" fullTitleCache="Htsynonym bofa" parsingproblem="0" problemends="-1" problemstarts="-1" protectedfulltitlecache="false" authorshipcache="" binomhybrid="false" genusoruninomial="Htsynonym" hybridformula="false" monomhybrid="false" namecache="Htsynonym bofa" protectedauthorshipcache="false" protectednamecache="false" specificepithet="bofa" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="15" rank_id="790"/>
61
  <TaxonNameBase DTYPE="BotanicalName" id="19" created="2015-03-09 15:53:21.0" uuid="fddf69fa-4f25-4d10-b693-1a9d5d7bbd5c" updated="2015-03-09 15:53:23.0" protectedtitlecache="false" titleCache="Taxon b" fullTitleCache="Taxon b" parsingproblem="0" problemends="-1" problemstarts="-1" protectedfulltitlecache="false" authorshipcache="" binomhybrid="false" genusoruninomial="Taxon" hybridformula="false" monomhybrid="false" namecache="Taxon b" protectedauthorshipcache="false" protectednamecache="false" specificepithet="b" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="16" rank_id="790"/>
62
  <TaxonNameBase DTYPE="BotanicalName" id="20" created="2015-03-09 15:53:30.0" uuid="9e644031-9190-4a4f-94bb-fc1f6066bbab" updated="2015-03-09 15:53:32.0" protectedtitlecache="false" titleCache="Taxon c" fullTitleCache="Taxon c" parsingproblem="0" problemends="-1" problemstarts="-1" protectedfulltitlecache="false" authorshipcache="" binomhybrid="false" genusoruninomial="Taxon" hybridformula="false" monomhybrid="false" namecache="Taxon c" protectedauthorshipcache="false" protectednamecache="false" specificepithet="c" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="17" rank_id="790"/>
63
  <TaxonNameBase DTYPE="BotanicalName" id="21" created="2015-03-09 15:53:49.0" uuid="0755d9d7-007a-4d81-a2f8-2ba1b7020cf4" updated="2015-03-09 15:53:52.0" protectedtitlecache="false" titleCache="Htsynonym aofc" fullTitleCache="Htsynonym aofc" parsingproblem="0" problemends="-1" problemstarts="-1" protectedfulltitlecache="false" authorshipcache="" binomhybrid="false" genusoruninomial="Htsynonym" hybridformula="false" monomhybrid="false" namecache="Htsynonym aofc" protectedauthorshipcache="false" protectednamecache="false" specificepithet="aofc" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="17" rank_id="790"/>
64
  <TaxonNameBase DTYPE="BotanicalName" id="30" created="2015-03-10 13:40:30.0" uuid="b1b9abf0-72a6-4a2e-8bd1-3ef189f5b3e9" updated="2015-03-10 13:40:31.0" protectedtitlecache="false" titleCache="Taxon d" fullTitleCache="Taxon d" parsingproblem="0" problemends="-1" problemstarts="-1" protectedfulltitlecache="false" authorshipcache="" binomhybrid="false" genusoruninomial="Taxon" hybridformula="false" monomhybrid="false" namecache="Taxon d" protectedauthorshipcache="false" protectednamecache="false" specificepithet="d" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="20" rank_id="790"/>
65
  <TaxonNameBase DTYPE="NonViralName" id="40" created="2015-04-10 10:31:09.0" uuid="98637ee9-d6b6-4a30-8bb9-17beda8856db" updated="2015-04-10 10:31:09.0" protectedtitlecache="false" titleCache="Synonym a" fullTitleCache="Synonym a" parsingproblem="0" problemends="-1" problemstarts="-1" protectedfulltitlecache="false" authorshipcache="" binomhybrid="false" genusoruninomial="Synonym" hybridformula="false" monomhybrid="false" namecache="Synonym a" protectedauthorshipcache="false" protectednamecache="false" specificepithet="a" trinomhybrid="false" homotypicalgroup_id="30" rank_id="790"/>
66
  <TaxonNameBase DTYPE="BotanicalName" id="50" created="2015-04-15 14:53:53.0" uuid="994bcbf7-e10b-4082-b055-8e7e54db7b88" updated="2015-04-15 14:54:07.0" protectedtitlecache="false" titleCache="Taxon e" fullTitleCache="Taxon e" parsingproblem="0" problemends="-1" problemstarts="-1" protectedfulltitlecache="false" authorshipcache="" binomhybrid="false" genusoruninomial="Taxon" hybridformula="false" monomhybrid="false" namecache="Taxon e" protectedauthorshipcache="false" protectednamecache="false" specificepithet="e" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="40" rank_id="790"/>
67
  <TaxonNameBase DTYPE="BotanicalName" id="51" created="2015-04-15 14:54:26.0" uuid="5b7018f1-4962-4943-ae47-a821951c96a0" updated="2015-04-15 14:54:28.0" protectedtitlecache="false" titleCache="Taxon f" fullTitleCache="Taxon f" parsingproblem="0" problemends="-1" problemstarts="-1" protectedfulltitlecache="false" authorshipcache="" binomhybrid="false" genusoruninomial="Taxon" hybridformula="false" monomhybrid="false" namecache="Taxon f" protectedauthorshipcache="false" protectednamecache="false" specificepithet="f" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="41" rank_id="790"/>
68
  <TaxonNameBase DTYPE="BotanicalName" id="60" created="2015-05-06 11:07:15.0" uuid="7ebe3f1f-c383-4611-95da-4ee633a12d3a" updated="2015-05-06 11:07:17.0" protectedtitlecache="false" titleCache="Taxon ×withverylongspecificepithet subsp. Me" fullTitleCache="Taxon ×withverylongspecificepithet subsp. Me" parsingproblem="0" problemends="-1" problemstarts="-1" protectedfulltitlecache="false" authorshipcache="Me" binomhybrid="true" genusoruninomial="Taxon" hybridformula="false" monomhybrid="false" namecache="Taxon ×withverylongspecificepithet subsp." protectedauthorshipcache="false" protectednamecache="false" specificepithet="withverylongspecificepithet" trinomhybrid="false" anamorphic="false" createdby_id="10" updatedby_id="10" homotypicalgroup_id="50" rank_id="788" combinationauthorteam_id="40"/>
58 69

  
59 70
  <Classification id="11" created="2015-03-09 15:48:30.0" uuid="6595638e-4993-421a-9fe5-76b09d94f36a" updated="2015-03-09 15:48:42.0" protectedtitlecache="false" titleCache="Classification1" createdby_id="10" updatedby_id="10" name_id="11" rootnode_id="11"/>
60 71
  <Classification id="12" created="2015-03-09 15:52:08.0" uuid="1ef8aada-de72-4023-bbe1-14465b6bc60d" updated="2015-03-09 15:52:24.0" protectedtitlecache="false" titleCache="Classification2" createdby_id="10" updatedby_id="10" name_id="12" rootnode_id="15"/>
72
  <Classification id="20" created="2015-04-15 14:53:15.0" uuid="cee7b6ee-7b27-4f2f-81cd-cb25414cff2a" updated="2015-04-15 14:53:23.0" protectedtitlecache="false" titleCache="Classification3" createdby_id="10" updatedby_id="10" name_id="20" rootnode_id="30"/>
61 73

  
62
  <TaxonBase DTYPE="Taxon" id="10" created="2015-03-09 15:49:22.0" uuid="666b484f-dc1e-4578-b404-86bc6d2e47fa" updated="2015-03-09 15:49:25.0" protectedtitlecache="false" titleCache="Taxon A sec. Book Reference 1" doubtful="false" publish="false" usenamecache="false" excluded="false" taxonstatusunknown="false" taxonomicchildrencount="0" unplaced="true" createdby_id="10" updatedby_id="10" name_id="10" sec_id="20"/>
63
  <TaxonBase DTYPE="Synonym" id="11" created="2015-03-09 15:49:30.0" uuid="f45a4860-451d-493c-ad42-bbe68325a883" updated="2015-03-09 15:50:21.0" protectedtitlecache="false" titleCache="HTSynonym A1 sec. ???" doubtful="false" publish="true" usenamecache="false" createdby_id="10" updatedby_id="10" name_id="11"/>
64
  <TaxonBase DTYPE="Synonym" id="12" created="2015-03-09 15:50:25.0" uuid="cdd8945e-d538-4141-8c1b-78c93a8e3a8b" updated="2015-03-09 15:50:54.0" protectedtitlecache="false" titleCache="HMSynonym A1 sec. ???" doubtful="false" publish="true" usenamecache="false" createdby_id="10" updatedby_id="10" name_id="12"/>
65
  <TaxonBase DTYPE="Taxon" id="13" created="2015-03-09 15:51:11.0" uuid="77e7d93e-75c6-4dd4-850d-7b5809654378" updated="2015-03-09 15:51:14.0" protectedtitlecache="false" titleCache="Taxon B sec. ???" doubtful="false" publish="true" usenamecache="false" excluded="false" taxonstatusunknown="false" taxonomicchildrencount="0" unplaced="false" createdby_id="10" updatedby_id="10" name_id="13"/>
66
  <TaxonBase DTYPE="Taxon" id="14" created="2015-03-09 15:51:24.0" uuid="b38d0d73-9a20-4894-99bb-2148ee6b10d0" updated="2015-04-09 13:50:03.0" protectedtitlecache="false" titleCache="Taxon C sec. ???" doubtful="false" publish="true" usenamecache="false" excluded="false" taxonstatusunknown="false" taxonomicchildrencount="0" unplaced="false" createdby_id="10" updatedby_id="10" name_id="14"/>
67
  <TaxonBase DTYPE="Synonym" id="15" created="2015-03-09 15:51:31.0" uuid="1e240011-aec1-4f94-a934-f3bd0e9df9a5" updated="2015-03-09 15:51:44.0" protectedtitlecache="false" titleCache="HTSynonym C1 sec. ???" doubtful="false" publish="true" usenamecache="false" createdby_id="10" updatedby_id="10" name_id="15"/>
68
  <TaxonBase DTYPE="Taxon" id="16" created="2015-03-09 15:52:34.0" uuid="eaac797e-cac7-4649-97cf-c7b580076895" updated="2015-03-09 15:52:42.0" protectedtitlecache="false" titleCache="Taxon A sec. Journal Reference 1" doubtful="false" publish="true" usenamecache="false" excluded="false" taxonstatusunknown="false" taxonomicchildrencount="0" unplaced="true" createdby_id="10" updatedby_id="10" name_id="16" sec_id="21"/>
69
  <TaxonBase DTYPE="Synonym" id="17" created="2015-03-09 15:52:53.0" uuid="5b6219d0-ae66-4a09-9b5f-af9fc418a085" updated="2015-03-09 15:52:57.0" protectedtitlecache="false" titleCache="HMSynonym A1 sec. ???" doubtful="false" publish="true" usenamecache="false" createdby_id="10" updatedby_id="10" name_id="17"/>
70
  <TaxonBase DTYPE="Synonym" id="18" created="2015-03-09 15:53:06.0" uuid="4a85597d-b116-41d1-805c-be8168f5715b" updated="2015-03-09 15:53:07.0" protectedtitlecache="false" titleCache="HTSynonym A1 sec. ???" doubtful="false" publish="true" usenamecache="false" createdby_id="10" updatedby_id="10" name_id="18"/>
71
  <TaxonBase DTYPE="Taxon" id="19" created="2015-03-09 15:53:21.0" uuid="5004a8e7-b907-4744-b67e-44ccb057ab3b" updated="2015-03-09 15:53:23.0" protectedtitlecache="false" titleCache="Taxon B sec. ???" doubtful="false" publish="true" usenamecache="false" excluded="false" taxonstatusunknown="false" taxonomicchildrencount="0" unplaced="false" createdby_id="10" updatedby_id="10" name_id="19"/>
72
  <TaxonBase DTYPE="Taxon" id="20" created="2015-03-09 15:53:30.0" uuid="3d71c8b8-3bec-4f5f-ba23-6f9d55ef84e9" updated="2015-03-09 15:53:32.0" protectedtitlecache="false" titleCache="Taxon C sec. ???" doubtful="false" publish="true" usenamecache="false" excluded="false" taxonstatusunknown="false" taxonomicchildrencount="0" unplaced="false" createdby_id="10" updatedby_id="10" name_id="20"/>
73
  <TaxonBase DTYPE="Synonym" id="21" created="2015-03-09 15:53:49.0" uuid="cdd27491-1b41-4119-86f5-0ffd33475769" updated="2015-03-09 15:53:52.0" protectedtitlecache="false" titleCache="HTSynonym C1 sec. ???" doubtful="false" publish="true" usenamecache="false" createdby_id="10" updatedby_id="10" name_id="21"/>
74
  <TaxonBase DTYPE="Taxon" id="30" created="2015-03-10 13:40:30.0" uuid="5f713f69-e03e-4a11-8a55-700fbbf44805" updated="2015-04-09 13:50:03.0" protectedtitlecache="false" titleCache="Taxon D sec. ???" doubtful="false" publish="true" usenamecache="false" excluded="false" taxonstatusunknown="false" taxonomicchildrencount="0" unplaced="false" createdby_id="10" updatedby_id="10" name_id="30"/>
75
  <TaxonBase DTYPE="Synonym" id="40" created="2015-04-10 10:31:09.0" uuid="2c4cad2b-051e-4afd-b54f-fdf197d782c3" protectedtitlecache="false" titleCache="Synonym A sec. Book Reference 1" doubtful="false" publish="true" usenamecache="false" name_id="40" sec_id="20"/>
74
  <TaxonBase DTYPE="Taxon" id="10" created="2015-03-09 15:49:22.0" uuid="666b484f-dc1e-4578-b404-86bc6d2e47fa" updated="2015-04-16 12:14:46.0" protectedtitlecache="false" titleCache="Taxon a sec. Book Reference 1" doubtful="false" publish="false" usenamecache="false" excluded="false" taxonstatusunknown="false" taxonomicchildrencount="0" unplaced="true" createdby_id="10" updatedby_id="10" name_id="10" sec_id="20"/>
75
  <TaxonBase DTYPE="Synonym" id="11" created="2015-03-09 15:49:30.0" uuid="f45a4860-451d-493c-ad42-bbe68325a883" updated="2015-03-09 15:50:21.0" protectedtitlecache="false" titleCache="Htsynonym bofa sec. ???" doubtful="false" publish="true" usenamecache="false" createdby_id="10" updatedby_id="10" name_id="11"/>
76
  <TaxonBase DTYPE="Synonym" id="12" created="2015-03-09 15:50:25.0" uuid="cdd8945e-d538-4141-8c1b-78c93a8e3a8b" updated="2015-03-09 15:50:54.0" protectedtitlecache="false" titleCache="Hmsynonym aofa sec. ???" doubtful="false" publish="true" usenamecache="false" createdby_id="10" updatedby_id="10" name_id="12"/>
77
  <TaxonBase DTYPE="Taxon" id="13" created="2015-03-09 15:51:11.0" uuid="77e7d93e-75c6-4dd4-850d-7b5809654378" updated="2015-04-16 12:13:47.0" protectedtitlecache="false" titleCache="Taxon b sec. ???" doubtful="false" publish="true" usenamecache="false" excluded="false" taxonstatusunknown="false" taxonomicchildrencount="0" unplaced="false" createdby_id="10" updatedby_id="10" name_id="13"/>
78
  <TaxonBase DTYPE="Taxon" id="14" created="2015-03-09 15:51:24.0" uuid="b38d0d73-9a20-4894-99bb-2148ee6b10d0" updated="2015-04-09 13:50:03.0" protectedtitlecache="false" titleCache="Taxon c sec. ???" doubtful="false" publish="true" usenamecache="false" excluded="false" taxonstatusunknown="false" taxonomicchildrencount="0" unplaced="false" createdby_id="10" updatedby_id="10" name_id="14"/>
79
  <TaxonBase DTYPE="Synonym" id="15" created="2015-03-09 15:51:31.0" uuid="1e240011-aec1-4f94-a934-f3bd0e9df9a5" updated="2015-03-09 15:51:44.0" protectedtitlecache="false" titleCache="Htsynonym aofc sec. ???" doubtful="false" publish="true" usenamecache="false" createdby_id="10" updatedby_id="10" name_id="15"/>
80
  <TaxonBase DTYPE="Taxon" id="16" created="2015-03-09 15:52:34.0" uuid="eaac797e-cac7-4649-97cf-c7b580076895" updated="2015-04-16 12:09:32.0" protectedtitlecache="false" titleCache="Taxon a sec. Journal Reference 1" doubtful="false" publish="true" usenamecache="false" excluded="false" taxonstatusunknown="false" taxonomicchildrencount="0" unplaced="true" createdby_id="10" updatedby_id="10" name_id="16" sec_id="21"/>
81
  <TaxonBase DTYPE="Synonym" id="17" created="2015-03-09 15:52:53.0" uuid="5b6219d0-ae66-4a09-9b5f-af9fc418a085" updated="2015-03-09 15:52:57.0" protectedtitlecache="false" titleCache="Hmsynonym aofa sec. ???" doubtful="false" publish="true" usenamecache="false" createdby_id="10" updatedby_id="10" name_id="17"/>
82
  <TaxonBase DTYPE="Synonym" id="18" created="2015-03-09 15:53:06.0" uuid="4a85597d-b116-41d1-805c-be8168f5715b" updated="2015-03-09 15:53:07.0" protectedtitlecache="false" titleCache="Htsynonym bofa sec. ???" doubtful="false" publish="true" usenamecache="false" createdby_id="10" updatedby_id="10" name_id="18"/>
83
  <TaxonBase DTYPE="Taxon" id="19" created="2015-03-09 15:53:21.0" uuid="5004a8e7-b907-4744-b67e-44ccb057ab3b" updated="2015-03-09 15:53:23.0" protectedtitlecache="false" titleCache="Taxon b sec. ???" doubtful="false" publish="true" usenamecache="false" excluded="false" taxonstatusunknown="false" taxonomicchildrencount="0" unplaced="false" createdby_id="10" updatedby_id="10" name_id="19"/>
84
  <TaxonBase DTYPE="Taxon" id="20" created="2015-03-09 15:53:30.0" uuid="3d71c8b8-3bec-4f5f-ba23-6f9d55ef84e9" updated="2015-04-16 12:09:32.0" protectedtitlecache="false" titleCache="Taxon c sec. ???" doubtful="false" publish="true" usenamecache="false" excluded="false" taxonstatusunknown="false" taxonomicchildrencount="0" unplaced="false" createdby_id="10" updatedby_id="10" name_id="20"/>
85
  <TaxonBase DTYPE="Synonym" id="21" created="2015-03-09 15:53:49.0" uuid="cdd27491-1b41-4119-86f5-0ffd33475769" updated="2015-03-09 15:53:52.0" protectedtitlecache="false" titleCache="Htsynonym aofc sec. ???" doubtful="false" publish="true" usenamecache="false" createdby_id="10" updatedby_id="10" name_id="21"/>
86
  <TaxonBase DTYPE="Taxon" id="30" created="2015-03-10 13:40:30.0" uuid="5f713f69-e03e-4a11-8a55-700fbbf44805" updated="2015-04-16 12:14:46.0" protectedtitlecache="false" titleCache="Taxon d sec. ???" doubtful="false" publish="true" usenamecache="false" excluded="false" taxonstatusunknown="false" taxonomicchildrencount="0" unplaced="false" createdby_id="10" updatedby_id="10" name_id="30"/>
87
  <TaxonBase DTYPE="Synonym" id="40" created="2015-04-10 10:31:09.0" uuid="2c4cad2b-051e-4afd-b54f-fdf197d782c3" protectedtitlecache="false" titleCache="Synonym a sec. Book Reference 1" doubtful="false" publish="true" usenamecache="false" name_id="40" sec_id="20"/>
88
  <TaxonBase DTYPE="Taxon" id="50" created="2015-04-15 14:53:53.0" uuid="84e99e24-f50a-4726-92d0-6088430c492a" updated="2015-04-16 12:11:55.0" protectedtitlecache="false" titleCache="Taxon e sec. ???" doubtful="false" publish="true" usenamecache="false" excluded="false" taxonstatusunknown="false" taxonomicchildrencount="0" unplaced="false" createdby_id="10" updatedby_id="10" name_id="50"/>
89
  <TaxonBase DTYPE="Taxon" id="51" created="2015-04-15 14:54:26.0" uuid="c25e0366-32a6-4283-8e5e-4fe908d567cf" updated="2015-04-15 14:54:28.0" protectedtitlecache="false" titleCache="Taxon f sec. ???" doubtful="false" publish="true" usenamecache="false" excluded="false" taxonstatusunknown="false" taxonomicchildrencount="0" unplaced="false" createdby_id="10" updatedby_id="10" name_id="51"/>
90
  <TaxonBase DTYPE="Taxon" id="60" created="2015-05-06 11:07:15.0" uuid="7fe8f302-d440-4fcc-a1ba-e77d3b920987" updated="2015-05-06 11:07:17.0" protectedtitlecache="false" titleCache="Taxon ×withverylongspecificepithet subsp. Me sec. ???" doubtful="false" publish="true" usenamecache="false" excluded="false" taxonstatusunknown="false" taxonomicchildrencount="0" unplaced="false" createdby_id="10" updatedby_id="10" name_id="60"/>
76 91

  
77 92
  <SynonymRelationship id="10" created="2015-03-09 15:49:30.0" uuid="f3b087a0-ff03-4a8c-97c1-c06a23d77ac0" updated="2015-03-09 15:50:21.0" doubtful="false" partial="false" proparte="false" createdby_id="10" updatedby_id="10" relatedfrom_id="11" relatedto_id="10" type_id="888"/>
78 93
  <SynonymRelationship id="11" created="2015-03-09 15:50:25.0" uuid="3d0d79b6-37b1-4541-a01d-35f88721a39b" updated="2015-03-09 15:50:54.0" doubtful="false" partial="false" proparte="false" createdby_id="10" updatedby_id="10" relatedfrom_id="12" relatedto_id="10" type_id="889"/>
......
85 100
  <Reference id="20" created="2015-04-02 09:42:49.0" uuid="b7dbc26f-30a0-49e2-9ca6-bbeeefbb9909" updated="2015-04-02 09:42:53.0" protectedtitlecache="true" titleCache="Book Reference 1" abbrevtitlecache="" nomenclaturallyrelevant="false" parsingproblem="0" problemends="-1" problemstarts="-1" protectedabbrevtitlecache="false" refType="BK" createdby_id="10" updatedby_id="10"/>
86 101
  <Reference id="21" created="2015-04-02 09:43:04.0" uuid="300ac33d-478a-4a89-ab83-6d89c5142e41" updated="2015-04-02 09:43:07.0" protectedtitlecache="true" titleCache="Journal Reference 1" abbrevtitlecache="" nomenclaturallyrelevant="false" parsingproblem="0" problemends="-1" problemstarts="-1" protectedabbrevtitlecache="false" refType="JOU" createdby_id="10" updatedby_id="10"/>
87 102

  
88
  <AgentBase DTYPE="Person" id="10" created="2015-03-09 15:49:22.0" uuid="4b8ff099-3e70-4677-8fb6-58b6531b1f28" updated="2015-03-09 15:49:25.0" protectedtitlecache="false" titleCache="A" nomenclaturaltitle="A" createdby_id="10" updatedby_id="10"/>
89
  <AgentBase DTYPE="Person" id="11" created="2015-03-09 15:51:11.0" uuid="95e664ad-24dd-4688-ba94-ca319ea4bbda" updated="2015-03-09 15:51:14.0" protectedtitlecache="false" titleCache="B" nomenclaturaltitle="B" createdby_id="10" updatedby_id="10"/>
90
  <AgentBase DTYPE="Person" id="12" created="2015-03-09 15:51:24.0" uuid="c194d0c6-6d10-4536-a06d-ba72a097459f" updated="2015-03-09 15:51:25.0" protectedtitlecache="false" titleCache="C" nomenclaturaltitle="C" createdby_id="10" updatedby_id="10"/>
91
  <AgentBase DTYPE="Person" id="13" created="2015-03-09 15:52:34.0" uuid="2c92e477-5732-4cbe-bf1a-0427b87a6bb1" updated="2015-03-09 15:52:42.0" protectedtitlecache="false" titleCache="A" nomenclaturaltitle="A" createdby_id="10" updatedby_id="10"/>
92
  <AgentBase DTYPE="Person" id="14" created="2015-03-09 15:53:21.0" uuid="fcc573b3-b0a3-46a2-b9ec-041a2c90dee4" updated="2015-03-09 15:53:23.0" protectedtitlecache="false" titleCache="B" nomenclaturaltitle="B" createdby_id="10" updatedby_id="10"/>
93
  <AgentBase DTYPE="Person" id="15" created="2015-03-09 15:53:30.0" uuid="2eade852-9862-42ff-b5c4-e17a9e21aa3b" updated="2015-03-09 15:53:32.0" protectedtitlecache="false" titleCache="C" nomenclaturaltitle="C" createdby_id="10" updatedby_id="10"/>
94
  <AgentBase DTYPE="Person" id="20" created="2015-03-10 13:40:30.0" uuid="4fc5c7d9-1fbc-4494-bd2d-0e9ccbda0fba" updated="2015-03-10 13:40:31.0" protectedtitlecache="false" titleCache="D" nomenclaturaltitle="D" createdby_id="10" updatedby_id="10"/>
103
  <AgentBase DTYPE="Person" id="40" created="2015-05-06 11:07:47.0" uuid="9d9bea86-192d-4ca7-9748-3ca7a2a113f2" updated="2015-05-06 11:08:05.0" protectedtitlecache="true" titleCache="Me" nomenclaturaltitle="Me" createdby_id="10" updatedby_id="10"/>
95 104

  
96 105
  
97 106
</dataset>

Also available in: Unified diff