Revision 91b9bc97
Added by Katja Luther almost 6 years ago
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractUtility.java | ||
---|---|---|
237 | 237 |
// get the remoting monitor the first time to make sure that the |
238 | 238 |
// operation is valid |
239 | 239 |
final IProgressMonitorService progressMonitorService = CdmApplicationState.getCurrentAppConfig().getProgressMonitorService(); |
240 |
// final IRemotingProgressMonitor firstRemotingMonitor = progressMonitorService.getRemotingMonitor(uuid); |
|
241 |
// if(firstRemotingMonitor == null) { |
|
242 |
// throw new IllegalStateException("Remoting progress monitor is null"); |
|
243 |
// } |
|
240 |
final IRemotingProgressMonitor firstRemotingMonitor = progressMonitorService.getRemotingMonitor(uuid); |
|
241 |
if(firstRemotingMonitor == null) { |
|
242 |
throw new IllegalStateException("Remoting progress monitor is null"); |
|
243 |
} |
|
244 |
if (firstRemotingMonitor.isDone()){ |
|
245 |
createExportResult(label, urlString, createZip, firstRemotingMonitor); |
|
246 |
} |
|
244 | 247 |
|
245 | 248 |
Job job = new Job(label) { |
246 | 249 |
|
... | ... | |
260 | 263 |
} catch (Exception ex) { |
261 | 264 |
return new Status(Status.ERROR, TaxeditorStorePlugin.PLUGIN_ID, "Operation Interrupted", ex); |
262 | 265 |
} |
263 |
final StringBuilder reportSb = new StringBuilder(); |
|
264 |
if (remotingMonitor.getResult() instanceof ExportResult){ |
|
265 |
ExportResult result = (ExportResult)remotingMonitor.getResult(); |
|
266 |
|
|
267 |
reportSb.append(result.createReport()); |
|
268 |
|
|
269 |
if(!StringUtils.isBlank(reportSb.toString())) { |
|
270 |
Display.getDefault().asyncExec(new Runnable() { |
|
271 |
@Override |
|
272 |
public void run() { |
|
273 |
// display reports with possibility to save |
|
274 |
ReportTextDialog dialog = new ReportTextDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()); |
|
275 |
dialog.setTitle(label + " Report"); |
|
276 |
dialog.setReportText(reportSb.toString()); |
|
277 |
dialog.open(); |
|
278 |
} |
|
279 |
}); |
|
280 |
} |
|
281 |
|
|
282 |
if (urlString != null){ |
|
283 |
ExportDataWrapper data = result.getExportData(); |
|
284 |
try{ |
|
285 |
if (result.getExportData().getType().equals(ExportResultType.BYTE_ARRAY)){ |
|
286 |
byte[] exportData = (byte[])data.getExportData(); |
|
287 |
if(exportData != null){ |
|
288 |
File file = new File(urlString); |
|
289 |
FileOutputStream stream = new FileOutputStream(file); |
|
290 |
Writer out = new BufferedWriter(new OutputStreamWriter( |
|
291 |
stream, "UTF8")); |
|
292 |
|
|
293 |
stream.write(exportData); |
|
294 |
out.flush(); |
|
295 |
stream.close(); |
|
296 |
} |
|
297 |
} else if (result.getExportData().getType().equals(ExportResultType.MAP_BYTE_ARRAY)){ |
|
298 |
Map<String, byte[]> resultMap = (Map<String, byte[]>)data.getExportData(); |
|
299 |
Set<String> keySet = resultMap.keySet(); |
|
300 |
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW); |
|
301 |
Calendar cal = Calendar.getInstance(); |
|
302 |
String fileEnding = ".csv"; |
|
303 |
|
|
304 |
if (createZip){ |
|
305 |
File file = new File(urlString+File.separator + sdf.format(cal.getTime())+ ".zip"); |
|
306 |
FileOutputStream stream = new FileOutputStream(file); |
|
307 |
ZipOutputStream zos = new ZipOutputStream(stream); |
|
308 |
for (String key: keySet){ |
|
309 |
byte[] fileData = resultMap.get(key); |
|
310 |
ZipEntry entry = new ZipEntry( key + fileEnding); |
|
311 |
zos.putNextEntry(entry); |
|
312 |
zos.write(fileData); |
|
313 |
zos.closeEntry(); |
|
314 |
} |
|
315 |
zos.close(); |
|
316 |
}else{ |
|
317 |
if(result.getExportType().equals(ExportType.DWCA)){ |
|
318 |
|
|
319 |
File file = new File(urlString); |
|
320 |
FileOutputStream stream = new FileOutputStream(file); |
|
321 |
ZipOutputStream zos = new ZipOutputStream(stream); |
|
322 |
for (String key: keySet){ |
|
323 |
byte[] fileData = resultMap.get(key); |
|
324 |
ZipEntry entry = new ZipEntry( key); |
|
325 |
zos.putNextEntry(entry); |
|
326 |
zos.write(fileData); |
|
327 |
zos.closeEntry(); |
|
328 |
} |
|
329 |
zos.close(); |
|
330 |
}else{ |
|
331 |
for (String key: keySet){ |
|
332 |
byte[] fileData = resultMap.get(key); |
|
333 |
File file = new File(urlString+File.separator + key + fileEnding); |
|
334 |
FileOutputStream stream = new FileOutputStream(file); |
|
335 |
Writer out = new BufferedWriter(new OutputStreamWriter( |
|
336 |
stream, "UTF8")); |
|
337 |
stream.write(fileData); |
|
338 |
stream.close(); |
|
339 |
} |
|
340 |
} |
|
341 |
} |
|
342 |
}else{ |
|
343 |
logger.error("This kind of result data is not supported yet." + result.getExportData().getType().toString()); |
|
344 |
} |
|
345 |
} catch(Exception e){ |
|
346 |
logger.error(e.getStackTrace()); |
|
347 |
} |
|
348 |
} |
|
349 |
} |
|
266 |
|
|
267 |
createExportResult(label, urlString, createZip, remotingMonitor); |
|
350 | 268 |
return Status.OK_STATUS; |
351 | 269 |
} |
352 | 270 |
|
271 |
|
|
272 |
|
|
353 | 273 |
@Override |
354 | 274 |
protected void canceling() { |
355 | 275 |
CdmStore.getCurrentApplicationConfiguration().getProgressMonitorService().cancel(uuid); |
... | ... | |
683 | 603 |
if(firstRemotingMonitor == null) { |
684 | 604 |
throw new IllegalStateException("Remoting progress monitor is null"); |
685 | 605 |
} |
606 |
if (firstRemotingMonitor.isDone()){ |
|
607 |
createResult(label, showResult, firstRemotingMonitor); |
|
608 |
return Status.OK_STATUS; |
|
609 |
} |
|
686 | 610 |
|
687 | 611 |
Job job = new Job(label) { |
688 | 612 |
|
... | ... | |
702 | 626 |
} catch (Exception ex) { |
703 | 627 |
return new Status(Status.ERROR, TaxeditorStorePlugin.PLUGIN_ID, "Operation Interrupted", ex); |
704 | 628 |
} |
705 |
final StringBuilder reportSb = new StringBuilder(); |
|
629 |
|
|
706 | 630 |
|
707 | 631 |
// collect reports |
708 | 632 |
// for(String report : remotingMonitor.getResult()) { |
709 |
if (remotingMonitor.getResult() instanceof ExportResult) { |
|
710 |
reportSb.append(((ExportResult)remotingMonitor.getResult()).createReport()); |
|
711 |
}else if (remotingMonitor.getResult() instanceof UpdateResult){ |
|
712 |
if (((UpdateResult)remotingMonitor.getResult()).isOk()){ |
|
713 |
reportSb.append("Update successfull. \n"+"Updated Objects: " + ((UpdateResult)remotingMonitor.getResult()).getUpdatedObjects().size()); |
|
714 |
} |
|
715 |
if (!((UpdateResult)remotingMonitor.getResult()).getExceptions().isEmpty()){ |
|
716 |
reportSb.append(((UpdateResult)remotingMonitor.getResult()).getExceptions().toString()); |
|
717 |
} |
|
718 |
} |
|
719 |
// } |
|
720 |
if(showResult && !StringUtils.isBlank(reportSb.toString()) && reportSb.length() != 0) { |
|
721 |
Display.getDefault().asyncExec(new Runnable() { |
|
722 |
@Override |
|
723 |
public void run() { |
|
724 |
// display reports with possibility to save |
|
725 |
ReportTextDialog dialog = new ReportTextDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()); |
|
726 |
dialog.setTitle(label + " Report"); |
|
727 |
dialog.setReportText(reportSb.toString()); |
|
728 |
dialog.open(); |
|
729 |
} |
|
730 |
}); |
|
731 |
} |
|
633 |
createResult(label, showResult, remotingMonitor); |
|
634 |
|
|
732 | 635 |
return Status.OK_STATUS; |
733 | 636 |
} |
734 | 637 |
|
638 |
|
|
639 |
|
|
735 | 640 |
@Override |
736 | 641 |
protected void canceling() { |
737 | 642 |
CdmStore.getCurrentApplicationConfiguration().getProgressMonitorService().cancel(uuid); |
... | ... | |
739 | 644 |
}; |
740 | 645 |
|
741 | 646 |
// configure the job |
742 |
job.setProperty(IProgressConstants.KEEP_PROPERTY, true); |
|
743 | 647 |
job.setUser(true); |
744 | 648 |
// schedule job |
745 | 649 |
job.schedule(); |
... | ... | |
756 | 660 |
return Status.OK_STATUS; |
757 | 661 |
} |
758 | 662 |
|
663 |
|
|
664 |
private static void createResult(final String label, final boolean showResult, |
|
665 |
IRemotingProgressMonitor remotingMonitor) { |
|
666 |
final StringBuilder reportSb = new StringBuilder(); |
|
667 |
if (remotingMonitor.getResult() instanceof ExportResult) { |
|
668 |
reportSb.append(((ExportResult)remotingMonitor.getResult()).createReport()); |
|
669 |
}else if (remotingMonitor.getResult() instanceof UpdateResult){ |
|
670 |
if (((UpdateResult)remotingMonitor.getResult()).isOk()){ |
|
671 |
reportSb.append("Update successfull. \n"+"Updated Objects: " + ((UpdateResult)remotingMonitor.getResult()).getUpdatedObjects().size()); |
|
672 |
} |
|
673 |
if (!((UpdateResult)remotingMonitor.getResult()).getExceptions().isEmpty()){ |
|
674 |
reportSb.append(((UpdateResult)remotingMonitor.getResult()).getExceptions().toString()); |
|
675 |
} |
|
676 |
} |
|
677 |
// } |
|
678 |
if(showResult && !StringUtils.isBlank(reportSb.toString()) && reportSb.length() != 0) { |
|
679 |
Display.getDefault().asyncExec(new Runnable() { |
|
680 |
@Override |
|
681 |
public void run() { |
|
682 |
// display reports with possibility to save |
|
683 |
ReportTextDialog dialog = new ReportTextDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()); |
|
684 |
dialog.setTitle(label + " Report"); |
|
685 |
dialog.setReportText(reportSb.toString()); |
|
686 |
dialog.open(); |
|
687 |
} |
|
688 |
}); |
|
689 |
} |
|
690 |
} |
|
691 |
|
|
692 |
private static void createExportResult(final String label, String urlString, boolean createZip, |
|
693 |
IRemotingProgressMonitor remotingMonitor) { |
|
694 |
|
|
695 |
final StringBuilder reportSb = new StringBuilder(); |
|
696 |
if (remotingMonitor.getResult() instanceof ExportResult){ |
|
697 |
ExportResult result = (ExportResult)remotingMonitor.getResult(); |
|
698 |
|
|
699 |
reportSb.append(result.createReport()); |
|
700 |
|
|
701 |
if(!StringUtils.isBlank(reportSb.toString())) { |
|
702 |
Display.getDefault().asyncExec(new Runnable() { |
|
703 |
@Override |
|
704 |
public void run() { |
|
705 |
// display reports with possibility to save |
|
706 |
ReportTextDialog dialog = new ReportTextDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()); |
|
707 |
dialog.setTitle(label + " Report"); |
|
708 |
dialog.setReportText(reportSb.toString()); |
|
709 |
dialog.open(); |
|
710 |
} |
|
711 |
}); |
|
712 |
} |
|
713 |
|
|
714 |
if (urlString != null){ |
|
715 |
ExportDataWrapper data = result.getExportData(); |
|
716 |
try{ |
|
717 |
if (result.getExportData().getType().equals(ExportResultType.BYTE_ARRAY)){ |
|
718 |
byte[] exportData = (byte[])data.getExportData(); |
|
719 |
if(exportData != null){ |
|
720 |
File file = new File(urlString); |
|
721 |
FileOutputStream stream = new FileOutputStream(file); |
|
722 |
Writer out = new BufferedWriter(new OutputStreamWriter( |
|
723 |
stream, "UTF8")); |
|
724 |
|
|
725 |
stream.write(exportData); |
|
726 |
out.flush(); |
|
727 |
stream.close(); |
|
728 |
} |
|
729 |
} else if (result.getExportData().getType().equals(ExportResultType.MAP_BYTE_ARRAY)){ |
|
730 |
Map<String, byte[]> resultMap = (Map<String, byte[]>)data.getExportData(); |
|
731 |
Set<String> keySet = resultMap.keySet(); |
|
732 |
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW); |
|
733 |
Calendar cal = Calendar.getInstance(); |
|
734 |
String fileEnding = ".csv"; |
|
735 |
|
|
736 |
if (createZip){ |
|
737 |
File file = new File(urlString+File.separator + sdf.format(cal.getTime())+ ".zip"); |
|
738 |
FileOutputStream stream = new FileOutputStream(file); |
|
739 |
ZipOutputStream zos = new ZipOutputStream(stream); |
|
740 |
for (String key: keySet){ |
|
741 |
byte[] fileData = resultMap.get(key); |
|
742 |
ZipEntry entry = new ZipEntry( key + fileEnding); |
|
743 |
zos.putNextEntry(entry); |
|
744 |
zos.write(fileData); |
|
745 |
zos.closeEntry(); |
|
746 |
} |
|
747 |
zos.close(); |
|
748 |
}else{ |
|
749 |
if(result.getExportType().equals(ExportType.DWCA)){ |
|
750 |
|
|
751 |
File file = new File(urlString); |
|
752 |
FileOutputStream stream = new FileOutputStream(file); |
|
753 |
ZipOutputStream zos = new ZipOutputStream(stream); |
|
754 |
for (String key: keySet){ |
|
755 |
byte[] fileData = resultMap.get(key); |
|
756 |
ZipEntry entry = new ZipEntry( key); |
|
757 |
zos.putNextEntry(entry); |
|
758 |
zos.write(fileData); |
|
759 |
zos.closeEntry(); |
|
760 |
} |
|
761 |
zos.close(); |
|
762 |
}else{ |
|
763 |
for (String key: keySet){ |
|
764 |
byte[] fileData = resultMap.get(key); |
|
765 |
File file = new File(urlString+File.separator + key + fileEnding); |
|
766 |
FileOutputStream stream = new FileOutputStream(file); |
|
767 |
Writer out = new BufferedWriter(new OutputStreamWriter( |
|
768 |
stream, "UTF8")); |
|
769 |
stream.write(fileData); |
|
770 |
stream.close(); |
|
771 |
} |
|
772 |
} |
|
773 |
} |
|
774 |
}else{ |
|
775 |
logger.error("This kind of result data is not supported yet." + result.getExportData().getType().toString()); |
|
776 |
} |
|
777 |
} catch(Exception e){ |
|
778 |
logger.error(e.getStackTrace()); |
|
779 |
} |
|
780 |
} |
|
781 |
} |
|
782 |
} |
|
759 | 783 |
} |
Also available in: Unified diff
remove task from progress view after finish