package games.strategy.triplea.ui; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.Calendar; import java.util.Optional; import java.util.Properties; import games.strategy.triplea.ResourceLoader; import games.strategy.util.UrlStreams; /** * Returns a bunch of messages from politicstext.properties * TODO: copy paste overlap with NotifcationMessages.java */ public class PoliticsText { // Filename private static final String PROPERTY_FILE = "politicstext.properties"; private static PoliticsText s_pt = null; private static long s_timestamp = 0; private final Properties m_properties = new Properties(); private static final String BUTTON = "BUTTON"; private static final String DESCRIPTION = "DESCRIPTION"; private static final String NOTIFICATION_SUCCESS = "NOTIFICATION_SUCCESS"; private static final String OTHER_NOTIFICATION_SUCCESS = "OTHER_NOTIFICATION_SUCCESS"; private static final String NOTIFICATION_FAILURE = "NOTIFICATION_FAILURE"; private static final String OTHER_NOTIFICATION_FAILURE = "OTHER_NOTIFICATION_FAILURE"; private static final String ACCEPT_QUESTION = "ACCEPT_QUESTION"; protected PoliticsText() { final ResourceLoader loader = AbstractUIContext.getResourceLoader(); final URL url = loader.getResource(PROPERTY_FILE); if (url != null) { final Optional<InputStream> inputStream = UrlStreams.openStream(url); if (inputStream.isPresent()) { try { m_properties.load(inputStream.get()); } catch (final IOException e) { System.out.println("Error reading " + PROPERTY_FILE + " : " + e); } } } } public static PoliticsText getInstance() { // cache properties for 10 seconds if (s_pt == null || Calendar.getInstance().getTimeInMillis() > s_timestamp + 10000) { s_pt = new PoliticsText(); s_timestamp = Calendar.getInstance().getTimeInMillis(); } return s_pt; } private String getString(final String value) { return m_properties.getProperty(value, "NO: " + value + " set."); } private String getMessage(final String politicsKey, final String messageKey) { return getString(politicsKey + "." + messageKey); } public String getButtonText(final String politicsKey) { return getMessage(politicsKey, BUTTON); } public String getDescription(final String politicsKey) { return getMessage(politicsKey, PoliticsText.DESCRIPTION); } public String getNotificationSucccess(final String politicsKey) { return getMessage(politicsKey, PoliticsText.NOTIFICATION_SUCCESS); } public String getNotificationSuccessOthers(final String politicsKey) { return getMessage(politicsKey, PoliticsText.OTHER_NOTIFICATION_SUCCESS); } public String getNotificationFailure(final String politicsKey) { return getMessage(politicsKey, PoliticsText.NOTIFICATION_FAILURE); } public String getNotificationFailureOthers(final String politicsKey) { return getMessage(politicsKey, PoliticsText.OTHER_NOTIFICATION_FAILURE); } public String getAcceptanceQuestion(final String politicsKey) { return getMessage(politicsKey, PoliticsText.ACCEPT_QUESTION); } }