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 21920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonpublic class SeeTagInfo extends TagInfo { 22da4b2e21af0d8efcfe73ff060839c97a2d4b8b03C. Sean Young public static final SeeTagInfo[] EMPTY_ARRAY = new SeeTagInfo[0]; 23da4b2e21af0d8efcfe73ff060839c97a2d4b8b03C. Sean Young 24da4b2e21af0d8efcfe73ff060839c97a2d4b8b03C. Sean Young public static SeeTagInfo[] getArray(int size) { 25da4b2e21af0d8efcfe73ff060839c97a2d4b8b03C. Sean Young return size == 0 ? EMPTY_ARRAY : new SeeTagInfo[size]; 26da4b2e21af0d8efcfe73ff060839c97a2d4b8b03C. Sean Young } 27da4b2e21af0d8efcfe73ff060839c97a2d4b8b03C. Sean Young 28920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson private ContainerInfo mBase; 29920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson LinkReference mLink; 30920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 31920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson SeeTagInfo(String name, String kind, String text, ContainerInfo base, SourcePositionInfo position) { 32920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson super(name, kind, text, position); 33920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mBase = base; 34920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 35920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 36920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson protected LinkReference linkReference() { 37920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (mLink == null) { 38920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mLink = 39920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson LinkReference.parse(text(), mBase, position(), (!"@see".equals(name())) 40920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson && (mBase != null ? mBase.checkLevel() : true)); 41920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 42920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mLink; 43920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 44920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 45920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public String label() { 46920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return linkReference().label; 47920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 48920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 49920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson @Override 50920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public void makeHDF(Data data, String base) { 51920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson LinkReference linkRef = linkReference(); 52920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (linkRef.kind != null) { 53920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson // if they have a better suggestion about "kind" use that. 54920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson // do this before super.makeHDF() so it picks it up 55920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson setKind(linkRef.kind); 56920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 57920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 58920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson super.makeHDF(data, base); 59920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 60920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson data.setValue(base + ".label", linkRef.label); 61920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (linkRef.href != null) { 62920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson data.setValue(base + ".href", linkRef.href); 634ee085a7af0e53f0f892de292702ed90f84957daScott Main data.setValue(base + ".federatedSite", linkRef.federatedSite); 64920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 659c584846aff32976d94246c7682a980346d12f44Jeff Hamilton 669c584846aff32976d94246c7682a980346d12f44Jeff Hamilton if (ClearPage.toroot != null) { 679c584846aff32976d94246c7682a980346d12f44Jeff Hamilton data.setValue("toroot", ClearPage.toroot); 689c584846aff32976d94246c7682a980346d12f44Jeff Hamilton } 6972ce82e8e05446aa3b7e163c84d4c23e58552ad6Jeff Hamilton 709c584846aff32976d94246c7682a980346d12f44Jeff Hamilton if (linkRef.federatedSite != null) { 719c584846aff32976d94246c7682a980346d12f44Jeff Hamilton data.setValue("federated", linkRef.federatedSite); 729c584846aff32976d94246c7682a980346d12f44Jeff Hamilton } 73920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 74920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 75920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public boolean checkLevel() { 76920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return linkReference().checkLevel(); 77920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 78920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 79920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public static void makeHDF(Data data, String base, SeeTagInfo[] tags) { 80920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson int j = 0; 81920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson for (SeeTagInfo tag : tags) { 82920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (tag.mBase.checkLevel() && tag.checkLevel()) { 83920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson tag.makeHDF(data, base + "." + j); 84920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson j++; 85920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 86920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 87920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 88920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson} 89