blob: 89a675f9b452f221f3627c1c4d2e4f95f442155c [file] [log] [blame]
/*
* 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();
}
}