1920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson/* 2920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * Copyright (C) 2010 Google Inc. 3920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * 4920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * Licensed under the Apache License, Version 2.0 (the "License"); 5920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * you may not use this file except in compliance with the License. 6920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * You may obtain a copy of the License at 7920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * 8920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * http://www.apache.org/licenses/LICENSE-2.0 9920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * 10920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * Unless required by applicable law or agreed to in writing, software 11920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * distributed under the License is distributed on an "AS IS" BASIS, 12920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * See the License for the specific language governing permissions and 14920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * limitations under the License. 15920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson */ 16920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 17920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonpackage com.google.doclava; 18920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 19920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonimport com.google.clearsilver.jsilver.data.Data; 20920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 216ba612efffba42bec102ac58a1540496158f747eAndrew Sappersteinimport java.util.ArrayList; 22920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonimport java.util.LinkedHashSet; 23920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonimport java.util.Set; 24920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 256ba612efffba42bec102ac58a1540496158f747eAndrew Sappersteinpublic abstract class DocInfo { 26920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public DocInfo(String rawCommentText, SourcePositionInfo sp) { 27920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mRawCommentText = rawCommentText; 28920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mPosition = sp; 29920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 30920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 31920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson /** 32920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * The relative path to a web page representing this item. 33920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson */ 34920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public abstract String htmlPage(); 355118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu 365118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu /** 375118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu * @return true if the element has never been a part of public API 385118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu */ 39920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public boolean isHidden() { 40920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return comment().isHidden(); 41920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 42920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 435118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu /** 445118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu * @return true if the element was once a part of public API, now removed. 455118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu */ 465118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu public boolean isRemoved() { 475118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu return comment().isRemoved(); 485118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu } 495118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu 505118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu /** 515118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu * Hidden and removed elements should not be appear in api.txt files, nor 525118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu * should they appear in the java doc. 535118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu * @return true if the element is either hidden or removed. 545118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu */ 555118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu public boolean isHiddenOrRemoved() { 565118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu return isHidden() || isRemoved(); 575118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu } 585118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu 59920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public boolean isDocOnly() { 60920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return comment().isDocOnly(); 61920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 62920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 63920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public String getRawCommentText() { 64920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mRawCommentText; 65920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 66920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 67d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein public void setRawCommentText(String rawCommentText) { 68d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein mRawCommentText = rawCommentText; 69d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein 70d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein // so that if we've created one prior to changing, we recreate it 71d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein if (mComment != null) { 72d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein mComment = new Comment(mRawCommentText, parent(), mPosition); 73d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein } 74d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein 75d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein } 76d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein 77920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public Comment comment() { 78920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (mComment == null) { 79920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mComment = new Comment(mRawCommentText, parent(), mPosition); 80920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 81920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mComment; 82920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 83920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 84920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public SourcePositionInfo position() { 85920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mPosition; 86920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 87920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 88d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein public void setPosition(SourcePositionInfo position) { 89d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein mPosition = position; 90d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein 91d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein // so that if we've created one prior to changing, we recreate it 92d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein if (mComment != null) { 93d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein mComment = new Comment(mRawCommentText, parent(), mPosition); 94d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein } 95d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein } 96d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein 97920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public abstract ContainerInfo parent(); 98920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 99920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public void setSince(String since) { 100920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mSince = since; 101920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 102920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 103920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public String getSince() { 104920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mSince; 105920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 1065118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu 10740ad14799644f497483efe6d1350c856d46bc4daScott Main public void setDeprecatedSince(String since) { 10840ad14799644f497483efe6d1350c856d46bc4daScott Main mDeprecatedSince = since; 10940ad14799644f497483efe6d1350c856d46bc4daScott Main } 11040ad14799644f497483efe6d1350c856d46bc4daScott Main 11140ad14799644f497483efe6d1350c856d46bc4daScott Main public String getDeprecatedSince() { 11240ad14799644f497483efe6d1350c856d46bc4daScott Main return mDeprecatedSince; 11340ad14799644f497483efe6d1350c856d46bc4daScott Main } 11440ad14799644f497483efe6d1350c856d46bc4daScott Main 11568a238ae4243e6f0f2a370b8b915ef0686ca0b37Scott Main public boolean isDeprecated() { 11668a238ae4243e6f0f2a370b8b915ef0686ca0b37Scott Main return mDeprecatedSince != null ? true : false; 11768a238ae4243e6f0f2a370b8b915ef0686ca0b37Scott Main } 11868a238ae4243e6f0f2a370b8b915ef0686ca0b37Scott Main 119920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public final void addFederatedReference(FederatedSite source) { 120920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mFederatedReferences.add(source); 121920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 1225118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu 123920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public final Set<FederatedSite> getFederatedReferences() { 124920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mFederatedReferences; 125920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 1265118ffe3bf77ec4efa070f36a7a62fd5d1bf16bfHui Shu 127920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public final void setFederatedReferences(Data data, String base) { 128920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson int pos = 0; 129920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson for (FederatedSite source : getFederatedReferences()) { 130920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson data.setValue(base + ".federated." + pos + ".url", source.linkFor(htmlPage())); 131920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson data.setValue(base + ".federated." + pos + ".name", source.name()); 132920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson pos++; 133920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 134920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 135920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 136920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson private String mRawCommentText; 137920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson Comment mComment; 138920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson SourcePositionInfo mPosition; 139920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson private String mSince; 14040ad14799644f497483efe6d1350c856d46bc4daScott Main private String mDeprecatedSince; 141920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson private Set<FederatedSite> mFederatedReferences = new LinkedHashSet<FederatedSite>(); 142920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson} 143