package de.hub.emffrag.hbase; import java.util.Map; import org.eclipse.core.runtime.Plugin; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.resource.Resource; import org.osgi.framework.BundleContext; import de.hub.emffrag.datastore.DataStoreImpl; import de.hub.emffrag.datastore.IDataStore; import de.hub.emffrag.datastore.ScanningDataStore; import de.hub.emffrag.datastore.WriteCachingDataStore; import de.hub.emffrag.fragmentation.FragmentedModelFactory; public class EmfFragHBaseActivator extends Plugin { public static EmfFragHBaseActivator instance = null; public int scanCacheSize = 1000; public boolean useScanning = false; @Override public void start(BundleContext context) throws Exception { super.start(context); instance = this; init(); } private void init() { Map<String, Object> protocolToFactoryMap = Resource.Factory.Registry.INSTANCE.getProtocolToFactoryMap(); protocolToFactoryMap.put("hbase", new FragmentedModelFactory() { @Override protected IDataStore createDataStore(URI uri) { HBaseDataStore baseDataStore = new HBaseDataStore(uri.path().substring(1), true); baseDataStore.setScanCacheSize(scanCacheSize); if (useScanning) { return new DataStoreImpl(new ScanningDataStore(new WriteCachingDataStore(baseDataStore, baseDataStore), baseDataStore), uri); } else { return new DataStoreImpl(new WriteCachingDataStore(baseDataStore, baseDataStore), uri); } } }); } public static void standalone() { if (instance == null) { instance = new EmfFragHBaseActivator(); instance.init(); } } }