Add more warnings source to 1.6) and fix warnings
[nikiroo-utils.git] / src / be / nikiroo / utils / resources / TransBundle.java
index a3804401034692909302f04c50c39cdcad828e6d..ec5b2d0af93d7d17a629dca51c1d2a0b365fece0 100644 (file)
@@ -8,8 +8,6 @@ import java.util.List;
 import java.util.Locale;
 import java.util.regex.Pattern;
 
-import be.nikiroo.utils.resources.Bundles;
-
 /**
  * This class manages a translation-dedicated Bundle.
  * <p>
@@ -19,6 +17,9 @@ import be.nikiroo.utils.resources.Bundles;
  * <li>DUMMY will return "[DUMMY]" (maybe with a suffix and/or "NOUTF")</li>
  * </ul>
  * 
+ * @param <E>
+ *            the enum to use to get values out of this class
+ * 
  * @author niki
  */
 public class TransBundle<E extends Enum<E>> extends Bundle<E> {
@@ -35,7 +36,7 @@ public class TransBundle<E extends Enum<E>> extends Bundle<E> {
         *            the name of the {@link Bundles}
         */
        public TransBundle(Class<E> type, Enum<?> name) {
-               super(type, name);
+               super(type, name, null);
                setLanguage(null);
        }
 
@@ -51,7 +52,7 @@ public class TransBundle<E extends Enum<E>> extends Bundle<E> {
         *            the language to use
         */
        public TransBundle(Class<E> type, Enum<?> name, String language) {
-               super(type, name);
+               super(type, name, null);
                setLanguage(language);
        }
 
@@ -126,10 +127,11 @@ public class TransBundle<E extends Enum<E>> extends Bundle<E> {
                        result = null;
                }
 
-               if (values != null && values.length > 0 && result != null)
+               if (values != null && values.length > 0 && result != null) {
                        return String.format(locale, result, values);
-               else
-                       return result;
+               }
+
+               return result;
        }
 
        /**
@@ -158,7 +160,7 @@ public class TransBundle<E extends Enum<E>> extends Bundle<E> {
         * @return the known language codes
         */
        public List<String> getKnownLanguages() {
-               return getKnownLanguages(name);
+               return getKnownLanguages(keyType);
        }
 
        /**
@@ -171,12 +173,12 @@ public class TransBundle<E extends Enum<E>> extends Bundle<E> {
        private void setLanguage(String language) {
                defaultLocale = (language == null || language.length() == 0);
                locale = getLocaleFor(language);
-               setBundle(name, locale);
+               setBundle(keyType, locale, false);
        }
 
        @Override
-       public void reload() {
-               setBundle(name, locale);
+       public void reload(boolean resetToDefault) {
+               setBundle(keyType, locale, resetToDefault);
        }
 
        @Override
@@ -199,16 +201,26 @@ public class TransBundle<E extends Enum<E>> extends Bundle<E> {
        @Override
        public void updateFile(String path) throws IOException {
                String prev = locale.getLanguage();
+               Object status = takeSnapshot();
 
-               setLanguage(null); // default locale
+               // default locale
+               setLanguage(null);
+               if (prev.equals(getLocaleFor(null).getLanguage())) {
+                       // restore snapshot if default locale = current locale
+                       restoreSnapshot(status);
+               }
                super.updateFile(path);
 
                for (String lang : getKnownLanguages()) {
                        setLanguage(lang);
+                       if (lang.equals(prev)) {
+                               restoreSnapshot(status);
+                       }
                        super.updateFile(path);
                }
 
                setLanguage(prev);
+               restoreSnapshot(status);
        }
 
        @Override
@@ -216,10 +228,10 @@ public class TransBundle<E extends Enum<E>> extends Bundle<E> {
                String code = locale.toString();
                File file = null;
                if (!defaultLocale && code.length() > 0) {
-                       file = new File(path, name.name() + "_" + code + ".properties");
+                       file = new File(path, keyType.name() + "_" + code + ".properties");
                } else {
                        // Default properties file:
-                       file = new File(path, name.name() + ".properties");
+                       file = new File(path, keyType.name() + ".properties");
                }
 
                return file;