All Downloads are FREE. Search and download functionalities are using the official Maven repository.

crypto.analysis.errors.RequiredPredicateError Maven / Gradle / Ivy

package crypto.analysis.errors;

import crypto.analysis.AnalysisSeedWithSpecification;
import crypto.analysis.RequiredCrySLPredicate;
import crypto.analysis.UnEnsuredPredicate;
import crysl.rule.CrySLPredicate;
import java.util.Collection;
import java.util.Objects;

/**
 * This error models the violation of predicates from the REQUIRES section. An error is only
 * reported for single predicates, that is, predicates of the form
 *
 * 
{@code
 * REQUIRES
 *    generatedKey[...];
 * }
* * If a predicate has alternatives, an {@link AlternativeReqPredicateError} is reported. */ public class RequiredPredicateError extends AbstractRequiredPredicateError { private final CrySLPredicate contradictedPredicate; private final int paramIndex; public RequiredPredicateError( AnalysisSeedWithSpecification seed, RequiredCrySLPredicate violatedPred, Collection unEnsuredPredicates) { super(seed, violatedPred.getLocation(), seed.getSpecification(), unEnsuredPredicates); this.contradictedPredicate = violatedPred.getPred(); this.paramIndex = violatedPred.getParamIndex(); } public CrySLPredicate getContradictedPredicates() { return contradictedPredicate; } public int getParamIndex() { return paramIndex; } @Override public String toErrorMarkerString() { StringBuilder msg = new StringBuilder(getParamIndexAsText(paramIndex)); msg.append(" was not properly generated as "); String[] parts = contradictedPredicate.getPredName().split("(?=[A-Z])"); msg.append(parts[0]); for (int i = 1; i < parts.length; i++) { msg.append(parts[i]); } return msg.toString(); } @Override public int hashCode() { return Objects.hash(super.hashCode(), contradictedPredicate, paramIndex); } @Override public boolean equals(Object obj) { return super.equals(obj) && obj instanceof RequiredPredicateError other && Objects.equals(contradictedPredicate, other.getContradictedPredicates()) && paramIndex == other.getParamIndex(); } @Override public String toString() { return "RequiredPredicateError: " + toErrorMarkerString(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy