Skip to content

Package: EMFFormsSpreadsheetStreamImporterImpl

EMFFormsSpreadsheetStreamImporterImpl

nameinstructionbranchcomplexitylinemethod
EMFFormsSpreadsheetStreamImporterImpl()
M: 3 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
importSpreadsheet(InputStream, EClass)
M: 63 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 17 C: 0
0%
M: 1 C: 0
0%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH and others.
3: *
4: * All rights reserved. This program and the accompanying materials
5: * are made available under the terms of the Eclipse Public License 2.0
6: * which accompanies this distribution, and is available at
7: * https://www.eclipse.org/legal/epl-2.0/
8: *
9: * SPDX-License-Identifier: EPL-2.0
10: *
11: * Contributors:
12: * Eugen - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emfforms.internal.spreadsheet.stream;
15:
16: import java.io.IOException;
17: import java.io.InputStream;
18:
19: import org.apache.poi.hssf.usermodel.HSSFWorkbook;
20: import org.apache.poi.ss.usermodel.Workbook;
21: import org.eclipse.emf.ecore.EClass;
22: import org.eclipse.emfforms.internal.spreadsheet.stream.messages.Messages;
23: import org.eclipse.emfforms.spi.common.report.ReportService;
24: import org.eclipse.emfforms.spi.spreadsheet.core.EMFFormsSpreadsheetReport;
25: import org.eclipse.emfforms.spi.spreadsheet.core.error.model.ErrorFactory;
26: import org.eclipse.emfforms.spi.spreadsheet.core.error.model.Severity;
27: import org.eclipse.emfforms.spi.spreadsheet.core.error.model.SpreadsheetImportResult;
28: import org.eclipse.emfforms.spi.spreadsheet.core.transfer.EMFFormsSpreadsheetImporter;
29: import org.eclipse.emfforms.spi.spreadsheet.stream.EMFFormsSpreadsheetStreamImporter;
30: import org.osgi.framework.BundleContext;
31: import org.osgi.framework.FrameworkUtil;
32: import org.osgi.framework.ServiceReference;
33:
34: /**
35: * Class for importing data from the provided InputStream.
36: *
37: * @author Eugen Neufeld
38: *
39: */
40: public class EMFFormsSpreadsheetStreamImporterImpl implements EMFFormsSpreadsheetStreamImporter {
41:
42:         /**
43:          * {@inheritDoc}
44:          *
45:          * @see EMFFormsSpreadsheetStreamImporter#importSpreadsheet(InputStream, org.eclipse.emf.ecore.EClass)
46:          */
47:         @Override
48:         public SpreadsheetImportResult importSpreadsheet(InputStream inputStream, EClass eClass) {
49:                 final BundleContext bundleContext = FrameworkUtil.getBundle(getClass()).getBundleContext();
50:                 final ServiceReference<ReportService> serviceReference = bundleContext.getServiceReference(ReportService.class);
51:                 final ReportService reportService = bundleContext.getService(serviceReference);
52:
53:                 Workbook workbook = null;
54:                 try {
55:                         workbook = new HSSFWorkbook(inputStream);
56:                 } catch (final IOException ex) {
57:                         reportService.report(new EMFFormsSpreadsheetReport(ex, 4));
58:                 } finally {
59:                         try {
60:                                 inputStream.close();
61:                         } catch (final IOException ex) {
62:                                 reportService.report(new EMFFormsSpreadsheetReport(ex, 4));
63:                         }
64:                 }
65:                 bundleContext.ungetService(serviceReference);
66:•                if (workbook == null) {
67:                         final SpreadsheetImportResult result = ErrorFactory.eINSTANCE.createSpreadsheetImportResult();
68:                         result.reportError(Severity.CANCEL, Messages.EMFFormsSpreadsheetStreamImporterImpl_CouldNotCreateWorkbook);
69:                         return result;
70:                 }
71:                 final SpreadsheetImportResult result = EMFFormsSpreadsheetImporter.INSTANCE.importSpreadsheet(workbook, eClass);
72:                 return result;
73:         }
74:
75: }