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

org.continuity.api.entities.report.AnnotationValidityReport Maven / Gradle / Ivy

The newest version!
package org.continuity.api.entities.report;

import java.util.Collections;
import java.util.Map;
import java.util.Set;

import org.continuity.api.entities.report.ModelElementReference.RefKeyDeserializer;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;

/**
 * @author Henning Schulz
 *
 */
@JsonIgnoreProperties(ignoreUnknown = true)
public class AnnotationValidityReport extends AbstractIdpaReport {

	@JsonDeserialize(keyUsing = RefKeyDeserializer.class)
	private Map> violations;

	@JsonProperty("violations-before-fix")
	@JsonInclude(Include.NON_NULL)
	@JsonDeserialize(keyUsing = RefKeyDeserializer.class)
	private Map> violationsBeforeFix;

	public AnnotationValidityReport(Set applicationChanges, Map> violations) {
		super(applicationChanges);

		this.violations = violations;
	}

	/**
	 * Default constructor.
	 */
	public AnnotationValidityReport() {
	}

	/**
	 * Gets {@link #violations}.
	 *
	 * @return {@link #violations}
	 */
	public Map> getViolations() {
		return this.violations;
	}

	/**
	 * Sets {@link #violations}.
	 *
	 * @param violations
	 *            New value for {@link #violations}
	 */
	public void setViolations(Map> violations) {
		this.violations = violations;
	}

	/**
	 * Gets {@link #violationsBeforeFix}.
	 *
	 * @return {@link #violationsBeforeFix}
	 */
	public Map> getViolationsBeforeFix() {
		return this.violationsBeforeFix;
	}

	/**
	 * Sets {@link #violationsBeforeFix}.
	 *
	 * @param violationsBeforeFix
	 *            New value for {@link #violationsBeforeFix}
	 */
	public void setViolationsBeforeFix(Map> violationsBeforeFix) {
		this.violationsBeforeFix = violationsBeforeFix;
	}

	@JsonIgnore
	public boolean isOk() {
		return getApplicationChanges().isEmpty() && violations.isEmpty();
	}

	@JsonIgnore
	public boolean isBreaking() {
		return violations.values().stream().flatMap(Set::stream).reduce(false, (b, v) -> b || v.isBreaking(), Boolean::logicalOr);
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public String toString() {
		ObjectMapper mapper = new ObjectMapper();
		try {
			return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(this);
		} catch (JsonProcessingException e) {
			e.printStackTrace();
			return super.toString() + " [ERROR during serialization!]";
		}
	}

	/**
	 * @return
	 */
	public static AnnotationValidityReport empty() {
		return new AnnotationValidityReport(Collections.emptySet(), Collections.emptyMap());
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy