import static java.util.Objects.requireNonNull;
import static com.aa.cleanwithus.util.ToStrings.toStringBuilder;
import java.io.Serializable;
import java.util.Objects;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.validation.constraints.NotNull;
import org.hibernate.annotations.Parameter;
import org.hibernate.annotations.Type;
import com.aa.cleanwithus.job.Job;
@Embeddable
public class ProviderStationJobType implements Serializable {
private static final long serialVersionUID = -8583849717561589026L;
@Type(
type = "com.aa.cleanwithus.persist.type.ClassByDiscriminatorValueType",
parameters = @Parameter(name = "class", value = "com.aa.cleanwithus.job.Job")
)
@Column(name = "psj_type", nullable = false)
@NotNull
private Class<? extends Job> type;
@Column(name = "psj_category", length = 1, nullable = false)
@NotNull
private ProviderStationJobTypeCategory category;
public ProviderStationJobType(){}
public ProviderStationJobType(
Class<? extends Job> type,
ProviderStationJobTypeCategory category
){
this.type = requireNonNull(type);
this.category = requireNonNull(category);
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (!(obj instanceof ProviderStationJobType)) return false;
ProviderStationJobType that = (ProviderStationJobType)obj;
return Objects.equals(this.getType(), that.getType());
}
@Override
public int hashCode() {
return Objects.hash(getType());
}
@Override
public String toString() {
return toStringBuilder(this)
.append("type", getType())
.append("category", getCategory())
.build();
}
public Class<? extends Job> getType() {
return type;
}
public void setType(Class<? extends Job> type) {
this.type = requireNonNull(type);
}
public ProviderStationJobTypeCategory getCategory() {
return category;
}
public void setCategory(ProviderStationJobTypeCategory category) {
this.category = requireNonNull(category);
}
}