/******************************************************************************* * This file is protected by Copyright. * Please refer to the COPYRIGHT file distributed with this source distribution. * * This file is part of REDHAWK IDE. * * 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 gov.redhawk.ide.debug.internal.variables; import gov.redhawk.ide.debug.LocalSca; import gov.redhawk.ide.debug.ScaDebugPlugin; import gov.redhawk.model.sca.ScaService; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.variables.IDynamicVariable; import org.eclipse.core.variables.IDynamicVariableResolver; /** * Provides a unique service name within the IDE's sandbox device manager */ public class UniqueServiceNameBindingResolver implements IDynamicVariableResolver { public static final String VARIABLE_NAME = "uniqueServiceName"; /** * {@inheritDoc} */ @Override public String resolveValue(final IDynamicVariable variable, String argument) throws CoreException { if (argument == null) { argument = "service"; } if (findService(argument) == null) { return argument; } String retVal = null; for (int i = 2; retVal == null; i++) { final String testName = argument + "_" + i; if (findService(argument) == null) { retVal = testName; } } return retVal; } private Object findService(final String argument) { final LocalSca localSca = ScaDebugPlugin.getInstance().getLocalSca(); for (final ScaService service : localSca.getSandboxDeviceManager().getServices()) { if (service.getName().equals(argument)) { return service; } } return null; } public static String getProgramArgument(final String argument) { if (argument != null) { return "${" + UniqueServiceNameBindingResolver.VARIABLE_NAME + ":" + argument + "}"; } else { return "${" + UniqueServiceNameBindingResolver.VARIABLE_NAME + "}"; } } }