/*******************************************************************************
* Copyright (c) 2010 Martin Schnabel <mb0@mb0.org>.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
******************************************************************************/
package org.axdt.asdoc.util;
import org.axdt.asdoc.model.AsdocExecutable;
import org.axdt.asdoc.model.AsdocMember;
import org.axdt.asdoc.model.AsdocPackage;
import org.axdt.asdoc.model.AsdocParameter;
import org.axdt.asdoc.model.AsdocRoot;
import org.axdt.asdoc.model.AsdocType;
import org.eclipse.emf.ecore.EObject;
public class HtmlUrlHelper extends AsdocUrlHelper {
public static String PACKAGE_LIST = "package-list.html";
public static String CLASS_LIST = "class-list.html";
public static String PACKAGE = "package.html";
public static String PACKAGE_DETAIL = "package-detail.html";
public static String PACKAGE_SUMMARY = "package-summary.html";
public String rootUrl(AsdocRoot root) {
return "";
}
public String packageUrl(AsdocPackage pack) {
if (pack.getCanonicalName() == null)
return "";
return pack.getCanonicalName().replace(".", "/") + "/";
}
public String typeUrl(AsdocType type) {
EObject container = type.eContainer();
if (container instanceof AsdocPackage) {
String pack = packageUrl((AsdocPackage) container);
return pack + type.getName() +".html";
}
return null;
}
public String memberUrl(AsdocMember member) {
// member can be contained in a package or type
EObject container = member.eContainer();
if (member.getName() == null || container == null)
return null;
String result = null;
if (container instanceof AsdocType) {
result = typeUrl((AsdocType) container);
} else if (container instanceof AsdocPackage) {
result = packageUrl((AsdocPackage) container);
if (result != null) result += "package.html";
}
if (result != null) {
result += "#"+ member.getName();
if (member instanceof AsdocExecutable)
result += "()";
}
return result;
}
public String paramUrl(AsdocParameter param) {
// parameter has no own documentation
// so return the containers uri if available
EObject container = param.eContainer();
if (container instanceof AsdocMember)
return memberUrl((AsdocMember) container);
return null;
}
public String packages(AsdocPackage pack, boolean summary) {
return summary ? packageSummary(pack) : packageList(pack);
}
public String packageList(AsdocPackage pack) {
return check(pack.getRoot().getBaseUri()).concat(PACKAGE_LIST);
}
public String packageSummary(AsdocPackage pack) {
return check(pack.getRoot().getBaseUri()).concat(PACKAGE_SUMMARY);
}
public String types(AsdocPackage pack, boolean detail) {
return detail ? packageDetail(pack) : classList(pack);
}
public String classList(AsdocPackage pack) {
return check(pack.getFullUri()).concat(CLASS_LIST);
}
public String packageDetail(AsdocPackage pack) {
return check(pack.getFullUri()).concat(PACKAGE_DETAIL);
}
}