package jp.agentec.sinaburocast.action.admin.setting; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.annotation.Resource; import org.apache.log4j.Logger; import org.apache.struts.Globals; import org.apache.struts.action.ActionMessages; import org.apache.struts.util.TokenProcessor; import org.seasar.framework.util.StringUtil; import org.seasar.struts.annotation.ActionForm; import org.seasar.struts.annotation.Execute; import jp.agentec.sinaburocast.action.AbstractAction; import jp.agentec.sinaburocast.common.SinaburoConstant; import jp.agentec.sinaburocast.common.annotation.OperationHistoryAno; import jp.agentec.sinaburocast.common.util.PropertyUtil; import jp.agentec.sinaburocast.common.util.SinaburoUtil; import jp.agentec.sinaburocast.common.util.SinaburoViewUtil; import jp.agentec.sinaburocast.common.util.velocity.VelocityTool; import jp.agentec.sinaburocast.entity.GiftExchangeInfo; import jp.agentec.sinaburocast.entity.Message; import jp.agentec.sinaburocast.form.admin.setting.MessageRegistForm; import jp.agentec.sinaburocast.service.GiftExchangeInfoService; import jp.agentec.sinaburocast.service.MessageService; /** * メッセージ処理 * * @author arakawa * */ public class MessageRegistAction extends AbstractAction { private final Logger logger = Logger.getLogger(getClass()); private Integer ECOBO = 1; private Integer ICHICO = 2; @ActionForm public MessageRegistForm messageRegistForm; public MessageService messageService; public GiftExchangeInfoService giftExchangeInfoService; @Resource protected Map requestScope; /** * 初期表示 */ @Execute(validator = false) public String index() { messageRegistForm.messageCd = "1"; messageSearch(); return "/admin/setting/messageRegist.html"; } /** * 予約語 */ @Execute(validator = false) public String mailResevedPopup() { messageRegistForm.serverUrl = PropertyUtil.getString("ENQUETE_SERVER_URL"); return "/admin/setting/popup.html"; } /** * クリップボードを設定する。 */ @Execute(validator = false) public String setClipboard(){ VelocityTool.setClipboardString("%"+messageRegistForm.clipboard+"%"); return "/admin/setting/popup.html"; } /** * クリップボードを設定する。 */ @Execute(validator = false) public String setClipboardLink(){ VelocityTool.setClipboardString(messageRegistForm.clipboard); return "/admin/setting/popup.html"; } /** * メッセージ検索 */ @Execute(validator = false) public String messageSearch() { if (SinaburoConstant.MessageCode.POINT_USE_ECOBO == Integer.parseInt(messageRegistForm.messageCd) || SinaburoConstant.MessageCode.POINT_USE_ICHICO == Integer.parseInt(messageRegistForm.messageCd)){ GiftExchangeInfo giftExchangeInfo = new GiftExchangeInfo(); if(SinaburoConstant.MessageCode.POINT_USE_ECOBO == Integer.parseInt(messageRegistForm.messageCd)) { giftExchangeInfo = giftExchangeInfoService.findGiftExchangeInfoById(ECOBO); }else { giftExchangeInfo = giftExchangeInfoService.findGiftExchangeInfoById(ICHICO); } if (giftExchangeInfo != null){ messageRegistForm.startDate = SinaburoUtil.convertStringDateToFormat(giftExchangeInfo.startDate, SinaburoConstant.datePikerSign.signSlash); messageRegistForm.endDate = SinaburoUtil.convertStringDateToFormat(giftExchangeInfo.endDate,SinaburoConstant.datePikerSign.signSlash); messageRegistForm.expiredMessage = giftExchangeInfo.expiredMessage; messageRegistForm.linkText = giftExchangeInfo.linkText; messageRegistForm.message = giftExchangeInfo.message; messageRegistForm.mailBody = giftExchangeInfo.mailBody; }else{ messageRegistForm.expiredMessage = ""; messageRegistForm.linkText = ""; messageRegistForm.message = ""; messageRegistForm.mailBody = ""; } } else { Message info = messageService.findById(Integer.parseInt(messageRegistForm.messageCd)); if (info != null){ messageRegistForm.message = info.message; }else{ messageRegistForm.message = ""; } } return "/admin/setting/messageRegist.html"; } /** * メッセージ登録確認 */ @Execute(validator = true, validate="messageRegistConfirmValidate", input="/admin/setting/messageRegist.html") public String messageRegistConfirm() { TokenProcessor.getInstance().saveToken(request); return "/admin/setting/messageRegistConfirm.html"; } /** * メッセージ登録 */ @Execute(validator = true, input="/admin/setting/messageRegistConfirm.html") @OperationHistoryAno(operationTypeId=SinaburoConstant.OperationType.UPDATE,target="メッセージマスタ",detail="登録",screenId=SinaburoConstant.screenId.COS0005) public String messageRegist() { // トークン確認 if (!TokenProcessor.getInstance().isTokenValid(request, true)) { return "/error/doubleAction.html"; } if (SinaburoConstant.MessageCode.POINT_USE_ECOBO == Integer.parseInt(messageRegistForm.messageCd) || SinaburoConstant.MessageCode.POINT_USE_ICHICO == Integer.parseInt(messageRegistForm.messageCd)){ GiftExchangeInfo info = new GiftExchangeInfo(); if(SinaburoConstant.MessageCode.POINT_USE_ECOBO == Integer.parseInt(messageRegistForm.messageCd)) { info = giftExchangeInfoService.findGiftExchangeInfoById(ECOBO); }else { info = giftExchangeInfoService.findGiftExchangeInfoById(ICHICO); } if (info == null){ GiftExchangeInfo giftExchangeInfo = new GiftExchangeInfo(); giftExchangeInfo.startDate = messageRegistForm.startDate.replace("/", ""); giftExchangeInfo.endDate = messageRegistForm.endDate.replace("/", ""); giftExchangeInfo.linkText = messageRegistForm.linkText; giftExchangeInfo.message = messageRegistForm.message; giftExchangeInfo.expiredMessage = messageRegistForm.expiredMessage; giftExchangeInfo.mailBody=messageRegistForm.mailBody; giftExchangeInfoService.insertGiftExchangeInfo(giftExchangeInfo, getAdmin()); }else{ GiftExchangeInfo giftExchangeInfo = info; giftExchangeInfo.startDate = messageRegistForm.startDate.replace("/", ""); giftExchangeInfo.endDate = messageRegistForm.endDate.replace("/", ""); giftExchangeInfo.linkText = messageRegistForm.linkText; giftExchangeInfo.message = messageRegistForm.message; giftExchangeInfo.expiredMessage = messageRegistForm.expiredMessage; giftExchangeInfo.updateDate = SinaburoUtil.getTimestamp(); giftExchangeInfo.upId = getAdmin().loginId; giftExchangeInfo.mailBody=messageRegistForm.mailBody; giftExchangeInfoService.update(giftExchangeInfo); } } else { Message info = messageService.findById(Integer.parseInt(messageRegistForm.messageCd)); if (info == null){ Message message = new Message(); message.messageCd = Integer.parseInt(messageRegistForm.messageCd); message.message = messageRegistForm.message; messageService.insertMessage(message,getAdmin()); }else{ Message message = info; message.message = messageRegistForm.message; message.updateDate = SinaburoUtil.getTimestamp(); message.upId = getAdmin().loginId; messageService.update(message); } } return "/admin/setting/messageRegistEnd.html"; } /** * * @return エラーメッセージを変換する。 */ public ActionMessages messageRegistConfirmValidate(){ if (SinaburoConstant.MessageCode.PASS_WORD_CONFIRM == Integer.parseInt(messageRegistForm.messageCd)){ Pattern pattern = Pattern.compile("\\{(.*)\\}",Pattern.MULTILINE); Matcher matcher = pattern.matcher(messageRegistForm.message); while (matcher.find()) { if (!"0".equals(matcher.group(1).trim())){ addErrorMessage("message", "errors.invalid",SinaburoViewUtil.getMessage("labels.message")); break; } } } if (StringUtil.isBlank(messageRegistForm.message)){ addErrorMessage("message", "errors.required",SinaburoViewUtil.getMessage("labels.message")); } if (SinaburoConstant.MessageCode.POINT_USE_ECOBO == Integer.parseInt(messageRegistForm.messageCd) || SinaburoConstant.MessageCode.POINT_USE_ICHICO == Integer.parseInt(messageRegistForm.messageCd)){ if (StringUtil.isBlank(messageRegistForm.startDate)){ addErrorMessage("dateError", "errors.required",SinaburoViewUtil.getMessage("labels.gift.startDate")); } if (StringUtil.isBlank(messageRegistForm.endDate)){ addErrorMessage("dateError", "errors.required",SinaburoViewUtil.getMessage("labels.gift.endDate")); } if (StringUtil.isBlank(messageRegistForm.linkText)){ addErrorMessage("linkText", "errors.required",SinaburoViewUtil.getMessage("labels.linkText")); } if (StringUtil.isBlank(messageRegistForm.expiredMessage)){ addErrorMessage("expiredMessage", "errors.required",SinaburoViewUtil.getMessage("labels.expiredMessage")); } if (StringUtil.isBlank(messageRegistForm.mailBody)){ addErrorMessage("mailBody", "errors.required",SinaburoViewUtil.getMessage("labels.expiredMailBody")); } } return (ActionMessages)request.getAttribute(Globals.ERROR_KEY); } }