001 /* 002 * Sonar, open source software quality management tool. 003 * Copyright (C) 2008-2012 SonarSource 004 * mailto:contact AT sonarsource DOT com 005 * 006 * Sonar is free software; you can redistribute it and/or 007 * modify it under the terms of the GNU Lesser General Public 008 * License as published by the Free Software Foundation; either 009 * version 3 of the License, or (at your option) any later version. 010 * 011 * Sonar is distributed in the hope that it will be useful, 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 014 * Lesser General Public License for more details. 015 * 016 * You should have received a copy of the GNU Lesser General Public 017 * License along with Sonar; if not, write to the Free Software 018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 019 */ 020 package org.sonar.squid.api; 021 022 import org.apache.commons.lang.builder.ToStringBuilder; 023 import org.sonar.check.Message; 024 025 import java.text.MessageFormat; 026 import java.util.Locale; 027 028 public class CheckMessage implements Message { 029 030 private Integer line; 031 private Double cost; 032 private SourceCode sourceCode; 033 private Object check; 034 private String defaultMessage; 035 private Object[] messageArguments; 036 private Boolean bypassExclusion; 037 038 public CheckMessage(Object check, String message, Object... messageArguments) { 039 this.check = check; 040 this.defaultMessage = message; 041 this.messageArguments = messageArguments; 042 } 043 044 /** 045 * @deprecated replaced by the other constructor since 2.12. See SONAR-2875. 046 */ 047 @Deprecated 048 public CheckMessage(CodeCheck check, String message, Object... messageArguments) { 049 this((Object)check, message, messageArguments); 050 } 051 052 public void setSourceCode(SourceCode sourceCode) { 053 this.sourceCode = sourceCode; 054 } 055 056 public SourceCode getSourceCode() { 057 return sourceCode; 058 } 059 060 public void setLine(int line) { 061 this.line = line; 062 } 063 064 public Integer getLine() { 065 return line; 066 } 067 068 public void setCost(double cost) { 069 this.cost = cost; 070 } 071 072 public Double getCost() { 073 return cost; 074 } 075 076 public void setBypassExclusion(boolean bypassExclusion) { 077 this.bypassExclusion = bypassExclusion; 078 } 079 080 public boolean isBypassExclusion() { 081 return bypassExclusion == null ? false : bypassExclusion; 082 } 083 084 /** 085 * @deprecated replaced by getCheck() since 2.12. Warning, to be called only if check is CodeCheck. 086 */ 087 @Deprecated 088 public CodeCheck getChecker() { 089 return (CodeCheck)check; 090 } 091 092 public Object getCheck() { 093 return check; 094 } 095 096 public String getDefaultMessage() { 097 return defaultMessage; 098 } 099 100 public Object[] getMessageArguments() { 101 return messageArguments; 102 } 103 104 public String getText(Locale locale) { 105 return formatDefaultMessage(); 106 } 107 108 @Override 109 public String toString() { 110 return new ToStringBuilder(this).append("source", sourceCode).append("check", check).append("msg", defaultMessage) 111 .append("line", line).toString(); 112 } 113 114 public String formatDefaultMessage() { 115 if (messageArguments.length == 0) { 116 return defaultMessage; 117 } else { 118 return MessageFormat.format(defaultMessage, messageArguments); 119 } 120 } 121 122 }