package com.kritsit.casetracker.shared.domain.model;
import com.kritsit.casetracker.shared.domain.FileSerializer;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Objects;
public class Evidence implements Serializable {
private static final long serialVersionUID = 10L;
private int id;
private String description;
private File serverFile;
private File localFile;
private byte[] file;
public Evidence(int id, String description, File serverFile, File localFile) {
this.id = id;
this.description = description;
this.serverFile = serverFile;
this.localFile = localFile;
this.file = null;
}
public Evidence(int id, String description, File serverFile) {
this(id, description, serverFile, null);
}
// Accessor methods:
public int getId() {
return id;
}
public String getDescription() {
return description;
}
public File getLocalFile() {
return localFile;
}
public File getServerFile() {
return serverFile;
}
public String getServerFileLocation() {
return serverFile.getAbsolutePath();
}
public String getLocalFileLocation() {
return localFile.getAbsolutePath();
}
public byte[] getByteFile() {
if (file == null) {
return new byte[0];
} else {
byte[] buffer = Arrays.copyOf(file, file.length);
return buffer;
}
}
// Mutator methods:
public void setId(int id) {
this.id = id;
}
public void setDescription(String description) {
this.description = description;
}
public void setServerFile(File serverFile) {
this.serverFile = serverFile;
}
public void setLocalFile(File localFile) {
this.localFile = localFile;
}
public void setByteFile(byte[] file) {
if (file == null) {
this.file = new byte[0];
} else {
byte[] buffer = Arrays.copyOf(file, file.length);
this.file = buffer;
}
}
public void setByteFile(File file) throws IOException {
FileSerializer serializer = new FileSerializer();
this.file = serializer.serialize(file);
}
@Override
public int hashCode() {
int fileHash = 0;
if (getServerFile() != null) {
fileHash += getServerFile().hashCode();
}
if (getLocalFile() != null) {
fileHash += getLocalFile().hashCode();
}
return (id + description.hashCode() + fileHash) / 3;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
return obj.hashCode() == hashCode();
}
@Override
public String toString() {
String result = description + " ";
if (getServerFile() != null) {
result += "(" + getServerFileLocation() + ")";
} else {
result += "(" + getLocalFileLocation() + ")";
}
return result;
}
}