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 return mSince; 105 } 106 107 /** 108 * Sets the artifact in which the class resides. 109 * <p> 110 * This property should be specified as a full Maven dependency spec. For example, a Support 111 * Library core utility class may use "com.android.support:support-core-utils:26.0.1". 112 * 113 * @param artifact the artifact in which the class resides 114 * @return 115 */ setArtifact(String artifact)116 public void setArtifact(String artifact) { 117 mArtifact = artifact; 118 } 119 120 /** 121 * Returns the artifact in which the class resides. 122 */ getArtifact()123 public String getArtifact() { 124 return mArtifact; 125 } 126 setDeprecatedSince(String since)127 public void setDeprecatedSince(String since) { 128 mDeprecatedSince = since; 129 } 130 getDeprecatedSince()131 public String getDeprecatedSince() { 132 return mDeprecatedSince; 133 } 134 isDeprecated()135 public boolean isDeprecated() { 136 return mDeprecatedSince != null ? true : false; 137 } 138 addFederatedReference(FederatedSite source)139 public final void addFederatedReference(FederatedSite source) { 140 mFederatedReferences.add(source); 141 } 142 getFederatedReferences()143 public final Set<FederatedSite> getFederatedReferences() { 144 return mFederatedReferences; 145 } 146 setFederatedReferences(Data data, String base)147 public final void setFederatedReferences(Data data, String base) { 148 int pos = 0; 149 for (FederatedSite source : getFederatedReferences()) { 150 data.setValue(base + ".federated." + pos + ".url", source.linkFor(htmlPage())); 151 data.setValue(base + ".federated." + pos + ".name", source.name()); 152 pos++; 153 } 154 } 155 156 private String mRawCommentText; 157 Comment mComment; 158 SourcePositionInfo mPosition; 159 private String mSince; 160 private String mArtifact; 161 private String mDeprecatedSince; 162 private Set<FederatedSite> mFederatedReferences = new LinkedHashSet<FederatedSite>(); 163 } 164