View Javadoc

1   /**
2    * - Digitalis Internal Framework v2.0 - (C) 2007, Digitalis Informatica. Distribuicao e Gestao de Informatica, Lda.
3    * Estrada de Paco de Arcos num.9 - Piso -1 2780-666 Paco de Arcos Telefone: (351) 21 4408990 Fax: (351) 21 4408999
4    * http://www.digitalis.pt
5    */
6   package pt.digitalis.dif.dem.managers;
7   
8   import java.util.Map;
9   import java.util.Set;
10  
11  import pt.digitalis.dif.dem.Entity;
12  import pt.digitalis.dif.dem.interfaces.IApplication;
13  import pt.digitalis.dif.dem.interfaces.IEntity;
14  import pt.digitalis.dif.dem.interfaces.IProvider;
15  import pt.digitalis.dif.dem.interfaces.IService;
16  import pt.digitalis.dif.dem.interfaces.IStage;
17  import pt.digitalis.dif.dem.objects.messages.MessageList;
18  import pt.digitalis.dif.dem.objects.messages.MessageTranslations;
19  import pt.digitalis.utils.inspection.exception.ResourceNotFoundException;
20  
21  /**
22   * Manages the DEM messages, providing operations for access, pooling and persistence.
23   * 
24   * @author Pedro Viegas <a href="mailto:pviegas@digitalis.pt">pviegas@digitalis.pt</a>
25   * @author Rodrigo Gonçalves <a href="mailto:rgoncalves@digitalis.pt">rgoncalves@digitalis.pt</a>
26   * @created 2007/06/01
27   */
28  public interface IMessageManager {
29  
30      /**
31       * Adds a new supported language to the manager.
32       * 
33       * @param language
34       *            the new supported language to add
35       */
36      public void addSupportedLanguage(String language);
37  
38      /**
39       * Collect entity messages from resource LanguageID, MessageID, theMessageObject
40       * 
41       * @param clazz
42       *            the class to read the messages from
43       * @return the collected messages
44       */
45      public MessageList collectEntityMessagesFromRepository(Class<?> clazz);
46  
47      /**
48       * Collect entity messages from resource LanguageID, MessageID, theMessageObject
49       * 
50       * @param type
51       *            the type of the entity or null if it's not a DEM entity
52       * @param instance
53       *            the entity instance
54       * @return the collected messages
55       */
56      public MessageList collectEntityMessagesFromRepository(Entity type, Object instance);
57  
58      /**
59       * Collect entity messages from resource LanguageID, MessageID, theMessageObject
60       * 
61       * @param type
62       *            the type of the entity or null if it's not a DEM entity
63       * @param id
64       *            the entity id
65       * @param className
66       *            the class name
67       * @param parentID
68       *            the entity's parent ID
69       * @return the collected messages
70       * @throws ResourceNotFoundException
71       *             if a needed resource for message collection can't be found
72       */
73      public MessageList collectEntityMessagesFromRepository(Entity type, String id, String className, String parentID)
74              throws ResourceNotFoundException;
75  
76      /**
77       * Collect entity messages from resource LanguageID, MessageID, theMessageObject
78       * 
79       * @param messagePath
80       *            the messagePath for the message file (without the ".messages.xx" suffix)
81       * @return the collected messages
82       */
83      public MessageList collectEntityMessagesFromRepository(String messagePath);
84  
85      /**
86       * Gets the messages from the repository and collects them on first use
87       * 
88       * @param type
89       *            the entity type
90       * @param entity
91       *            the entity object
92       * @return the messages collected
93       */
94      public MessageList getMessageList(Entity type, IEntity entity);
95  
96      /**
97       * Gets the messages of a given Provider with all translations.
98       * 
99       * @param application
100      *            the application for which the messages should be retrieved
101      * @return the application messages
102      */
103     public MessageList getMessageList(IApplication application);
104 
105     /**
106      * Gets the messages of a given Provider with all translations.
107      * 
108      * @param provider
109      *            the provider for which the messages should be retrieved
110      * @return the provider messages
111      */
112     public MessageList getMessageList(IProvider provider);
113 
114     /**
115      * Gets the messages of a given service with all translations.
116      * 
117      * @param service
118      *            the service for which the messages should be retrieved
119      * @return the service messages
120      */
121     public MessageList getMessageList(IService service);
122 
123     /**
124      * Gets the messages of a given stage with all translations.
125      * 
126      * @param stage
127      *            the stage for which the messages should be retrieved
128      * @return the stage messages
129      */
130     public MessageList getMessageList(IStage stage);
131 
132     /**
133      * Gets the messages of a given Application.
134      * 
135      * @param application
136      *            the application for which the messages should be retrieved
137      * @param language
138      *            the language to filter
139      * @return the application messages
140      */
141     public Map<String, String> getMessages(IApplication application, String language);
142 
143     /**
144      * Gets the messages of a given Provider.
145      * 
146      * @param provider
147      *            the provider for which the messages should be retrieved
148      * @param language
149      *            the language to search
150      * @return the provider messages
151      */
152     public Map<String, String> getMessages(IProvider provider, String language);
153 
154     /**
155      * Gets the messages of a given Service.
156      * 
157      * @param service
158      *            the service for which the messages should be retrieved
159      * @param language
160      *            the language to filter
161      * @return the service messages
162      */
163     public Map<String, String> getMessages(IService service, String language);
164 
165     /**
166      * Gets the messages of a given Stage.
167      * 
168      * @param stage
169      *            the stage for which the messages should be retrieved
170      * @param language
171      *            the language to filter
172      * @return the stage messages
173      */
174     public Map<String, String> getMessages(IStage stage, String language);
175 
176     /**
177      * Returns the list of supported languages.
178      * 
179      * @return the list of supported languages
180      */
181     public Set<String> getSupportedLanguages();
182 
183     /** Invalidates the messages, forcing their reloading. */
184     public void invalidateMessages();
185 
186     /**
187      * Checks if a given language is supported.
188      * 
189      * @param language
190      *            the language to check
191      * @return T if the passed language is supported, F otherwise
192      */
193     public boolean isLanguageSupported(String language);
194 
195     /**
196      * @return T this implementation supports saving messages to a persistent media. If F changes will be lost after a
197      *         server restart
198      */
199     public boolean isPersistent();
200 
201     /**
202      * Updates a message with a given ID on a given class.
203      * 
204      * @param clazz
205      *            the class
206      * @param messageID
207      *            the ID of the message to update
208      * @param message
209      *            the message (and it's translations) to update
210      */
211     public void updateMessage(Class<?> clazz, String messageID, MessageTranslations message);
212 
213     /**
214      * Updates a message with a given ID on a given entity.
215      * 
216      * @param entity
217      *            the entity
218      * @param messageID
219      *            the ID of the message to update
220      * @param message
221      *            the message (and it's translations) to update
222      */
223     public void updateMessage(IEntity entity, String messageID, MessageTranslations message);
224 }