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 
setDeprecatedSince(String since)107   public void setDeprecatedSince(String since) {
108     mDeprecatedSince = since;
109   }
110 
getDeprecatedSince()111   public String getDeprecatedSince() {
112     return mDeprecatedSince;
113   }
114 
isDeprecated()115   public boolean isDeprecated() {
116     return mDeprecatedSince != null ? true : false;
117   }
118 
addFederatedReference(FederatedSite source)119   public final void addFederatedReference(FederatedSite source) {
120     mFederatedReferences.add(source);
121   }
122 
getFederatedReferences()123   public final Set<FederatedSite> getFederatedReferences() {
124     return mFederatedReferences;
125   }
126 
setFederatedReferences(Data data, String base)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