/*
* 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);
}
}
}