001//////////////////////////////////////////////////////////////////////////////// 002// checkstyle: Checks Java source code for adherence to a set of rules. 003// Copyright (C) 2001-2017 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 /** Record a version. */ 045 private static final long serialVersionUID = -3774725606973812736L; 046 /** Filename event associated with. **/ 047 private final String fileName; 048 /** Message associated with the event. **/ 049 private final LocalizedMessage localizedMessage; 050 051 /** 052 * Creates a new instance. 053 * @param source the object that created the event 054 */ 055 public AuditEvent(Object source) { 056 this(source, null); 057 } 058 059 /** 060 * Creates a new {@code AuditEvent} instance. 061 * @param src source of the event 062 * @param fileName file associated with the event 063 */ 064 public AuditEvent(Object src, String fileName) { 065 this(src, fileName, null); 066 } 067 068 /** 069 * Creates a new {@code AuditEvent} instance. 070 * 071 * @param src source of the event 072 * @param fileName file associated with the event 073 * @param localizedMessage the actual message 074 */ 075 public AuditEvent(Object src, String fileName, LocalizedMessage localizedMessage) { 076 super(src); 077 this.fileName = fileName; 078 this.localizedMessage = localizedMessage; 079 } 080 081 /** 082 * Returns name of file being audited. 083 * @return the file name currently being audited or null if there is 084 * no relation to a file. 085 */ 086 public String getFileName() { 087 return fileName; 088 } 089 090 /** 091 * Return the line number on the source file where the event occurred. 092 * This may be 0 if there is no relation to a file content. 093 * @return an integer representing the line number in the file source code. 094 */ 095 public int getLine() { 096 return localizedMessage.getLineNo(); 097 } 098 099 /** 100 * Return the message associated to the event. 101 * @return the event message 102 */ 103 public String getMessage() { 104 return localizedMessage.getMessage(); 105 } 106 107 /** 108 * Gets the column associated with the message. 109 * @return the column associated with the message 110 */ 111 public int getColumn() { 112 return localizedMessage.getColumnNo(); 113 } 114 115 /** 116 * Gets the audit event severity level. 117 * @return the audit event severity level 118 */ 119 public SeverityLevel getSeverityLevel() { 120 SeverityLevel severityLevel = SeverityLevel.INFO; 121 if (localizedMessage != null) { 122 severityLevel = localizedMessage.getSeverityLevel(); 123 } 124 return severityLevel; 125 } 126 127 /** 128 * Returns id of module. 129 * @return the identifier of the module that generated the event. Can return 130 * null. 131 */ 132 public String getModuleId() { 133 return localizedMessage.getModuleId(); 134 } 135 136 /** 137 * Gets the name of the source for the message. 138 * @return the name of the source for the message 139 */ 140 public String getSourceName() { 141 return localizedMessage.getSourceName(); 142 } 143 144 /** 145 * Gets the localized message. 146 * @return the localized message 147 */ 148 public LocalizedMessage getLocalizedMessage() { 149 return localizedMessage; 150 } 151}