Author: jleroux
Date: Wed Mar 4 14:22:55 2009 New Revision: 750018 URL: http://svn.apache.org/viewvc?rev=750018&view=rev Log: Refactoring of ImageTransform, mostly * Split into 2 classes one in framework/common : ImageTransform, one remains in product : ScaleImage.java * Moved some labels used by ImageTransformCreated from ProductErrorUiLabels.xml in new CommonErrorUiLabels.xml * Moved Jdom from webapp/lib to base/lib, updated .classpath Added: ofbiz/trunk/applications/product/src/org/ofbiz/product/image/ - copied from r749960, ofbiz/trunk/applications/product/src/org/ofbiz/image/ ofbiz/trunk/applications/product/src/org/ofbiz/product/image/ScaleImage.java - copied, changed from r749960, ofbiz/trunk/applications/product/src/org/ofbiz/image/ImageTransform.java ofbiz/trunk/framework/base/lib/jdom-1.1.jar - copied unchanged from r749960, ofbiz/trunk/framework/webapp/lib/jdom-1.1.jar ofbiz/trunk/framework/common/config/CommonErrorUiLabels.xml ofbiz/trunk/framework/common/src/org/ofbiz/common/image/ - copied from r749549, ofbiz/trunk/applications/product/src/org/ofbiz/image/ Removed: ofbiz/trunk/applications/product/src/org/ofbiz/image/ ofbiz/trunk/applications/product/src/org/ofbiz/product/image/ImageTransform.java ofbiz/trunk/framework/webapp/lib/jdom-1.1.jar Modified: ofbiz/trunk/.classpath ofbiz/trunk/applications/product/config/ProductErrorUiLabels.xml ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductServices.java ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/EditProductContent.groovy ofbiz/trunk/framework/common/src/org/ofbiz/common/image/ImageTransform.java Modified: ofbiz/trunk/.classpath URL: http://svn.apache.org/viewvc/ofbiz/trunk/.classpath?rev=750018&r1=750017&r2=750018&view=diff ============================================================================== --- ofbiz/trunk/.classpath (original) +++ ofbiz/trunk/.classpath Wed Mar 4 14:22:55 2009 @@ -133,7 +133,8 @@ <classpathentry kind="lib" path="framework/base/lib/scripting/asm-tree-2.2.jar"/> <classpathentry kind="lib" path="framework/base/lib/scripting/asm-util-2.2.jar"/> <classpathentry kind="lib" path="framework/base/lib/scripting/groovy-1.5.6.jar"/> - <classpathentry kind="lib" path="framework/base/lib/jpim-0.1.jar"/> + <classpathentry kind="lib" path="framework/base/lib/jdom-1.1.jar"/> + <classpathentry kind="lib" path="framework/base/lib/jpim-0.1.jar"/> <classpathentry kind="lib" path="framework/base/lib/freemarker-2.3.15.jar"/> <classpathentry kind="lib" path="framework/base/lib/owasp-esapi-full-java-1.4.jar"/> <classpathentry kind="lib" path="framework/webapp/lib/json-lib-2.2.3-jdk15.jar"/> @@ -144,7 +145,6 @@ <classpathentry kind="lib" path="specialpurpose/ldap/lib/cas-server-core-3.3.jar"/> <classpathentry kind="lib" path="framework/webapp/lib/xmlgraphics-commons-1.2.jar"/> <classpathentry kind="lib" path="framework/webapp/lib/rome-0.9.jar"/> - <classpathentry kind="lib" path="framework/webapp/lib/jdom-1.1.jar"/> <classpathentry kind="lib" path="framework/webapp/lib/barcode4j-fop-ext-0.93.jar"/> <classpathentry kind="lib" path="framework/webapp/lib/ws-commons-java5-1.0.1.jar"/> <classpathentry kind="lib" path="framework/webapp/lib/ws-commons-util-1.0.1.jar"/> Modified: ofbiz/trunk/applications/product/config/ProductErrorUiLabels.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/config/ProductErrorUiLabels.xml?rev=750018&r1=750017&r2=750018&view=diff ============================================================================== --- ofbiz/trunk/applications/product/config/ProductErrorUiLabels.xml (original) +++ ofbiz/trunk/applications/product/config/ProductErrorUiLabels.xml Wed Mar 4 14:22:55 2009 @@ -19,50 +19,18 @@ under the License. --> <resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <property key="ImageTransform.error_occurs_during_reading"> - <value xml:lang="en">An error occurs during reading</value> - <value xml:lang="fr">Une erreur est survenue lors de la lecture</value> - </property> <property key="ImageTransform.error_occurs_during_writing"> <value xml:lang="en">An error occurs during writing</value> <value xml:lang="fr">Une erreur est survenue lors de l'écriture</value> </property> - <property key="ImageTransform.error_prevents_the document_from_being_fully_parsed"> - <value xml:lang="en">Error prevents the document from being fully parsed</value> - <value xml:lang="fr">Une erreur empêche que le document soit entièrement analysé</value> - </property> - <property key="ImageTransform.errors_occurs_in_parsing"> - <value xml:lang="en">Errors occur in parsing</value> - <value xml:lang="fr">Des erreurs sont survenues lors de l'analyse</value> - </property> - <property key="ImageTransform.final_scale_factor_is_null"> - <value xml:lang="en">Final scale factor is null</value> - <value xml:lang="fr">Le facteur final de redimensionnement est nul</value> - </property> - <property key="ImageTransform.height_scale_factor_is_null"> - <value xml:lang="en">Height scale factor is null</value> - <value xml:lang="fr">Le facteur 'hauteur' de redimensionnement est nul</value> - </property> - <property key="ImageTransform.input_is_null"> - <value xml:lang="en">Input is null</value> - <value xml:lang="fr">L'entrée est nulle</value> - </property> <property key="ImageTransform.one_current_image_dimension_is_null"> <value xml:lang="en">One current image dimension is null</value> <value xml:lang="fr">Une des dimensions de l'image courrante est nulle</value> </property> - <property key="ImageTransform.one_default_dimension_is_null"> - <value xml:lang="en">One default dimension is null</value> - <value xml:lang="fr">Une des dimensions par défaut est nulle</value> - </property> <property key="ImageTransform.one_parameter_is_null"> <value xml:lang="en">One parameter is null</value> <value xml:lang="fr">Un des paramètres est nul</value> </property> - <property key="ImageTransform.root_element_has_not_been_set"> - <value xml:lang="en">Root element has not been set</value> - <value xml:lang="fr">L'élement racine n'a pas pu être chargé</value> - </property> <property key="ImageTransform.transform_is_non_invertible"> <value xml:lang="en">Transform is non-invertible</value> <value xml:lang="fr">La transformation n'est pas réversible</value> @@ -79,14 +47,6 @@ <value xml:lang="en">Unable to scale original image</value> <value xml:lang="fr">Impossible de redimensionner l'image originale</value> </property> - <property key="ImageTransform.unknown_buffered_image_type"> - <value xml:lang="en">Unknown buffered image type</value> - <value xml:lang="fr">Le type d'image bufferisée est inconnu</value> - </property> - <property key="ImageTransform.width_scale_factor_is_null"> - <value xml:lang="en">Width scale factor is null</value> - <value xml:lang="fr">Le facteur 'largeur' de redimensionnement est nul</value> - </property> <property key="ProductCreateCommunicationEventProductPermissionError"> <value xml:lang="en">Create Communication Event Product Permission Error</value> <value xml:lang="it">Errore di permesso durante la creazione evento comunicazione prodotto</value> Copied: ofbiz/trunk/applications/product/src/org/ofbiz/product/image/ScaleImage.java (from r749960, ofbiz/trunk/applications/product/src/org/ofbiz/image/ImageTransform.java) URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/image/ScaleImage.java?p2=ofbiz/trunk/applications/product/src/org/ofbiz/product/image/ScaleImage.java&p1=ofbiz/trunk/applications/product/src/org/ofbiz/image/ImageTransform.java&r1=749960&r2=750018&rev=750018&view=diff ============================================================================== --- ofbiz/trunk/applications/product/src/org/ofbiz/image/ImageTransform.java (original) +++ ofbiz/trunk/applications/product/src/org/ofbiz/product/image/ScaleImage.java Wed Mar 4 14:22:55 2009 @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. *******************************************************************************/ -package org.ofbiz.image; +package org.ofbiz.product.image; import java.awt.RenderingHints; import java.awt.geom.AffineTransform; @@ -34,67 +34,25 @@ import javolution.util.FastMap; -import org.jdom.Document; -import org.jdom.Element; import org.jdom.JDOMException; -import org.jdom.input.SAXBuilder; import org.ofbiz.base.util.Debug; import org.ofbiz.base.util.UtilMisc; import org.ofbiz.base.util.UtilProperties; import org.ofbiz.base.util.string.FlexibleStringExpander; import org.ofbiz.service.ServiceUtil; - +import org.ofbiz.common.image.ImageTransform; /** - * ImageTransform Class + * ScaleImage Class * <p> - * Services to apply transformation to images + * Scale the original image into 4 different size Types (small, medium, large, detail) */ -public class ImageTransform { +public class ScaleImage { - public static final String module = ImageTransform.class.getName(); + public static final String module = ScaleImage.class.getName(); public static final String resource = "ProductErrorUiLabels"; - public ImageTransform() { - } - - /** - * getBufferedImage - * <p> - * Set a buffered image - * - * @param context - * @param fileLocation Full file Path or URL - * @return URL images for all different size types - * @throws IOException Error prevents the document from being fully parsed - * @throws JDOMException Errors occur in parsing - */ - public Map<String, Object> getBufferedImage(String fileLocation, Locale locale) - throws IllegalArgumentException, IOException { - - /* VARIABLES */ - BufferedImage bufImg; - Map<String, Object> result = FastMap.newInstance(); - - /* BUFFERED IMAGE */ - try { - bufImg = ImageIO.read(new File(fileLocation)); - } catch(IllegalArgumentException e) { - String errMsg = UtilProperties.getMessage(resource, "ImageTransform.input_is_null", locale) + " : " + fileLocation + " ; " + e.toString(); - Debug.logError(errMsg, module); - result.put("errorMessage", errMsg); - return result; - } catch(IOException e) { - String errMsg = UtilProperties.getMessage(resource, "ImageTransform.error_occurs_during_reading", locale) + " : " + fileLocation + " ; " + e.toString(); - Debug.logError(errMsg, module); - result.put("errorMessage", errMsg); - return result; - } - - result.put("responseMessage", "success"); - result.put("bufferedImage", bufImg); - return result; - + public ScaleImage() { } /** @@ -112,13 +70,12 @@ * @throws IOException Error prevents the document from being fully parsed * @throws JDOMException Errors occur in parsing */ - public Map<String, Object> scaleImageInAllSize(Map<String, ? extends Object> context, String filenameToUse, String viewType, String viewNumber) + public static Map<String, Object> scaleImageInAllSize(Map<String, ? extends Object> context, String filenameToUse, String viewType, String viewNumber) throws IllegalArgumentException, ImagingOpException, IOException, JDOMException { /* VARIABLES */ Locale locale = (Locale) context.get("locale"); List<String> sizeTypeList = UtilMisc.toList("small", "medium", "large", "detail"); - List<String> extensionList = UtilMisc.toList("jpeg", "jpg", "png"); int index; Map<String, Map<String, String>> imgPropertyMap = FastMap.newInstance(); BufferedImage bufImg, bufNewImg; @@ -132,7 +89,7 @@ /* ImageProperties.xml */ String imgPropertyFullPath = System.getProperty("ofbiz.home") + "/applications/product/config/ImageProperties.xml"; - resultXMLMap.putAll((Map<String, Object>) getXMLValue(imgPropertyFullPath, locale)); + resultXMLMap.putAll((Map<String, Object>) ImageTransform.getXMLValue(imgPropertyFullPath, locale)); if(resultXMLMap.containsKey("responseMessage") && resultXMLMap.get("responseMessage").equals("success")) { imgPropertyMap.putAll((Map<String, Map<String, String>>) resultXMLMap.get("xml")); } else { @@ -173,7 +130,7 @@ /* get original BUFFERED IMAGE */ - resultBufImgMap.putAll(this.getBufferedImage(imageServerPath + "/" + filePathPrefix + filenameToUse, locale)); + resultBufImgMap.putAll(ImageTransform.getBufferedImage(imageServerPath + "/" + filePathPrefix + filenameToUse, locale)); if (resultBufImgMap.containsKey("responseMessage") && resultBufImgMap.get("responseMessage").equals("success")) { bufImg = (BufferedImage) resultBufImgMap.get("bufferedImage"); @@ -200,7 +157,7 @@ while (sizeIter.hasNext()) { String sizeType = sizeIter.next(); - resultScaleImgMap.putAll(this.scaleImage(bufImg, imgHeight, imgWidth, imgPropertyMap, sizeType, locale)); + resultScaleImgMap.putAll(ImageTransform.scaleImage(bufImg, imgHeight, imgWidth, imgPropertyMap, sizeType, locale)); if (resultScaleImgMap.containsKey("responseMessage") && resultScaleImgMap.get("responseMessage").equals("success")) { bufNewImg = (BufferedImage) resultScaleImgMap.get("bufferedImage"); @@ -246,14 +203,6 @@ newFilePathPrefix = newFileLocation.substring(0, newFileLocation.lastIndexOf("/") + 1); // adding 1 to include the trailing slash } - // choose final extension - String finalExtension = null; - if (!extensionList.contains(imgExtension.toLowerCase())) { - finalExtension = imgPropertyMap.get("format").get("extension"); - } else { - finalExtension = imgExtension; - } - String targetDirectory = imageServerPath + "/" + newFilePathPrefix; File targetDir = new File(targetDirectory); if (!targetDir.exists()) { @@ -292,164 +241,11 @@ result.put("original", resultBufImgMap); return result; - } else { String errMsg = UtilProperties.getMessage(resource, "ImageTransform.unable_to_scale_original_image", locale) + " : " + filenameToUse; Debug.logError(errMsg, module); result.put("errorMessage", errMsg); return ServiceUtil.returnError(errMsg); } - - - } - - - /** - * scaleImage - * <p> - * scale original image related to the ImageProperties.xml dimensions - * - * @param bufImg Buffered image to scale - * @param imgHeight Original image height - * @param imgwidth Original image width - * @param dimensionMap Image dimensions by size type - * @param sizeType Size type to scale - * @return New scaled buffered image - */ - private Map<String, Object> scaleImage(BufferedImage bufImg, double imgHeight, double imgWidth, Map<String, Map<String, String>> dimensionMap, String sizeType, Locale locale) { - - /* VARIABLES */ - BufferedImage bufNewImg; - double defaultHeight, defaultWidth, scaleFactor; - Map<String, Object> result = FastMap.newInstance(); - - /* DIMENSIONS from ImageProperties */ - defaultHeight = Double.parseDouble(dimensionMap.get(sizeType).get("height").toString()); - defaultWidth = Double.parseDouble(dimensionMap.get(sizeType).get("width").toString()); - if (defaultHeight == 0.0 || defaultWidth == 0.0) { - String errMsg = UtilProperties.getMessage(resource, "ImageTransform.one_default_dimension_is_null", locale) + " : defaultHeight = " + defaultHeight + " ; defaultWidth = " + defaultWidth; - Debug.logError(errMsg, module); - result.put("errorMessage", errMsg); - return result; - } - - /* SCALE FACTOR */ - // find the right Scale Factor related to the Image Dimensions - if (imgHeight > imgWidth) { - scaleFactor = defaultHeight / imgHeight; - if (scaleFactor == 0.0) { - String errMsg = UtilProperties.getMessage(resource, "ImageTransform.height_scale_factor_is_null", locale) + " (defaultHeight = " + defaultHeight + "; imgHeight = " + imgHeight; - Debug.logError(errMsg, module); - result.put("errorMessage", errMsg); - return result; - } - // get scaleFactor from the smallest width - if (defaultWidth < (imgWidth * scaleFactor)) { - scaleFactor = defaultWidth / imgWidth; - } - } else { - scaleFactor = defaultWidth / imgWidth; - if (scaleFactor == 0.0) { - String errMsg = UtilProperties.getMessage(resource, "ImageTransform.width_scale_factor_is_null", locale) + " (defaultWidth = " + defaultWidth + "; imgWidth = " + imgWidth; - Debug.logError(errMsg, module); - result.put("errorMessage", errMsg); - return result; - } - // get scaleFactor from the smallest height - if (defaultHeight < (imgHeight * scaleFactor)) { - scaleFactor = defaultHeight / imgHeight; - } - } - - if (scaleFactor == 0.0) { - String errMsg = UtilProperties.getMessage(resource, "ImageTransform.final_scale_factor_is_null", locale) + " = " + scaleFactor; - Debug.logError(errMsg, module); - result.put("errorMessage", errMsg); - return result; - } - int bufImgType; - if (BufferedImage.TYPE_CUSTOM == bufImg.getType()) { - String errMsg = UtilProperties.getMessage(resource, "ImageTransform.unknown_buffered_image_type", locale); - Debug.logWarning(errMsg, module); - // apply a type for image majority - bufImgType = BufferedImage.TYPE_INT_ARGB_PRE; - } else { - bufImgType = bufImg.getType(); - } - - bufNewImg = new BufferedImage( (int) (imgWidth * scaleFactor), (int) (imgHeight * scaleFactor), bufImgType); - - result.put("responseMessage", "success"); - result.put("bufferedImage", bufNewImg); - result.put("scaleFactor", scaleFactor); - return result; - - } - - /** - * getXMLValue - * <p> - * From a XML element, get a values map - * - * @param fileFullPath File path to parse - * @return Map contains asked attribute values by attribute name - */ - private Map<String, Object> getXMLValue(String fileFullPath, Locale locale) - throws IllegalStateException, IOException, JDOMException { - - /* VARIABLES */ - Document document; - Element rootElt; - Map<String, Map<String, String>> valueMap = FastMap.newInstance(); - Map<String, Object> result = FastMap.newInstance(); - - /* PARSING */ - SAXBuilder sxb = new SAXBuilder(); - try { - // JDOM - document = sxb.build(new File(fileFullPath)); - } catch(JDOMException e) { - String errMsg = UtilProperties.getMessage(resource, "ImageTransform.errors_occur_in parsing", locale) + " ImageProperties.xml " + e.toString(); - Debug.logError(errMsg, module); - result.put("errorMessage", "error"); - return result; - } catch(IOException e) { - String errMsg = UtilProperties.getMessage(resource, "ImageTransform.error_prevents_the document_from_being_fully_parsed", locale) + e.toString(); - Debug.logError(errMsg, module); - result.put("errorMessage", "error"); - return result; - } - // set Root Element - try { - rootElt = document.getRootElement(); - } catch(IllegalStateException e) { - String errMsg = UtilProperties.getMessage(resource, "ImageTransform.root_element_has_not_been_set", locale) + e.toString(); - Debug.logError(errMsg, module); - result.put("errorMessage", "error"); - return result; - } - - /* get NAME and VALUE */ - List<Element> children = rootElt.getChildren(); // FIXME : despite upgrading to jdom 1.1, it seems that getChildren is pre 1.5 java code (ie getChildren does not retun List<Element> but only List) - for (Element currentElt : children) { - Map<String, String> eltMap = FastMap.newInstance(); - if (currentElt.getContentSize() > 0) { - Map<String, String> childMap = FastMap.newInstance(); - // loop over Children 1st level - List<Element> children2 = currentElt.getChildren(); - for (Element currentChild : children2) { - childMap.put(currentChild.getAttributeValue("name"), currentChild.getAttributeValue("value")); - } - valueMap.put(currentElt.getAttributeValue("name"), childMap); - } else { - eltMap.put(currentElt.getAttributeValue("name"), currentElt.getAttributeValue("value")); - valueMap.put(currentElt.getName(), eltMap); - } - } - - result.put("responseMessage", "success"); - result.put("xml", valueMap); - return result; - } } Modified: ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductServices.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductServices.java?rev=750018&r1=750017&r2=750018&view=diff ============================================================================== --- ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductServices.java (original) +++ ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductServices.java Wed Mar 4 14:22:55 2009 @@ -44,7 +44,7 @@ import org.ofbiz.entity.GenericEntityException; import org.ofbiz.entity.GenericValue; import org.ofbiz.entity.util.EntityUtil; -import org.ofbiz.image.ImageTransform; +import org.ofbiz.product.image.ScaleImage; import org.ofbiz.product.catalog.CatalogWorker; import org.ofbiz.product.category.CategoryWorker; import org.ofbiz.service.DispatchContext; @@ -79,7 +79,6 @@ // * Map selectedFeatures -- Selected features GenericDelegator delegator = dctx.getDelegator(); Locale locale = (Locale) context.get("locale"); - String productId = (String) context.get("productId"); Map selectedFeatures = UtilGenerics.checkMap(context.get("selectedFeatures")); List<GenericValue> products = FastList.newInstance(); // All the variants for this products are retrieved @@ -961,7 +960,7 @@ /* scale Image in different sizes */ String viewNumber = String.valueOf(productContentTypeId.charAt(productContentTypeId.length() - 1)); - ImageTransform imageTransform = new ImageTransform(); + ScaleImage imageTransform = new ScaleImage(); Map<String, Object> resultResize = FastMap.newInstance(); try{ resultResize.putAll(imageTransform.scaleImageInAllSize(context, filenameToUse, "additional", viewNumber)); Modified: ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/EditProductContent.groovy URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/EditProductContent.groovy?rev=750018&r1=750017&r2=750018&view=diff ============================================================================== --- ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/EditProductContent.groovy (original) +++ ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/EditProductContent.groovy Wed Mar 4 14:22:55 2009 @@ -20,7 +20,7 @@ import org.ofbiz.entity.*; import org.ofbiz.base.util.*; import org.ofbiz.base.util.string.*; -import org.ofbiz.image.ImageTransform; +import org.ofbiz.product.image.ScaleImage; context.nowTimestampString = UtilDateTime.nowTimestamp().toString(); @@ -125,8 +125,7 @@ // call scaleImageInAllSize if(fileType.equals("original")){ - ImageTransform imageTransform = new ImageTransform(); - result = imageTransform.scaleImageInAllSize(context, filenameToUse, "main", "0"); + result = ScaleImage.scaleImageInAllSize(context, filenameToUse, "main", "0"); if(result.containsKey("responseMessage") && result.get("responseMessage").equals("success")){ imgMap = result.get("imageUrlMap"); Added: ofbiz/trunk/framework/common/config/CommonErrorUiLabels.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/config/CommonErrorUiLabels.xml?rev=750018&view=auto ============================================================================== --- ofbiz/trunk/framework/common/config/CommonErrorUiLabels.xml (added) +++ ofbiz/trunk/framework/common/config/CommonErrorUiLabels.xml Wed Mar 4 14:22:55 2009 @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <property key="ImageTransform.errors_occured_during_parsing"> + <value xml:lang="en">Errors occured during parsing</value> + <value xml:lang="fr">Des erreurs sont survenues lors de l'analyse</value> + </property> + <property key="ImageTransform.error_occurs_during_reading"> + <value xml:lang="en">An error occurs during reading</value> + <value xml:lang="fr">Une erreur est survenue lors de la lecture</value> + </property> + <property key="ImageTransform.final_scale_factor_is_null"> + <value xml:lang="en">Final scale factor is null</value> + <value xml:lang="fr">Le facteur final de redimensionnement est nul</value> + </property> + <property key="ImageTransform.height_scale_factor_is_null"> + <value xml:lang="en">Height scale factor is null</value> + <value xml:lang="fr">Le facteur 'hauteur' de redimensionnement est nul</value> + </property> + <property key="ImageTransform.input_is_null"> + <value xml:lang="en">Input is null</value> + <value xml:lang="fr">La valeur saisie est nulle</value> + </property> + <property key="ImageTransform.error_prevents_the document_from_being_fully_parsed"> + <value xml:lang="en">Error prevents the document from being fully parsed</value> + <value xml:lang="fr">Une erreur empêche que le document soit entièrement analysé</value> + </property> + <property key="ImageTransform.one_default_dimension_is_null"> + <value xml:lang="en">One default dimension is null</value> + <value xml:lang="fr">Une des dimensions par défaut est nulle</value> + </property> + <property key="ImageTransform.root_element_has_not_been_set"> + <value xml:lang="en">Root element has not been set</value> + <value xml:lang="fr">L'élement racine n'a pas pu être chargé</value> + </property> + <property key="ImageTransform.unknown_buffered_image_type"> + <value xml:lang="en">Unknown buffered image type</value> + <value xml:lang="fr">Le type d'image bufferisée est inconnu</value> + </property> + <property key="ImageTransform.width_scale_factor_is_null"> + <value xml:lang="en">Width scale factor is null</value> + <value xml:lang="fr">Le facteur 'largeur' de redimensionnement est nul</value> + </property> +</resource> + Modified: ofbiz/trunk/framework/common/src/org/ofbiz/common/image/ImageTransform.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/src/org/ofbiz/common/image/ImageTransform.java?rev=750018&r1=749549&r2=750018&view=diff ============================================================================== --- ofbiz/trunk/framework/common/src/org/ofbiz/common/image/ImageTransform.java (original) +++ ofbiz/trunk/framework/common/src/org/ofbiz/common/image/ImageTransform.java Wed Mar 4 14:22:55 2009 @@ -16,16 +16,11 @@ * specific language governing permissions and limitations * under the License. *******************************************************************************/ -package org.ofbiz.image; +package org.ofbiz.common.image; -import java.awt.RenderingHints; -import java.awt.geom.AffineTransform; -import java.awt.image.AffineTransformOp; import java.awt.image.BufferedImage; -import java.awt.image.ImagingOpException; import java.io.File; import java.io.IOException; -import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; @@ -39,10 +34,7 @@ import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; import org.ofbiz.base.util.Debug; -import org.ofbiz.base.util.UtilMisc; import org.ofbiz.base.util.UtilProperties; -import org.ofbiz.base.util.string.FlexibleStringExpander; -import org.ofbiz.service.ServiceUtil; /** @@ -53,7 +45,7 @@ public class ImageTransform { public static final String module = ImageTransform.class.getName(); - public static final String resource = "ProductErrorUiLabels"; + public static final String resource = "CommonErrorUiLabels"; public ImageTransform() { } @@ -69,7 +61,7 @@ * @throws IOException Error prevents the document from being fully parsed * @throws JDOMException Errors occur in parsing */ - public Map<String, Object> getBufferedImage(String fileLocation, Locale locale) + public static Map<String, Object> getBufferedImage(String fileLocation, Locale locale) throws IllegalArgumentException, IOException { /* VARIABLES */ @@ -98,213 +90,6 @@ } /** - * scaleImageInAllSize - * <p> - * Scale the original image into all different size Types (small, medium, large, detail) - * - * @param context Context - * @param filenameToUse Filename of future image files - * @param viewType "Main" view or "additional" view - * @param viewNumber If it's the main view, viewNumber = "0" - * @return URL images for all different size types - * @throws IllegalArgumentException Any parameter is null - * @throws ImagingOpException The transform is non-invertible - * @throws IOException Error prevents the document from being fully parsed - * @throws JDOMException Errors occur in parsing - */ - public Map<String, Object> scaleImageInAllSize(Map<String, ? extends Object> context, String filenameToUse, String viewType, String viewNumber) - throws IllegalArgumentException, ImagingOpException, IOException, JDOMException { - - /* VARIABLES */ - Locale locale = (Locale) context.get("locale"); - List<String> sizeTypeList = UtilMisc.toList("small", "medium", "large", "detail"); - List<String> extensionList = UtilMisc.toList("jpeg", "jpg", "png"); - int index; - Map<String, Map<String, String>> imgPropertyMap = FastMap.newInstance(); - BufferedImage bufImg, bufNewImg; - double imgHeight, imgWidth, scaleFactor; - AffineTransformOp op; - Map<String, String> imgUrlMap = FastMap.newInstance(); - Map<String, Object> resultXMLMap = FastMap.newInstance(); - Map<String, Object> resultBufImgMap = FastMap.newInstance(); - Map<String, Object> resultScaleImgMap = FastMap.newInstance(); - Map<String, Object> result = FastMap.newInstance(); - - /* ImageProperties.xml */ - String imgPropertyFullPath = System.getProperty("ofbiz.home") + "/applications/product/config/ImageProperties.xml"; - resultXMLMap.putAll((Map<String, Object>) getXMLValue(imgPropertyFullPath, locale)); - if(resultXMLMap.containsKey("responseMessage") && resultXMLMap.get("responseMessage").equals("success")) { - imgPropertyMap.putAll((Map<String, Map<String, String>>) resultXMLMap.get("xml")); - } else { - String errMsg = UtilProperties.getMessage(resource, "ImageTransform.unable_to_parse", locale) + " : ImageProperties.xml"; - Debug.logError(errMsg, module); - result.put("errorMessage", errMsg); - return result; - } - - /* IMAGE */ - // get Name and Extension - index = filenameToUse.lastIndexOf("."); - String imgName = filenameToUse.substring(0, index - 1); - String imgExtension = filenameToUse.substring(index + 1); - // paths - String mainFilenameFormat = UtilProperties.getPropertyValue("catalog", "image.filename.format"); - String imageServerPath = FlexibleStringExpander.expandString(UtilProperties.getPropertyValue("catalog", "image.server.path"), context); - String imageUrlPrefix = UtilProperties.getPropertyValue("catalog", "image.url.prefix"); - - String id = null; - String type = null; - if(viewType.toLowerCase().contains("main")) { - type = "original"; - id = imgName; - } else if(viewType.toLowerCase().contains("additional") && viewNumber != null && !viewNumber.equals("0")) { - type = "additional"; - id = imgName + "_View_" + viewNumber; - } else { - return ServiceUtil.returnError("View Type : " + type + " is wrong"); - } - FlexibleStringExpander mainFilenameExpander = FlexibleStringExpander.getInstance(mainFilenameFormat); - String fileLocation = mainFilenameExpander.expandString(UtilMisc.toMap("location", "products", "type", type, "id", filenameToUse)); - String filePathPrefix = ""; - if (fileLocation.lastIndexOf("/") != -1) { - filePathPrefix = fileLocation.substring(0, fileLocation.lastIndexOf("/") + 1); // adding 1 to include the trailing slash - } - - - - /* get original BUFFERED IMAGE */ - resultBufImgMap.putAll(this.getBufferedImage(imageServerPath + "/" + filePathPrefix + filenameToUse, locale)); - - if (resultBufImgMap.containsKey("responseMessage") && resultBufImgMap.get("responseMessage").equals("success")) { - bufImg = (BufferedImage) resultBufImgMap.get("bufferedImage"); - - // get Dimensions - imgHeight = (double) bufImg.getHeight(); - imgWidth = (double) bufImg.getWidth(); - if (imgHeight == 0.0 || imgWidth == 0.0) { - String errMsg = UtilProperties.getMessage(resource, "ImageTransform.one_current_image_dimension_is_null", locale) + " : imgHeight = " + imgHeight + " ; imgWidth = " + imgWidth; - Debug.logError(errMsg, module); - result.put("errorMessage", errMsg); - return result; - } - - // new Filename Format - FlexibleStringExpander addFilenameExpander = mainFilenameExpander; - if (viewType.toLowerCase().contains("additional")) { - String addFilenameFormat = UtilProperties.getPropertyValue("catalog", "image.filename.additionalviewsize.format"); - addFilenameExpander = FlexibleStringExpander.getInstance(addFilenameFormat); - } - - /* scale Image for each Size Type */ - Iterator<String> sizeIter = sizeTypeList.iterator(); - while (sizeIter.hasNext()) { - String sizeType = sizeIter.next(); - - resultScaleImgMap.putAll(this.scaleImage(bufImg, imgHeight, imgWidth, imgPropertyMap, sizeType, locale)); - - if (resultScaleImgMap.containsKey("responseMessage") && resultScaleImgMap.get("responseMessage").equals("success")) { - bufNewImg = (BufferedImage) resultScaleImgMap.get("bufferedImage"); - Double scaleFactorDb = (Double) resultScaleImgMap.get("scaleFactor"); - scaleFactor = scaleFactorDb.doubleValue(); - - // define Interpolation - Map<RenderingHints.Key, Object> rhMap = FastMap.newInstance(); - rhMap.put(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY); - rhMap.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); - rhMap.put(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY); - rhMap.put(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE); - rhMap.put(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON); - rhMap.put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR); - rhMap.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); - //rhMap.put(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE); - rhMap.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); - RenderingHints rh = new RenderingHints(rhMap); - - /* IMAGE TRANFORMATION */ - AffineTransform tx = new AffineTransform(); - tx.scale(scaleFactor, scaleFactor); - - - try { - op = new AffineTransformOp(tx, rh); - } catch(ImagingOpException e) { - String errMsg = UtilProperties.getMessage(resource, "ImageTransform.transform_is_non_invertible", locale) + e.toString(); - Debug.logError(errMsg, module); - result.put("errorMessage", errMsg); - return result; - } - - // write the New Scaled Image - String newFileLocation = null; - if (viewType.toLowerCase().contains("main")) { - newFileLocation = mainFilenameExpander.expandString(UtilMisc.toMap("location", "products", "type", sizeType, "id", id)); - } else if(viewType.toLowerCase().contains("additional")) { - newFileLocation = addFilenameExpander.expandString(UtilMisc.toMap("location", "products", "viewtype", viewType, "sizetype", sizeType,"id", id)); - } - String newFilePathPrefix = ""; - if (newFileLocation.lastIndexOf("/") != -1) { - newFilePathPrefix = newFileLocation.substring(0, newFileLocation.lastIndexOf("/") + 1); // adding 1 to include the trailing slash - } - - // choose final extension - String finalExtension = null; - if (!extensionList.contains(imgExtension.toLowerCase())) { - finalExtension = imgPropertyMap.get("format").get("extension"); - } else { - finalExtension = imgExtension; - } - - String targetDirectory = imageServerPath + "/" + newFilePathPrefix; - File targetDir = new File(targetDirectory); - if (!targetDir.exists()) { - boolean created = targetDir.mkdirs(); - if (!created) { - String errMsg = UtilProperties.getMessage(resource, "ImageTransform.unable_to_create_target_directory", locale) + " - " + targetDirectory; - Debug.logFatal(errMsg, module); - return ServiceUtil.returnError(errMsg); - } - } - - // write new image - try { - ImageIO.write(op.filter(bufImg, bufNewImg), imgExtension, new File(imageServerPath + "/" + newFilePathPrefix + filenameToUse)); - } catch(IllegalArgumentException e) { - String errMsg = UtilProperties.getMessage(resource, "ImageTransform.one_parameter_is_null", locale) + e.toString(); - Debug.logError(errMsg, module); - result.put("errorMessage", errMsg); - return result; - } catch(IOException e) { - String errMsg = UtilProperties.getMessage(resource, "ImageTransform.error_occurs_during_writing", locale) + e.toString(); - Debug.logError(errMsg, module); - result.put("errorMessage", errMsg); - return result; - } - - /* write Return Result */ - String imageUrl = imageUrlPrefix + "/" + newFilePathPrefix + filenameToUse; - imgUrlMap.put(sizeType, imageUrl); - - } // scaleImgMap - } // sizeIter - - result.put("responseMessage", "success"); - result.put("imageUrlMap", imgUrlMap); - result.put("original", resultBufImgMap); - return result; - - - } else { - String errMsg = UtilProperties.getMessage(resource, "ImageTransform.unable_to_scale_original_image", locale) + " : " + filenameToUse; - Debug.logError(errMsg, module); - result.put("errorMessage", errMsg); - return ServiceUtil.returnError(errMsg); - } - - - } - - - /** * scaleImage * <p> * scale original image related to the ImageProperties.xml dimensions @@ -316,7 +101,7 @@ * @param sizeType Size type to scale * @return New scaled buffered image */ - private Map<String, Object> scaleImage(BufferedImage bufImg, double imgHeight, double imgWidth, Map<String, Map<String, String>> dimensionMap, String sizeType, Locale locale) { + public static Map<String, Object> scaleImage(BufferedImage bufImg, double imgHeight, double imgWidth, Map<String, Map<String, String>> dimensionMap, String sizeType, Locale locale) { /* VARIABLES */ BufferedImage bufNewImg; @@ -394,7 +179,7 @@ * @param fileFullPath File path to parse * @return Map contains asked attribute values by attribute name */ - private Map<String, Object> getXMLValue(String fileFullPath, Locale locale) + public static Map<String, Object> getXMLValue(String fileFullPath, Locale locale) throws IllegalStateException, IOException, JDOMException { /* VARIABLES */ @@ -409,7 +194,7 @@ // JDOM document = sxb.build(new File(fileFullPath)); } catch(JDOMException e) { - String errMsg = UtilProperties.getMessage(resource, "ImageTransform.errors_occur_in parsing", locale) + " ImageProperties.xml " + e.toString(); + String errMsg = UtilProperties.getMessage(resource, "ImageTransform.errors_occured_during_parsing", locale) + " ImageProperties.xml " + e.toString(); Debug.logError(errMsg, module); result.put("errorMessage", "error"); return result; |
Free forum by Nabble | Edit this page |