Revision 8ab41788
Added by Patrick Plitzner over 4 years ago
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
ref #8450 Move key generation to long running task