package com.netifera.platform.net.dns.model;
import java.util.Locale;
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.InternetAddressEntity;
public class PTRRecordEntity extends DNSRecordEntity {
private static final long serialVersionUID = 5885077675573832948L;
final public static String ENTITY_TYPE = "dns.ptr";
final private IEntityReference address;
/* Store the address as a string for faster queries */
final private String addressString;
final private String fqdm;
final private String name;
public PTRRecordEntity(IWorkspace workspace, long realmId, IEntityReference domain, IEntityReference address, String name) {
super(ENTITY_TYPE, workspace, realmId, domain);
this.address = address.createClone();
this.addressString = getAddressEntity().getAddressString();
this.name = name.toLowerCase(Locale.ENGLISH); // normalize?
this.fqdm = createFQDM();
}
PTRRecordEntity() {
address = null;
addressString = null;
fqdm = null;
name = null;
}
private String createFQDM() {
String name = getName();
if (name.endsWith(".")) return name;
return name+"."+getDomain().getFQDM();
}
public String getName() {
return name;
}
public InternetAddressEntity getAddressEntity() {
return (InternetAddressEntity)referenceToEntity(address);
}
public String getAddressString() {
return addressString;
}
public String getFQDM() {
return fqdm;
}
public static String createQueryKey(long realmId, String address, String fqdm) {
return ENTITY_TYPE + ":" + realmId + ":" + address + ":" + fqdm;
}
@Override
protected String generateQueryKey() {
return createQueryKey(getRealmId(), addressString, fqdm);
}
@Override
protected IEntity cloneEntity() {
return new PTRRecordEntity(getWorkspace(), getRealmId(), domain, address, name);
}
}