001: /******************************************************************
002: * File: ValidityReport.java
003: * Created by: Dave Reynolds
004: * Created on: 09-Feb-03
005: *
006: * (c) Copyright 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
007: * [See end of file]
008: * $Id: ValidityReport.java,v 1.14 2008/01/02 12:07:00 andy_seaborne Exp $
009: *****************************************************************/package com.hp.hpl.jena.reasoner;
010:
011: import java.util.Iterator;
012:
013: /**
014: * Data structure used to report the results of validation
015: * or consistency checking operations. It is an array of reports,
016: * each of which has a severity, a type (string) and a description (string).
017: *
018: * @author <a href="mailto:der@hplb.hpl.hp.com">Dave Reynolds</a>
019: * @version $Revision: 1.14 $ on $Date: 2008/01/02 12:07:00 $
020: */
021: public interface ValidityReport {
022:
023: /**
024: * Returns true if no logical inconsistencies were detected. If it is false
025: * then ether will be at least one error Report included. If it is true
026: * then warnings may still
027: * be present. As of Jena 2.2 we regard classes which can't be instantiated
028: * as warnings (of type 'Inconsistent class') rather than errors.
029: */
030: public boolean isValid();
031:
032: /**
033: * Returns true if the model is both valid (logically consistent) and no
034: * warnings were generated.
035: */
036: public boolean isClean();
037:
038: /**
039: * Return an iterator over the separate ValidityReport.Report records.
040: */
041: public Iterator getReports();
042:
043: // Inner class defining the datastructure of a single error report
044: static class Report {
045: /**
046: * The type of the error discovered, the range of
047: * errors types is reasoner-dependent.
048: */
049: public String type;
050:
051: /**
052: * True if the report is a error, false if it is just a warning.
053: */
054: public boolean isError;
055:
056: /**
057: * A textual description of the error or warning.
058: */
059: public String description;
060:
061: /**
062: * Some reasoner dependent data structure giving more information
063: * on the problem.
064: */
065: public Object extension;
066:
067: /**
068: * Constructor.
069: * @param error true if the report is an error, false if it is just a warning
070: * @param type a string giving a reasoner-dependent classification for the report
071: * @param description a textual description of the problem
072: */
073: public Report(boolean error, String type, String description) {
074: this (error, type, description, null);
075: }
076:
077: /**
078: * Constructor
079: * @param error true if the report is an error, false if it is just a warning
080: * @param type a string giving a reasoner-dependent classification for the report
081: * @param description a textual description of the problem
082: * @param extension a reasoner dependent data structure giving more information
083: * on the problem.
084: */
085: public Report(boolean error, String type, String description,
086: Object extension) {
087: this .isError = error;
088: this .type = type;
089: this .description = description;
090: this .extension = extension;
091: }
092:
093: /**
094: * @return a textual description of the problem
095: */
096: public String getDescription() {
097: return description;
098: }
099:
100: /**
101: * @return a reasoner dependent data structure giving more information
102: * on the problem.
103: */
104: public Object getExtension() {
105: return extension;
106: }
107:
108: /**
109: * @return True if the report is a error, false if it is just a warning.
110: */
111: public boolean isError() {
112: return isError;
113: }
114:
115: /**
116: * @return a string giving a reasoner-dependent classification for the report
117: */
118: public String getType() {
119: return type;
120: }
121:
122: /**
123: * Printable form of the report
124: */
125: public String toString() {
126: return (isError ? "Error (" : "Warning (") + type + "): "
127: + description;
128: }
129: }
130: }
131:
132: /*
133: (c) Copyright 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
134: All rights reserved.
135:
136: Redistribution and use in source and binary forms, with or without
137: modification, are permitted provided that the following conditions
138: are met:
139:
140: 1. Redistributions of source code must retain the above copyright
141: notice, this list of conditions and the following disclaimer.
142:
143: 2. Redistributions in binary form must reproduce the above copyright
144: notice, this list of conditions and the following disclaimer in the
145: documentation and/or other materials provided with the distribution.
146:
147: 3. The name of the author may not be used to endorse or promote products
148: derived from this software without specific prior written permission.
149:
150: THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
151: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
152: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
153: IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
154: INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
155: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
156: DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
157: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
158: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
159: THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
160: */
|