svn commit: r754754 [1/3] - in /ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/labelmanager: LabelInfo.java LabelManagerFactory.java LabelReferences.java LabelValue.java SaveLabelsToXmlFile.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r754754 [1/3] - in /ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/labelmanager: LabelInfo.java LabelManagerFactory.java LabelReferences.java LabelValue.java SaveLabelsToXmlFile.java

jleroux@apache.org
Author: jleroux
Date: Sun Mar 15 21:18:57 2009
New Revision: 754754

URL: http://svn.apache.org/viewvc?rev=754754&view=rev
Log:
I forgot to check svn properties, updated

Modified:
    ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/labelmanager/LabelInfo.java   (contents, props changed)
    ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/labelmanager/LabelManagerFactory.java   (contents, props changed)
    ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/labelmanager/LabelReferences.java   (contents, props changed)
    ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/labelmanager/LabelValue.java   (contents, props changed)
    ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/labelmanager/SaveLabelsToXmlFile.java   (contents, props changed)

Modified: ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/labelmanager/LabelInfo.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/labelmanager/LabelInfo.java?rev=754754&r1=754753&r2=754754&view=diff
==============================================================================
--- ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/labelmanager/LabelInfo.java (original)
+++ ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/labelmanager/LabelInfo.java Sun Mar 15 21:18:57 2009
@@ -1,100 +1,100 @@
-/*
- * 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.
- */
-package org.ofbiz.webtools.labelmanager;
-
-import java.util.Map;
-
-import javolution.util.FastMap;
-
-import org.ofbiz.base.util.Debug;
-import org.ofbiz.base.util.GeneralException;
-import org.ofbiz.base.util.UtilValidate;
-
-public class LabelInfo {
-    
-    public static final String module = LabelInfo.class.getName();
-    
-    protected String labelKey = "";
-    protected String labelKeyComment = "";
-    protected String fileName = "";
-    protected String componentName = "";    
-    protected Map<String, LabelValue> labelValues = FastMap.newInstance();
-    
-    public LabelInfo(String labelKey, String labelKeyComment, String fileName, String componentName, String localeStr, String labelValue, String labelComment) throws GeneralException {
-        this.labelKey = labelKey;
-        this.labelKeyComment = labelKeyComment;
-        this.fileName = fileName;
-        this.componentName = componentName;
-        setLabelValue(localeStr, labelValue, labelComment, false);
-    }
-    
-    public String getLabelKey() {
-        return labelKey;
-    }
-    
-    public String getLabelKeyComment() {
-        return labelKeyComment;
-    }
-    
-    public void setLabelKeyComment(String labelKeyComment) {
-        this.labelKeyComment = labelKeyComment;
-    }    
-    
-    public String getFileName() {
-        return fileName;
-    }
-    
-    public String getComponentName() {
-        return componentName;
-    }
-    
-    public LabelValue getLabelValue(String localeStr) {
-       return (LabelValue)labelValues.get(localeStr);
-    }
-    
-    public int getLabelValueSize() {
-       return labelValues.size();    
-    }
-
-    public boolean setLabelValue(String localeStr, String labelValue, String labelComment, boolean update) {
-        LabelValue localeFound = getLabelValue(localeStr);
-        boolean isDuplicatedLocales = false;
-        
-        if (UtilValidate.isEmpty(localeFound)) {
-            if (UtilValidate.isNotEmpty(labelValue)) {
-                localeFound = new LabelValue(labelValue, labelComment);
-                labelValues.put(localeStr, localeFound);
-            }
-        } else {
-            if (update) {
-                if (UtilValidate.isNotEmpty(labelValue)) {
-                    localeFound.setLabelValue(labelValue);
-                    localeFound.setLabelComment(labelComment);
-                    labelValues.put(localeStr, localeFound);
-                } else {
-                    labelValues.remove(localeStr);
-                }
-            } else {
-                Debug.logWarning("Already found locale " + localeStr + " for label " + labelKey + " into the file " + fileName, module);
-                isDuplicatedLocales = true;
-            }
-        }
-        return isDuplicatedLocales;
-    }
-}
+/*
+ * 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.
+ */
+package org.ofbiz.webtools.labelmanager;
+
+import java.util.Map;
+
+import javolution.util.FastMap;
+
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.GeneralException;
+import org.ofbiz.base.util.UtilValidate;
+
+public class LabelInfo {
+    
+    public static final String module = LabelInfo.class.getName();
+    
+    protected String labelKey = "";
+    protected String labelKeyComment = "";
+    protected String fileName = "";
+    protected String componentName = "";    
+    protected Map<String, LabelValue> labelValues = FastMap.newInstance();
+    
+    public LabelInfo(String labelKey, String labelKeyComment, String fileName, String componentName, String localeStr, String labelValue, String labelComment) throws GeneralException {
+        this.labelKey = labelKey;
+        this.labelKeyComment = labelKeyComment;
+        this.fileName = fileName;
+        this.componentName = componentName;
+        setLabelValue(localeStr, labelValue, labelComment, false);
+    }
+    
+    public String getLabelKey() {
+        return labelKey;
+    }
+    
+    public String getLabelKeyComment() {
+        return labelKeyComment;
+    }
+    
+    public void setLabelKeyComment(String labelKeyComment) {
+        this.labelKeyComment = labelKeyComment;
+    }    
+    
+    public String getFileName() {
+        return fileName;
+    }
+    
+    public String getComponentName() {
+        return componentName;
+    }
+    
+    public LabelValue getLabelValue(String localeStr) {
+       return (LabelValue)labelValues.get(localeStr);
+    }
+    
+    public int getLabelValueSize() {
+       return labelValues.size();    
+    }
+
+    public boolean setLabelValue(String localeStr, String labelValue, String labelComment, boolean update) {
+        LabelValue localeFound = getLabelValue(localeStr);
+        boolean isDuplicatedLocales = false;
+        
+        if (UtilValidate.isEmpty(localeFound)) {
+            if (UtilValidate.isNotEmpty(labelValue)) {
+                localeFound = new LabelValue(labelValue, labelComment);
+                labelValues.put(localeStr, localeFound);
+            }
+        } else {
+            if (update) {
+                if (UtilValidate.isNotEmpty(labelValue)) {
+                    localeFound.setLabelValue(labelValue);
+                    localeFound.setLabelComment(labelComment);
+                    labelValues.put(localeStr, localeFound);
+                } else {
+                    labelValues.remove(localeStr);
+                }
+            } else {
+                Debug.logWarning("Already found locale " + localeStr + " for label " + labelKey + " into the file " + fileName, module);
+                isDuplicatedLocales = true;
+            }
+        }
+        return isDuplicatedLocales;
+    }
+}

Propchange: ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/labelmanager/LabelInfo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/labelmanager/LabelInfo.java
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/labelmanager/LabelInfo.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/labelmanager/LabelManagerFactory.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/labelmanager/LabelManagerFactory.java?rev=754754&r1=754753&r2=754754&view=diff
==============================================================================
--- ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/labelmanager/LabelManagerFactory.java (original)
+++ ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/labelmanager/LabelManagerFactory.java Sun Mar 15 21:18:57 2009
@@ -1,363 +1,363 @@
-/*
- * 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.
- */
-package org.ofbiz.webtools.labelmanager;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.TreeSet;
-
-import javolution.util.FastList;
-
-import org.ofbiz.base.component.ComponentConfig;
-import org.ofbiz.base.util.FileUtil;
-import org.ofbiz.base.util.GeneralException;
-import org.ofbiz.base.util.StringUtil;
-import org.ofbiz.base.util.UtilGenerics;
-import org.ofbiz.base.util.UtilMisc;
-import org.ofbiz.base.util.UtilProperties;
-import org.ofbiz.base.util.UtilValidate;
-import org.ofbiz.base.util.UtilXml;
-import org.ofbiz.base.util.cache.UtilCache;
-import org.ofbiz.entity.GenericDelegator;
-import org.ofbiz.entity.GenericValue;
-import org.ofbiz.entity.model.ModelReader;
-import org.ofbiz.service.DispatchContext;
-import org.ofbiz.service.GenericServiceException;
-import org.ofbiz.service.LocalDispatcher;
-import org.ofbiz.service.ServiceUtil;
-import org.w3c.dom.Comment;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-public class LabelManagerFactory {
-    
-    public static final String module = LabelManagerFactory.class.getName();
-    public static final String resource = "WebtoolsUiLabels";
-    
-    public static final String keySeparator = "#";
-    
-    protected static UtilCache<String, LabelManagerFactory> labelManagerFactoryCache = new UtilCache<String, LabelManagerFactory>("LabelManagerFactory");
-    
-    protected static Map<String, LabelInfo> labels = null;
-    protected static Map<String, String> fileNamesFound = null;
-    protected static Map<String, String> fileComponent = null;
-    protected static Set<String> localesFound = null;
-    protected static Set<String> componentNamesFound = null;
-    protected static Map<String, Map<String, Integer>> references = null;
-    protected static List<LabelInfo> duplicatedLocalesLabelsList = null;
-    protected static int duplicatedLocalesLabels = 0;
-    
-    protected static GenericDelegator delegator;
-    protected static ModelReader entityModelReader;
-    protected static DispatchContext dispatchContext;
-    
-    public static LabelManagerFactory getLabelManagerFactory(String delegatorName) throws GeneralException {
-        if (UtilValidate.isEmpty(delegatorName)) {
-            delegatorName = "default";
-        }
-        
-        LabelManagerFactory lmf = labelManagerFactoryCache.get(delegatorName);
-        
-        if (lmf == null) {
-            lmf = new LabelManagerFactory(delegatorName);
-            labelManagerFactoryCache.put(delegatorName, lmf);
-        }
-        return lmf;
-    }
-    
-    protected LabelManagerFactory(String delegatorName) throws GeneralException {
-        delegator = GenericDelegator.getGenericDelegator(delegatorName);
-        entityModelReader = ModelReader.getModelReader(delegatorName);
-        dispatchContext = new DispatchContext("LabelManagerFactoryDispCtx", null, this.getClass().getClassLoader(), null);
-        prepareAll();
-    }
-    
-    private static void prepareAll() throws GeneralException {
-        labels = new TreeMap<String, LabelInfo>();
-        fileNamesFound = new TreeMap<String, String>();
-        fileComponent = new TreeMap<String, String>();
-        localesFound = new TreeSet<String>();
-        componentNamesFound = new TreeSet<String>();
-        duplicatedLocalesLabelsList = FastList.newInstance();
-        references = null;
-        int duplicatedLocales = 0;
-        
-        try {
-            boolean sharkComponent = false;
-            Collection<ComponentConfig> componentConfigs = ComponentConfig.getAllComponents();
-            
-            for (ComponentConfig componentConfig : componentConfigs) {
-                String componentName = componentConfig.getComponentName();
-                List<File> resourceFiles = FileUtil.findXmlFiles(componentConfig.getRootLocation(), null, "resource", null);
-                boolean cycle = true;
-                while (cycle) {
-                    for (File resourceFile : resourceFiles) {
-                        String fileName = resourceFile.getName();
-                        Document resourceDocument = UtilXml.readXmlDocument(resourceFile.toURI().toURL());
-                        Element resourceElem = resourceDocument.getDocumentElement();
-                        String labelKeyComment = "";
-                        
-                        for (Node propertyNode : UtilXml.childNodeList(resourceElem.getFirstChild())) {
-                            if (propertyNode instanceof Element) {
-                                Element propertyElem = (Element) propertyNode;
-                                String labelKey = StringUtil.defaultWebEncoder.canonicalize(propertyElem.getAttribute("key"));
-                                String labelComment = "";
-                                
-                                for (Node valueNode : UtilXml.childNodeList(propertyElem.getFirstChild())) {
-                                    if (valueNode instanceof Element) {
-                                        Element valueElem = (Element) valueNode;
-                                        String localeName = valueElem.getAttribute("xml:lang");
-                                        String labelValue = StringUtil.defaultWebEncoder.canonicalize(UtilXml.nodeValue(valueElem.getFirstChild()));
-                                        LabelInfo label = labels.get(labelKey + keySeparator + fileName);
-                                        
-                                        if (UtilValidate.isEmpty(label)) {
-                                            label = new LabelInfo(labelKey, labelKeyComment, fileName, componentName, localeName, labelValue, labelComment);
-                                            labels.put(labelKey + keySeparator + fileName, label);
-                                        } else {
-                                            if (label.setLabelValue(localeName, labelValue, labelComment, false)) {
-                                                duplicatedLocalesLabelsList.add(label);
-                                                duplicatedLocales++;
-                                            }
-                                        }
-                                        localesFound.add(localeName);
-                                        componentNamesFound.add(componentName);
-                                        fileNamesFound.put(fileName, resourceFile.toURI().toString());
-                                        fileComponent.put(fileName, componentName);
-                                        labelComment = "";
-                                    } else if (valueNode instanceof Comment) {
-                                        labelComment = labelComment + StringUtil.defaultWebEncoder.canonicalize(valueNode.getNodeValue());
-                                    }
-                                }
-                                labelKeyComment = "";
-                            } else if (propertyNode instanceof Comment) {
-                                labelKeyComment = labelKeyComment + StringUtil.defaultWebEncoder.canonicalize(propertyNode.getNodeValue());
-                            }
-                        }
-                    }
-                    if (!sharkComponent) {
-                        componentName = "shark";
-                        resourceFiles = FileUtil.findXmlFiles(System.getProperty("ofbiz.home") + "/specialpurpose/shark", null, "resource", null);
-                        sharkComponent = true;
-                    } else {
-                        cycle = false;
-                    }
-                }
-            }
-            
-            // get labels references from sources
-            references = LabelReferences.getLabelReferences();
-        } catch (IOException ioe) {
-            throw new GeneralException(ioe.getMessage());
-        } catch (Exception e) {
-            throw new GeneralException(e.getMessage());
-        }
-        duplicatedLocalesLabels = duplicatedLocales;
-    }
-    
-    public static GenericDelegator getDelegator() {
-        return delegator;
-    }
-    
-    public static ModelReader getModelReader() {
-        return entityModelReader;
-    }
-    
-    public static DispatchContext getDispatchContext() {
-        return dispatchContext;
-    }
-    
-    public static Map<String, LabelInfo> getLabels() {
-        return labels;
-    }
-    
-    public static Set<String> getLocalesFound() {
-        return localesFound;
-    }
-    
-    public static Map<String, String> getFileNamesFound() {
-        return fileNamesFound;
-    }
-    
-    public static String getFileComponent(String fileName) {
-        String componentName = null;
-        if (UtilValidate.isNotEmpty(fileName)) {
-            componentName = fileComponent.get(fileName);
-        }
-        return componentName;
-    }
-    
-    public static Set<String> getComponentNamesFound() {
-        return componentNamesFound;
-    }
-    
-    public static Map<String, Map<String, Integer>> getReferences() {
-        return references;
-    }
-    
-    public static Set<String> getLabelsList() {
-        return labels.keySet();
-    }
-    
-    public static Set<String> getReferencesList() {
-        return references.keySet();
-    }
-    
-    public static int getLabelReferenceFile(String key) {
-        int refFile = 0;
-        boolean keyFound = false;
-        
-        if (key == null) {
-            key = "";
-        }
-        
-        for (Map.Entry<String, String> e : fileNamesFound.entrySet()) {
-            String keyToSearch = key + keySeparator + e.getKey();
-            
-            if (labels.containsKey(keyToSearch)) {
-                keyFound = true;
-                break;
-            }
-        }
-        
-        if (!keyFound) {
-            Map<String, Integer> reference = references.get(key);
-            
-            if (UtilValidate.isNotEmpty(reference)) {
-                refFile = reference.size();
-            }
-        }
-        
-        return refFile;
-    }
-    
-    public static int getDuplicatedLocalesLabels() {
-        return duplicatedLocalesLabels;
-    }
-    
-    public static List<LabelInfo> getDuplicatedLocalesLabelsList() {
-        return duplicatedLocalesLabelsList;
-    }
-    
-    public static Map<String, Object> updateLabelKey(DispatchContext dctx, Map<String, ? extends Object> context) {
-        String key = (String) context.get("key");
-        String keyComment = (String) context.get("keyComment");
-        String update_label = (String) context.get("update_label");
-        String fileName = (String) context.get("fileName");
-        String confirm = (String) context.get("confirm");
-        String removeLabel = (String) context.get("removeLabel");
-        List<String> localeNames = UtilGenerics.cast(context.get("localeNames"));
-        List<String> localeValues = UtilGenerics.cast(context.get("localeValues"));
-        List<String> localeComments = UtilGenerics.cast(context.get("localeComments"));
-        Locale locale = (Locale) context.get("locale");
-        
-        // Remove a Label
-        if (UtilValidate.isNotEmpty(removeLabel)) {
-            labels.remove(key + keySeparator + fileName);
-        } else if (UtilValidate.isNotEmpty(confirm)) {
-            LabelInfo label = labels.get(key + keySeparator + fileName);
-            
-            // Update a Label
-            if (update_label.equalsIgnoreCase("Y")) {
-                if (UtilValidate.isNotEmpty(label)) {
-                    updateLabelValue(localeNames, localeValues, localeComments, label, key, keyComment, fileName);
-                }
-                // Insert a new Label
-            } else {
-                if (UtilValidate.isNotEmpty(label)) {
-                    return ServiceUtil.returnError(UtilProperties.getMessage(resource, "WebtoolsLabelManagerNewLabelExisting", UtilMisc.toMap("key", key, "fileName", fileName), locale));
-                } else {
-                    if (UtilValidate.isEmpty(key)) {
-                        return ServiceUtil.returnError(UtilProperties.getMessage(resource, "WebtoolsLabelManagerNewLabelEmptyKey", locale));
-                    } else {
-                        int notEmptyLabels = updateLabelValue(localeNames, localeValues, localeComments, null, key, keyComment, fileName);
-                        if (notEmptyLabels == 0) {
-                            return ServiceUtil.returnError(UtilProperties.getMessage(resource, "WebtoolsLabelManagerNewLabelEmpty", locale));
-                        }
-                    }
-                }
-            }
-        }
-        
-        return ServiceUtil.returnSuccess();
-    }
-    
-    public static Map<String, Object> updateAndSaveLabelKey(DispatchContext dctx, Map<String, ? extends Object> context) {
-        String key = (String) context.get("key");
-        String keyComment = (String) context.get("keyComment");
-        String update_label = (String) context.get("update_label");
-        String fileName = (String) context.get("fileName");
-        String confirm = (String) context.get("confirm");
-        String removeLabel = (String) context.get("removeLabel");
-        List<String> localeNames = UtilGenerics.cast(context.get("localeNames"));
-        List<String> localeValues = UtilGenerics.cast(context.get("localeValues"));
-        List<String> localeComments = UtilGenerics.cast(context.get("localeComments"));
-        GenericValue userLogin = (GenericValue) context.get("userLogin");
-        LocalDispatcher dispatcher = dctx.getDispatcher();
-        
-        Map<String, Object> contextInput = UtilMisc.toMap("key", key, "keyComment", keyComment, "update_label", update_label, "fileName", fileName, "confirm", confirm, "removeLabel", removeLabel,
-                "localeNames", localeNames, "localeValues", localeValues, "localeComments", localeComments, "userLogin", userLogin);
-        try {
-            Map<String, Object> updatedKey = dispatcher.runSync("updateLabelKey", contextInput);
-            
-            if (ServiceUtil.isError(updatedKey)) {
-                return updatedKey;
-            } else {
-                return dispatcher.runSync("saveLabelsToXmlFile", UtilMisc.toMap("labelFileName", fileName, "userLogin", userLogin));
-            }
-        } catch (GenericServiceException e) {
-            return ServiceUtil.returnError("error on saving label key :" + key);
-        }
-    }
-    
-    private static int updateLabelValue(List<String> localeNames, List<String> localeValues, List<String> localeComments, LabelInfo label, String key, String keyComment, String fileName) {
-        int notEmptyLabels = 0;
-        int i = 0;
-        while (i < localeNames.size()) {
-            String localeName = localeNames.get(i);
-            String localeValue = localeValues.get(i);
-            String localeComment = localeComments.get(i);
-            
-            if (UtilValidate.isNotEmpty(localeValue) || UtilValidate.isNotEmpty(localeComment)) {
-                if (label == null) {
-                    try {
-                        String componentName = getFileComponent(fileName);
-                        label = new LabelInfo(key, keyComment, fileName, componentName, localeName, localeValue, localeComment);
-                        labels.put(key + keySeparator + fileName, label);
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                } else {
-                    label.setLabelKeyComment(keyComment);
-                }
-                label.setLabelValue(localeName, localeValue, localeComment, true);
-                notEmptyLabels++;
-            }
-            i++;
-        }
-        
-        return notEmptyLabels;
-    }
-}
+/*
+ * 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.
+ */
+package org.ofbiz.webtools.labelmanager;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+import javolution.util.FastList;
+
+import org.ofbiz.base.component.ComponentConfig;
+import org.ofbiz.base.util.FileUtil;
+import org.ofbiz.base.util.GeneralException;
+import org.ofbiz.base.util.StringUtil;
+import org.ofbiz.base.util.UtilGenerics;
+import org.ofbiz.base.util.UtilMisc;
+import org.ofbiz.base.util.UtilProperties;
+import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.base.util.UtilXml;
+import org.ofbiz.base.util.cache.UtilCache;
+import org.ofbiz.entity.GenericDelegator;
+import org.ofbiz.entity.GenericValue;
+import org.ofbiz.entity.model.ModelReader;
+import org.ofbiz.service.DispatchContext;
+import org.ofbiz.service.GenericServiceException;
+import org.ofbiz.service.LocalDispatcher;
+import org.ofbiz.service.ServiceUtil;
+import org.w3c.dom.Comment;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+public class LabelManagerFactory {
+    
+    public static final String module = LabelManagerFactory.class.getName();
+    public static final String resource = "WebtoolsUiLabels";
+    
+    public static final String keySeparator = "#";
+    
+    protected static UtilCache<String, LabelManagerFactory> labelManagerFactoryCache = new UtilCache<String, LabelManagerFactory>("LabelManagerFactory");
+    
+    protected static Map<String, LabelInfo> labels = null;
+    protected static Map<String, String> fileNamesFound = null;
+    protected static Map<String, String> fileComponent = null;
+    protected static Set<String> localesFound = null;
+    protected static Set<String> componentNamesFound = null;
+    protected static Map<String, Map<String, Integer>> references = null;
+    protected static List<LabelInfo> duplicatedLocalesLabelsList = null;
+    protected static int duplicatedLocalesLabels = 0;
+    
+    protected static GenericDelegator delegator;
+    protected static ModelReader entityModelReader;
+    protected static DispatchContext dispatchContext;
+    
+    public static LabelManagerFactory getLabelManagerFactory(String delegatorName) throws GeneralException {
+        if (UtilValidate.isEmpty(delegatorName)) {
+            delegatorName = "default";
+        }
+        
+        LabelManagerFactory lmf = labelManagerFactoryCache.get(delegatorName);
+        
+        if (lmf == null) {
+            lmf = new LabelManagerFactory(delegatorName);
+            labelManagerFactoryCache.put(delegatorName, lmf);
+        }
+        return lmf;
+    }
+    
+    protected LabelManagerFactory(String delegatorName) throws GeneralException {
+        delegator = GenericDelegator.getGenericDelegator(delegatorName);
+        entityModelReader = ModelReader.getModelReader(delegatorName);
+        dispatchContext = new DispatchContext("LabelManagerFactoryDispCtx", null, this.getClass().getClassLoader(), null);
+        prepareAll();
+    }
+    
+    private static void prepareAll() throws GeneralException {
+        labels = new TreeMap<String, LabelInfo>();
+        fileNamesFound = new TreeMap<String, String>();
+        fileComponent = new TreeMap<String, String>();
+        localesFound = new TreeSet<String>();
+        componentNamesFound = new TreeSet<String>();
+        duplicatedLocalesLabelsList = FastList.newInstance();
+        references = null;
+        int duplicatedLocales = 0;
+        
+        try {
+            boolean sharkComponent = false;
+            Collection<ComponentConfig> componentConfigs = ComponentConfig.getAllComponents();
+            
+            for (ComponentConfig componentConfig : componentConfigs) {
+                String componentName = componentConfig.getComponentName();
+                List<File> resourceFiles = FileUtil.findXmlFiles(componentConfig.getRootLocation(), null, "resource", null);
+                boolean cycle = true;
+                while (cycle) {
+                    for (File resourceFile : resourceFiles) {
+                        String fileName = resourceFile.getName();
+                        Document resourceDocument = UtilXml.readXmlDocument(resourceFile.toURI().toURL());
+                        Element resourceElem = resourceDocument.getDocumentElement();
+                        String labelKeyComment = "";
+                        
+                        for (Node propertyNode : UtilXml.childNodeList(resourceElem.getFirstChild())) {
+                            if (propertyNode instanceof Element) {
+                                Element propertyElem = (Element) propertyNode;
+                                String labelKey = StringUtil.defaultWebEncoder.canonicalize(propertyElem.getAttribute("key"));
+                                String labelComment = "";
+                                
+                                for (Node valueNode : UtilXml.childNodeList(propertyElem.getFirstChild())) {
+                                    if (valueNode instanceof Element) {
+                                        Element valueElem = (Element) valueNode;
+                                        String localeName = valueElem.getAttribute("xml:lang");
+                                        String labelValue = StringUtil.defaultWebEncoder.canonicalize(UtilXml.nodeValue(valueElem.getFirstChild()));
+                                        LabelInfo label = labels.get(labelKey + keySeparator + fileName);
+                                        
+                                        if (UtilValidate.isEmpty(label)) {
+                                            label = new LabelInfo(labelKey, labelKeyComment, fileName, componentName, localeName, labelValue, labelComment);
+                                            labels.put(labelKey + keySeparator + fileName, label);
+                                        } else {
+                                            if (label.setLabelValue(localeName, labelValue, labelComment, false)) {
+                                                duplicatedLocalesLabelsList.add(label);
+                                                duplicatedLocales++;
+                                            }
+                                        }
+                                        localesFound.add(localeName);
+                                        componentNamesFound.add(componentName);
+                                        fileNamesFound.put(fileName, resourceFile.toURI().toString());
+                                        fileComponent.put(fileName, componentName);
+                                        labelComment = "";
+                                    } else if (valueNode instanceof Comment) {
+                                        labelComment = labelComment + StringUtil.defaultWebEncoder.canonicalize(valueNode.getNodeValue());
+                                    }
+                                }
+                                labelKeyComment = "";
+                            } else if (propertyNode instanceof Comment) {
+                                labelKeyComment = labelKeyComment + StringUtil.defaultWebEncoder.canonicalize(propertyNode.getNodeValue());
+                            }
+                        }
+                    }
+                    if (!sharkComponent) {
+                        componentName = "shark";
+                        resourceFiles = FileUtil.findXmlFiles(System.getProperty("ofbiz.home") + "/specialpurpose/shark", null, "resource", null);
+                        sharkComponent = true;
+                    } else {
+                        cycle = false;
+                    }
+                }
+            }
+            
+            // get labels references from sources
+            references = LabelReferences.getLabelReferences();
+        } catch (IOException ioe) {
+            throw new GeneralException(ioe.getMessage());
+        } catch (Exception e) {
+            throw new GeneralException(e.getMessage());
+        }
+        duplicatedLocalesLabels = duplicatedLocales;
+    }
+    
+    public static GenericDelegator getDelegator() {
+        return delegator;
+    }
+    
+    public static ModelReader getModelReader() {
+        return entityModelReader;
+    }
+    
+    public static DispatchContext getDispatchContext() {
+        return dispatchContext;
+    }
+    
+    public static Map<String, LabelInfo> getLabels() {
+        return labels;
+    }
+    
+    public static Set<String> getLocalesFound() {
+        return localesFound;
+    }
+    
+    public static Map<String, String> getFileNamesFound() {
+        return fileNamesFound;
+    }
+    
+    public static String getFileComponent(String fileName) {
+        String componentName = null;
+        if (UtilValidate.isNotEmpty(fileName)) {
+            componentName = fileComponent.get(fileName);
+        }
+        return componentName;
+    }
+    
+    public static Set<String> getComponentNamesFound() {
+        return componentNamesFound;
+    }
+    
+    public static Map<String, Map<String, Integer>> getReferences() {
+        return references;
+    }
+    
+    public static Set<String> getLabelsList() {
+        return labels.keySet();
+    }
+    
+    public static Set<String> getReferencesList() {
+        return references.keySet();
+    }
+    
+    public static int getLabelReferenceFile(String key) {
+        int refFile = 0;
+        boolean keyFound = false;
+        
+        if (key == null) {
+            key = "";
+        }
+        
+        for (Map.Entry<String, String> e : fileNamesFound.entrySet()) {
+            String keyToSearch = key + keySeparator + e.getKey();
+            
+            if (labels.containsKey(keyToSearch)) {
+                keyFound = true;
+                break;
+            }
+        }
+        
+        if (!keyFound) {
+            Map<String, Integer> reference = references.get(key);
+            
+            if (UtilValidate.isNotEmpty(reference)) {
+                refFile = reference.size();
+            }
+        }
+        
+        return refFile;
+    }
+    
+    public static int getDuplicatedLocalesLabels() {
+        return duplicatedLocalesLabels;
+    }
+    
+    public static List<LabelInfo> getDuplicatedLocalesLabelsList() {
+        return duplicatedLocalesLabelsList;
+    }
+    
+    public static Map<String, Object> updateLabelKey(DispatchContext dctx, Map<String, ? extends Object> context) {
+        String key = (String) context.get("key");
+        String keyComment = (String) context.get("keyComment");
+        String update_label = (String) context.get("update_label");
+        String fileName = (String) context.get("fileName");
+        String confirm = (String) context.get("confirm");
+        String removeLabel = (String) context.get("removeLabel");
+        List<String> localeNames = UtilGenerics.cast(context.get("localeNames"));
+        List<String> localeValues = UtilGenerics.cast(context.get("localeValues"));
+        List<String> localeComments = UtilGenerics.cast(context.get("localeComments"));
+        Locale locale = (Locale) context.get("locale");
+        
+        // Remove a Label
+        if (UtilValidate.isNotEmpty(removeLabel)) {
+            labels.remove(key + keySeparator + fileName);
+        } else if (UtilValidate.isNotEmpty(confirm)) {
+            LabelInfo label = labels.get(key + keySeparator + fileName);
+            
+            // Update a Label
+            if (update_label.equalsIgnoreCase("Y")) {
+                if (UtilValidate.isNotEmpty(label)) {
+                    updateLabelValue(localeNames, localeValues, localeComments, label, key, keyComment, fileName);
+                }
+                // Insert a new Label
+            } else {
+                if (UtilValidate.isNotEmpty(label)) {
+                    return ServiceUtil.returnError(UtilProperties.getMessage(resource, "WebtoolsLabelManagerNewLabelExisting", UtilMisc.toMap("key", key, "fileName", fileName), locale));
+                } else {
+                    if (UtilValidate.isEmpty(key)) {
+                        return ServiceUtil.returnError(UtilProperties.getMessage(resource, "WebtoolsLabelManagerNewLabelEmptyKey", locale));
+                    } else {
+                        int notEmptyLabels = updateLabelValue(localeNames, localeValues, localeComments, null, key, keyComment, fileName);
+                        if (notEmptyLabels == 0) {
+                            return ServiceUtil.returnError(UtilProperties.getMessage(resource, "WebtoolsLabelManagerNewLabelEmpty", locale));
+                        }
+                    }
+                }
+            }
+        }
+        
+        return ServiceUtil.returnSuccess();
+    }
+    
+    public static Map<String, Object> updateAndSaveLabelKey(DispatchContext dctx, Map<String, ? extends Object> context) {
+        String key = (String) context.get("key");
+        String keyComment = (String) context.get("keyComment");
+        String update_label = (String) context.get("update_label");
+        String fileName = (String) context.get("fileName");
+        String confirm = (String) context.get("confirm");
+        String removeLabel = (String) context.get("removeLabel");
+        List<String> localeNames = UtilGenerics.cast(context.get("localeNames"));
+        List<String> localeValues = UtilGenerics.cast(context.get("localeValues"));
+        List<String> localeComments = UtilGenerics.cast(context.get("localeComments"));
+        GenericValue userLogin = (GenericValue) context.get("userLogin");
+        LocalDispatcher dispatcher = dctx.getDispatcher();
+        
+        Map<String, Object> contextInput = UtilMisc.toMap("key", key, "keyComment", keyComment, "update_label", update_label, "fileName", fileName, "confirm", confirm, "removeLabel", removeLabel,
+                "localeNames", localeNames, "localeValues", localeValues, "localeComments", localeComments, "userLogin", userLogin);
+        try {
+            Map<String, Object> updatedKey = dispatcher.runSync("updateLabelKey", contextInput);
+            
+            if (ServiceUtil.isError(updatedKey)) {
+                return updatedKey;
+            } else {
+                return dispatcher.runSync("saveLabelsToXmlFile", UtilMisc.toMap("labelFileName", fileName, "userLogin", userLogin));
+            }
+        } catch (GenericServiceException e) {
+            return ServiceUtil.returnError("error on saving label key :" + key);
+        }
+    }
+    
+    private static int updateLabelValue(List<String> localeNames, List<String> localeValues, List<String> localeComments, LabelInfo label, String key, String keyComment, String fileName) {
+        int notEmptyLabels = 0;
+        int i = 0;
+        while (i < localeNames.size()) {
+            String localeName = localeNames.get(i);
+            String localeValue = localeValues.get(i);
+            String localeComment = localeComments.get(i);
+            
+            if (UtilValidate.isNotEmpty(localeValue) || UtilValidate.isNotEmpty(localeComment)) {
+                if (label == null) {
+                    try {
+                        String componentName = getFileComponent(fileName);
+                        label = new LabelInfo(key, keyComment, fileName, componentName, localeName, localeValue, localeComment);
+                        labels.put(key + keySeparator + fileName, label);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                } else {
+                    label.setLabelKeyComment(keyComment);
+                }
+                label.setLabelValue(localeName, localeValue, localeComment, true);
+                notEmptyLabels++;
+            }
+            i++;
+        }
+        
+        return notEmptyLabels;
+    }
+}

Propchange: ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/labelmanager/LabelManagerFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/labelmanager/LabelManagerFactory.java
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/labelmanager/LabelManagerFactory.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain