/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.runtime; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.teiid.designer.runtime.spi.ITeiidServer; import org.teiid.designer.runtime.spi.ITeiidServerManager; public final class TeiidJdbcPortManager { /** * Map containing applicable JDBC PORT value overrides. * * This is required to allow basic teiid jdbc port override value * * key == Teiid Server ID * value == PORT number (i.e. 31000, etc..) */ private Map<String, String> overrideMap; private Map<String, String> defaultsMap; public TeiidJdbcPortManager() { init(); } private void init() { overrideMap = new HashMap<String, String>(10); defaultsMap = new HashMap<String, String>(10); } public void setPort(ITeiidServer server, int port, boolean isOverride) { if( isOverride ) { if( port < 1 ) { overrideMap.remove(server); } else { overrideMap.put(server.getId(), Integer.toString(port)); } } else { if( port < 1 ) { defaultsMap.remove(server); } else { defaultsMap.put(server.getId(), Integer.toString(port)); } } } public String getPort(ITeiidServer server, boolean isOverride) { if( isOverride ) { return overrideMap.get(server.getId()); } else { return defaultsMap.get(server.getId()); } } public void cleanPorts(ITeiidServerManager manager) { List<String> serverIDs = new ArrayList<String>(10); for( ITeiidServer server : manager.getServers() ) { serverIDs.add(server.getId()); } List<String> staleOverrideServerIDs = new ArrayList<String>(10); for( String serverID : overrideMap.keySet()) { if( ! serverIDs.contains(serverID) ) { staleOverrideServerIDs.add(serverID); } } for( String staleID : staleOverrideServerIDs ) { overrideMap.remove(staleID); } } }