001/* 002 * SonarQube, open source software quality management tool. 003 * Copyright (C) 2008-2013 SonarSource 004 * mailto:contact AT sonarsource DOT com 005 * 006 * SonarQube 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 * SonarQube 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 License 017 * along with this program; if not, write to the Free Software Foundation, 018 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 019 */ 020package org.sonar.java.api; 021 022import org.apache.commons.lang.StringUtils; 023import org.sonar.api.resources.*; 024 025/** 026 * @since 2.6 027 * @deprecated in 4.2. Only file system is handled by SonarQube, not logical components. 028 */ 029@Deprecated 030public final class JavaClass extends Resource { 031 032 public static final String SCOPE = Scopes.PROGRAM_UNIT; 033 public static final String QUALIFIER = Qualifiers.CLASS; 034 public static final int UNKNOWN_LINE = -1; 035 036 private int fromLine = UNKNOWN_LINE; 037 private int toLine = UNKNOWN_LINE; 038 039 private JavaClass(String name) { 040 setKey(name); 041 } 042 043 private JavaClass(String name, int fromLine, int toLine) { 044 setKey(name); 045 this.fromLine = fromLine; 046 this.toLine = toLine; 047 } 048 049 public String getPackageName() { 050 if (StringUtils.contains(getKey(), JavaUtils.PACKAGE_SEPARATOR)) { 051 return StringUtils.substringBeforeLast(getKey(), JavaUtils.PACKAGE_SEPARATOR); 052 } 053 return ""; 054 } 055 056 public String getClassName() { 057 String className = StringUtils.substringAfterLast(getKey(), JavaUtils.PACKAGE_SEPARATOR); 058 return StringUtils.defaultIfEmpty(className, getKey()); 059 } 060 061 public int getFromLine() { 062 return fromLine; 063 } 064 065 public int getToLine() { 066 return toLine; 067 } 068 069 @Override 070 public String getName() { 071 return getKey(); 072 } 073 074 @Override 075 public String getLongName() { 076 return getKey(); 077 } 078 079 @Override 080 public String getDescription() { 081 return null; 082 } 083 084 @Override 085 public Language getLanguage() { 086 return Java.INSTANCE; 087 } 088 089 @Override 090 public String getScope() { 091 return SCOPE; 092 } 093 094 @Override 095 public String getQualifier() { 096 return QUALIFIER; 097 } 098 099 @Override 100 public Resource getParent() { 101 return null; 102 } 103 104 @Override 105 public boolean matchFilePattern(String antPattern) { 106 return false; 107 } 108 109 @Override 110 public String toString() { 111 return getName(); 112 } 113 114 public static JavaClass create(String name) { 115 return new JavaClass(name); 116 } 117 118 public static JavaClass create(String packageName, String className) { 119 if (StringUtils.isBlank(packageName)) { 120 return new JavaClass(className); 121 } 122 return new JavaClass(toName(packageName, className)); 123 } 124 125 private static String toName(String packageName, String className) { 126 if (StringUtils.isBlank(packageName)) { 127 return className; 128 } 129 return new StringBuilder().append(packageName).append(JavaUtils.PACKAGE_SEPARATOR).append(className).toString(); 130 } 131 132 public static class Builder { 133 private String name; 134 private int fromLine = UNKNOWN_LINE; 135 private int toLine = UNKNOWN_LINE; 136 137 public Builder setName(String name) { 138 this.name = name; 139 return this; 140 } 141 142 public Builder setName(String packageName, String className) { 143 this.name = toName(packageName, className); 144 return this; 145 } 146 147 public Builder setFromLine(int fromLine) { 148 this.fromLine = Math.max(UNKNOWN_LINE, fromLine); 149 return this; 150 } 151 152 public Builder setToLine(int toLine) { 153 this.toLine = Math.max(UNKNOWN_LINE, toLine); 154 return this; 155 } 156 157 public JavaClass create() { 158 return new JavaClass(name, fromLine, toLine); 159 } 160 } 161}