/* * Copyright (c) 2008-2014 EMC Corporation * All Rights Reserved */ package com.emc.storageos.networkcontroller.impl.mds; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Set; import org.apache.commons.lang.math.IntRange; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.collect.Sets; public class IvrVsanConfiguration implements Serializable { private static final Logger _log = LoggerFactory.getLogger(IvrVsanConfiguration.class); private String switchWwn; private Set<Integer> vsans = Sets.newHashSet(); private List<IntRange> vsansRanges; private boolean localSwitch; public String getSwitchWwn() { return switchWwn; } public void setSwitchWwn(String switchWwn) { this.switchWwn = switchWwn; } public Set<Integer> getVsans() { return vsans; } public void setVsans(Set<Integer> vsans) { this.vsans = vsans; } public boolean isLocalSwitch() { return localSwitch; } public void setLocalSwitch(boolean localSwitch) { this.localSwitch = localSwitch; } public List<IntRange> getVsansRanges() { if (vsansRanges == null) { vsansRanges = new ArrayList<IntRange>(); } return vsansRanges; } public void setVsansRanges(List<IntRange> vsansRanges) { this.vsansRanges = vsansRanges; } /** * Determine if given vsan is an ivr vsan * * @param vsanId * @return */ public boolean isIvrVsan(int vsanId) { boolean inRange = vsans.contains(vsanId); if (!inRange) { for (IntRange range : getVsansRanges()) { inRange = range.containsInteger(vsanId); if (inRange) { break; } } } return inRange; } public void print() { _log.info(toString()); } public String toString() { StringBuffer vsans = new StringBuffer(); for (Integer vsan : getVsans()) { vsans.append(vsan).append(","); } List<IntRange> ranges = getVsansRanges(); if (ranges != null) { for (IntRange range : ranges) { vsans.append(range.getMinimumInteger()).append("-").append(range.getMaximumInteger()).append("\n"); } } return "Ivr switch: " + getSwitchWwn() + " local: " + isLocalSwitch() + " vsans: " + vsans; } }