View Javadoc

1   /*
2    * ObjectDescriptorMessagesProvider.java
3    * Created on 13 Июнь 2006 г., 17:29
4    */
5   
6   package org.weda.property.impl;
7   
8   import java.util.Arrays;
9   import java.util.List;
10  import org.weda.message.Messages;
11  import org.weda.message.MessagesProvider;
12  import org.weda.message.impl.AbstractMessagesProvider;
13  import org.weda.message.impl.MessagesSubset;
14  import org.weda.property.ObjectDescriptorRegistry;
15  import org.weda.property.PosibleValue;
16  import org.weda.property.PropertyDescriptor;
17  
18  /**
19   *
20   * @author Mikhail Titov
21   */
22  public class ObjectDescriptorMessagesProvider extends AbstractMessagesProvider {
23      private final static Class[] SUPPORTED_CLASSES = 
24              new Class[]{
25                  PropertyDescriptorImpl.class
26                  , ObjectDescriptor.class
27                  , ObjectDescriptorRegistry.class
28                  , PosibleValueImpl.class};
29      
30      public Messages getMessagesForObject(Object obj) {
31          if (obj instanceof PropertyDescriptor) {
32              return getMessagesForPropertyDescriptor(obj);
33          }else if (obj instanceof ObjectDescriptor){
34              ObjectDescriptor objDesc = (ObjectDescriptor)obj;
35              return new MessagesSubset(
36                          getCategoryMessages()
37                          , objDesc.getObjectClass().getName());
38          }else if (obj instanceof ObjectDescriptorRegistry){
39              return getCategoryMessages();
40          }else if (obj instanceof PosibleValue){
41              PosibleValue posValue = (PosibleValue)obj;
42              Messages propMessages = 
43                      getMessagesForPropertyDescriptor(
44                          posValue.getPropertyDescriptor());
45              return new MessagesSubset(propMessages, "..");
46          }
47          return null;
48      }
49      
50      private Messages getMessagesForPropertyDescriptor(Object propDesc){
51          PropertyDescriptor desc = (PropertyDescriptor)propDesc;
52          Messages subset = 
53                  new MessagesSubset(
54                      getCategoryMessages()
55                      , desc.getObjectClass()==null? 
56                          "null" : desc.getObjectClass().getName());
57          return new MessagesSubset(subset, desc.getName());
58      }
59  
60      public Class[] getSupportedClasses() {
61          return SUPPORTED_CLASSES;
62      }
63      
64  }