package com.netifera.platform.net.model; import com.netifera.platform.api.model.AbstractEntity; import com.netifera.platform.api.model.IWorkspace; import com.netifera.platform.util.HexaEncoding; import com.netifera.platform.util.addresses.INetworkAddress; public abstract class NetworkAddressEntity extends AbstractEntity { private static final long serialVersionUID = -5247936378391570611L; private final byte[] address; /* Store the address as a string for faster queries */ private final String addressString; protected NetworkAddressEntity(String entityName, IWorkspace workspace, long realmId, byte[] address) { super(entityName, workspace, realmId); this.address = address.clone(); this.addressString = getAddress().toString(); /* to normalize */ } NetworkAddressEntity() { address = null; addressString = null; } public byte[] getData() { return address; // FIXME readonly } // TODO jdoc do not use getAddress().toString(), use getAddressString() instead public abstract INetworkAddress getAddress(); public String getAddressString() { return addressString; } protected static String createQueryKey(String entityName, long realmId, byte[] address) { return entityName + ":" + realmId + ":" + HexaEncoding.bytes2hex(address); } @Override protected String generateQueryKey() { return createQueryKey(getTypeName(), getRealmId(), address); } }