Revision 058a92f1
Added by Andreas Müller over 1 year ago
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/ImportManager.java | ||
---|---|---|
23 | 23 |
import org.eclipse.core.runtime.Status; |
24 | 24 |
import org.eclipse.core.runtime.jobs.Job; |
25 | 25 |
import org.eclipse.swt.widgets.Display; |
26 |
import org.eclipse.ui.PlatformUI; |
|
27 | 26 |
|
28 | 27 |
import eu.etaxonomy.cdm.api.application.CdmApplicationState; |
29 | 28 |
import eu.etaxonomy.cdm.api.application.ICdmRepository; |
30 | 29 |
import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor; |
31 |
import eu.etaxonomy.cdm.io.common.CdmDefaultImport; |
|
32 | 30 |
import eu.etaxonomy.cdm.io.common.IImportConfigurator; |
33 | 31 |
import eu.etaxonomy.cdm.io.common.IImportConfigurator.SOURCE_TYPE; |
34 | 32 |
import eu.etaxonomy.cdm.io.common.ImportConfiguratorBase; |
... | ... | |
49 | 47 |
import eu.etaxonomy.taxeditor.event.EventUtility; |
50 | 48 |
import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants; |
51 | 49 |
import eu.etaxonomy.taxeditor.model.AbstractUtility; |
52 |
import eu.etaxonomy.taxeditor.model.CdmProgressMonitorAdapter; |
|
53 | 50 |
import eu.etaxonomy.taxeditor.model.MessagingUtils; |
54 | 51 |
import eu.etaxonomy.taxeditor.operation.IPostMoniteredOperationEnabled; |
55 | 52 |
import eu.etaxonomy.taxeditor.store.CdmStore; |
56 | 53 |
import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin; |
57 |
import eu.etaxonomy.taxeditor.ui.dialog.ReportTextDialog; |
|
58 | 54 |
|
59 | 55 |
/** |
60 | 56 |
* @author n.hoffmann |
... | ... | |
74 | 70 |
return new ImportManager(applicationConfiguration); |
75 | 71 |
} |
76 | 72 |
|
77 |
/** |
|
78 |
* Use when importing data into the current application context |
|
79 |
* |
|
80 |
* @param configurator |
|
81 |
* a {@link eu.etaxonomy.cdm.io.common.IImportConfigurator} |
|
82 |
* object. |
|
83 |
* @return a {@link org.eclipse.core.runtime.jobs.Job} object. |
|
84 |
*/ |
|
85 |
@Override |
|
86 |
protected Job createIOJob(final IImportConfigurator configurator) { |
|
87 |
Assert.isNotNull(configurator, "Configuration may not be null"); |
|
88 |
|
|
89 |
final Display display = Display.getDefault(); |
|
90 |
|
|
91 |
Job job = new Job("Import: " + configurator.getClass().getSimpleName()) { |
|
92 |
|
|
93 |
@Override |
|
94 |
protected IStatus run(IProgressMonitor monitor) { |
|
95 |
monitor.beginTask("Importing data", 100); |
|
96 |
configurator.setProgressMonitor(CdmProgressMonitorAdapter |
|
97 |
.CreateSubMonitor(monitor, 70)); |
|
98 |
|
|
99 |
monitor.worked(5); |
|
100 |
|
|
101 |
CdmDefaultImport<IImportConfigurator> importer = new CdmDefaultImport<>(); |
|
102 |
importer.setCdmAppController(applicationConfiguration); |
|
103 |
monitor.worked(5); |
|
104 |
ImportResult importResult = null; |
|
105 |
try { |
|
106 |
importResult = importer.invoke(configurator); |
|
107 |
|
|
108 |
monitor.worked(80); |
|
109 |
} catch (RuntimeException e) { |
|
110 |
MessagingUtils.messageDialog( |
|
111 |
"Error importing data", |
|
112 |
this, |
|
113 |
"An error occurred while" |
|
114 |
+ "importing from source '" |
|
115 |
+ configurator.getSourceNameString() |
|
116 |
+ "'.\n" |
|
117 |
+ "Please check error log for details.", e); |
|
118 |
} |
|
119 |
|
|
120 |
monitor.worked(5); |
|
121 |
monitor.done(); |
|
122 |
|
|
123 |
|
|
124 |
final StringBuilder reportText = new StringBuilder(); |
|
125 |
if(importResult!=null){ |
|
126 |
List<byte[]> reports = importResult.getReports(); |
|
127 |
for (byte[] bs : reports) { |
|
128 |
reportText.append(new String(bs)); |
|
129 |
} |
|
130 |
} |
|
131 |
display.asyncExec(new Runnable() { |
|
132 |
|
|
133 |
@Override |
|
134 |
public void run() { |
|
135 |
// display reports with possibility to save |
|
136 |
ReportTextDialog dialog = new ReportTextDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()); |
|
137 |
dialog.setTitle(configurator.getClass().getSimpleName()+" Report"); |
|
138 |
dialog.setReportText(reportText.toString()); |
|
139 |
dialog.open(); |
|
140 |
|
|
141 |
CdmStore.getContextManager().notifyContextRefresh(); |
|
142 |
|
|
143 |
} |
|
144 |
}); |
|
145 |
|
|
146 |
return Status.OK_STATUS; |
|
147 |
} |
|
148 |
}; |
|
149 |
|
|
150 |
return job; |
|
151 |
|
|
152 |
} |
|
73 |
// /**
|
|
74 |
// * Use when importing data into the current application context
|
|
75 |
// *
|
|
76 |
// * @param configurator
|
|
77 |
// * a {@link eu.etaxonomy.cdm.io.common.IImportConfigurator}
|
|
78 |
// * object.
|
|
79 |
// * @return a {@link org.eclipse.core.runtime.jobs.Job} object.
|
|
80 |
// */
|
|
81 |
// @Override
|
|
82 |
// protected Job createIOJob(final IImportConfigurator configurator) {
|
|
83 |
// Assert.isNotNull(configurator, "Configuration may not be null");
|
|
84 |
// |
|
85 |
// final Display display = Display.getDefault();
|
|
86 |
// |
|
87 |
// Job job = new Job("Import: " + configurator.getClass().getSimpleName()) {
|
|
88 |
// |
|
89 |
// @Override
|
|
90 |
// protected IStatus run(IProgressMonitor monitor) {
|
|
91 |
// monitor.beginTask("Importing data", 100);
|
|
92 |
// configurator.setProgressMonitor(CdmProgressMonitorAdapter
|
|
93 |
// .CreateSubMonitor(monitor, 70));
|
|
94 |
// |
|
95 |
// monitor.worked(5);
|
|
96 |
// |
|
97 |
// CdmDefaultImport<IImportConfigurator> importer = new CdmDefaultImport<>();
|
|
98 |
// importer.setCdmAppController(applicationConfiguration);
|
|
99 |
// monitor.worked(5);
|
|
100 |
// ImportResult importResult = null;
|
|
101 |
// try {
|
|
102 |
// importResult = importer.invoke(configurator);
|
|
103 |
// |
|
104 |
// monitor.worked(80);
|
|
105 |
// } catch (RuntimeException e) {
|
|
106 |
// MessagingUtils.messageDialog(
|
|
107 |
// "Error importing data",
|
|
108 |
// this,
|
|
109 |
// "An error occurred while"
|
|
110 |
// + "importing from source '"
|
|
111 |
// + configurator.getSourceNameString()
|
|
112 |
// + "'.\n"
|
|
113 |
// + "Please check error log for details.", e);
|
|
114 |
// }
|
|
115 |
// |
|
116 |
// monitor.worked(5);
|
|
117 |
// monitor.done();
|
|
118 |
// |
|
119 |
// |
|
120 |
// final StringBuilder reportText = new StringBuilder();
|
|
121 |
// if(importResult!=null){
|
|
122 |
// List<byte[]> reports = importResult.getReports();
|
|
123 |
// for (byte[] bs : reports) {
|
|
124 |
// reportText.append(new String(bs));
|
|
125 |
// }
|
|
126 |
// }
|
|
127 |
// display.asyncExec(new Runnable() {
|
|
128 |
// |
|
129 |
// @Override
|
|
130 |
// public void run() {
|
|
131 |
// // display reports with possibility to save
|
|
132 |
// ReportTextDialog dialog = new ReportTextDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
|
|
133 |
// dialog.setTitle(configurator.getClass().getSimpleName()+" Report");
|
|
134 |
// dialog.setReportText(reportText.toString());
|
|
135 |
// dialog.open();
|
|
136 |
// |
|
137 |
// CdmStore.getContextManager().notifyContextRefresh();
|
|
138 |
// |
|
139 |
// }
|
|
140 |
// });
|
|
141 |
// |
|
142 |
// return Status.OK_STATUS;
|
|
143 |
// }
|
|
144 |
// };
|
|
145 |
// |
|
146 |
// return job;
|
|
147 |
// |
|
148 |
// }
|
|
153 | 149 |
|
154 | 150 |
public Job createIOServiceJob(IImportConfigurator configurator, InputStream is, SOURCE_TYPE type) { |
155 | 151 |
|
Also available in: Unified diff
ref #10189 split CdmApplicationController into repository and application part in TaxEditor