/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jena.reasoner; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * Default implementation of ValidityReport which simply stores a list * of precomputed Report records. */ public class StandardValidityReport implements ValidityReport { /** The total set of error reports */ protected List<Report> reports = new ArrayList<>(); /** Flag to indicate if there are any error reports so far */ protected boolean isError; /** * Add a new error report * @param error true if the report is an error, false if it is just a warning * @param type a string giving a reasoner-dependent classification for the report * @param description a textual description of the problem */ public void add(boolean error, String type, String description) { add(error, type, description, null); } /** * Add a new error report * @param error true if the report is an error, false if it is just a warning * @param type a string giving a reasoner-dependent classification for the report * @param description a textual description of the problem * @param extension Optional argument with extension data about the reported error */ public void add(boolean error, String type, String description, Object extension) { reports.add(new Report(error, type, description, extension)); if (error) { isError = true; } } /** * Add a new error report * @param report a ValidityReport.Report to add, can be null */ public void add(ValidityReport.Report report) { if (report == null) return; reports.add(report); if (report.isError) { isError = true; } } /** * Returns true if no logical inconsistencies were detected (in which case * there will be at least one error Report included). Warnings may still * be present. As of Jena 2.2 we regard classes which can't be instantiated * as warnings rather than errors. */ @Override public boolean isValid() { return !isError; } /** * Returns true if the model is both valid (logically consistent) and no * warnings were generated. */ @Override public boolean isClean() { return reports.isEmpty(); } /** * Return a count of the number of warning or error reports * generated by the validation. */ public int size() { return reports.size(); } /** * Return an iterator over the separate ValidityReport.Report records. */ @Override public Iterator<Report> getReports() { return reports.iterator(); } }