/* * Copyright 2010 salaboy. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * under the License. */ package org.drools.grid; import java.rmi.RemoteException; import java.util.HashMap; import java.util.Map; import org.drools.KnowledgeBase; /** * * @author salaboy */ public class DirectoryNodeLocalImpl implements DirectoryNodeService { private Map<String, String> executorsMap = new HashMap<String, String>(); private Map<String, String> kbasesMap = new HashMap<String, String>(); private Map<String, KnowledgeBase> kbasesInstancesMap = new HashMap<String, KnowledgeBase>(); public DirectoryNodeLocalImpl() { } public String getId() throws ConnectorException { return "Local:Directory:"; } public void register(String executorId, String resourceId) throws ConnectorException, RemoteException { this.executorsMap.put( executorId, resourceId ); } public void register(String executorId, GenericNodeConnector resourceConnector) throws ConnectorException, RemoteException { this.executorsMap.put( executorId, resourceConnector.getId() ); } public GenericNodeConnector lookup(String executorId) throws ConnectorException, RemoteException { String nodeConnectorId = this.executorsMap.get( executorId ); return GenericConnectorFactory.newConnector( nodeConnectorId ); } public void registerKBase(String kbaseId, KnowledgeBase kbase) throws ConnectorException, RemoteException { this.kbasesMap.put( kbaseId, "local" ); this.kbasesInstancesMap.put( kbaseId, kbase ); } public void registerKBase(String kbaseId, String resourceId) throws ConnectorException, RemoteException { this.kbasesMap.put( kbaseId, resourceId ); } public KnowledgeBase lookupKBase(String kbaseId) throws ConnectorException, RemoteException { String resourceId = this.kbasesMap.get( kbaseId ); //based on the id I should create a kbase client if ( resourceId.equals( "local" ) ) { return this.kbasesInstancesMap.get( kbaseId ); } return KnowledgeBaseClientFactory.newKnowledgeBaseClient( resourceId ); } public Map<String, String> getExecutorsMap() throws ConnectorException, RemoteException { return this.executorsMap; } public String lookupId(String resourceId) { return this.executorsMap.get( resourceId ); } public DirectoryNodeService getDirectoryNodeService() throws ConnectorException { return this; } public void unregister(String executorId) throws ConnectorException, RemoteException { this.executorsMap.remove( executorId ); } public Map<String, String> getKBasesMap() throws ConnectorException, RemoteException { return this.kbasesMap; } public void unregisterKBase(String kbaseId) throws ConnectorException, RemoteException { throw new UnsupportedOperationException( "Not supported yet." ); } public void dispose() throws ConnectorException, RemoteException { //Do nothing ?? } public ServiceType getServiceType() { return ServiceType.LOCAL; } public String lookupKBaseLocationId(String kbaseId) throws ConnectorException, RemoteException { return this.kbasesMap.get( kbaseId ); } }