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 17package com.google.doclava; 18 19import com.google.clearsilver.jsilver.data.Data; 20 21import java.util.ArrayList; 22import java.util.LinkedHashSet; 23import java.util.Set; 24 25public abstract class DocInfo { 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 */ 34 public abstract String htmlPage(); 35 36 /** 37 * @return true if the element has never been a part of public API 38 */ 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 */ 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 */ 55 public boolean isHiddenOrRemoved() { 56 return isHidden() || isRemoved(); 57 } 58 59 public boolean isDocOnly() { 60 return comment().isDocOnly(); 61 } 62 63 public String getRawCommentText() { 64 return mRawCommentText; 65 } 66 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 77 public Comment comment() { 78 if (mComment == null) { 79 mComment = new Comment(mRawCommentText, parent(), mPosition); 80 } 81 return mComment; 82 } 83 84 public SourcePositionInfo position() { 85 return mPosition; 86 } 87 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 97 public abstract ContainerInfo parent(); 98 99 public void setSince(String since) { 100 mSince = since; 101 } 102 103 public String getSince() { 104 return mSince; 105 } 106 107 public void setDeprecatedSince(String since) { 108 mDeprecatedSince = since; 109 } 110 111 public String getDeprecatedSince() { 112 return mDeprecatedSince; 113 } 114 115 public boolean isDeprecated() { 116 return mDeprecatedSince != null ? true : false; 117 } 118 119 public final void addFederatedReference(FederatedSite source) { 120 mFederatedReferences.add(source); 121 } 122 123 public final Set<FederatedSite> getFederatedReferences() { 124 return mFederatedReferences; 125 } 126 127 public final void setFederatedReferences(Data data, String base) { 128 int pos = 0; 129 for (FederatedSite source : getFederatedReferences()) { 130 data.setValue(base + ".federated." + pos + ".url", source.linkFor(htmlPage())); 131 data.setValue(base + ".federated." + pos + ".name", source.name()); 132 pos++; 133 } 134 } 135 136 private String mRawCommentText; 137 Comment mComment; 138 SourcePositionInfo mPosition; 139 private String mSince; 140 private String mDeprecatedSince; 141 private Set<FederatedSite> mFederatedReferences = new LinkedHashSet<FederatedSite>(); 142} 143