}
private static byte[] getResizedPicture(String fileAssetName, ImageDimensions dimensions) throws SqlInjectionException, DocumentIsNotAnImageException, DocumentIsNotAFileException, IOException, InvalidSizePatternException {
//load the document
FileAssetDao dao = FileAssetDao.getInstance();
ODocument asset=dao.getByName(fileAssetName);
if (asset==null) return null;
if (!StorageUtils.docIsAnImage(asset)) throw new DocumentIsNotAnImageException();
//check if the image has been previously resized
String sizePattern= dimensions.toString();
try{
byte[] resizedImage = dao.getStoredResizedPicture( asset, sizePattern);
if (resizedImage!=null) return resizedImage;
ByteArrayOutputStream fileContent = StorageUtils.extractFileFromDoc(asset);
String contentType = getContentType(asset);
String ext = contentType.substring(contentType.indexOf("/")+1);
WritebleImageFormat format;
try{
format = WritebleImageFormat.valueOf(ext);
}catch (Exception e){
format= WritebleImageFormat.png;
}
resizedImage=StorageUtils.resizeImage(fileContent.toByteArray(), format, dimensions);
//save the resized image for future requests
dao.storeResizedPicture(asset, sizePattern, resizedImage);
return resizedImage;
}catch ( InvalidModelException e) {
throw new RuntimeException("A very strange error occurred! ",e);
}
}