| /** |
| * |
| * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) |
| * |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation |
| * |
| * |
| * This copyright notice shows up in the generated Java code |
| * |
| */ |
| |
| package org.eclipse.osbp.xtext.chart.validation |
| |
| import org.eclipse.osbp.xtext.chart.Chart |
| import org.eclipse.osbp.xtext.chart.ChartPackage |
| import org.eclipse.osbp.xtext.chart.ChartDSLPackage |
| import org.eclipse.emf.common.util.EList |
| import org.eclipse.xtext.validation.Check |
| import org.eclipse.osbp.xtext.chart.ChartAxis |
| |
| //import org.eclipse.xtext.validation.Check |
| |
| /** |
| * Custom validation rules. |
| * |
| * see http://www.eclipse.org/Xtext/documentation.html#validation |
| */ |
| class ChartDSLValidator extends AbstractChartDSLValidator { |
| |
| // public static val INVALID_NAME = 'invalidName' |
| // |
| // @Check |
| // def checkGreetingStartsWithCapital(Greeting greeting) { |
| // if (!Character.isUpperCase(greeting.name.charAt(0))) { |
| // warning('Name should start with a capital', |
| // MyDslPackage.Literals.GREETING__NAME, |
| // INVALID_NAME) |
| // } |
| // } |
| |
| @Check |
| def void checkAxis(ChartAxis chartAxis){ |
| var axis = chartAxis.axis |
| var axisName = axis.name |
| if (axis.eContainer===null && axisName.literal==="default"){ |
| error("Datamart has no attribute definitions anymore. This axis is not available.", ChartDSLPackage.Literals.CHART_AXIS__AXIS) |
| } |
| } |
| |
| @Check |
| def void checkDuplicateChartNames(Chart chart){ |
| var eObj = chart.eContainer() |
| while (!(eObj instanceof ChartPackage)) { |
| eObj = eObj.eContainer |
| } |
| if (eObj!==null){ |
| var chartPackage = eObj as ChartPackage; |
| if (findDuplicateChartNames(chartPackage.charts, chart.getName()) !== null){ |
| error("Duplicate chart name '".concat(chart.getName()).concat("'!"), ChartDSLPackage.Literals.CHART_BASE__NAME) |
| } |
| } |
| } |
| |
| def private Chart findDuplicateChartNames( |
| EList<Chart> charts, String chartName) { |
| var tempSet = <String>newHashSet() |
| for (Chart chart : charts){ |
| if (!tempSet.add(chart.name) && (chart.name.equals(chartName))){ |
| return chart |
| } |
| } |
| return null |
| } |
| |
| } |