001: /*
002: * legalValueListConstraint
003: *
004: * $Id: LegalValueListConstraint.java 4661 2006-09-25 23:11:16Z paul_jack $
005: *
006: * Created on Mar 30, 2004
007: *
008: * Copyright (C) 2004 Internet Archive.
009: *
010: * This file is part of the Heritrix web crawler (crawler.archive.org).
011: *
012: * Heritrix is free software; you can redistribute it and/or modify it under the
013: * terms of the GNU Lesser Public License as published by the Free Software
014: * Foundation; either version 2.1 of the License, or any later version.
015: *
016: * Heritrix is distributed in the hope that it will be useful, but WITHOUT ANY
017: * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
018: * A PARTICULAR PURPOSE. See the GNU Lesser Public License for more details.
019: *
020: * You should have received a copy of the GNU Lesser Public License along with
021: * Heritrix; if not, write to the Free Software Foundation, Inc., 59 Temple
022: * Place, Suite 330, Boston, MA 02111-1307 USA
023: */
024: package org.archive.crawler.settings;
025:
026: import java.util.logging.Level;
027:
028: /**
029: * A constraint that checks that an attribute value matches one of the items in
030: * the list of legal values.
031: *
032: * @author John Erik Halse
033: */
034: public class LegalValueListConstraint extends Constraint {
035:
036: private static final long serialVersionUID = -4293290799574408033L;
037:
038: /**
039: * Constructs a new LegalValueListConstraint.
040: *
041: * @param level the severity level.
042: * @param msg the default error message.
043: */
044: public LegalValueListConstraint(Level level, String msg) {
045: super (level, msg);
046: }
047:
048: /**
049: * Constructs a new LegalValueListConstraint using default severity level
050: * ({@link Level#WARNING}).
051: *
052: * @param msg the default error message.
053: */
054: public LegalValueListConstraint(String msg) {
055: this (Level.WARNING, msg);
056: }
057:
058: /**
059: * Constructs a new LegalValueListConstraint using default error message.
060: *
061: * @param level
062: */
063: public LegalValueListConstraint(Level level) {
064: this (level, "Value not in legal values list");
065: }
066:
067: /**
068: * Constructs a new LegalValueListConstraint using default severity level
069: * ({@link Level#WARNING}) and default error message.
070: *
071: */
072: public LegalValueListConstraint() {
073: this (Level.WARNING);
074: }
075:
076: /*
077: * (non-Javadoc)
078: *
079: * @see org.archive.crawler.settings.Constraint#innerCheck(org.archive.crawler.settings.Type,
080: * java.lang.Object)
081: */
082: public FailedCheck innerCheck(CrawlerSettings settings,
083: ComplexType owner, Type definition, Object value) {
084: FailedCheck res = null;
085:
086: // If this attribute is constrained by a list of legal values,
087: // check that the value is in that list
088: Object legalValues[] = definition.getLegalValues();
089: if (legalValues != null) {
090: boolean found = false;
091: for (int i = 0; i < legalValues.length && !found; i++) {
092: if (legalValues[i].equals(value)) {
093: found = true;
094: }
095: }
096: if (!found) {
097: res = new FailedCheck(settings, owner, definition,
098: value);
099: }
100: }
101: return res;
102: }
103:
104: }
|