/******************************************************************************* * Copyright (c) 2011 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.avm.naming; import java.util.regex.Pattern; import org.eclipse.xtext.naming.QualifiedName; import org.eclipse.xtext.naming.IQualifiedNameConverter; public class AvmQualifiedNameConverter implements IQualifiedNameConverter { public static String DELIMITER = "."; public static Pattern DELIMITER_RE = Pattern.compile("\\."); // private static int counter; public String toString(QualifiedName qname) { if (qname == null) throw new IllegalArgumentException("Qualified name cannot be null"); if (qname.getSegmentCount() == 1) return qname.getFirstSegment(); StringBuilder builder = new StringBuilder(); boolean isFirst = true; for (String segment : qname.getSegments()) { if (!isFirst) builder.append(DELIMITER); isFirst = false; builder.append(segment); } return builder.toString(); } public QualifiedName toQualifiedName(String qname) { if (qname == null) throw new IllegalArgumentException("Qualified name cannot be null"); // counter++; // if (counter%100==0) // System.out.println(counter); return qname.contains(DELIMITER) ? QualifiedName.create(DELIMITER_RE.split(qname)) : QualifiedName.create(qname); } }