001//////////////////////////////////////////////////////////////////////////////// 002// checkstyle: Checks Java source code for adherence to a set of rules. 003// Copyright (C) 2001-2018 the original author or authors. 004// 005// This library is free software; you can redistribute it and/or 006// modify it under the terms of the GNU Lesser General Public 007// License as published by the Free Software Foundation; either 008// version 2.1 of the License, or (at your option) any later version. 009// 010// This library is distributed in the hope that it will be useful, 011// but WITHOUT ANY WARRANTY; without even the implied warranty of 012// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 013// Lesser General Public License for more details. 014// 015// You should have received a copy of the GNU Lesser General Public 016// License along with this library; if not, write to the Free Software 017// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 018//////////////////////////////////////////////////////////////////////////////// 019 020package com.puppycrawl.tools.checkstyle.api; 021 022import java.util.EventObject; 023 024/** 025 * Raw event for audit. 026 * <p> 027 * <i> 028 * I'm not very satisfied about the design of this event since there are 029 * optional methods that will return null in most of the case. This will 030 * need some work to clean it up especially if we want to introduce 031 * a more sequential reporting action rather than a packet error 032 * reporting. This will allow for example to follow the process quickly 033 * in an interface or a servlet (yep, that's cool to run a check via 034 * a web interface in a source repository ;-) 035 * </i> 036 * </p> 037 * 038 * @author <a href="mailto:stephane.bailliez@wanadoo.fr">Stephane Bailliez</a> 039 * @see AuditListener 040 * @noinspection SerializableHasSerializationMethods 041 */ 042public final class AuditEvent 043 extends EventObject { 044 045 /** Record a version. */ 046 private static final long serialVersionUID = -3774725606973812736L; 047 /** Filename event associated with. **/ 048 private final String fileName; 049 /** Message associated with the event. **/ 050 private final LocalizedMessage localizedMessage; 051 052 /** 053 * Creates a new instance. 054 * @param source the object that created the event 055 */ 056 public AuditEvent(Object source) { 057 this(source, null); 058 } 059 060 /** 061 * Creates a new {@code AuditEvent} instance. 062 * @param src source of the event 063 * @param fileName file associated with the event 064 */ 065 public AuditEvent(Object src, String fileName) { 066 this(src, fileName, null); 067 } 068 069 /** 070 * Creates a new {@code AuditEvent} instance. 071 * 072 * @param src source of the event 073 * @param fileName file associated with the event 074 * @param localizedMessage the actual message 075 */ 076 public AuditEvent(Object src, String fileName, LocalizedMessage localizedMessage) { 077 super(src); 078 this.fileName = fileName; 079 this.localizedMessage = localizedMessage; 080 } 081 082 /** 083 * Returns name of file being audited. 084 * @return the file name currently being audited or null if there is 085 * no relation to a file. 086 */ 087 public String getFileName() { 088 return fileName; 089 } 090 091 /** 092 * Return the line number on the source file where the event occurred. 093 * This may be 0 if there is no relation to a file content. 094 * @return an integer representing the line number in the file source code. 095 */ 096 public int getLine() { 097 return localizedMessage.getLineNo(); 098 } 099 100 /** 101 * Return the message associated to the event. 102 * @return the event message 103 */ 104 public String getMessage() { 105 return localizedMessage.getMessage(); 106 } 107 108 /** 109 * Gets the column associated with the message. 110 * @return the column associated with the message 111 */ 112 public int getColumn() { 113 return localizedMessage.getColumnNo(); 114 } 115 116 /** 117 * Gets the audit event severity level. 118 * @return the audit event severity level 119 */ 120 public SeverityLevel getSeverityLevel() { 121 SeverityLevel severityLevel = SeverityLevel.INFO; 122 if (localizedMessage != null) { 123 severityLevel = localizedMessage.getSeverityLevel(); 124 } 125 return severityLevel; 126 } 127 128 /** 129 * Returns id of module. 130 * @return the identifier of the module that generated the event. Can return 131 * null. 132 */ 133 public String getModuleId() { 134 return localizedMessage.getModuleId(); 135 } 136 137 /** 138 * Gets the name of the source for the message. 139 * @return the name of the source for the message 140 */ 141 public String getSourceName() { 142 return localizedMessage.getSourceName(); 143 } 144 145 /** 146 * Gets the localized message. 147 * @return the localized message 148 */ 149 public LocalizedMessage getLocalizedMessage() { 150 return localizedMessage; 151 } 152 153}