use of com.avaloq.tools.ddk.xtext.validation.UniquenessJavaValidationHelper in project dsl-devkit by dsldevkit.
the class ExportJavaValidator method checkInterfaceFieldUniqueness.
/**
* Checks that the interface don't have overlapping features, as a feature export is inherited by the export of subtypes.
*
* @param context
* model to check
*/
@Check
public void checkInterfaceFieldUniqueness(final ExportModel context) {
UniquenessJavaValidationHelper<InterfaceField> helper1 = new UniquenessJavaValidationHelper<InterfaceField>(new AbstractNameFunction() {
@Override
public QualifiedName apply(final EObject from) {
String name = ((InterfaceField) from).getField().getName();
return QualifiedName.create(name != null ? name : "");
}
}, getMessageAcceptor());
UniquenessJavaValidationHelper<InterfaceNavigation> helper2 = new UniquenessJavaValidationHelper<InterfaceNavigation>(new AbstractNameFunction() {
@Override
public QualifiedName apply(final EObject from) {
String name = ((InterfaceNavigation) from).getRef().getName();
return QualifiedName.create(name != null ? name : "");
}
}, getMessageAcceptor());
for (Interface fingertype : context.getInterfaces()) {
helper1.errorOnDuplicates(Iterables.filter(fingertype.getItems(), InterfaceField.class), ExportPackage.Literals.INTERFACE_FIELD__FIELD);
helper2.errorOnDuplicates(Iterables.filter(fingertype.getItems(), InterfaceNavigation.class), ExportPackage.Literals.INTERFACE_NAVIGATION__REF);
}
}
use of com.avaloq.tools.ddk.xtext.validation.UniquenessJavaValidationHelper in project dsl-devkit by dsldevkit.
the class ExportJavaValidator method checkExportFieldUniqueness.
/**
* Checks that the exports don't have overlapping features, as a feature export is inherited by the export of subtypes.
*
* @param context
* model to check
*/
@Check
public void checkExportFieldUniqueness(final ExportModel context) {
UniquenessJavaValidationHelper<Attribute> helper = new UniquenessJavaValidationHelper<Attribute>(NameFunctions.fromFeature(ExportPackage.Literals.ATTRIBUTE__ATTRIBUTE), getMessageAcceptor()) {
@Override
public String getMessage(final Attribute attribute) {
return "duplicate found: " + attribute.getAttribute().getName();
}
};
UniquenessJavaValidationHelper<UserData> helper2 = new UniquenessJavaValidationHelper<UserData>(NameFunctions.fromFeature(ExportPackage.Literals.USER_DATA__NAME), getMessageAcceptor());
for (Export export : context.getExports()) {
helper.errorOnDuplicates(export.getAttributes(), ExportPackage.Literals.ATTRIBUTE__ATTRIBUTE);
helper2.errorOnDuplicates(export.getUserData(), ExportPackage.Literals.USER_DATA__NAME);
}
}
use of com.avaloq.tools.ddk.xtext.validation.UniquenessJavaValidationHelper in project dsl-devkit by dsldevkit.
the class ExportJavaValidator method checkInterfaceAndExportUniqueness.
/**
* Checks that the interfaces and exports in an export section all are declared for a unique type.
*
* @param context
* model to check
*/
@Check
public void checkInterfaceAndExportUniqueness(final ExportModel context) {
UniquenessJavaValidationHelper<DeclarationForType> helper = new UniquenessJavaValidationHelper<DeclarationForType>(new AbstractNameFunction() {
@Override
public QualifiedName apply(final EObject from) {
return QualifiedName.create(((DeclarationForType) from).getType().getEPackage().getName(), ((DeclarationForType) from).getType().getName());
}
}, getMessageAcceptor()) {
@Override
public String getMessage(final DeclarationForType declaration) {
return "declaration duplicate found: " + declaration.getType().getEPackage().getName() + "::" + declaration.getType().getName();
}
};
helper.errorOnDuplicates(Iterables.filter(context.getInterfaces(), DeclarationForType.class), ExportPackage.Literals.DECLARATION_FOR_TYPE__TYPE);
helper.errorOnDuplicates(Iterables.filter(context.getExports(), DeclarationForType.class), ExportPackage.Literals.DECLARATION_FOR_TYPE__TYPE);
}
Aggregations