001 package org.codehaus.groovy.control.messages; 002 003 import java.io.PrintWriter; 004 005 import org.codehaus.groovy.control.Janitor; 006 import org.codehaus.groovy.control.SourceUnit; 007 import org.codehaus.groovy.syntax.CSTNode; 008 009 010 011 /** 012 * A class for warning messages. 013 * 014 * @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a> 015 * 016 * @version $Id: WarningMessage.java 2264 2005-06-10 09:55:31Z cstein $ 017 */ 018 019 public class WarningMessage extends LocatedMessage 020 { 021 //--------------------------------------------------------------------------- 022 // WARNING LEVELS 023 024 public static final int NONE = 0; // For querying, ignore all errors 025 public static final int LIKELY_ERRORS = 1; // Warning indicates likely error 026 public static final int POSSIBLE_ERRORS = 2; // Warning indicates possible error 027 public static final int PARANOIA = 3; // Warning indicates paranoia on the part of the compiler 028 029 030 /** 031 * Returns true if a warning would be relevant to the specified level. 032 */ 033 034 public static boolean isRelevant( int actual, int limit ) 035 { 036 return actual <= limit; 037 } 038 039 040 041 /** 042 * Returns true if this message is as or more important than the 043 * specified importance level. 044 */ 045 046 public boolean isRelevant( int importance ) 047 { 048 return isRelevant( this.importance, importance ); 049 } 050 051 052 053 //--------------------------------------------------------------------------- 054 // CONSTRUCTION AND DATA ACCESS 055 056 private int importance; // The warning level, for filtering 057 058 059 /** 060 * Creates a new warning message. 061 * 062 * @param importance the warning level 063 * @param message the message text 064 * @param context context information for locating the offending source text 065 */ 066 067 public WarningMessage( int importance, String message, CSTNode context, SourceUnit owner ) 068 { 069 super( message, context, owner ); 070 this.importance = importance; 071 } 072 073 074 075 /** 076 * Creates a new warning message. 077 * 078 * @param importance the warning level 079 * @param message the message text 080 * @param data additional data needed when generating the message 081 * @param context context information for locating the offending source text 082 */ 083 084 public WarningMessage( int importance, String message, Object data, CSTNode context, SourceUnit owner ) 085 { 086 super( message, data, context, owner ); 087 this.importance = importance; 088 } 089 090 091 public void write( PrintWriter writer, Janitor janitor ) 092 { 093 writer.print( "warning: " ); 094 super.write( writer, janitor ); 095 } 096 097 098 099 } 100 101 102