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;


Reply via email to