/**
* Copyright (c) 2011 committers of YAKINDU and others.
* 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
* Contributors:
* committers of YAKINDU - initial API and implementation
*
*/
package org.yakindu.sct.simulation.core.debugmodel;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.eclipse.debug.core.model.DebugElement;
import org.eclipse.debug.core.model.IDebugTarget;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.yakindu.base.base.NamedElement;
/**
*
* @author andreas muelder - Initial contribution and API
*
*/
public class SCTDebugElement extends DebugElement {
public SCTDebugElement(IDebugTarget target, String resourceString) {
super(target);
this.resourceString = resourceString;
}
private String resourceString;
public String getResourceString() {
return resourceString;
}
public String getModelIdentifier() {
return IDebugConstants.ID_DEBUG_MODEL;
}
public String fullQfn(NamedElement element) {
List<String> qfnFragments = new ArrayList<String>();
qfnFragments.add(element.getName());
EObject current = element;
while (current.eContainer() != EcoreUtil.getRootContainer(current)) {
current = current.eContainer();
if (current instanceof NamedElement) {
String name = ((NamedElement) current).getName();
if (name != null) {
qfnFragments.add(name.replaceAll(" ", ""));
} else {
qfnFragments.add("<name>");
}
}
}
Collections.reverse(qfnFragments);
StringBuilder sb = new StringBuilder();
sb.append(element.getName() != null ? element.getName() : element.eClass().getName());
sb.append(" (");
String sep = "";
for (String s : qfnFragments) {
sb.append(sep).append(s);
sep = ".";
}
sb.append(")");
sb.append(" resource: ");
sb.append(element.eResource().getURI().lastSegment());
return sb.toString();
}
}