Java tutorial
/* * Copyright 2010 Chris Searle * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.chrissearle.flickrvote.service; import net.chrissearle.flickrvote.service.model.ChallengeSummary; import net.chrissearle.flickrvote.service.model.ImageItem; import net.chrissearle.flickrvote.service.model.ImageItemStatus; import net.chrissearle.flickrvote.service.model.Status; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.MessageSource; import org.springframework.context.MessageSourceAware; import org.springframework.stereotype.Service; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Locale; import java.util.Set; @Service("challengeMessageService") public class MessageSourceChallengeMessageService implements ChallengeMessageService, MessageSourceAware, InitializingBean { private MessageSource messageSource; private ShortUrlService shortUrlService; private String votingUrl; private String votingUrlShort; private String currentUrlShort; private String rulesUrl; private String goldBadgeUrl; private String silverBadgeUrl; private String bronzeBadgeUrl; private DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); @Autowired public MessageSourceChallengeMessageService(ShortUrlService shortUrlService) { this.shortUrlService = shortUrlService; } public void setMessageSource(MessageSource messageSource) { this.messageSource = messageSource; } public void afterPropertiesSet() throws Exception { votingUrl = getUrlProperty("url.voting"); votingUrlShort = shortUrlService.shortenUrl(votingUrl); currentUrlShort = shortUrlService.shortenUrl(getUrlProperty("url.current")); rulesUrl = getUrlProperty("url.rules"); goldBadgeUrl = getUrlProperty("gold.badge"); silverBadgeUrl = getUrlProperty("silver.badge"); bronzeBadgeUrl = getUrlProperty("bronze.badge"); } private String getUrlProperty(String urlKey) { Object[] params = new Object[0]; return messageSource.getMessage(urlKey, params, Locale.getDefault()); } public String getResultsForumText(String resultsUrl, String firstPlace, String secondPlace, String thirdPlace) { Object[] params = new Object[4]; params[0] = firstPlace; params[1] = secondPlace; params[2] = thirdPlace; params[3] = resultsUrl; return messageSource.getMessage("flickr.forum.results.text", params, Locale.getDefault()); } public String getResultsUrl(ChallengeSummary challenge) { Object[] params = new Object[1]; params[0] = challenge.getTag(); return messageSource.getMessage("url.show", params, Locale.getDefault()); } public String getVotingTwitter(ChallengeSummary challenge) { Object[] params = new Object[3]; params[0] = challenge.getTag(); params[1] = challenge.getTitle(); params[2] = votingUrlShort; return messageSource.getMessage("twitter.voting", params, Locale.getDefault()); } public String getVotingForumTitle(ChallengeSummary challenge) { Object[] params = new Object[2]; params[0] = challenge.getTag(); params[1] = challenge.getTitle(); return messageSource.getMessage("flickr.forum.voting.title", params, Locale.getDefault()); } public String getVotingForumText(ChallengeSummary challenge) { Object[] params = new Object[5]; params[0] = df.format(challenge.getVoteDate()); params[1] = df.format(challenge.getEndDate()); params[2] = challenge.getTag(); params[3] = challenge.getTitle(); params[4] = votingUrl; return messageSource.getMessage("flickr.forum.voting.text", params, Locale.getDefault()); } public String getCurrentTwitter(ChallengeSummary challenge) { Object[] params = new Object[3]; params[0] = challenge.getTag(); params[1] = challenge.getTitle(); params[2] = currentUrlShort; return messageSource.getMessage("twitter.current", params, Locale.getDefault()); } public String getCurrentForumTitle(ChallengeSummary challenge) { Object[] params = new Object[2]; params[0] = challenge.getTag(); params[1] = challenge.getTitle(); return messageSource.getMessage("flickr.forum.current.title", params, Locale.getDefault()); } public String getCurrentForumText(ChallengeSummary challenge) { Object[] params = new Object[5]; params[0] = challenge.getTag(); params[1] = challenge.getTitle(); params[2] = df.format(challenge.getVoteDate()); params[3] = rulesUrl; return messageSource.getMessage("flickr.forum.current.text", params, Locale.getDefault()); } public String getResultsTwitter(ChallengeSummary challenge, String resultsUrl) { resultsUrl = shortUrlService.shortenUrl(resultsUrl); Object[] params = new Object[3]; params[0] = challenge.getTag(); params[1] = challenge.getTitle(); params[2] = resultsUrl; return messageSource.getMessage("twitter.results", params, Locale.getDefault()); } public String getResultsForumTitle(ChallengeSummary challenge) { Object[] params = new Object[2]; params[0] = challenge.getTag(); params[1] = challenge.getTitle(); return messageSource.getMessage("flickr.forum.results.title", params, Locale.getDefault()); } public String getBadgeText(int place, String badgeUrl, ChallengeSummary challenge) { Object[] params = new Object[4]; params[0] = place; params[1] = challenge.getTag(); params[2] = challenge.getTitle(); params[3] = badgeUrl; return messageSource.getMessage("badge.basic", params, Locale.getDefault()); } public String getResultsForumSingle(ImageItem image) { Object[] params = new Object[5]; params[0] = image.getTitle(); params[1] = image.getPhotographer().getName(); params[2] = image.getVoteCount(); params[3] = image.getUrl(); params[4] = image.getImageUrl(); return messageSource.getMessage("flickr.forum.results.single", params, Locale.getDefault()); } public String getVotingOpenWarning(ChallengeSummary challenge) { Object[] params = new Object[4]; params[0] = challenge.getTag(); params[1] = challenge.getTitle(); params[2] = df.format(challenge.getVoteDate()); params[3] = currentUrlShort; return messageSource.getMessage("voting.open.warn", params, Locale.getDefault()); } public String getVotingCloseWarning(ChallengeSummary challenge) { Object[] params = new Object[4]; params[0] = challenge.getTag(); params[1] = challenge.getTitle(); params[2] = df.format(challenge.getEndDate()); params[3] = votingUrlShort; return messageSource.getMessage("voting.close.warn", params, Locale.getDefault()); } public String getWarnForCurrentTitle(String tag) { Object[] params = new Object[1]; params[0] = tag; return messageSource.getMessage("warn.current.title", params, Locale.getDefault()); } public String getWarnForCurrentBody(Set<ImageItemStatus> status) { StringBuffer message = new StringBuffer(); for (ImageItemStatus itemStatus : status) { StringBuffer imageLinks = new StringBuffer(); String sep = ""; for (ImageItem image : itemStatus.getImages()) { imageLinks.append(sep); imageLinks.append(image.getUrl()); sep = ", "; } Object[] params = new Object[2]; params[0] = itemStatus.getStatus().getDisplayTitle(); params[1] = imageLinks.toString(); message.append(messageSource.getMessage("warn.current.line", params, Locale.getDefault())); } return message.toString(); } public String generateFrontPageHtml(List<ImageItem> images) { StringBuffer message = new StringBuffer(); for (ImageItem item : images) { Object[] params = new Object[5]; params[0] = item.getPhotographer().getFullname() == null || "".equals(item.getPhotographer().getFullname()) ? item.getPhotographer().getUsername() : item.getPhotographer().getFullname(); params[1] = item.getChallenge().getTag(); params[2] = item.getChallenge().getTitle(); params[3] = item.getUrl(); params[4] = item.getImageUrl(); message.append(messageSource.getMessage("frontpage.line", params, Locale.getDefault())); } return message.toString(); } public String getFrontPageTitle() { return messageSource.getMessage("frontpage.title", new Object[0], Locale.getDefault()); } public String getNoChallengeWarning() { return messageSource.getMessage("challenge.missing", new Object[0], Locale.getDefault()); } public String getGoldBadgeUrl() { return goldBadgeUrl; } public String getSilverBadgeUrl() { return silverBadgeUrl; } public String getBronzeBadgeUrl() { return bronzeBadgeUrl; } }