Coverage Report - org.homeunix.thecave.buddi.i18n.BuddiLanguageEditor
 
Classes in this File Line Coverage Branch Coverage Complexity
BuddiLanguageEditor
21%
9/42
33%
4/12
2.6
BuddiLanguageEditor$BuddiLanguageEditorException
0%
0/4
N/A
2.6
 
 1  
 /*
 2  
  * Created on Aug 19, 2007 by wyatt
 3  
  */
 4  
 package org.homeunix.thecave.buddi.i18n;
 5  
 
 6  
 import javax.swing.JOptionPane;
 7  
 
 8  
 import org.homeunix.thecave.buddi.Buddi;
 9  
 import org.homeunix.thecave.buddi.Const;
 10  
 import org.homeunix.thecave.buddi.i18n.keys.BudgetCategoryTypes;
 11  
 import org.homeunix.thecave.buddi.i18n.keys.BudgetExpenseDefaultKeys;
 12  
 import org.homeunix.thecave.buddi.i18n.keys.BudgetIncomeDefaultKeys;
 13  
 import org.homeunix.thecave.buddi.i18n.keys.ButtonKeys;
 14  
 import org.homeunix.thecave.buddi.i18n.keys.MenuKeys;
 15  
 import org.homeunix.thecave.buddi.i18n.keys.MonthKeys;
 16  
 import org.homeunix.thecave.buddi.i18n.keys.PluginRangeFilters;
 17  
 import org.homeunix.thecave.buddi.i18n.keys.ScheduleFrequency;
 18  
 import org.homeunix.thecave.buddi.i18n.keys.ScheduleFrequencyDayOfMonth;
 19  
 import org.homeunix.thecave.buddi.i18n.keys.ScheduleFrequencyDayOfWeek;
 20  
 import org.homeunix.thecave.buddi.i18n.keys.ScheduleFrequencyFirstWeekOfMonth;
 21  
 import org.homeunix.thecave.buddi.i18n.keys.ScheduleFrequencyMonth;
 22  
 import org.homeunix.thecave.buddi.i18n.keys.ScheduleFrequencyWeek;
 23  
 import org.homeunix.thecave.buddi.i18n.keys.TransactionClearedFilterKeys;
 24  
 import org.homeunix.thecave.buddi.i18n.keys.TransactionDateFilterKeys;
 25  
 import org.homeunix.thecave.buddi.i18n.keys.TransactionReconciledFilterKeys;
 26  
 import org.homeunix.thecave.buddi.i18n.keys.TypeCreditDefaultKeys;
 27  
 import org.homeunix.thecave.buddi.i18n.keys.TypeDebitDefaultKeys;
 28  
 import org.homeunix.thecave.buddi.model.prefs.PrefsModel;
 29  
 import org.homeunix.thecave.buddi.plugin.api.util.TextFormatter;
 30  
 
 31  
 import ca.digitalcave.moss.application.document.exception.DocumentSaveException;
 32  
 import ca.digitalcave.moss.i18n.LanguageEditor;
 33  
 
 34  
 public class BuddiLanguageEditor extends LanguageEditor {
 35  
         public static final long serialVersionUID = 0;
 36  
         
 37  
         public static BuddiLanguageEditor getInstance(String language) throws BuddiLanguageEditorException {
 38  23
                 String tempLanguage = JOptionPane.showInputDialog( 
 39  
                                 TextFormatter.getTranslation(BuddiKeys.LANGUAGE_EDITOR_NAME),
 40  
                                 language.replaceAll("_\\(.*\\)", "")
 41  
                 );
 42  
 
 43  20
                 if (tempLanguage == null || tempLanguage.length() == 0){
 44  10
                         String[] options = new String[1];
 45  10
                         options[0] = TextFormatter.getTranslation(ButtonKeys.BUTTON_OK);
 46  
 
 47  10
                         JOptionPane.showOptionDialog(
 48  
                                         null, 
 49  
                                         TextFormatter.getTranslation(BuddiKeys.LANGUAGE_EDITOR_BLANK_VALUE),
 50  
                                         TextFormatter.getTranslation(BuddiKeys.ERROR),
 51  
                                         JOptionPane.DEFAULT_OPTION,
 52  
                                         JOptionPane.ERROR_MESSAGE,
 53  
                                         null,
 54  
                                         options,
 55  
                                         options[0]
 56  
                         );
 57  
 
 58  0
                         throw new BuddiLanguageEditorException("Blank Language");
 59  
                 }
 60  
                 
 61  
                 //Check that we removed something from the passed in language.
 62  10
                 String defaultLocale = language.replaceAll("^.*_\\(", "").replaceAll("\\)$", "");
 63  10
                 if (defaultLocale.equals(language))
 64  10
                         defaultLocale = "";
 65  
 
 66  10
                 String tempLocaleName = JOptionPane.showInputDialog(
 67  
                                 null, 
 68  
                                 TextFormatter.getTranslation(BuddiKeys.LANGUAGE_EDITOR_LOCALE),
 69  
                                 defaultLocale
 70  
                 );
 71  
 
 72  
                 String localeName;
 73  0
                 if (tempLocaleName == null || tempLocaleName.equals(""))
 74  0
                         localeName = "";
 75  
                 else
 76  0
                         localeName = "_(" + tempLocaleName + ")";
 77  
                 
 78  0
                 return new BuddiLanguageEditor(tempLanguage + localeName);
 79  
         }
 80  
         
 81  
         private BuddiLanguageEditor(String selectedLanguage) {
 82  0
                 super(Const.LANGUAGE_EXTENSION, selectedLanguage);
 83  
 
 84  
                 //TODO Make sure all translation keys are loaded here.  It's annoying that this is
 85  
                 // not automated, but the convenience of having multiple smaler key files
 86  
                 // makes up for it.
 87  0
                 this.loadKeys((Enum[]) BuddiKeys.values());
 88  0
                 this.loadKeys((Enum[]) BudgetCategoryTypes.values());
 89  0
                 this.loadKeys((Enum[]) BudgetExpenseDefaultKeys.values());
 90  0
                 this.loadKeys((Enum[]) BudgetIncomeDefaultKeys.values());
 91  0
                 this.loadKeys((Enum[]) ButtonKeys.values());
 92  0
                 this.loadKeys((Enum[]) MenuKeys.values());
 93  0
                 this.loadKeys((Enum[]) MonthKeys.values());                
 94  0
                 this.loadKeys((Enum[]) PluginRangeFilters.values());
 95  0
                 this.loadKeys((Enum[]) ScheduleFrequency.values());
 96  0
                 this.loadKeys((Enum[]) ScheduleFrequencyDayOfMonth.values());
 97  0
                 this.loadKeys((Enum[]) ScheduleFrequencyDayOfWeek.values());
 98  0
                 this.loadKeys((Enum[]) ScheduleFrequencyFirstWeekOfMonth.values());
 99  0
                 this.loadKeys((Enum[]) ScheduleFrequencyMonth.values());
 100  0
                 this.loadKeys((Enum[]) ScheduleFrequencyWeek.values());
 101  0
                 this.loadKeys((Enum[]) TransactionClearedFilterKeys.values());
 102  0
                 this.loadKeys((Enum[]) TransactionDateFilterKeys.values());
 103  0
                 this.loadKeys((Enum[]) TransactionReconciledFilterKeys.values());
 104  0
                 this.loadKeys((Enum[]) TypeCreditDefaultKeys.values());
 105  0
                 this.loadKeys((Enum[]) TypeDebitDefaultKeys.values());
 106  
                 
 107  0
                 this.loadLanguages(Const.LANGUAGE_RESOURCE_PATH, PrefsModel.getInstance().getTranslator().getLanguageList(selectedLanguage).toArray(new String[1]));
 108  0
                 this.loadLanguages(Buddi.getLanguagesFolder(), PrefsModel.getInstance().getTranslator().getLanguageList(selectedLanguage).toArray(new String[1]));
 109  0
         }
 110  
         
 111  
         @Override
 112  
         public void save() {
 113  0
                 if (!Buddi.getLanguagesFolder().exists())
 114  0
                         Buddi.getLanguagesFolder().mkdirs();
 115  
                 try {
 116  0
                         super.saveAs(Buddi.getLanguagesFolder());
 117  
                 }
 118  0
                 catch (DocumentSaveException dse){}
 119  0
         }
 120  
         
 121  
         public static class BuddiLanguageEditorException extends Exception {
 122  
                 public static final long serialVersionUID = 0;
 123  
                 
 124  
                 public BuddiLanguageEditorException() {
 125  0
                         super();
 126  0
                 }
 127  
                 
 128  
                 public BuddiLanguageEditorException(String message) {
 129  0
                         super(message);
 130  0
                 }                
 131  
         }
 132  
 }