package qa.qcri.aidr.dbmanager.dto;
import java.io.Serializable;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import qa.qcri.aidr.common.exception.PropertyNotSetException;
import qa.qcri.aidr.dbmanager.entities.model.Model;
import qa.qcri.aidr.dbmanager.entities.model.ModelNominalLabel;
import qa.qcri.aidr.dbmanager.entities.model.NominalLabel;
@XmlRootElement
@JsonIgnoreProperties(ignoreUnknown = true)
public class ModelNominalLabelDTO implements Serializable {
/**
*
*/
private static final long serialVersionUID = 6522772017803560098L;
@XmlElement
private ModelNominalLabelIdDTO idDTO;
@XmlElement
private NominalLabelDTO nominalLabelDTO;
@XmlElement
private ModelDTO modelDTO;
@XmlElement
private Double labelPrecision;
@XmlElement
private Double labelRecall;
@XmlElement
private Double labelAuc;
@XmlElement
private Integer classifiedDocumentCount;
@XmlElement
private String modelStatus;
@XmlElement
private Long nominalAttributeId;
@XmlElement
private Integer trainingDocuments;
public ModelNominalLabelDTO() {
}
public ModelNominalLabelDTO(ModelNominalLabelIdDTO idDTO, NominalLabelDTO nominalLabelDTO,
ModelDTO modelDTO) throws PropertyNotSetException {
this.setIdDTO(idDTO);
this.setNominalLabelDTO(nominalLabelDTO);
this.setModelDTO(modelDTO);
}
public ModelNominalLabelDTO(ModelNominalLabelIdDTO idDTO, NominalLabelDTO nominalLabelDTO,
ModelDTO modelDTO, Double labelPrecision, Double labelRecall,
Double labelAuc, Integer classifiedDocumentCount) throws PropertyNotSetException {
this.setIdDTO(idDTO);
this.setNominalLabelDTO(nominalLabelDTO);
this.setModelDTO(modelDTO);
this.labelPrecision = labelPrecision;
this.labelRecall = labelRecall;
this.labelAuc = labelAuc;
this.classifiedDocumentCount = classifiedDocumentCount;
}
public ModelNominalLabelDTO(ModelNominalLabel modelNominalLabel) throws PropertyNotSetException {
if (modelNominalLabel != null) {
this.setLabelPrecision(modelNominalLabel.getLabelPrecision());
this.setLabelRecall(modelNominalLabel.getLabelRecall());
this.setLabelAuc(modelNominalLabel.getLabelAuc());
this.setClassifiedDocumentCount(modelNominalLabel.getClassifiedDocumentCount());
if (modelNominalLabel.getId() != null) {
this.setIdDTO(new ModelNominalLabelIdDTO(modelNominalLabel.getId()));
} else {
throw new PropertyNotSetException("Primary key not set!");
}
if (modelNominalLabel.hasModel()) {
Model m = new Model(modelNominalLabel.getModel().getModelFamily(), modelNominalLabel.getModel().getAvgPrecision(),
modelNominalLabel.getModel().getAvgRecall(), modelNominalLabel.getModel().getAvgAuc(),
modelNominalLabel.getModel().getTrainingCount(), modelNominalLabel.getModel().getTrainingTime(),
modelNominalLabel.getModel().isIsCurrentModel());
Long modelID = new Long(modelNominalLabel.getModel().getModelId());
m.setModelId(modelID);
this.setModelDTO(new ModelDTO(m));
}
if (modelNominalLabel.hasNominalLabel()) {
NominalLabel nb = new NominalLabel(modelNominalLabel.getNominalLabel().getNominalAttribute(),
modelNominalLabel.getNominalLabel().getNominalLabelCode(), modelNominalLabel.getNominalLabel().getName(),
modelNominalLabel.getNominalLabel().getDescription(),
modelNominalLabel.getNominalLabel().getSequence());
nb.setNominalLabelId(modelNominalLabel.getNominalLabel().getNominalLabelId());
this.setNominalLabelDTO(new NominalLabelDTO(nb));
}
}
}
public ModelNominalLabelIdDTO getIdDTO() {
return this.idDTO;
}
public void setIdDTO(ModelNominalLabelIdDTO idDTO) {
this.idDTO = idDTO;
}
public NominalLabelDTO getNominalLabelDTO() {
return this.nominalLabelDTO;
}
public void setNominalLabelDTO(NominalLabelDTO nominalLabelDTO) {
this.nominalLabelDTO = nominalLabelDTO;
}
public ModelDTO getModelDTO() {
return this.modelDTO;
}
public void setModelDTO(ModelDTO modelDTO) throws PropertyNotSetException {
this.modelDTO = modelDTO;
}
public Double getLabelPrecision() {
return this.labelPrecision;
}
public void setLabelPrecision(Double labelPrecision) {
this.labelPrecision = labelPrecision;
}
public Double getLabelRecall() {
return this.labelRecall;
}
public void setLabelRecall(Double labelRecall) {
this.labelRecall = labelRecall;
}
public Double getLabelAuc() {
return this.labelAuc;
}
public void setLabelAuc(Double labelAuc) {
this.labelAuc = labelAuc;
}
public Integer getClassifiedDocumentCount() {
return this.classifiedDocumentCount;
}
public void setClassifiedDocumentCount(Integer classifiedDocumentCount) {
this.classifiedDocumentCount = classifiedDocumentCount;
}
public ModelNominalLabel toEntity() throws PropertyNotSetException {
ModelNominalLabel entity = new ModelNominalLabel();
entity.setId(this.idDTO.toEntity());
if (this.getNominalLabelDTO() != null) {
entity.setNominalLabel(this.nominalLabelDTO.toEntity());
}
if (this.getModelDTO() != null) {
entity.setModel(this.getModelDTO().toEntity());
}
entity.setLabelPrecision(this.getLabelPrecision());
entity.setLabelRecall(this.getLabelRecall());
entity.setLabelAuc(this.getLabelAuc());
entity.setClassifiedDocumentCount(this.getClassifiedDocumentCount());
return entity;
}
public Long getNominalAttributeId() {
return nominalAttributeId;
}
public void setNominalAttributeId(Long nominalAttributeId) {
this.nominalAttributeId = nominalAttributeId;
}
/**
* @return the modelStatus
*/
public String isModelStatus() {
return modelStatus;
}
/**
* @param modelStatus the modelStatus to set
*/
public void setModelStatus(String modelStatus) {
this.modelStatus = modelStatus;
}
public Integer getTrainingDocuments() {
return trainingDocuments;
}
/**
* @param trainingDocuments the trainingDocuments to set
*/
public void setTrainingDocuments(Integer trainingDocuments) {
this.trainingDocuments = trainingDocuments;
}
}