package org.ovirt.engine.core.bll.storage; import org.ovirt.engine.core.compat.*; import org.ovirt.engine.core.common.businessentities.*; public class StorageHelperDirector { private static StorageHelperDirector _instance = new StorageHelperDirector(); private java.util.HashMap<StorageType, IStorageHelper> _helpers = new java.util.HashMap<StorageType, IStorageHelper>(); public static StorageHelperDirector getInstance() { return _instance; } private StorageHelperDirector() { InitializeHelpers(); } private void InitializeHelpers() { try { for (String helperName : EnumCompat.GetNames(StorageType.class)) { java.lang.Class actionType = null; try { actionType = java.lang.Class.forName(String.format("%1$s.%2$s%3$s", "org.ovirt.engine.core.bll.storage", helperName, "StorageHelper")); } catch (ClassNotFoundException cnfe) { // eat it } /** * if action type not exist - operation valid */ if (actionType != null) { java.lang.reflect.Constructor info = actionType.getConstructors()[0]; Object tempVar = info.newInstance(null); IStorageHelper currentHelper = (IStorageHelper) ((tempVar instanceof IStorageHelper) ? tempVar : null); if (currentHelper != null) { _helpers.put(StorageType.valueOf(helperName), currentHelper); } } } } catch (Exception ex) { throw new ApplicationException("JTODO missing exception", ex); } } public IStorageHelper getItem(StorageType index) { return _helpers.get(index); } }