Project

General

Profile

« Previous | Next » 

Revision 8ab41788

Added by Patrick Plitzner over 4 years ago

ref #8450 Move key generation to long running task

View differences:

eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/CharacterMatrixBottomToolbar.java
35 35

  
36 36
import eu.etaxonomy.cdm.api.application.CdmApplicationState;
37 37
import eu.etaxonomy.cdm.api.service.IDescriptiveDataSetService;
38
import eu.etaxonomy.cdm.api.service.IPolytomousKeyService;
39 38
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
40
import eu.etaxonomy.cdm.api.service.ITaxonService;
41 39
import eu.etaxonomy.cdm.api.service.UpdateResult;
42 40
import eu.etaxonomy.cdm.api.service.config.DescriptionAggregationConfiguration;
43
import eu.etaxonomy.cdm.api.service.config.IdentifiableServiceConfiguratorImpl;
44 41
import eu.etaxonomy.cdm.api.service.dto.RowWrapperDTO;
45 42
import eu.etaxonomy.cdm.api.service.dto.SpecimenRowWrapperDTO;
46 43
import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
47 44
import eu.etaxonomy.cdm.model.description.CategoricalData;
48 45
import eu.etaxonomy.cdm.model.description.DescriptiveDataSet;
49 46
import eu.etaxonomy.cdm.model.description.Feature;
50
import eu.etaxonomy.cdm.model.description.PolytomousKey;
51 47
import eu.etaxonomy.cdm.model.description.QuantitativeData;
52 48
import eu.etaxonomy.cdm.model.taxon.Taxon;
53 49
import eu.etaxonomy.cdm.persistence.dto.SpecimenNodeWrapper;
54 50
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
55
import eu.etaxonomy.cdm.strategy.generate.PolytomousKeyGenerator;
56
import eu.etaxonomy.cdm.strategy.generate.PolytomousKeyGeneratorConfigurator;
57 51
import eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin;
58 52
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
59 53
import eu.etaxonomy.taxeditor.model.ImageResources;
......
168 162
                    if(StoreUtil.promptCheckIsDirty(matrix.getPart())){
169 163
                        return;
170 164
                    }
171
                    PolytomousKeyGeneratorConfigurator keyConfig = new PolytomousKeyGeneratorConfigurator();
172
                    DescriptiveDataSet descriptiveDataSet = matrix.getDescriptiveDataSet();
173
                    keyConfig.setDataSet(descriptiveDataSet);
174
                    PolytomousKey key = new PolytomousKeyGenerator().invoke(keyConfig);
175
                    IPolytomousKeyService keyService = CdmStore.getService(IPolytomousKeyService.class);
176
                    IdentifiableServiceConfiguratorImpl<PolytomousKey> serviceConfig= new IdentifiableServiceConfiguratorImpl<>();
177
                    serviceConfig.setTitleSearchString(descriptiveDataSet.getTitleCache());
178
                    List<PolytomousKey> list = keyService.findByTitle(serviceConfig).getRecords();
179
                    if(list!=null){
180
                        // TODO clear old key
181
                        System.out.println("Key with same name found for this data set found");
182
                    }
183
                    key.setTitleCache(descriptiveDataSet.getTitleCache(), true);
184

  
185 165
                    Set<TaxonNodeDto> nodeDtos = matrix.getDescriptiveDataSet().getTaxonSubtreeFilter().stream()
186
                    .map(node->new TaxonNodeDto(node))
187
                    .collect(Collectors.toSet());
166
                            .map(node->new TaxonNodeDto(node))
167
                            .collect(Collectors.toSet());
188 168
                    TaxonNodeDto parentDto = CdmStore.getService(ITaxonNodeService.class).findCommonParentDto(nodeDtos);
189 169
                    UUID taxonUuid = parentDto.getTaxonUuid();
190 170
                    int response = MessagingUtils.confirmDialog(
......
202 182
                        }
203 183
                        taxonUuid = taxon.getUuid();
204 184
                    }
205

  
206
                    key.addTaxonomicScope((Taxon) CdmStore.getService(ITaxonService.class).load(taxonUuid));
207

  
208
                    key.print(System.out);
209
                    keyService.saveOrUpdate(key);
185
                    generateKey(matrix.getDescriptiveDataSet().getUuid(), taxonUuid);
210 186
                }
187

  
211 188
            });
212 189
        }
213 190
    }
......
307 284
        job.schedule();
308 285
    }
309 286

  
287
    private void generateKey(UUID datasetUuid, UUID taxonUuid) {
288

  
289
        UUID monitorUuid =  CdmApplicationState.getLongRunningTasksService().generatePolytomousKey(datasetUuid, taxonUuid);
290

  
291
        String jobLabel = "Generate polytomous key";
292
        Job job = Job.create(jobLabel, (ICoreRunnable) monitor -> {
293
            SubMonitor subMonitor = SubMonitor.convert(monitor);
294
            subMonitor.beginTask(jobLabel, IProgressMonitor.UNKNOWN);
295
            IRemotingProgressMonitor remotingMonitor;
296
            try {
297
                remotingMonitor = CdmStore.getProgressMonitorClientManager()
298
                        .pollMonitor(jobLabel,
299
                                monitorUuid,
300
                                50,
301
                                null,
302
                                (List)null,
303
                                subMonitor);
304
                Object resultObject = remotingMonitor.getResult();
305
                if(resultObject instanceof Exception){
306
                    MessagingUtils.errorDialog("Key generation failed", this, "Generating the polytomous key was not successfull", TaxeditorEditorPlugin.PLUGIN_ID, (Exception)resultObject, true, true);
307
                }
308
            } catch (InterruptedException e) {
309
                return;
310
            }
311
            monitor.done();
312
        });
313
        job.schedule();
314

  
315
    }
316

  
310 317
    private void aggregateCharts() {
311 318
        new Job("aggregate charts") {
312 319

  

Also available in: Unified diff