Coverage Report - org.trails.i18n.AbstractMessageSource
 
Classes in this File Line Coverage Branch Coverage Complexity
AbstractMessageSource
72% 
80% 
1.625
 
 1  
 package org.trails.i18n;
 2  
 
 3  
 import java.util.Locale;
 4  
 
 5  
 import org.trails.descriptor.IClassDescriptor;
 6  
 import org.trails.descriptor.IDescriptor;
 7  
 import org.trails.descriptor.IPropertyDescriptor;
 8  
 
 9  108
 public abstract class AbstractMessageSource implements TrailsMessageSource
 10  
 {
 11  
 
 12  
         public String getMessageWithDefaultValue(String key, String defaultMessage)
 13  
         {
 14  0
                 return getMessageOrDefaultValue(getMessage(key), defaultMessage);
 15  
         }
 16  
 
 17  
         public String getMessageWithDefaultValue(String key, Object[] args, String defaultMessage)
 18  
         {
 19  8
                 return getMessageOrDefaultValue(getMessage(key, args), defaultMessage);
 20  
         }
 21  
 
 22  
         public String getMessageWithDefaultValue(String key, Locale locale, String defaultMessage)
 23  
         {
 24  0
                 return getMessageOrDefaultValue(getMessage(key, locale), defaultMessage);
 25  
         }
 26  
 
 27  
         public String getMessageWithDefaultValue(String key, Object[] args, Locale locale, String defaultMessage)
 28  
         {
 29  0
                 return getMessageOrDefaultValue(getMessage(key, args, locale), defaultMessage);
 30  
         }
 31  
 
 32  
         private String getMessageOrDefaultValue(String message, String defaultMessage)
 33  
         {
 34  8
                 return (message != null) ? message : defaultMessage;
 35  
         }
 36  
 
 37  
         public String getDisplayName(IDescriptor descriptor, String defaultMessage)
 38  
         {
 39  
                 String fullName;
 40  
                 String shortName;
 41  24
                 if (descriptor instanceof IPropertyDescriptor)
 42  
                 {
 43  12
                         IPropertyDescriptor property = (IPropertyDescriptor) descriptor;
 44  12
                         fullName = property.getBeanType().getName() + "." + property.getName();
 45  12
                         shortName = property.getName();
 46  12
                 } else if (descriptor instanceof IClassDescriptor)
 47  
                 {
 48  12
                         IClassDescriptor clazz = (IClassDescriptor) descriptor;
 49  12
                         fullName = clazz.getType().getName();
 50  12
                         shortName = clazz.getType().getSimpleName();
 51  
                 } else
 52  
                 {
 53  0
                         return defaultMessage;
 54  
                 }
 55  
 
 56  24
                 return selectDisplayName(fullName, shortName, defaultMessage);
 57  
         }
 58  
 
 59  
         public String getPluralDislayName(IClassDescriptor clazz, String defaultMessage)
 60  
         {
 61  12
                 String fullName = clazz.getType().getName() + "__plural";
 62  12
                 String shortName = clazz.getType().getSimpleName() + "__plural";
 63  
 
 64  12
                 return selectDisplayName(fullName, shortName, defaultMessage);
 65  
         }
 66  
 
 67  
         /**
 68  
          * Select a locale message, given two keys and a default value in case no message is found.
 69  
          */
 70  
         private String selectDisplayName(String firstKey, String secondKey, String defValue)
 71  
         {
 72  
                 String message;
 73  
 
 74  36
                 message = getMessage(firstKey);
 75  36
                 if (message == null)
 76  
                 {
 77  0
                         message = getMessage(secondKey);
 78  0
                         if (message == null)
 79  
                         {
 80  0
                                 message = defValue;
 81  
                         }
 82  
                 }
 83  36
                 return message;
 84  
         }
 85  
 }