← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 2373: Fixed bug in I18n resource editor when saved the translation mappings by clear/empty the specifie...

 

------------------------------------------------------------
revno: 2373
committer: Hieu <hieu.hispvietnam@xxxxxxxxx>
branch nick: trunk
timestamp: Fri 2010-10-15 10:41:37 +0700
message:
  Fixed bug in I18n resource editor when saved the translation mappings by clear/empty the specified file before write a new content in it.
modified:
  tools/dhis-i18n-resourceeditor/src/main/java/org/hisp/dhis/i18nresourceeditor/persistence/FileUtils.java
  tools/dhis-i18n-resourceeditor/src/main/java/org/hisp/dhis/i18nresourceeditor/persistence/ResourceManager.java


--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk

Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'tools/dhis-i18n-resourceeditor/src/main/java/org/hisp/dhis/i18nresourceeditor/persistence/FileUtils.java'
--- tools/dhis-i18n-resourceeditor/src/main/java/org/hisp/dhis/i18nresourceeditor/persistence/FileUtils.java	2009-11-18 19:01:08 +0000
+++ tools/dhis-i18n-resourceeditor/src/main/java/org/hisp/dhis/i18nresourceeditor/persistence/FileUtils.java	2010-10-15 03:41:37 +0000
@@ -26,44 +26,54 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
-import org.hisp.dhis.i18nresourceeditor.exception.I18nResourceException;
-import org.hisp.dhis.i18nresourceeditor.exception.I18nInvalidLocaleException;
-
-import java.util.Hashtable;
-import java.util.Properties;
-import java.util.Locale;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.Properties;
+
+import org.hisp.dhis.i18nresourceeditor.exception.I18nInvalidLocaleException;
+import org.hisp.dhis.i18nresourceeditor.exception.I18nResourceException;
 
 /**
  * @author Oyvind Brucker
  */
-public class FileUtils {
+public class FileUtils
+{
 
-    public static Hashtable<String, String> loadResource(String path)
-            throws I18nResourceException {
-        File file = new File(path);
+    public static Hashtable<String, String> loadResource( String path )
+        throws I18nResourceException
+    {
+        File file = new File( path );
 
         Properties prop = new Properties();
 
-        try {
-            prop.load(new FileInputStream(file));
-        } catch (FileNotFoundException fnfe) {
-            throw new I18nResourceException("Error while loading resource, file not found", fnfe);
-        } catch (IOException ioe) {
-            throw new I18nResourceException("I/O Error while loading resource", ioe);
-        } catch (IllegalArgumentException iae) {
-            throw new I18nResourceException("Encoding related error while loading resource", iae);
+        try
+        {
+            prop.load( new FileInputStream( file ) );
+        }
+        catch ( FileNotFoundException fnfe )
+        {
+            throw new I18nResourceException( "Error while loading resource, file not found", fnfe );
+        }
+        catch ( IOException ioe )
+        {
+            throw new I18nResourceException( "I/O Error while loading resource", ioe );
+        }
+        catch ( IllegalArgumentException iae )
+        {
+            throw new I18nResourceException( "Encoding related error while loading resource", iae );
         }
         Hashtable<String, String> hash = new Hashtable<String, String>();
 
-        for (Object key : prop.keySet()) {
+        for ( Object key : prop.keySet() )
+        {
             String k = (String) key;
-            String v = prop.getProperty(k);
-            hash.put(k, v);
+            String v = prop.getProperty( k );
+            hash.put( k, v );
         }
 
         return hash;
@@ -71,57 +81,104 @@
 
     /**
      * @param content key/value pairs to save
-     * @param path    full path for the resource including complete filename with locale information
+     * @param path full path for the resource including complete filename with
+     *        locale information
      * @throws I18nResourceException
      */
-    public static void saveResource(Hashtable<?,?> content, String path)
-            throws I18nResourceException {
-        File file = new File(path);
+    public static void saveResource( Hashtable<?, ?> content, String path )
+        throws I18nResourceException
+    {
+        File file = new File( path );
 
         Properties prop = new Properties();
 
-        prop.putAll(content);
-
-        try {
-            prop.store(new FileOutputStream(file, true), "Resource generated by I18n Resource Editor");
-        } catch (FileNotFoundException fnfe) {
-            throw new I18nResourceException("Error while saving resource, file not found", fnfe);
-        } catch (IOException ioe) {
-            throw new I18nResourceException("I/O Error while saving resource", ioe);
+        prop.putAll( content );
+
+        try
+        {
+            clearFile( file );
+
+            prop.store( new FileOutputStream( file, true ), "Resource generated by I18n Resource Editor" );
+        }
+        catch ( FileNotFoundException fnfe )
+        {
+            throw new I18nResourceException( "Error while saving resource, file not found", fnfe );
+        }
+        catch ( IOException ioe )
+        {
+            throw new I18nResourceException( "I/O Error while saving resource", ioe );
         }
 
     }
 
     /**
      * Converts a string from a filename convention (en_GB) to a locale object
-     * Examples of valid input: "no", "no_NO", "no_NO_NY", "no_NO_B", "no_NO_POSIX"
-     *
+     * Examples of valid input: "no", "no_NO", "no_NO_NY", "no_NO_B",
+     * "no_NO_POSIX"
+     * 
      * @param name String to convert
      * @return locale
      */
-    public static Locale getLocaleFromFilename(String name)
-            throws I18nInvalidLocaleException {
-
-        if (name.startsWith("_")) {
-            name = name.replaceFirst("_", "");
-        }
-
-        String[] tmp = name.split("_");
-
-        if (tmp.length == 1) {
-            if (tmp[0].length() == 2) {
-                return new Locale(tmp[0]);
-            }
-        } else if (tmp.length == 2) {
-            if (tmp[0].length() == 2 && tmp[1].length() == 2) {
-                return new Locale(tmp[0], tmp[1]);
-            }
-        } else if (tmp.length == 3) {
-            if (tmp[0].length() == 2 && tmp[1].length() == 2) {
-                return new Locale(tmp[0], tmp[1], tmp[2]);
-            }
-        }
-
-        throw new I18nInvalidLocaleException("Unable to determine Locale for string: " + name);
+    public static Locale getLocaleFromFilename( String name )
+        throws I18nInvalidLocaleException
+    {
+
+        if ( name.startsWith( "_" ) )
+        {
+            name = name.replaceFirst( "_", "" );
+        }
+
+        String[] tmp = name.split( "_" );
+
+        if ( tmp.length == 1 )
+        {
+            if ( tmp[0].length() == 2 )
+            {
+                return new Locale( tmp[0] );
+            }
+        }
+        else if ( tmp.length == 2 )
+        {
+            if ( tmp[0].length() == 2 && tmp[1].length() == 2 )
+            {
+                return new Locale( tmp[0], tmp[1] );
+            }
+        }
+        else if ( tmp.length == 3 )
+        {
+            if ( tmp[0].length() == 2 && tmp[1].length() == 2 )
+            {
+                return new Locale( tmp[0], tmp[1], tmp[2] );
+            }
+        }
+
+        throw new I18nInvalidLocaleException( "Unable to determine Locale for string: " + name );
+    }
+
+    /**
+     * This method is used to clear/empty a specified file, if exists.
+     * 
+     * @param file the given file
+     * @return void
+     * @throws I18nResourceException
+     */
+    private static void clearFile( File file )
+        throws I18nResourceException
+    {
+        try
+        {
+            FileOutputStream erasor = new FileOutputStream( file );
+            erasor.write( (new String()).getBytes() );
+            erasor.close();
+        }
+        catch ( FileNotFoundException fnfe )
+        {
+            throw new I18nResourceException( "Error while saving resource, file not found", fnfe );
+        }
+        catch ( IOException ioe )
+        {
+            throw new I18nResourceException( "I/O Error while clearing/emptying file's name" + file.getAbsolutePath(),
+                ioe );
+        }
     }
 }

=== modified file 'tools/dhis-i18n-resourceeditor/src/main/java/org/hisp/dhis/i18nresourceeditor/persistence/ResourceManager.java'
--- tools/dhis-i18n-resourceeditor/src/main/java/org/hisp/dhis/i18nresourceeditor/persistence/ResourceManager.java	2009-03-09 11:13:57 +0000
+++ tools/dhis-i18n-resourceeditor/src/main/java/org/hisp/dhis/i18nresourceeditor/persistence/ResourceManager.java	2010-10-15 03:41:37 +0000
@@ -162,7 +162,7 @@
             if (module.isModified(locale)) {
                 String completeResourcePath = module.getResourcePath().getAbsolutePath() + File.separator +
                         module.getBasename() + "_" + locale + ".properties";
-
+                
                 FileUtils.saveResource(translationMap.get(locale), completeResourcePath);
 
                 log.outInfo("Saved resource: " + completeResourcePath);