/** * */ package jp.agentec.sinaburocast.action.admin.member; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import jp.agentec.sinaburocast.action.AbstractAction; import jp.agentec.sinaburocast.common.SinaburoConstant; import jp.agentec.sinaburocast.common.annotation.OperationHistoryAno; import jp.agentec.sinaburocast.common.io.FileUtil; 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.dto.MemberDetailDto; import jp.agentec.sinaburocast.entity.AdminUser; import jp.agentec.sinaburocast.entity.DeliveryGroup; import jp.agentec.sinaburocast.entity.Member; import jp.agentec.sinaburocast.entity.Prefecture; import jp.agentec.sinaburocast.form.admin.member.MemberSearchForm; import jp.agentec.sinaburocast.service.DeliveryGroupService; import jp.agentec.sinaburocast.service.EnqueteService; import jp.agentec.sinaburocast.service.MemberService; import jp.agentec.sinaburocast.service.PrefectureService; import org.apache.log4j.Logger; import org.apache.struts.Globals; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import org.apache.struts.util.TokenProcessor; import org.seasar.framework.beans.util.BeanUtil; import org.seasar.framework.util.StringUtil; import org.seasar.struts.annotation.ActionForm; import org.seasar.struts.annotation.Execute; import org.seasar.struts.util.RequestUtil; /** * * 会員検索 * @author kim-hs * */ public class MemberSearchAction extends AbstractAction { private final Logger logger = Logger.getLogger(getClass()); @ActionForm public MemberSearchForm memberSearchForm; public PrefectureService prefectureService; public MemberService memberService; public DeliveryGroupService deliveryGroupService; public EnqueteService enqueteService; /** * 初期表示 */ @Execute(validator = false, reset="clearAll") public String index() { //都道府県 List<Prefecture> prefectureList = new ArrayList<Prefecture>(); prefectureList = prefectureService.findAllOrderById(); session.setAttribute("prefectureList", prefectureList); String yy = SinaburoUtil.getTimeStringAs(SinaburoConstant.Formats.TIMESTAMP_FORMAT_YEAR); session.setAttribute("birthYYYY", Integer.parseInt(yy)); return "/admin/member/memberSearch.html"; } /** * 会員検索 */ @Execute(validator = false) public String memberSearch() { return "/admin/member/memberSearch.html"; } /** * 会員検索 */ @Execute(validator = true,input="/admin/member/memberSearch.html", reset="clearPage") public String memberSearchResult() { List<MemberDetailDto> memberList = new ArrayList<MemberDetailDto>(); memberList = memberService.findByMemberList(null, memberSearchForm.pageNo, memberSearchForm,false); session.setAttribute("memberList", memberList); if (memberList.size() == 0) { addError(SinaburoViewUtil.getMessage("info.I001")); return "/admin/member/memberSearch.html"; } session.setAttribute("memberSearchInfo", memberSearchForm); return "/admin/member/memberList.html"; } /** * 会員検索 */ @Execute(validator = false) public String memberSearchResultBack() { memberSearchForm = (MemberSearchForm)session.getAttribute("memberSearchInfo"); List<MemberDetailDto> memberList = new ArrayList<MemberDetailDto>(); memberList = memberService.findByMemberList(null, memberSearchForm.pageNo, memberSearchForm,false); session.setAttribute("memberList", memberList); return "/admin/member/memberList.html"; } /** * 会員検索Paging * @return */ @Execute(validator = false, urlPattern = "memberSearchResult/{pageNo}", reset="clearPage") public String memberSearchResultPage() { List<MemberDetailDto> memberList = new ArrayList<MemberDetailDto>(); memberList = memberService.findByMemberList(null, memberSearchForm.pageNo, memberSearchForm,false); session.setAttribute("memberList", memberList); session.setAttribute("memberSearchInfo", memberSearchForm); return "/admin/member/memberList.html"; } /** * 配信グループ登録確認 * @return */ @Execute(validator = true,input = "/admin/member/memberList.html") @OperationHistoryAno(operationTypeId=SinaburoConstant.OperationType.INSERT,target="配信グループ登録",detail="登録",screenId=SinaburoConstant.screenId.CMS0004) public String memberGroupConfirm() { // トークン発行 TokenProcessor.getInstance().saveToken(request); if (StringUtil.isBlank(memberSearchForm.groupName.trim())) { ActionMessages messages = (ActionMessages)request.getAttribute(Globals.ERROR_KEY); if (messages == null) { messages = new ActionMessages(); } messages.add("GroupName", new ActionMessage(SinaburoViewUtil.getMessage("errors.E023"))); request.setAttribute(Globals.ERROR_KEY, messages); return "/admin/member/memberList.html"; } // if (StringUtil.isBlank(memberSearchForm.groupMemo.trim())) { // addError(SinaburoViewUtil.getMessage("errors.E024")); // return "/admin/member/memberList.html"; // } // AdminUser adminUser = getAdmin(); // // DeliveryGroup deliveryGroup = new DeliveryGroup(); // // deliveryGroup.deliveryGroupName = memberSearchForm.groupName; // deliveryGroup.memo = memberSearchForm.groupMemo; // deliveryGroup.delFlg = 0; // // List<MemberDetailDto> list = // memberService.findByMemberList(null, memberSearchForm.pageNo, memberSearchForm,true); // // int result = deliveryGroupService.insertDeliveryGroup(deliveryGroup,list,adminUser.loginId); // // if(result < 1){ // addError(SinaburoViewUtil.getMessage("errors.S000")); // return "/admin/member/memberList.html"; // } MemberSearchForm form = new MemberSearchForm(); BeanUtil.copyProperties(memberSearchForm, form); session.setAttribute("memberSearchInfoBak", form); return "/admin/member/memberGroupConfirm.html"; } /** * 配信グループ登録 * @return */ @Execute(validator = true,input = "/admin/member/memberList.html", reset="clearPage") @OperationHistoryAno(operationTypeId=SinaburoConstant.OperationType.INSERT,target="配信グループ登録",detail="登録",screenId=SinaburoConstant.screenId.CMS0004) public String memberGroupRegist() { memberSearchForm = (MemberSearchForm)session.getAttribute("memberSearchInfoBak"); // トークン確認 if (!TokenProcessor.getInstance().isTokenValid(RequestUtil.getRequest(), true)) { return "/error/doubleAction.html"; } // if (StringUtil.isBlank(memberSearchForm.groupName.trim())) { // addError(SinaburoViewUtil.getMessage("errors.E023")); // return "/admin/member/memberList.html"; // } // if (StringUtil.isBlank(memberSearchForm.groupMemo.trim())) { // addError(SinaburoViewUtil.getMessage("errors.E024")); // return "/admin/member/memberList.html"; // } AdminUser adminUser = getAdmin(); DeliveryGroup deliveryGroup = new DeliveryGroup(); deliveryGroup.deliveryGroupName = memberSearchForm.groupName; deliveryGroup.memo = memberSearchForm.groupMemo; deliveryGroup.delFlg = 0; List<MemberDetailDto> list = memberService.findByMemberList(null, memberSearchForm.pageNo, memberSearchForm,true); int result = deliveryGroupService.insertDeliveryGroup(deliveryGroup,list,adminUser.loginId); if(result < 1){ addError(SinaburoViewUtil.getMessage("errors.S000")); return "/admin/member/memberList.html"; } return "/admin/member/memberGroupEnd.html"; } /** * 前の画面に遷移 * * @return */ @Execute(validator = false) public String back() { return "/admin/member/memberSearch.html"; } /** * 会員リストダウンロード * @return * @throws UnsupportedEncodingException * @throws Exception */ @Execute(validator = false) @OperationHistoryAno(operationTypeId=SinaburoConstant.OperationType.DOWNLOAD,target="会員リスト",detail="ダウンロード",screenId=SinaburoConstant.screenId.CMM0002) public String memberDownload() throws UnsupportedEncodingException, Exception { List<Member> list = memberService.findByMemberListCvs(memberSearchForm); int max=list.size(); int min=0; int count=1000; //String contents=null; String contents = enqueteService.getMemberDownloadContents(list.subList(min, Math.min(max,min+count)),true, true); String csvFileName = PropertyUtil.getProperty(SinaburoConstant.filePath.CSV_MAKE_FILE_PATH)+"member_list."+SinaburoConstant.FileType.TSV; do{ //20170508 SJIS文字化け対応 contents = SinaburoUtil.toSJIS(contents); FileUtil.writeFile(csvFileName,contents,"Windows-31J",min<=0 ?false: true); //char[] c = contents.toCharArray(); //for (int i = 0; i < c.length; i++) { //char d = c[i]; //if (d == '\uff0d') c[i] = '\u2212'; //} //FileUtil.writeFile(csvFileName,contents,"Shift_JIS",min<=0 ?false: true); if(min>=max){ break; } contents = enqueteService.getMemberDownloadContents(list.subList(Math.min(max,min+=count), Math.min(max,min+count)),true, false); }while(true); // ResponseUtil.download(URLEncoder.encode("member_list.tsv", "UTF-8"), contents.getBytes("Shift_JIS")); FileUtil.fileDownload(csvFileName, "UTF-8"); //response.setContentType("Content-Type content=\"text/html; charset=\"UTF-8\""); return null; } }