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 com.google.clearsilver.jsilver.data.Data; 20 21 import java.util.ArrayList; 22 import java.util.LinkedHashSet; 23 import java.util.Set; 24 25 public abstract class DocInfo { DocInfo(String rawCommentText, SourcePositionInfo sp)26 public DocInfo(String rawCommentText, SourcePositionInfo sp) { 27 mRawCommentText = rawCommentText; 28 mPosition = sp; 29 } 30 31 /** 32 * The relative path to a web page representing this item. 33 */ htmlPage()34 public abstract String htmlPage(); 35 36 /** 37 * @return true if the element has never been a part of public API 38 */ isHidden()39 public boolean isHidden() { 40 return comment().isHidden(); 41 } 42 43 /** 44 * @return true if the element was once a part of public API, now removed. 45 */ isRemoved()46 public boolean isRemoved() { 47 return comment().isRemoved(); 48 } 49 50 /** 51 * Hidden and removed elements should not be appear in api.txt files, nor 52 * should they appear in the java doc. 53 * @return true if the element is either hidden or removed. 54 */ isHiddenOrRemoved()55 public boolean isHiddenOrRemoved() { 56 return isHidden() || isRemoved(); 57 } 58 isDocOnly()59 public boolean isDocOnly() { 60 return comment().isDocOnly(); 61 } 62 getRawCommentText()63 public String getRawCommentText() { 64 return mRawCommentText; 65 } 66 setRawCommentText(String rawCommentText)67 public void setRawCommentText(String rawCommentText) { 68 mRawCommentText = rawCommentText; 69 70 // so that if we've created one prior to changing, we recreate it 71 if (mComment != null) { 72 mComment = new Comment(mRawCommentText, parent(), mPosition); 73 } 74 75 } 76 comment()77 public Comment comment() { 78 if (mComment == null) { 79 mComment = new Comment(mRawCommentText, parent(), mPosition); 80 } 81 return mComment; 82 } 83 position()84 public SourcePositionInfo position() { 85 return mPosition; 86 } 87 setPosition(SourcePositionInfo position)88 public void setPosition(SourcePositionInfo position) { 89 mPosition = position; 90 91 // so that if we've created one prior to changing, we recreate it 92 if (mComment != null) { 93 mComment = new Comment(mRawCommentText, parent(), mPosition); 94 } 95 } 96 parent()97 public abstract ContainerInfo parent(); 98 setSince(String since)99 public void setSince(String since) { 100 mSince = since; 101 } 102 getSince()103 public String getSince() { 104 if (Doclava.METALAVA_API_SINCE) { 105 mSince = comment().getApiSince(); 106 } 107 return mSince; 108 } 109 110 /** 111 * Sets the artifact in which the class resides. 112 * <p> 113 * This property should be specified as a full Maven dependency spec. For example, a Support 114 * Library core utility class may use "com.android.support:support-core-utils:26.0.1". 115 * 116 * @param artifact the artifact in which the class resides 117 * @return 118 */ setArtifact(String artifact)119 public void setArtifact(String artifact) { 120 mArtifact = artifact; 121 } 122 123 /** 124 * Returns the artifact in which the class resides. 125 */ getArtifact()126 public String getArtifact() { 127 return mArtifact; 128 } 129 setDeprecatedSince(String since)130 public void setDeprecatedSince(String since) { 131 mDeprecatedSince = since; 132 } 133 getDeprecatedSince()134 public String getDeprecatedSince() { 135 if (Doclava.METALAVA_API_SINCE) { 136 return comment().getDeprecatedSince(); 137 } else { 138 return mDeprecatedSince; 139 } 140 } 141 isDeprecated()142 public boolean isDeprecated() { 143 if (Doclava.METALAVA_API_SINCE) { 144 return comment().isDeprecated(); 145 } else { 146 return mDeprecatedSince != null ? true : false; 147 } 148 } 149 addFederatedReference(FederatedSite source)150 public final void addFederatedReference(FederatedSite source) { 151 mFederatedReferences.add(source); 152 } 153 getFederatedReferences()154 public final Set<FederatedSite> getFederatedReferences() { 155 return mFederatedReferences; 156 } 157 setFederatedReferences(Data data, String base)158 public final void setFederatedReferences(Data data, String base) { 159 int pos = 0; 160 for (FederatedSite source : getFederatedReferences()) { 161 data.setValue(base + ".federated." + pos + ".url", source.linkFor(htmlPage())); 162 data.setValue(base + ".federated." + pos + ".name", source.name()); 163 pos++; 164 } 165 } 166 167 private String mRawCommentText; 168 Comment mComment; 169 SourcePositionInfo mPosition; 170 private String mSince; 171 private String mArtifact; 172 private String mDeprecatedSince; 173 private Set<FederatedSite> mFederatedReferences = new LinkedHashSet<FederatedSite>(); 174 } 175