package org.opennaas.extensions.openflowswitch.driver.floodlight.protocol.client.mockup; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.ws.rs.PathParam; import org.opennaas.extensions.openflowswitch.driver.floodlight.protocol.client.IFloodlightStaticFlowPusherClient; import org.opennaas.extensions.openflowswitch.driver.floodlight.protocol.client.wrappers.FloodlightOFFlowsWrapper; import org.opennaas.extensions.openflowswitch.model.FloodlightOFFlow; /** * * @author Adrian Rosello (i2CAT) * */ public class FloodlightMockClient implements IFloodlightStaticFlowPusherClient { private Map<String, List<FloodlightOFFlow>> flows; public FloodlightMockClient() { this.flows = new HashMap<String, List<FloodlightOFFlow>>(); } @Override public void addFlow(FloodlightOFFlow flow) { String switchId = flow.getSwitchId(); if (switchId != null) { List<FloodlightOFFlow> switchFlows = flows.get(switchId); if (switchFlows == null) { switchFlows = new ArrayList<FloodlightOFFlow>(); switchFlows.add(flow); flows.put(switchId, switchFlows); } else switchFlows.add(flow); } } @Override public void deleteFlow(FloodlightOFFlow flow) { for (String switchId : flows.keySet()) { List<FloodlightOFFlow> switchFlows = flows.get(switchId); List<FloodlightOFFlow> flowsToRemove = new ArrayList<FloodlightOFFlow>(); for (FloodlightOFFlow existingFlow : switchFlows) if (existingFlow.getName().equals(flow.getName())) flowsToRemove.add(flow); switchFlows.removeAll(flowsToRemove); } } @Override public void deleteFlowsForSwitch(@PathParam("switchId") String dpid) { flows.get(dpid).clear(); } @Override public void deleteAllFlows() { for (String switchId : flows.keySet()) { List<FloodlightOFFlow> switchFlows = flows.get(switchId); switchFlows.clear(); } } @Override public Map<String, List<FloodlightOFFlow>> getFlows() { return flows; } @Override public FloodlightOFFlowsWrapper getFlows(@PathParam("switchId") String dpid) { FloodlightOFFlowsWrapper flowsWrapper = new FloodlightOFFlowsWrapper(); if (flows.get(String.valueOf(dpid)) != null) flowsWrapper.addAll(flows.get(String.valueOf(dpid))); return flowsWrapper; } }