package com.netifera.platform.net.wifi.model;
import com.netifera.platform.api.model.AbstractEntity;
import com.netifera.platform.api.model.IEntity;
import com.netifera.platform.api.model.IEntityReference;
import com.netifera.platform.api.model.IWorkspace;
import com.netifera.platform.net.model.NetworkAddressEntity;
import com.netifera.platform.util.addresses.MACAddress;
public class WirelessStationEntity extends AbstractEntity {
private static final long serialVersionUID = 1L;
public static final String ENTITY_TYPE = "wireless.station";
private final byte[] addressBytes;
private final IEntityReference essEntity;
private IEntityReference networkAddress;
public WirelessStationEntity(IWorkspace workspace, long realmId, MACAddress address, ExtendedServiceSetEntity ess) {
super(ENTITY_TYPE, workspace, realmId);
addressBytes = address.toBytes();
essEntity = ess.createReference();
}
WirelessStationEntity() {
addressBytes = null;
essEntity = null;
}
public MACAddress getAddress() {
return new MACAddress(addressBytes);
}
public ExtendedServiceSetEntity getESS() {
return (ExtendedServiceSetEntity) referenceToEntity(essEntity);
}
public void setNetworkAddress(NetworkAddressEntity address) {
networkAddress = address.createReference();
}
public NetworkAddressEntity getNetworkAddress() {
if(networkAddress == null) return null;
return (NetworkAddressEntity) referenceToEntity(networkAddress);
}
@Override
protected IEntity cloneEntity() {
final WirelessStationEntity clone = new WirelessStationEntity(getWorkspace(), getRealmId(), new MACAddress(addressBytes), getESS());
return clone;
}
protected String generateQueryKey() {
return createQueryKey(getRealmId(), new MACAddress(addressBytes));
}
public static String createQueryKey(long realmId, MACAddress address) {
return ENTITY_TYPE + ":" + realmId + ":" + address.toString();
}
}