1 /*
   2  * Licensed to the Apache Software Foundation (ASF) under one or more
   3  * contributor license agreements.  See the NOTICE file distributed with
   4  * this work for additional information regarding copyright ownership.
   5  * The ASF licenses this file to You under the Apache License, Version 2.0
   6  * (the "License"); you may not use this file except in compliance with
   7  * the License.  You may obtain a copy of the License at
   8  *
   9  *      http://www.apache.org/licenses/LICENSE-2.0
  10  *
  11  * Unless required by applicable law or agreed to in writing, software
  12  * distributed under the License is distributed on an "AS IS" BASIS,
  13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14  * See the License for the specific language governing permissions and
  15  * limitations under the License.
  16  */
  17 
  18 package com.sun.org.apache.xml.internal.resolver.helpers;
  19 
  20 /**
  21  * Static debugging/messaging class for Catalogs.
  22  *
  23  * <p>This class defines a set of static methods that can be called
  24  * to produce debugging messages. Messages have an associated "debug
  25  * level" and messages below the current setting are not displayed.</p>
  26  *
  27  * @author Norman Walsh
  28  * <a href="mailto:Norman.Walsh@Sun.COM">Norman.Walsh@Sun.COM</a>
  29  *
  30  */
  31 public class Debug {
  32   /** The internal debug level. */
  33   protected int debug = 0;
  34 
  35   /** Constructor */
  36   public Debug() {
  37     // nop
  38   }
  39 
  40   /** Set the debug level for future messages. */
  41   public void setDebug(int newDebug) {
  42     debug = newDebug;
  43   }
  44 
  45   /** Get the current debug level. */
  46   public int getDebug() {
  47     return debug;
  48   }
  49 
  50   /**
  51    * Print debug message (if the debug level is high enough).
  52    *
  53    * <p>Prints "the message"</p>
  54    *
  55    * @param level The debug level of this message. This message
  56    * will only be
  57    * displayed if the current debug level is at least equal to this
  58    * value.
  59    * @param message The text of the message.
  60    */
  61   public void message(int level, String message) {
  62     if (debug >= level) {
  63       System.out.println(message);
  64     }
  65   }
  66 
  67   /**
  68    * Print debug message (if the debug level is high enough).
  69    *
  70    * <p>Prints "the message: spec"</p>
  71    *
  72    * @param level The debug level of this message. This message
  73    * will only be
  74    * displayed if the current debug level is at least equal to this
  75    * value.
  76    * @param message The text of the message.
  77    * @param spec An argument to the message.
  78    */
  79   public void message(int level, String message, String spec) {
  80     if (debug >= level) {
  81       System.out.println(message + ": " + spec);
  82     }
  83   }
  84 
  85   /**
  86    * Print debug message (if the debug level is high enough).
  87    *
  88    * <p>Prints "the message: spec1" and "spec2" indented on the next line.</p>
  89    *
  90    * @param level The debug level of this message. This message
  91    * will only be
  92    * displayed if the current debug level is at least equal to this
  93    * value.
  94    * @param message The text of the message.
  95    * @param spec1 An argument to the message.
  96    * @param spec2 Another argument to the message.
  97    */
  98   public void message(int level, String message,
  99                              String spec1, String spec2) {
 100     if (debug >= level) {
 101       System.out.println(message + ": " + spec1);
 102       System.out.println("\t" + spec2);
 103     }
 104   }
 105 }