package com.metaweb.gridworks; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import edu.mit.simile.butterfly.ButterflyModule; import edu.mit.simile.butterfly.MountPoint; public class ClientSideResourceManager { static public class ClientSideResourceBundle { final protected Set _pathSet = new HashSet(); final protected List _pathList = new ArrayList(); } final static protected Map s_bundles = new HashMap(); static public void addPaths( String bundleName, ButterflyModule module, String[] paths) { ClientSideResourceBundle bundle = s_bundles.get(bundleName); if (bundle == null) { bundle = new ClientSideResourceBundle(); s_bundles.put(bundleName, bundle); } for (String path : paths) { String fullPath = resolve(module, path); if (!bundle._pathSet.contains(fullPath)) { bundle._pathSet.add(fullPath); bundle._pathList.add(fullPath); } } } static public String[] getPaths(String bundleName) { ClientSideResourceBundle bundle = s_bundles.get(bundleName); if (bundle == null) { return new String[] {}; } else { String[] paths = new String[bundle._pathList.size()]; bundle._pathList.toArray(paths); return paths; } } static protected String resolve(ButterflyModule module, String path) { StringBuffer sb = new StringBuffer(); MountPoint mountPoint = module.getMountPoint(); boolean slashed = path.startsWith("/"); char[] mountPointChars = mountPoint.getMountPoint().toCharArray(); sb.append(mountPointChars, 0, slashed ? mountPointChars.length - 1 : mountPointChars.length); sb.append(path); return sb.toString(); } }