001/////////////////////////////////////////////////////////////////////////////////////////////// 002// checkstyle: Checks Java source code and other text files for adherence to a set of rules. 003// Copyright (C) 2001-2024 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 022/** 023 * Raw event for audit. 024 * 025 * <p> 026 * <i> 027 * I'm not very satisfied about the design of this event since there are 028 * optional methods that will return null in most of the case. This will 029 * need some work to clean it up especially if we want to introduce 030 * a more sequential reporting action rather than a packet 031 * reporting. This will allow for example to follow the process quickly 032 * in an interface or a servlet (yep, that's cool to run a check via 033 * a web interface in a source repository ;-) 034 * </i> 035 * </p> 036 * 037 * @see AuditListener 038 */ 039public final class AuditEvent { 040 041 /** The object on which the Event initially occurred. */ 042 private final Object source; 043 /** Filename event associated with. **/ 044 private final String fileName; 045 /** Violation associated with the event. **/ 046 private final Violation violation; 047 048 /** 049 * Creates a new instance. 050 * 051 * @param source the object that created the event 052 */ 053 public AuditEvent(Object source) { 054 this(source, null); 055 } 056 057 /** 058 * Creates a new {@code AuditEvent} instance. 059 * 060 * @param src source of the event 061 * @param fileName file associated with the event 062 */ 063 public AuditEvent(Object src, String fileName) { 064 this(src, fileName, null); 065 } 066 067 /** 068 * Creates a new {@code AuditEvent} instance. 069 * 070 * @param src source of the event 071 * @param fileName file associated with the event 072 * @param violation the actual violation 073 * @throws IllegalArgumentException if {@code src} is {@code null}. 074 */ 075 public AuditEvent(Object src, String fileName, Violation violation) { 076 if (src == null) { 077 throw new IllegalArgumentException("null source"); 078 } 079 080 source = src; 081 this.fileName = fileName; 082 this.violation = violation; 083 } 084 085 /** 086 * The object on which the Event initially occurred. 087 * 088 * @return the object on which the Event initially occurred 089 */ 090 public Object getSource() { 091 return source; 092 } 093 094 /** 095 * Returns name of file being audited. 096 * 097 * @return the file name currently being audited or null if there is 098 * no relation to a file. 099 */ 100 public String getFileName() { 101 return fileName; 102 } 103 104 /** 105 * Return the line number on the source file where the event occurred. 106 * This may be 0 if there is no relation to a file content. 107 * 108 * @return an integer representing the line number in the file source code. 109 */ 110 public int getLine() { 111 return violation.getLineNo(); 112 } 113 114 /** 115 * Return the violation associated to the event. 116 * 117 * @return the event violation 118 */ 119 public String getMessage() { 120 return violation.getViolation(); 121 } 122 123 /** 124 * Gets the column associated with the violation. 125 * 126 * @return the column associated with the violation 127 */ 128 public int getColumn() { 129 return violation.getColumnNo(); 130 } 131 132 /** 133 * Gets the audit event severity level. 134 * 135 * @return the audit event severity level 136 */ 137 public SeverityLevel getSeverityLevel() { 138 SeverityLevel severityLevel = SeverityLevel.INFO; 139 if (violation != null) { 140 severityLevel = violation.getSeverityLevel(); 141 } 142 return severityLevel; 143 } 144 145 /** 146 * Returns id of module. 147 * 148 * @return the identifier of the module that generated the event. Can return 149 * null. 150 */ 151 public String getModuleId() { 152 return violation.getModuleId(); 153 } 154 155 /** 156 * Gets the name of the source for the violation. 157 * 158 * @return the name of the source for the violation 159 */ 160 public String getSourceName() { 161 return violation.getSourceName(); 162 } 163 164 /** 165 * Gets the violation. 166 * 167 * @return the violation 168 */ 169 public Violation getViolation() { 170 return violation; 171 } 172 173}