package validators;
import api.v1.PoseidonAPIObject;
import api.v1.Product;
import com.avaje.ebean.Model;
import models.ProductModel;
public class ProductValidator implements ModelValidator, ApiValidator{
@Override
public ValidationResult validateApi(PoseidonAPIObject apiObject) {
ValidationResult result = new ValidationResult();
Product apiProduct = (Product) apiObject;
if ( apiProduct.name == null || apiProduct.name.isEmpty()){
result.addValidationError(new ValidationError(ValidationErrorType.PRODUCT_NAME_MISSING));
}
if ( apiProduct.sku == null || apiProduct.sku.isEmpty()){
result.addValidationError(new ValidationError(ValidationErrorType.PRODUCT_SKU_MISSING));
}
if ( apiProduct.price == null){
result.addValidationError(new ValidationError(ValidationErrorType.PRODUCT_PRICE_MISSING));
}
if ( apiProduct.price != null && apiProduct.price < 0){
result.addValidationError(new ValidationError(ValidationErrorType.PRODUCT_PRICE_NEGATIVE));
}
return result;
}
@Override
public ValidationResult validateModel(Model modelObject) {
ValidationResult result = new ValidationResult();
ProductModel product = (ProductModel) modelObject;
if ( product.name == null || product.name.isEmpty()){
result.addValidationError(new ValidationError(ValidationErrorType.PRODUCT_NAME_MISSING));
}
/*
if ( product.product == null || product.product.isEmpty()){
result.addValidationError(new ValidationError(ValidationErrorType.PRODUCT_SKU_MISSING));
}
*/
if ( product.price == null){
result.addValidationError(new ValidationError(ValidationErrorType.PRODUCT_PRICE_MISSING));
}
if ( product.price != null && product.price < 0){
result.addValidationError(new ValidationError(ValidationErrorType.PRODUCT_PRICE_NEGATIVE));
}
return result;
}
}