/******************************************************************************* * 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.parser; import java.util.Comparator; import java.util.List; import org.apache.log4j.Logger; import org.axdt.asdoc.AsdocEFactory; import org.axdt.asdoc.model.AsdocElement; import org.axdt.avm.access.AvmAccess; import org.eclipse.emf.common.util.URI; import com.google.common.collect.Lists; public abstract class AbstractCollector implements Comparator<AsdocElement> { protected final Logger logger = Logger.getLogger(getClass()); protected AsdocXmlHelper xml; protected AsdocEFactory asFactory = AsdocEFactory.eINSTANCE; protected static List<String> globalTypes = Lists.newArrayList("Object", "Array", "String", "Boolean", "int", "uint", "Number", "Date", "Function", "Class", "Math"); public AbstractCollector() { xml = new AsdocXmlHelper(); } public int compare(AsdocElement o1, AsdocElement o2) { return o1.getName().compareTo(o2.getName()); } public URI getProxyURI(String name) { if (name == null || "*".equals(name) || "void".equals(name)) return null; name = name.trim(); if (name.length() == 0) return null; if (name.lastIndexOf(']') != 0) name = name.replaceFirst("\\.<[^>]*>", ""); if (name.contains(":")) name = name.replaceFirst(":", "."); // check if we already got a qualified name boolean isQualified = name.contains(".") || globalTypes.contains(name); String partition = ":" + (isQualified ? "/types/" : "/lookup/"); String uri = AvmAccess.PROTOCOL + partition + name; return URI.createURI(uri); } }