package com.salesmanager.core.business.services.catalog.product.image;
import java.util.List;
import com.salesmanager.core.business.exception.ServiceException;
import com.salesmanager.core.business.services.common.generic.SalesManagerEntityService;
import com.salesmanager.core.model.catalog.product.Product;
import com.salesmanager.core.model.catalog.product.file.ProductImageSize;
import com.salesmanager.core.model.catalog.product.image.ProductImage;
import com.salesmanager.core.model.content.ImageContentFile;
import com.salesmanager.core.model.content.OutputContentFile;
public interface ProductImageService extends SalesManagerEntityService<Long, ProductImage> {
/**
* Add a ProductImage to the persistence and an entry to the CMS
* @param product
* @param productImage
* @param file
* @throws ServiceException
*/
void addProductImage(Product product, ProductImage productImage, ImageContentFile inputImage)
throws ServiceException;
/**
* Get the image ByteArrayOutputStream and content description from CMS
* @param productImage
* @return
* @throws ServiceException
*/
OutputContentFile getProductImage(ProductImage productImage, ProductImageSize size)
throws ServiceException;
/**
* Returns all Images for a given product
* @param product
* @return
* @throws ServiceException
*/
List<OutputContentFile> getProductImages(Product product)
throws ServiceException;
void removeProductImage(ProductImage productImage) throws ServiceException;
void saveOrUpdate(ProductImage productImage) throws ServiceException;
/**
* Returns an image file from required identifier. This method is
* used by the image servlet
* @param store
* @param product
* @param fileName
* @param size
* @return
* @throws ServiceException
*/
OutputContentFile getProductImage(String storeCode, String productCode,
String fileName, final ProductImageSize size) throws ServiceException;
void addProductImages(Product product, List<ProductImage> productImages)
throws ServiceException;
}