Coverage Report - pt.digitalis.dif.dem.objects.messages.MessageList
 
Classes in this File Line Coverage Branch Coverage Complexity
MessageList
0%
0/33
0%
0/10
1,455
 
 1  0
 /**
 2  
  * 2007, Digitalis Informatica. All rights reserved. Distribuicao e Gestao de Informatica, Lda. Estrada de Paco de Arcos
 3  
  * num.9 - Piso -1 2780-666 Paco de Arcos Telefone: (351) 21 4408990 Fax: (351) 21 4408999 http://www.digitalis.pt
 4  
  */
 5  
 
 6  
 package pt.digitalis.dif.dem.objects.messages;
 7  
 
 8  
 import java.util.ArrayList;
 9  
 import java.util.List;
 10  
 import java.util.Map;
 11  
 
 12  
 import pt.digitalis.dif.startup.DIFGeneralConfigurationParameters;
 13  
 import pt.digitalis.dif.utils.ObjectFormatter;
 14  
 import pt.digitalis.utils.common.collections.CaseInsensitiveHashMap;
 15  
 
 16  
 /**
 17  
  * Represents a view message with language translations and persistence information
 18  
  * 
 19  
  * @author Pedro Viegas <a href="mailto:pviegas@digitalis.pt">pviegas@digitalis.pt</a><br/>
 20  
  * @author Rodrigo Goncalves <a href="mailto:rgoncalves@digitalis.pt">rgoncalves@digitalis.pt</a><br/>
 21  
  * @created Nov 2, 2007
 22  
  */
 23  0
 public class MessageList {
 24  
 
 25  
     /** The messages */
 26  0
     private Map<String, MessageTranslations> messages = new CaseInsensitiveHashMap<MessageTranslations>();
 27  
 
 28  
     /**
 29  
      * Adds a message to the list. Uses the default language
 30  
      * 
 31  
      * @param id
 32  
      *            the message id
 33  
      * @param message
 34  
      *            the message
 35  
      */
 36  
     public void addMessage(String id, Message message)
 37  
     {
 38  0
         addMessageTranslation(id, DIFGeneralConfigurationParameters.getInstance().getDefaultLanguage(), message);
 39  0
     }
 40  
 
 41  
     /**
 42  
      * Adds a message to the list. Note: It overrides the current translations if they exist.
 43  
      * 
 44  
      * @param id
 45  
      *            the message id
 46  
      * @param translations
 47  
      *            the translations list
 48  
      */
 49  
     public void addMessage(String id, MessageTranslations translations)
 50  
     {
 51  0
         messages.put(id, translations);
 52  0
     }
 53  
 
 54  
     /**
 55  
      * Adds a message to the list. Uses the default language and no custom message
 56  
      * 
 57  
      * @param id
 58  
      *            the message id
 59  
      * @param message
 60  
      *            the message
 61  
      */
 62  
     public void addMessage(String id, String message)
 63  
     {
 64  0
         addMessage(id, new Message(message));
 65  0
     }
 66  
 
 67  
     /**
 68  
      * Adds a message list to the list. All identical ids will override the current ones.
 69  
      * 
 70  
      * @param list
 71  
      *            the list of message translations to add
 72  
      */
 73  
     public void addMessageList(MessageList list)
 74  
     {
 75  0
         for (String id: list.getMessageIDs())
 76  
         {
 77  0
             messages.put(id, list.getMessageTranslations(id));
 78  
         }
 79  0
     }
 80  
 
 81  
     /**
 82  
      * Adds a message translation to the list
 83  
      * 
 84  
      * @param id
 85  
      * @param language
 86  
      * @param message
 87  
      */
 88  
     public void addMessageTranslation(String id, String language, Message message)
 89  
     {
 90  0
         MessageTranslations translations = messages.get(id);
 91  0
         language = language.toLowerCase();
 92  
 
 93  0
         if (translations == null)
 94  
         {
 95  0
             translations = new MessageTranslations();
 96  0
             translations.addTranslation(language, message);
 97  
 
 98  0
             messages.put(id, translations);
 99  
 
 100  
         }
 101  
         else
 102  0
             translations.addTranslation(language, message);
 103  0
     }
 104  
 
 105  
     /**
 106  
      * Checks if a given message is contained on the list.
 107  
      * 
 108  
      * @param messageID
 109  
      *            the message ID
 110  
      * @return T if the message with the given ID is contained within the list, F otherwise
 111  
      */
 112  
     public boolean containsMessageWithID(String messageID)
 113  
     {
 114  0
         return this.messages.containsKey(messageID);
 115  
     }
 116  
 
 117  
     /**
 118  
      * Gets the list of messages IDs
 119  
      * 
 120  
      * @return the message translations
 121  
      */
 122  
     public List<String> getMessageIDs()
 123  
     {
 124  0
         return new ArrayList<String>(messages.keySet());
 125  
     }
 126  
 
 127  
     /**
 128  
      * Gets the list of messages and their default translation message
 129  
      * 
 130  
      * @return the message map
 131  
      */
 132  
     public Map<String, String> getMessages()
 133  
     {
 134  0
         return getMessages(DIFGeneralConfigurationParameters.getInstance().getDefaultLanguage());
 135  
     }
 136  
 
 137  
     /**
 138  
      * Gets the list of messages and their default message translation to the given language
 139  
      * 
 140  
      * @param language
 141  
      *            the language desired
 142  
      * @return the message map
 143  
      */
 144  
     public Map<String, String> getMessages(String language)
 145  
     {
 146  
 
 147  0
         Map<String, String> messageValues = new CaseInsensitiveHashMap<String>();
 148  
 
 149  0
         for (String id: getMessageIDs())
 150  
         {
 151  0
             if ((messages.get(id) != null) && (messages.get(id).getMessage(language) != null))
 152  0
                 messageValues.put(id, messages.get(id).getMessage(language).getMessage());
 153  
             else
 154  0
                 messageValues.put(id, null);
 155  
 
 156  
         }
 157  
 
 158  0
         return messageValues;
 159  
     }
 160  
 
 161  
     /**
 162  
      * Gets the translations for a given message
 163  
      * 
 164  
      * @param id
 165  
      *            the id of the message to search
 166  
      * @return the message translations for the given message id
 167  
      */
 168  
     public MessageTranslations getMessageTranslations(String id)
 169  
     {
 170  0
         return messages.get(id);
 171  
     }
 172  
 
 173  
     /**
 174  
      * @see java.lang.Object#toString()
 175  
      */
 176  
     @Override
 177  
     public String toString()
 178  
     {
 179  0
         ObjectFormatter formatter = new ObjectFormatter();
 180  
 
 181  0
         formatter.addItem("Messages", messages);
 182  
 
 183  0
         return formatter.getFormatedObject();
 184  
     }
 185  
 }