// ============================================================================ // // Copyright (C) 2006-2016 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package org.talend.mdm.repository.core.service; import java.util.LinkedList; import java.util.List; import org.talend.core.model.repository.ERepositoryObjectType; import org.talend.mdm.repository.core.service.interactive.DataContainerInteractiveHandler; import org.talend.mdm.repository.core.service.interactive.DataModelInteractiveHandler; import org.talend.mdm.repository.core.service.interactive.JobInteractiveHandler; import org.talend.mdm.repository.core.service.interactive.MenuInteractiveHandler; import org.talend.mdm.repository.core.service.interactive.RoutingRuleInteractiveHandler; import org.talend.mdm.repository.core.service.interactive.ServiceConfigurationInteractiveHandler; import org.talend.mdm.repository.core.service.interactive.StoredProcedureInteractiveHandler; import org.talend.mdm.repository.core.service.interactive.TransformerInteractiveHandler; import org.talend.mdm.repository.core.service.interactive.ViewInteractiveHandler; import com.amalto.workbench.exadapter.ExAdapterManager; import com.amalto.workbench.models.TreeObject; /** * DOC hbhong class global comment. Detailled comment */ public class InteractiveService { private static List<IInteractiveHandler> handlers = new LinkedList<IInteractiveHandler>(); private static IInteractiveServiceExAdapter exAdapter; public static void registerHandler(IInteractiveHandler handler) { handlers.add(handler); } private InteractiveService() { } static { exAdapter = ExAdapterManager.getAdapter(new InteractiveService(), IInteractiveServiceExAdapter.class); } public static IInteractiveHandler findHandler(ERepositoryObjectType type) { if (type != null) { if (handlers.isEmpty() || handlers.size() == 2) { initHandler(); } for (IInteractiveHandler handler : handlers) { if (handler.getRepositoryObjectType().equals(type)) { return handler; } } } return null; } public static IInteractiveHandler findHandlerForTreeObject(TreeObject treeObject) { switch (treeObject.getType()) { case TreeObject.DATA_MODEL: return new DataModelInteractiveHandler(); case TreeObject.DATA_CLUSTER: return new DataContainerInteractiveHandler(); case TreeObject.MENU: return new MenuInteractiveHandler(); case TreeObject.ROUTING_RULE: return new RoutingRuleInteractiveHandler(); case TreeObject.SERVICE_CONFIGURATION: return new ServiceConfigurationInteractiveHandler(); case TreeObject.STORED_PROCEDURE: return new StoredProcedureInteractiveHandler(); case TreeObject.TRANSFORMER: return new TransformerInteractiveHandler(); case TreeObject.VIEW: return new ViewInteractiveHandler(); default: if (exAdapter != null) { return exAdapter.findHandlerForTreeObject(treeObject); } } return null; } public static void initHandler() { registerHandler(new DataContainerInteractiveHandler()); registerHandler(new DataModelInteractiveHandler()); registerHandler(new MenuInteractiveHandler()); registerHandler(new JobInteractiveHandler()); registerHandler(new RoutingRuleInteractiveHandler()); registerHandler(new ServiceConfigurationInteractiveHandler()); registerHandler(new StoredProcedureInteractiveHandler()); registerHandler(new TransformerInteractiveHandler()); registerHandler(new ViewInteractiveHandler()); if (exAdapter != null) { exAdapter.initHandler(); } } }