/******************************************************************************* * Copyright (c) 2013 AKSW Xturtle Project, itemis AG (http://www.itemis.eu). * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html ******************************************************************************/ package de.itemis.tooling.xturtle.validation; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.xtext.resource.IEObjectDescription; import org.eclipse.xtext.util.CancelIndicator; import org.eclipse.xtext.validation.NamesAreUniqueValidationHelper; import org.eclipse.xtext.validation.ValidationMessageAcceptor; import com.google.inject.Inject; public class TurtleNamesAreUniqueValidationHelper extends NamesAreUniqueValidationHelper { @Inject private TurtleValidationSeverityLevels levels; @Override public void checkUniqueNames(Iterable<IEObjectDescription> descriptions, CancelIndicator cancelIndicator, ValidationMessageAcceptor acceptor) { if(levels.getDuplicateSubjectLevel()!=null){ super.checkUniqueNames(descriptions, cancelIndicator, acceptor); } } //elements are duplicate if they have the same fully qualified name //here we adapt name printed @Override public String getDuplicateNameErrorMessage(IEObjectDescription description, EClass clusterType, EStructuralFeature feature) { StringBuilder result = new StringBuilder(64); result.append("Duplicate "); result.append(getTypeLabel(clusterType)); result.append(" '"); result.append(description.getQualifiedName().toString("")); result.append("'"); return result.toString(); } @Override protected void createDuplicateNameError(IEObjectDescription description, EClass clusterType, ValidationMessageAcceptor acceptor) { EObject object = description.getEObjectOrProxy(); EStructuralFeature feature = getNameFeature(object); String message=getDuplicateNameErrorMessage(description, clusterType, feature); int index=ValidationMessageAcceptor.INSIGNIFICANT_INDEX; switch (levels.getDuplicateSubjectLevel()) { case ERROR: acceptor.acceptError(message, object, feature, index, null); break; case WARNING: acceptor.acceptWarning(message, object, feature, index, null); break; case INFO: acceptor.acceptInfo(message, object, feature, index, null); break; default: break; } } }