1*feeed43cSAndroid Build Coastguard Worker /* 2*feeed43cSAndroid Build Coastguard Worker * Copyright (C) 2010 Google Inc. 3*feeed43cSAndroid Build Coastguard Worker * 4*feeed43cSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*feeed43cSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*feeed43cSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*feeed43cSAndroid Build Coastguard Worker * 8*feeed43cSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*feeed43cSAndroid Build Coastguard Worker * 10*feeed43cSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*feeed43cSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*feeed43cSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*feeed43cSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*feeed43cSAndroid Build Coastguard Worker * limitations under the License. 15*feeed43cSAndroid Build Coastguard Worker */ 16*feeed43cSAndroid Build Coastguard Worker 17*feeed43cSAndroid Build Coastguard Worker package com.google.doclava; 18*feeed43cSAndroid Build Coastguard Worker 19*feeed43cSAndroid Build Coastguard Worker import com.google.clearsilver.jsilver.data.Data; 20*feeed43cSAndroid Build Coastguard Worker 21*feeed43cSAndroid Build Coastguard Worker import java.util.ArrayList; 22*feeed43cSAndroid Build Coastguard Worker import java.util.LinkedHashSet; 23*feeed43cSAndroid Build Coastguard Worker import java.util.Set; 24*feeed43cSAndroid Build Coastguard Worker 25*feeed43cSAndroid Build Coastguard Worker public abstract class DocInfo { DocInfo(String rawCommentText, SourcePositionInfo sp)26*feeed43cSAndroid Build Coastguard Worker public DocInfo(String rawCommentText, SourcePositionInfo sp) { 27*feeed43cSAndroid Build Coastguard Worker mRawCommentText = rawCommentText; 28*feeed43cSAndroid Build Coastguard Worker mPosition = sp; 29*feeed43cSAndroid Build Coastguard Worker } 30*feeed43cSAndroid Build Coastguard Worker 31*feeed43cSAndroid Build Coastguard Worker /** 32*feeed43cSAndroid Build Coastguard Worker * The relative path to a web page representing this item. 33*feeed43cSAndroid Build Coastguard Worker */ htmlPage()34*feeed43cSAndroid Build Coastguard Worker public abstract String htmlPage(); 35*feeed43cSAndroid Build Coastguard Worker 36*feeed43cSAndroid Build Coastguard Worker /** 37*feeed43cSAndroid Build Coastguard Worker * @return true if the element has never been a part of public API 38*feeed43cSAndroid Build Coastguard Worker */ isHidden()39*feeed43cSAndroid Build Coastguard Worker public boolean isHidden() { 40*feeed43cSAndroid Build Coastguard Worker return comment().isHidden(); 41*feeed43cSAndroid Build Coastguard Worker } 42*feeed43cSAndroid Build Coastguard Worker 43*feeed43cSAndroid Build Coastguard Worker /** 44*feeed43cSAndroid Build Coastguard Worker * @return true if the element was once a part of public API, now removed. 45*feeed43cSAndroid Build Coastguard Worker */ isRemoved()46*feeed43cSAndroid Build Coastguard Worker public boolean isRemoved() { 47*feeed43cSAndroid Build Coastguard Worker return comment().isRemoved(); 48*feeed43cSAndroid Build Coastguard Worker } 49*feeed43cSAndroid Build Coastguard Worker 50*feeed43cSAndroid Build Coastguard Worker /** 51*feeed43cSAndroid Build Coastguard Worker * Hidden and removed elements should not be appear in api.txt files, nor 52*feeed43cSAndroid Build Coastguard Worker * should they appear in the java doc. 53*feeed43cSAndroid Build Coastguard Worker * @return true if the element is either hidden or removed. 54*feeed43cSAndroid Build Coastguard Worker */ isHiddenOrRemoved()55*feeed43cSAndroid Build Coastguard Worker public boolean isHiddenOrRemoved() { 56*feeed43cSAndroid Build Coastguard Worker return isHidden() || isRemoved(); 57*feeed43cSAndroid Build Coastguard Worker } 58*feeed43cSAndroid Build Coastguard Worker isDocOnly()59*feeed43cSAndroid Build Coastguard Worker public boolean isDocOnly() { 60*feeed43cSAndroid Build Coastguard Worker return comment().isDocOnly(); 61*feeed43cSAndroid Build Coastguard Worker } 62*feeed43cSAndroid Build Coastguard Worker getRawCommentText()63*feeed43cSAndroid Build Coastguard Worker public String getRawCommentText() { 64*feeed43cSAndroid Build Coastguard Worker return mRawCommentText; 65*feeed43cSAndroid Build Coastguard Worker } 66*feeed43cSAndroid Build Coastguard Worker setRawCommentText(String rawCommentText)67*feeed43cSAndroid Build Coastguard Worker public void setRawCommentText(String rawCommentText) { 68*feeed43cSAndroid Build Coastguard Worker mRawCommentText = rawCommentText; 69*feeed43cSAndroid Build Coastguard Worker 70*feeed43cSAndroid Build Coastguard Worker // so that if we've created one prior to changing, we recreate it 71*feeed43cSAndroid Build Coastguard Worker if (mComment != null) { 72*feeed43cSAndroid Build Coastguard Worker mComment = new Comment(mRawCommentText, parent(), mPosition); 73*feeed43cSAndroid Build Coastguard Worker } 74*feeed43cSAndroid Build Coastguard Worker 75*feeed43cSAndroid Build Coastguard Worker } 76*feeed43cSAndroid Build Coastguard Worker comment()77*feeed43cSAndroid Build Coastguard Worker public Comment comment() { 78*feeed43cSAndroid Build Coastguard Worker if (mComment == null) { 79*feeed43cSAndroid Build Coastguard Worker mComment = new Comment(mRawCommentText, parent(), mPosition); 80*feeed43cSAndroid Build Coastguard Worker } 81*feeed43cSAndroid Build Coastguard Worker return mComment; 82*feeed43cSAndroid Build Coastguard Worker } 83*feeed43cSAndroid Build Coastguard Worker position()84*feeed43cSAndroid Build Coastguard Worker public SourcePositionInfo position() { 85*feeed43cSAndroid Build Coastguard Worker return mPosition; 86*feeed43cSAndroid Build Coastguard Worker } 87*feeed43cSAndroid Build Coastguard Worker setPosition(SourcePositionInfo position)88*feeed43cSAndroid Build Coastguard Worker public void setPosition(SourcePositionInfo position) { 89*feeed43cSAndroid Build Coastguard Worker mPosition = position; 90*feeed43cSAndroid Build Coastguard Worker 91*feeed43cSAndroid Build Coastguard Worker // so that if we've created one prior to changing, we recreate it 92*feeed43cSAndroid Build Coastguard Worker if (mComment != null) { 93*feeed43cSAndroid Build Coastguard Worker mComment = new Comment(mRawCommentText, parent(), mPosition); 94*feeed43cSAndroid Build Coastguard Worker } 95*feeed43cSAndroid Build Coastguard Worker } 96*feeed43cSAndroid Build Coastguard Worker parent()97*feeed43cSAndroid Build Coastguard Worker public abstract ContainerInfo parent(); 98*feeed43cSAndroid Build Coastguard Worker setSince(String since)99*feeed43cSAndroid Build Coastguard Worker public void setSince(String since) { 100*feeed43cSAndroid Build Coastguard Worker mSince = since; 101*feeed43cSAndroid Build Coastguard Worker } 102*feeed43cSAndroid Build Coastguard Worker getSince()103*feeed43cSAndroid Build Coastguard Worker public String getSince() { 104*feeed43cSAndroid Build Coastguard Worker if (Doclava.METALAVA_API_SINCE) { 105*feeed43cSAndroid Build Coastguard Worker mSince = comment().getApiSince(); 106*feeed43cSAndroid Build Coastguard Worker } 107*feeed43cSAndroid Build Coastguard Worker return mSince; 108*feeed43cSAndroid Build Coastguard Worker } 109*feeed43cSAndroid Build Coastguard Worker setSdkExtSince(String sdkextsince)110*feeed43cSAndroid Build Coastguard Worker public void setSdkExtSince(String sdkextsince) { 111*feeed43cSAndroid Build Coastguard Worker mSdkExtSince = sdkextsince; 112*feeed43cSAndroid Build Coastguard Worker } 113*feeed43cSAndroid Build Coastguard Worker getSdkExtSince()114*feeed43cSAndroid Build Coastguard Worker public String getSdkExtSince() { 115*feeed43cSAndroid Build Coastguard Worker if (Doclava.METALAVA_API_SINCE) { 116*feeed43cSAndroid Build Coastguard Worker mSdkExtSince = comment().getSdkExtSince(); 117*feeed43cSAndroid Build Coastguard Worker } 118*feeed43cSAndroid Build Coastguard Worker return mSdkExtSince; 119*feeed43cSAndroid Build Coastguard Worker } 120*feeed43cSAndroid Build Coastguard Worker 121*feeed43cSAndroid Build Coastguard Worker /** 122*feeed43cSAndroid Build Coastguard Worker * Sets the artifact in which the class resides. 123*feeed43cSAndroid Build Coastguard Worker * <p> 124*feeed43cSAndroid Build Coastguard Worker * This property should be specified as a full Maven dependency spec. For example, a Support 125*feeed43cSAndroid Build Coastguard Worker * Library core utility class may use "com.android.support:support-core-utils:26.0.1". 126*feeed43cSAndroid Build Coastguard Worker * 127*feeed43cSAndroid Build Coastguard Worker * @param artifact the artifact in which the class resides 128*feeed43cSAndroid Build Coastguard Worker * @return 129*feeed43cSAndroid Build Coastguard Worker */ setArtifact(String artifact)130*feeed43cSAndroid Build Coastguard Worker public void setArtifact(String artifact) { 131*feeed43cSAndroid Build Coastguard Worker mArtifact = artifact; 132*feeed43cSAndroid Build Coastguard Worker } 133*feeed43cSAndroid Build Coastguard Worker 134*feeed43cSAndroid Build Coastguard Worker /** 135*feeed43cSAndroid Build Coastguard Worker * Returns the artifact in which the class resides. 136*feeed43cSAndroid Build Coastguard Worker */ getArtifact()137*feeed43cSAndroid Build Coastguard Worker public String getArtifact() { 138*feeed43cSAndroid Build Coastguard Worker return mArtifact; 139*feeed43cSAndroid Build Coastguard Worker } 140*feeed43cSAndroid Build Coastguard Worker setDeprecatedSince(String since)141*feeed43cSAndroid Build Coastguard Worker public void setDeprecatedSince(String since) { 142*feeed43cSAndroid Build Coastguard Worker mDeprecatedSince = since; 143*feeed43cSAndroid Build Coastguard Worker } 144*feeed43cSAndroid Build Coastguard Worker getDeprecatedSince()145*feeed43cSAndroid Build Coastguard Worker public String getDeprecatedSince() { 146*feeed43cSAndroid Build Coastguard Worker if (Doclava.METALAVA_API_SINCE) { 147*feeed43cSAndroid Build Coastguard Worker return comment().getDeprecatedSince(); 148*feeed43cSAndroid Build Coastguard Worker } else { 149*feeed43cSAndroid Build Coastguard Worker return mDeprecatedSince; 150*feeed43cSAndroid Build Coastguard Worker } 151*feeed43cSAndroid Build Coastguard Worker } 152*feeed43cSAndroid Build Coastguard Worker isDeprecated()153*feeed43cSAndroid Build Coastguard Worker public boolean isDeprecated() { 154*feeed43cSAndroid Build Coastguard Worker if (Doclava.METALAVA_API_SINCE) { 155*feeed43cSAndroid Build Coastguard Worker return comment().isDeprecated(); 156*feeed43cSAndroid Build Coastguard Worker } else { 157*feeed43cSAndroid Build Coastguard Worker return mDeprecatedSince != null ? true : false; 158*feeed43cSAndroid Build Coastguard Worker } 159*feeed43cSAndroid Build Coastguard Worker } 160*feeed43cSAndroid Build Coastguard Worker addFederatedReference(FederatedSite source)161*feeed43cSAndroid Build Coastguard Worker public final void addFederatedReference(FederatedSite source) { 162*feeed43cSAndroid Build Coastguard Worker mFederatedReferences.add(source); 163*feeed43cSAndroid Build Coastguard Worker } 164*feeed43cSAndroid Build Coastguard Worker getFederatedReferences()165*feeed43cSAndroid Build Coastguard Worker public final Set<FederatedSite> getFederatedReferences() { 166*feeed43cSAndroid Build Coastguard Worker return mFederatedReferences; 167*feeed43cSAndroid Build Coastguard Worker } 168*feeed43cSAndroid Build Coastguard Worker setFederatedReferences(Data data, String base)169*feeed43cSAndroid Build Coastguard Worker public final void setFederatedReferences(Data data, String base) { 170*feeed43cSAndroid Build Coastguard Worker int pos = 0; 171*feeed43cSAndroid Build Coastguard Worker for (FederatedSite source : getFederatedReferences()) { 172*feeed43cSAndroid Build Coastguard Worker data.setValue(base + ".federated." + pos + ".url", source.linkFor(htmlPage())); 173*feeed43cSAndroid Build Coastguard Worker data.setValue(base + ".federated." + pos + ".name", source.name()); 174*feeed43cSAndroid Build Coastguard Worker pos++; 175*feeed43cSAndroid Build Coastguard Worker } 176*feeed43cSAndroid Build Coastguard Worker } 177*feeed43cSAndroid Build Coastguard Worker 178*feeed43cSAndroid Build Coastguard Worker private String mRawCommentText; 179*feeed43cSAndroid Build Coastguard Worker Comment mComment; 180*feeed43cSAndroid Build Coastguard Worker SourcePositionInfo mPosition; 181*feeed43cSAndroid Build Coastguard Worker private String mSince; 182*feeed43cSAndroid Build Coastguard Worker private String mSdkExtSince; 183*feeed43cSAndroid Build Coastguard Worker private String mArtifact; 184*feeed43cSAndroid Build Coastguard Worker private String mDeprecatedSince; 185*feeed43cSAndroid Build Coastguard Worker private Set<FederatedSite> mFederatedReferences = new LinkedHashSet<FederatedSite>(); 186*feeed43cSAndroid Build Coastguard Worker } 187