/**
* This Source Code Form is subject to the terms of the Mozilla Public License,
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under
* the terms of the Healthcare Disclaimer located at http://openmrs.org/license.
*
* Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS
* graphic logo is a trademark of OpenMRS Inc.
*/
package org.openmrs.messagesource;
import java.util.Collection;
import java.util.Locale;
import org.springframework.context.HierarchicalMessageSource;
import org.springframework.context.MessageSource;
/**
* Extended MessageSource interface, which provides more information about the available messages
* and can be changed.
*/
public interface MutableMessageSource extends MessageSource, HierarchicalMessageSource {
/**
* Gets the locales for which messages are available from this source.
*
* @return available message locales
*/
public Collection<Locale> getLocales();
/**
* Gets all of the available messages, packaged as PresentationMessages.
*
* @return collection of presentation messages
*/
public Collection<PresentationMessage> getPresentations();
/**
* Gets alll the available messages in a particular locale, packaged as PresentationMessages.
*
* @param locale locale for which to get the messages
* @return collection of PresentationMessages in the locale
*/
public Collection<PresentationMessage> getPresentationsInLocale(Locale locale);
/**
* Adds a presentation message to the source. This operation should overwrite any existing
* message which conflicts (has the same code and locale).
*
* @param message message to add to the source
*/
public void addPresentation(PresentationMessage message);
/**
* Gets the PresentationMessage for a particular locale.
*
* @param key textual key for the message
* @param forLocale locale for which to get the message
* @return corresponding PresentationMessage, or null if not available
*/
public PresentationMessage getPresentation(String key, Locale forLocale);
/**
* Removes a presentation message from the source.
*
* @param message the message to remove
*/
public void removePresentation(PresentationMessage message);
/**
* Merge messages from another source into this source.
*
* @param fromSource message source from which messages should be merge
* @param overwrite whether to overwrite existing messages
*/
public void merge(MutableMessageSource fromSource, boolean overwrite);
}