/*******************************************************************************
* 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.AsdocElement;
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 DitaUrlHelper extends AsdocUrlHelper {
public static String PACKAGE_LIST = "packages.dita";
public static String GLOBAL = "__Global__";
public static String EXT = ".xml";
public String packageList(AsdocRoot root) {
return root.getBaseUri() + PACKAGE_LIST;
}
public String rootUrl(AsdocRoot root) {
return GLOBAL + EXT;
}
public String packageUrl(AsdocPackage pack) {
if (pack.getCanonicalName() == null)
return GLOBAL + EXT;
return pack.getCanonicalName() + EXT;
}
public String typeUrl(AsdocType type) {
EObject container = type.eContainer();
if (container instanceof AsdocPackage) {
AsdocPackage pack = (AsdocPackage) container;
String fullUri = packageUrl(pack);
if (fullUri != null)
return fullUri + "#" + pack.getCanonicalName() + ":"
+ type.getName();
}
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) {
AsdocPackage pack = (AsdocPackage) container;
result = packageUrl(pack);
if (result != null) {
result = result + "#global"
+ (member instanceof AsdocExecutable ? "Operation"
: "Value") + ":" + pack.getCanonicalName();
}
}
if (result != null)
result += ":" + member.getName();
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 AsdocElement)
return url((AsdocElement) container);
return null;
}
}