1 /* 2 * Copyright (C) 2010 Google Inc. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.google.doclava; 18 19 import java.util.ArrayList; 20 21 public abstract class MemberInfo extends DocInfo implements Comparable, Scoped { 22 public MemberInfo(String rawCommentText, String name, String signature, 23 ClassInfo containingClass, ClassInfo realContainingClass, boolean isPublic, 24 boolean isProtected, boolean isPackagePrivate, boolean isPrivate, boolean isFinal, 25 boolean isStatic, boolean isSynthetic, String kind, SourcePositionInfo position, 26 ArrayList<AnnotationInstanceInfo> annotations) { 27 super(rawCommentText, position); 28 mName = name; 29 mSignature = signature; 30 mContainingClass = containingClass; 31 mRealContainingClass = realContainingClass; 32 mIsPublic = isPublic; 33 mIsProtected = isProtected; 34 mIsPackagePrivate = isPackagePrivate; 35 mIsPrivate = isPrivate; 36 mIsFinal = isFinal; 37 mIsStatic = isStatic; 38 mIsSynthetic = isSynthetic; 39 mKind = kind; 40 mAnnotations = annotations; 41 mShowAnnotations = AnnotationInstanceInfo.getShowAnnotationsIntersection(annotations); 42 } 43 44 public abstract boolean isExecutable(); 45 46 @Override 47 public boolean isHidden() { 48 if (mShowAnnotations.size() > 0) { 49 return false; 50 } 51 return super.isHidden(); 52 } 53 54 @Override 55 public boolean isRemoved() { 56 if (mShowAnnotations.size() > 0) { 57 return false; 58 } 59 return super.isRemoved(); 60 } 61 62 @Override 63 public boolean isHiddenOrRemoved() { 64 return isHidden() || isRemoved(); 65 } 66 67 public String anchor() { 68 if (mSignature != null) { 69 return mName + mSignature; 70 } else { 71 return mName; 72 } 73 } 74 75 public String htmlPage() { 76 return mContainingClass.htmlPage() + "#" + anchor(); 77 } 78 79 public int compareTo(Object that) { 80 return this.htmlPage().compareTo(((MemberInfo) that).htmlPage()); 81 } 82 83 public String name() { 84 return mName; 85 } 86 87 public String signature() { 88 return mSignature; 89 } 90 91 public ClassInfo realContainingClass() { 92 return mRealContainingClass; 93 } 94 95 public ClassInfo containingClass() { 96 return mContainingClass; 97 } 98 99 public boolean isPublic() { 100 return mIsPublic; 101 } 102 103 public boolean isProtected() { 104 return mIsProtected; 105 } 106 107 public boolean isPackagePrivate() { 108 return mIsPackagePrivate; 109 } 110 111 public boolean isPrivate() { 112 return mIsPrivate; 113 } 114 115 public String scope() { 116 if (isPublic()) { 117 return "public"; 118 } else if (isProtected()) { 119 return "protected"; 120 } else if (isPackagePrivate()) { 121 return ""; 122 } else if (isPrivate()) { 123 return "private"; 124 } else { 125 throw new RuntimeException("invalid scope for object " + this); 126 } 127 } 128 129 public boolean isStatic() { 130 return mIsStatic; 131 } 132 133 public boolean isFinal() { 134 return mIsFinal; 135 } 136 137 public boolean isSynthetic() { 138 return mIsSynthetic; 139 } 140 141 @Override 142 public ContainerInfo parent() { 143 return mContainingClass; 144 } 145 146 public boolean checkLevel() { 147 return Doclava.checkLevel(mIsPublic, mIsProtected, mIsPackagePrivate, mIsPrivate, 148 isHiddenOrRemoved()); 149 } 150 151 public String kind() { 152 return mKind; 153 } 154 155 public ArrayList<AnnotationInstanceInfo> annotations() { 156 return mAnnotations; 157 } 158 159 public ArrayList<AnnotationInstanceInfo> showAnnotations() { 160 return mShowAnnotations; 161 } 162 163 ClassInfo mContainingClass; 164 ClassInfo mRealContainingClass; 165 String mName; 166 String mSignature; 167 boolean mIsPublic; 168 boolean mIsProtected; 169 boolean mIsPackagePrivate; 170 boolean mIsPrivate; 171 boolean mIsFinal; 172 boolean mIsStatic; 173 boolean mIsSynthetic; 174 String mKind; 175 private ArrayList<AnnotationInstanceInfo> mAnnotations; 176 private ArrayList<AnnotationInstanceInfo> mShowAnnotations; 177 178 } 179