Skip to content

Package: EMFFormsCategoryRenderer

EMFFormsCategoryRenderer

nameinstructionbranchcomplexitylinemethod
EMFFormsCategoryRenderer(EMFFormsSpreadsheetRendererFactory, ReportService)
M: 0 C: 9
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 4
100%
M: 0 C: 1
100%
getSheetName(Workbook, VCategory)
M: 0 C: 63
100%
M: 2 C: 4
67%
M: 2 C: 2
50%
M: 0 C: 11
100%
M: 0 C: 1
100%
render(Workbook, VCategory, ViewModelContext, EMFFormsSpreadsheetRenderTarget)
M: 9 C: 33
79%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 1 C: 8
89%
M: 0 C: 1
100%

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 Neufeld - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emfforms.internal.spreadsheet.core.renderer.categorization;
15:
16: import org.apache.poi.ss.usermodel.Workbook;
17: import org.apache.poi.ss.util.WorkbookUtil;
18: import org.eclipse.emf.ecp.view.spi.categorization.model.VCategory;
19: import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
20: import org.eclipse.emf.ecp.view.spi.model.VAttachment;
21: import org.eclipse.emf.ecp.view.spi.model.VElement;
22: import org.eclipse.emf.emfforms.spi.view.annotation.model.VAnnotation;
23: import org.eclipse.emf.emfforms.spi.view.annotation.model.VAnnotationFactory;
24: import org.eclipse.emfforms.spi.common.report.ReportService;
25: import org.eclipse.emfforms.spi.spreadsheet.core.EMFFormsAbstractSpreadsheetRenderer;
26: import org.eclipse.emfforms.spi.spreadsheet.core.EMFFormsNoRendererException;
27: import org.eclipse.emfforms.spi.spreadsheet.core.EMFFormsSpreadsheetRenderTarget;
28: import org.eclipse.emfforms.spi.spreadsheet.core.EMFFormsSpreadsheetRendererFactory;
29: import org.eclipse.emfforms.spi.spreadsheet.core.EMFFormsSpreadsheetReport;
30:
31: /**
32: * Spreadsheet renderer for {@link VCategory}.
33: *
34: * @author Eugen Neufeld
35: */
36: public class EMFFormsCategoryRenderer extends EMFFormsAbstractSpreadsheetRenderer<VCategory> {
37:
38:         private static final String SHEET_NAME_KEY = "SheetNameKey"; //$NON-NLS-1$
39:         private final EMFFormsSpreadsheetRendererFactory rendererFactory;
40:         private final ReportService reportService;
41:
42:         /**
43:          * Default constructor.
44:          *
45:          * @param rendererFactory The EMFFormsSpreadsheetRendererFactory to use
46:          * @param reportService The {@link ReportService} to use
47:          */
48:         public EMFFormsCategoryRenderer(EMFFormsSpreadsheetRendererFactory rendererFactory,
49:                 ReportService reportService) {
50:                 this.rendererFactory = rendererFactory;
51:                 this.reportService = reportService;
52:         }
53:
54:         /**
55:          * {@inheritDoc}
56:          *
57:          * @see org.eclipse.emfforms.spi.spreadsheet.core.EMFFormsAbstractSpreadsheetRenderer#render(org.apache.poi.ss.usermodel.Workbook,
58:          * org.eclipse.emf.ecp.view.spi.model.VElement, org.eclipse.emf.ecp.view.spi.context.ViewModelContext,
59:          * org.eclipse.emfforms.spi.spreadsheet.core.EMFFormsSpreadsheetRenderTarget)
60:          */
61:         @Override
62:         public int render(Workbook workbook, VCategory vElement, ViewModelContext viewModelContext,
63:                 EMFFormsSpreadsheetRenderTarget renderTarget) {
64:                 int numberRenderedColumns = 0;
65:                 try {
66:                         final EMFFormsAbstractSpreadsheetRenderer<VElement> renderer = rendererFactory.getRendererInstance(
67:                                 vElement.getComposite(), viewModelContext);
68:                         final String sheetName = getSheetName(workbook, vElement);
69:
70:                         numberRenderedColumns += renderer.render(workbook, vElement.getComposite(), viewModelContext,
71:                                 new EMFFormsSpreadsheetRenderTarget(sheetName, renderTarget.getRow(), 0));
72:                 } catch (final EMFFormsNoRendererException ex) {
73:                         reportService.report(new EMFFormsSpreadsheetReport(ex, EMFFormsSpreadsheetReport.ERROR));
74:                 }
75:
76:                 return numberRenderedColumns;
77:         }
78:
79:         private String getSheetName(Workbook workbook, VCategory vElement) {
80:•                for (final VAttachment vAttachment : vElement.getAttachments()) {
81:•                        if (VAnnotation.class.isInstance(vAttachment)
82:•                                && SHEET_NAME_KEY.equals(VAnnotation.class.cast(vAttachment).getKey())) {
83:                                 return VAnnotation.class.cast(vAttachment).getValue();
84:                         }
85:                 }
86:                 final VAnnotation annotation = VAnnotationFactory.eINSTANCE.createAnnotation();
87:                 annotation.setKey(SHEET_NAME_KEY);
88:                 final String sheetName = WorkbookUtil
89:                         .createSafeSheetName(workbook.getNumberOfSheets() + 1 + " " + vElement.getLabel()); //$NON-NLS-1$
90:                 annotation.setValue(sheetName);
91:                 vElement.getAttachments().add(annotation);
92:                 return annotation.getValue();
93:         }
94:
95: }