Skip to content
Snippets Groups Projects
Commit 7536f21e authored by Bernhard Johannes Berger's avatar Bernhard Johannes Berger
Browse files

More useful error messages for constraints with wrong number of parameters.

parent 7203878f
No related branches found
No related tags found
No related merge requests found
Pipeline #244257 passed
......@@ -11,8 +11,10 @@ import javax.enterprise.inject.Produces;
import javax.inject.Named;
import de.evoal.core.main.ea.constraints.el.ElHelper;
import de.evoal.core.main.ea.constraints.el.LogHelper;
import de.evoal.languages.model.ddl.DataDescription;
import de.evoal.languages.model.ddl.FunctionName;
import de.evoal.languages.model.ddl.dsl.DataDescriptionLanguageStandaloneSetup;
import de.evoal.languages.model.el.Call;
import de.evoal.core.main.ea.constraints.constraint.ast.ConditionConverter;
import de.evoal.languages.model.instance.Array;
......@@ -20,6 +22,7 @@ import de.evoal.languages.model.instance.Attribute;
import de.evoal.languages.model.instance.DataReference;
import de.evoal.languages.model.instance.Instance;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.xtext.serializer.impl.Serializer;
import java.util.Objects;
import java.util.Optional;
......@@ -37,7 +40,6 @@ public class ConstraintProducer {
@ConfigurationValue(entry = CoreBlackboardEntries.OPTIMISATION_CONFIGURATION, access = "algorithm.fitness") final Instance fitnessConfig) {
this.genoSpec = genoSpec;
this.fitnessSpec = toInnerSpecification(fitnessConfig);
final Constraints result = new Constraints();
constraints.stream()
......@@ -79,9 +81,9 @@ public class ConstraintProducer {
.build();
}
private Optional<Constraint> convert(final Call constraint, DataDescription context) {
private Optional<Constraint> convert(final Call constraint, final DataDescription context) {
if(constraint.getParameters().size() != 2) {
log.error("Constraint has more than two parameters. Skipping.");
LogHelper.parameterMismatch(log,"constraint", constraint, 2);
return Optional.empty();
}
......
......@@ -11,6 +11,7 @@ import de.evoal.core.main.ea.constraints.el.ElHelper;
import de.evoal.core.api.ea.correlations.Correlation;
import de.evoal.core.api.ea.correlations.Correlations;
import de.evoal.core.api.ea.correlations.RangedCorrelation;
import de.evoal.core.main.ea.constraints.el.LogHelper;
import de.evoal.languages.model.ddl.DataDescription;
import de.evoal.languages.model.el.Call;
import lombok.extern.slf4j.Slf4j;
......@@ -82,7 +83,7 @@ public class CorrelationsProducer {
return Optional.of(result);
} else {
log.error("connection constraint has wrong number of parameters: {}", constraint.getParameters().size());
LogHelper.parameterMismatch(log, "connection", constraint, 3);
return Optional.empty();
}
}
......
......@@ -12,6 +12,7 @@ import javax.inject.Named;
import de.evoal.core.main.ea.constraints.deviation.model.Deviation;
import de.evoal.core.main.ea.constraints.deviation.model.Deviations;
import de.evoal.core.main.ea.constraints.el.ElHelper;
import de.evoal.core.main.ea.constraints.el.LogHelper;
import de.evoal.languages.model.ddl.DataDescription;
import de.evoal.languages.model.el.Call;
import de.evoal.languages.model.el.Expression;
......@@ -56,8 +57,8 @@ public class DeviationProducer {
}
private Optional<Deviation> convert(final Call constraint, final DataDescription context) {
if(constraint.getParameters().size() != 1) {
log.error("Deviation has more than two parameters. Skipping.");
if(constraint.getParameters().size() != 2) {
LogHelper.parameterMismatch(log, "standardDeviation", constraint, 2);
return Optional.empty();
}
......
package de.evoal.core.main.ea.constraints.el;
import de.evoal.languages.model.ddl.dsl.DataDescriptionLanguageStandaloneSetup;
import de.evoal.languages.model.el.Call;
import org.eclipse.xtext.serializer.impl.Serializer;
import org.slf4j.Logger;
public final class LogHelper {
private LogHelper() {}
public static void parameterMismatch(final Logger log, final String name, final Call call, final int expectedParameters) {
final Serializer serializer = new DataDescriptionLanguageStandaloneSetup()
.createInjector()
.getInstance(Serializer.class);
final String representation = serializer.serialize(call).strip();
log.error("Call to {} has not the correct number of parameters. Expected {} parameters. Skipping call '{}'.", name, expectedParameters, representation);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment