package gov.nasa.jpl.mbee.mdk.model;
import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.NamedElement;
import gov.nasa.jpl.mbee.mdk.docgen.DocGenProfile;
import gov.nasa.jpl.mbee.mdk.docgen.docbook.DocumentElement;
import gov.nasa.jpl.mbee.mdk.docgen.validation.ConstraintValidationRule;
import gov.nasa.jpl.mbee.mdk.generator.DocumentValidator;
import gov.nasa.jpl.mbee.mdk.util.GeneratorUtils;
import gov.nasa.jpl.mbee.mdk.util.Utils2;
import gov.nasa.jpl.mbee.mdk.validation.ValidationRule;
import gov.nasa.jpl.mbee.mdk.validation.ValidationSuite;
import gov.nasa.jpl.mbee.mdk.validation.ViolationSeverity;
import java.util.ArrayList;
import java.util.List;
public class ViewpointConstraint extends Query {
@SuppressWarnings("unused")
private Boolean iterate;
@SuppressWarnings("unused")
private String expression;
private Boolean report;
private DocumentValidator dv;
public ViewpointConstraint(DocumentValidator dv) {
super();
this.dv = dv;
}
@Override
public List<DocumentElement> visit(boolean forViewEditor, String outputDir) {
// construct a temporary validation suite from the global one to
// generate docbook output for one constraint.
ValidationSuite vs = new ValidationSuite(((NamedElement) dgElement).getName());
ValidationRule rule = new ValidationRule(((NamedElement) dgElement).getName(), "Viewpoint Constraint",
ViolationSeverity.WARNING);
vs.addValidationRule(rule);
if (dv != null) {
ValidationRule r = dv.getViewpointConstraintRule();
if (r instanceof ConstraintValidationRule) {
rule.addViolations(((ConstraintValidationRule) r).getViolations(dgElement));
}
// if (expression != null) {
// if (iterate) {
// for (Element e: targets) {
//
// }
// } else {
//
// }
if (report && !Utils2.isNullOrEmpty(rule.getViolations())) {
return vs.getDocBook();
}
}
// }
return new ArrayList<DocumentElement>();
}
@Override
public void initialize() {
iterate = (Boolean) GeneratorUtils.getObjectProperty(dgElement,
DocGenProfile.viewpointConstraintStereotype, "iterate", true);
expression = (String) GeneratorUtils.getObjectProperty(dgElement,
DocGenProfile.viewpointConstraintStereotype, "expression", "");
report = (Boolean) GeneratorUtils.getObjectProperty(dgElement,
DocGenProfile.viewpointConstraintStereotype, "validationReport", false);
}
}