/* * generated by Xtext */ package com.temenos.interaction.rimdsl.validation; import javax.inject.Inject; import org.eclipse.xtext.naming.IQualifiedNameProvider; import org.eclipse.xtext.naming.QualifiedName; import org.eclipse.xtext.resource.IEObjectDescription; import org.eclipse.xtext.resource.IResourceDescriptions; import org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider; import org.eclipse.xtext.validation.Check; import org.eclipse.xtext.validation.CheckType; import org.eclipse.xtext.xbase.lib.IterableExtensions; import com.temenos.interaction.rimdsl.rim.RimPackage; /** * Custom validation rules. * * see http://www.eclipse.org/Xtext/documentation.html#validation */ public class RIMDslJavaValidator extends com.temenos.interaction.rimdsl.validation.AbstractRIMDslJavaValidator { @Inject private ResourceDescriptionsProvider resourceDescriptionsProvider; @Inject private IQualifiedNameProvider qualifiedNameProvider; @Check(CheckType.NORMAL) public void checkDuplicateState(com.temenos.interaction.rimdsl.rim.State state) { QualifiedName qfn = qualifiedNameProvider.getFullyQualifiedName(state); IResourceDescriptions resourceDescriptions = resourceDescriptionsProvider.getResourceDescriptions(state.eResource()); Iterable<IEObjectDescription> objects = resourceDescriptions.getExportedObjects(RimPackage.Literals.STATE, qfn, true); if (IterableExtensions.size(objects) > 1) { error("A RIM state with the same name already exists", RimPackage.Literals.STATE__NAME); } } @Check(CheckType.NORMAL) public void checkDuplicateCommand(com.temenos.interaction.rimdsl.rim.Command command) { QualifiedName qfn = qualifiedNameProvider.getFullyQualifiedName(command); IResourceDescriptions resourceDescriptions = resourceDescriptionsProvider.getResourceDescriptions(command.eResource()); Iterable<IEObjectDescription> objects = resourceDescriptions.getExportedObjects(RimPackage.Literals.COMMAND, qfn, true); if (IterableExtensions.size(objects) > 1) { error("A RIM command with the same name already exists", RimPackage.Literals.COMMAND__NAME); } } @Check(CheckType.NORMAL) public void checkDuplicateEvent(com.temenos.interaction.rimdsl.rim.Event event) { QualifiedName qfn = qualifiedNameProvider.getFullyQualifiedName(event); IResourceDescriptions resourceDescriptions = resourceDescriptionsProvider.getResourceDescriptions(event.eResource()); Iterable<IEObjectDescription> objects = resourceDescriptions.getExportedObjects(RimPackage.Literals.EVENT, qfn, true); if (IterableExtensions.size(objects) > 1) { error("A RIM event with the same name already exists", RimPackage.Literals.EVENT__NAME); } } @Check(CheckType.NORMAL) public void checkDuplicateRelation(com.temenos.interaction.rimdsl.rim.Relation relation) { QualifiedName qfn = qualifiedNameProvider.getFullyQualifiedName(relation); IResourceDescriptions resourceDescriptions = resourceDescriptionsProvider.getResourceDescriptions(relation.eResource()); Iterable<IEObjectDescription> objects = resourceDescriptions.getExportedObjects(RimPackage.Literals.RELATION, qfn, true); if (IterableExtensions.size(objects) > 1) { error("A RIM relation with the same name already exists", RimPackage.Literals.RELATION__NAME); } } }