package org.ovirt.engine.core.common.businessentities.network; import java.util.Objects; import javax.validation.constraints.Size; import org.ovirt.engine.core.common.businessentities.BusinessEntitiesDefinitions; import org.ovirt.engine.core.common.businessentities.BusinessEntity; import org.ovirt.engine.core.common.businessentities.IVdcQueryable; import org.ovirt.engine.core.common.businessentities.Nameable; import org.ovirt.engine.core.compat.Guid; /** * <code>NetworkInterface</code> represents a network interface device. * */ public abstract class NetworkInterface<T extends NetworkStatistics> implements IVdcQueryable, BusinessEntity<Guid>, Nameable { private static final long serialVersionUID = -4926026587466645571L; protected Guid id; @Size(min = 1, max = BusinessEntitiesDefinitions.NETWORK_NAME_SIZE) private String name; private String macAddress; private Integer type; private Integer speed; protected T statistics; public NetworkInterface() { } public NetworkInterface(T statistics, int type) { this.statistics = statistics; this.type = type; } /** * Sets the instance id. * * @param id * the id */ public void setId(Guid id) { this.id = id; this.statistics.setId(id); } /** * Returns the instance id. * * @return the id */ public Guid getId() { return id; } /** * Sets the interface's name. * * @param name * the name */ public void setName(String name) { this.name = name; } /** * Returns the interface's name. * * @return the name */ @Override public String getName() { return name; } /** * Sets the MAC address. * * @param macAddress * the MAC address */ public void setMacAddress(String macAddress) { this.macAddress = macAddress; } /** * Returns the device's MAC address. * * @return the MAC address */ public String getMacAddress() { return macAddress; } /** * Sets the speed of the network device in megabits per second. * * @param speed * the speed. */ public void setSpeed(Integer speed) { this.speed = speed; } /** * Returns the speed of the network device in megabits per second. * * @return the speed */ public Integer getSpeed() { return speed; } /** * Returns whether the network device has non-zero speed. * * @return true iff the speed is set and is non-zero. */ public boolean hasSpeed() { return speed != null && speed != 0; } /** * Sets the type of network device. * * @param type * the type */ public void setType(Integer type) { this.type = type != null ? type : 0; } /** * Returns the type of network device. * * @return the type */ public Integer getType() { return type; } /** * Sets the statistics for the network device. * * @param statistics * the statistics */ public void setStatistics(T statistics) { this.statistics = statistics; } /** * Returns the statistics for the network device. * * @return the statistics */ public T getStatistics() { return statistics; } @Override public int hashCode() { return Objects.hash( id, macAddress, name, speed, type ); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof NetworkInterface)) { return false; } NetworkInterface<?> other = (NetworkInterface<?>) obj; return Objects.equals(id, other.id) && Objects.equals(macAddress, other.macAddress) && Objects.equals(name, other.name) && Objects.equals(speed, other.speed) && Objects.equals(type, other.type); } }