1 19 20 package com.sslexplorer.vfs; 21 22 import java.util.ArrayList ; 23 import java.util.Collection ; 24 import java.util.Collections ; 25 import java.util.HashMap ; 26 import java.util.List ; 27 import java.util.Map ; 28 import java.util.TreeMap ; 29 30 import com.sslexplorer.security.SessionInfo; 31 import com.sslexplorer.vfs.store.apps.ApplicationStore; 32 import com.sslexplorer.vfs.store.downloads.TempStore; 33 import com.sslexplorer.vfs.store.site.SiteStore; 34 import com.sslexplorer.vfs.utils.URI; 35 36 42 public class VFSProviderManager { 43 44 46 private Map <String , VFSProvider> providers; 47 private static VFSProviderManager instance; 48 49 52 private VFSProviderManager() { 53 providers = new HashMap <String , VFSProvider>(); 54 registerProvider(new DefaultVFSProvider("apps", ApplicationStore.class, "vfs")); 55 registerProvider(new DefaultVFSProvider("site", SiteStore.class, "vfs")); 56 registerProvider(new DefaultVFSProvider("temp", TempStore.class, "vfs")); 57 } 58 59 66 public static VFSProviderManager getInstance() { 67 if(instance == null) { 68 instance = new VFSProviderManager(); 69 } 70 return instance; 71 } 72 73 80 public VFSProvider getProvider(String scheme) { 81 VFSProvider provider = providers.get(scheme); 82 if(provider == null) { 83 for(VFSProvider p : providers.values()) { 84 if(p.willHandle(scheme)) { 85 return p; 86 } 87 } 88 } 89 return provider; 90 } 91 92 97 public void registerProvider(VFSProvider provider) { 98 providers.put(provider.getScheme(), provider); 99 } 100 101 107 public Map <String ,VFSStore> createStores(VFSRepository repository) throws InstantiationException , IllegalAccessException { 108 Map <String ,VFSStore> stores = new TreeMap <String ,VFSStore>(); 109 for(VFSProvider provider : providers.values()) { 110 VFSStore store = (VFSStore)(provider.getStoreClass()).newInstance(); 111 store.init(repository, provider); 112 stores.put(store.getName(), store); 113 } 114 return stores; 115 } 116 117 122 public void deregisterProvider(String scheme) { 123 providers.remove(scheme); 124 } 125 126 131 public Collection <VFSProvider> getProviders() { 132 List <VFSProvider> l = new ArrayList <VFSProvider>(providers.values()); 133 Collections.sort(l); 134 return l; 135 } 136 } 137 | Popular Tags |