Coverage Report - org.jtheque.core.managers.message.MessageManager
 
Classes in this File Line Coverage Branch Coverage Complexity
MessageManager
0 %
0/30
0 %
0/10
1.75
 
 1  
 package org.jtheque.core.managers.message;
 2  
 
 3  
 /*
 4  
  * This file is part of JTheque.
 5  
  *
 6  
  * JTheque is free software: you can redistribute it and/or modify
 7  
  * it under the terms of the GNU General Public License as published by
 8  
  * the Free Software Foundation, either version 3 of the License.
 9  
  *
 10  
  * JTheque is distributed in the hope that it will be useful,
 11  
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 12  
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 13  
  * GNU General Public License for more details.
 14  
  *
 15  
  * You should have received a copy of the GNU General Public License
 16  
  * along with JTheque.  If not, see <http://www.gnu.org/licenses/>.
 17  
  */
 18  
 
 19  
 import org.jtheque.core.managers.AbstractManager;
 20  
 import org.jtheque.core.managers.Managers;
 21  
 import org.jtheque.core.managers.log.ILoggingManager;
 22  
 import org.jtheque.core.managers.module.IModuleManager;
 23  
 import org.jtheque.core.managers.module.beans.ModuleContainer;
 24  
 import org.jtheque.core.managers.view.able.IViewManager;
 25  
 import org.jtheque.core.utils.file.ReadingException;
 26  
 import org.jtheque.utils.StringUtils;
 27  
 import org.jtheque.utils.bean.IntDate;
 28  
 
 29  
 import java.util.ArrayList;
 30  
 import java.util.Collection;
 31  
 
 32  
 /**
 33  
  * @author Baptiste Wicht
 34  
  */
 35  0
 public final class MessageManager extends AbstractManager implements IMessageManager {
 36  0
     private final Collection<Message> messages = new ArrayList<Message>(10);
 37  
 
 38  
     @Override
 39  
     public void loadMessages() {
 40  0
         messages.clear();
 41  
 
 42  0
         loadCoreMessages();
 43  0
         loadApplicationMessages();
 44  
 
 45  0
         for (ModuleContainer module : Managers.getManager(IModuleManager.class).getModules()) {
 46  0
             loadModuleMessages(module);
 47  
         }
 48  0
     }
 49  
 
 50  
     @Override
 51  
     public void displayIfNeeded() {
 52  0
         IntDate previousDate = Managers.getCore().getConfiguration().getMessagesLastRead();
 53  
 
 54  0
         for (Message message : messages) {
 55  0
             if (message.getDate().compareTo(previousDate) > 0) {
 56  0
                 Managers.getManager(IViewManager.class).getViews().getMessagesView().display();
 57  
 
 58  0
                 break;
 59  
             }
 60  
         }
 61  0
     }
 62  
 
 63  
     @Override
 64  
     public Collection<Message> getMessages() {
 65  0
         return messages;
 66  
     }
 67  
 
 68  
     /**
 69  
      * Load all the messages of the module.
 70  
      *
 71  
      * @param module The module to load messages from.
 72  
      */
 73  
     private void loadModuleMessages(ModuleContainer module) {
 74  0
         if (hasMessageFile(module)) {
 75  0
             loadMessageFile(module.getInfos().messageFileURL());
 76  
         }
 77  0
     }
 78  
 
 79  
     /**
 80  
      * Indicate if a module has a message file.
 81  
      *
 82  
      * @param module The module.
 83  
      * @return true if the module has a message file else false.
 84  
      */
 85  
     private static boolean hasMessageFile(ModuleContainer module) {
 86  0
         return StringUtils.isNotEmpty(module.getInfos().messageFileURL());
 87  
     }
 88  
 
 89  
     /**
 90  
      * Load the messages of the application.
 91  
      */
 92  
     private void loadApplicationMessages() {
 93  0
         if (!StringUtils.isEmpty(Managers.getCore().getApplication().getMessageFileURL())) {
 94  0
             loadMessageFile(Managers.getCore().getApplication().getMessageFileURL());
 95  
         }
 96  0
     }
 97  
 
 98  
     /**
 99  
      * Load the messages of the core.
 100  
      */
 101  
     private void loadCoreMessages() {
 102  0
         loadMessageFile(Managers.getCore().getCoreMessageFileURL());
 103  0
     }
 104  
 
 105  
     /**
 106  
      * Load a messages files.
 107  
      *
 108  
      * @param url The URL of the messages file.
 109  
      */
 110  
     private void loadMessageFile(String url) {
 111  
         try {
 112  0
             MessageFile file = MessageFileReader.readMessagesFile(url);
 113  
 
 114  0
             messages.addAll(file.getMessages());
 115  0
         } catch (ReadingException e) {
 116  0
             Managers.getManager(ILoggingManager.class).getLogger(getClass()).error(e);
 117  0
         }
 118  0
     }
 119  
 }