package org.eclipse.uml2.diagram.common.pathmap;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.eclipse.emf.common.util.URI;
import org.eclipse.osgi.util.NLS;
import org.eclipse.uml2.uml.resource.UMLResource;
public abstract class PathMapResolver {
abstract public boolean isApplicable(URI uri);
abstract public Collection<String> getProfiles(URI uri, String pathmapVarName) throws Exception;
protected boolean isProfileFile(String fileName) {
return fileName.endsWith(UMLResource.PROFILE_FILE_EXTENSION);
}
protected Collection<String> getProfilesFromFolder(File folder, String pathmapVarName) {
if (!folder.isDirectory()) {
return Collections.emptyList();
}
List<String> pathmaps = new ArrayList<String>();
String[] files = folder.list();
for (int i = 0; i < files.length; i++) {
String currFile = files[i];
if (isProfileFile(currFile)) {
String pathmap = NLS.bind(PATHMAP_FORMAT, new Object[] { pathmapVarName, currFile });
pathmaps.add(pathmap);
}
}
return pathmaps;
}
protected static final String PATHMAP_FORMAT = "pathmap://{0}/{1}"; //$NON-NLS-1$
}