RequestStatusController.java 5.6 KB
Newer Older
H
hot13399 已提交
1
package com.spring.mvc.mini.web;
H
hot13399 已提交
2

3
import java.util.List;
H
hot13399 已提交
4 5 6 7

import javax.mail.Address;
import javax.mail.internet.InternetAddress;

H
hot13399 已提交
8
import com.spring.mvc.mini.pojo.RequestStatus;
H
hot13399 已提交
9 10 11 12 13 14 15 16 17 18 19 20 21
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mvc.extensions.ajax.AjaxUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

22
import com.spring.mvc.mini.json.RequestStatusJsonParser;
H
hot13399 已提交
23
import com.spring.mvc.mini.mail.MailSender;
H
hot13399 已提交
24
import com.spring.mvc.mini.pojo.RequestStatusListType;
H
hot13399 已提交
25
import com.spring.mvc.mini.pojo.UserInfo;
H
hot13399 已提交
26 27 28 29

@Controller
@RequestMapping("/requeststatus")
public class RequestStatusController {
H
hot13399 已提交
30 31

	private static final Logger LOGGER = LoggerFactory.getLogger(RequestStatusController.class);
32 33
	private static final String REQUEST_STATUS = "requestStatus";
	private static final String MESSAGE = "message";
H
hot13399 已提交
34 35
	
	@Autowired
H
hot13399 已提交
36
	private RequestStatusJsonParser requestStatusJsonParser;
H
hot13399 已提交
37 38
	
	@Autowired
H
hot13399 已提交
39
	private MailSender mailSender;
H
hot13399 已提交
40 41 42 43 44 45 46
	
	@ModelAttribute
	public void ajaxAttribute(WebRequest request, Model model) {
		model.addAttribute("ajaxRequest", AjaxUtils.isAjaxRequest(request));
	}
	
	@RequestMapping(method = RequestMethod.GET)
H
hot13399 已提交
47
	public void handleObjectClassForm(Model model) {
48
		model.addAttribute(REQUEST_STATUS, new RequestStatus());
H
hot13399 已提交
49 50 51
	}
	
	@RequestMapping(params={"mocrid"},method=RequestMethod.GET)
H
hot13399 已提交
52
	public void enrichObjectClassFormWithParam(@RequestParam String mocrid, Model model) {
H
hot13399 已提交
53
		
54
		List<RequestStatus> mrsList = requestStatusJsonParser.readStatus();
H
hot13399 已提交
55
		
H
hot13399 已提交
56
		for(RequestStatus mrs:mrsList){
H
hot13399 已提交
57
			
H
hot13399 已提交
58 59
			if(mrs.getmocrid() == Integer.parseInt(mocrid)){
				LOGGER.debug("mrs.getmocrid() is:"+mrs.getmocrid());
60
				model.addAttribute(REQUEST_STATUS, mrs);
H
hot13399 已提交
61 62 63 64 65 66
			}
		}
		
	}

	@RequestMapping(method=RequestMethod.POST)
67
	public String submit(@ModelAttribute(REQUEST_STATUS) RequestStatus requestStatus,
H
hot13399 已提交
68 69
						 @ModelAttribute("ajaxRequest") boolean ajaxRequest,
						 Model model, RedirectAttributes redirectAttrs) {
H
hot13399 已提交
70
		
H
hot13399 已提交
71
		if(requestStatus.getObjectClassesType() == null){
72
			List<RequestStatus> mrsList = requestStatusJsonParser.readStatus();
H
hot13399 已提交
73
			
H
hot13399 已提交
74
			if (isMocridEquals(requestStatus, model, mrsList)){
75
				model.addAttribute(MESSAGE, "SUCCESS:MO CR ID:"+requestStatus.getmocrid()+" is presenting.");
H
hot13399 已提交
76 77
				return null;
			} else {
78 79
				model.addAttribute(REQUEST_STATUS, new RequestStatus());
				model.addAttribute(MESSAGE, "FAILED:MO CR ID:"+requestStatus.getmocrid()+" is not existing.");
H
hot13399 已提交
80 81 82
			}
		}
		
83
		List<RequestStatus> requestStatuses =  requestStatusJsonParser.readStatus();
H
hot13399 已提交
84 85
		
		int index = 0;
H
hot13399 已提交
86
		for (RequestStatus item:requestStatuses){
H
hot13399 已提交
87
			if(item.getmocrid() == requestStatus.getmocrid()){
H
hot13399 已提交
88
				index = requestStatuses.indexOf(item);
H
hot13399 已提交
89 90 91 92
				break;
			}
		}
		
H
hot13399 已提交
93 94
		requestStatuses.get(index).setComments(requestStatus.getComments());
		requestStatuses.get(index).setObjectClassesType(requestStatus.getObjectClassesType());
H
hot13399 已提交
95
		
H
hot13399 已提交
96
		RequestStatusListType type = new RequestStatusListType();
H
hot13399 已提交
97
		
H
hot13399 已提交
98 99
		type.setRequestStatuses(requestStatuses);
		requestStatusJsonParser.writeStatus(type);
H
hot13399 已提交
100
		
H
hot13399 已提交
101 102
		LOGGER.debug(type.toString());

H
hot13399 已提交
103
		try {
H
hot13399 已提交
104
			this.commentAndSendMail(requestStatuses.get(index).getUserinfo(), constructMailSubject(requestStatus), constructMailText(requestStatus, requestStatuses, index));
H
hot13399 已提交
105
		} catch (Exception e) {
106
			model.addAttribute(MESSAGE, e.toString());
H
hot13399 已提交
107 108 109 110 111 112
			return null;
		}

		String message = "Your update was submitted.";
		
		if (ajaxRequest) {
113
			model.addAttribute(MESSAGE, message);
H
hot13399 已提交
114 115 116 117 118
			return null;
		} else {
			return "redirect:/requeststatus";			
		}
	}
H
hot13399 已提交
119

120
	private String constructMailText(@ModelAttribute(REQUEST_STATUS) RequestStatus requestStatus, List<RequestStatus> requestStatuses, int index) {
121
		StringBuilder textsb = new StringBuilder();
H
hot13399 已提交
122
		textsb.append("New Comments: \r\n");
H
hot13399 已提交
123
		textsb.append(requestStatus.getComments());
H
hot13399 已提交
124 125
		textsb.append(" \r\n");

H
hot13399 已提交
126
		if(!requestStatuses.get(index).getObjectClassesType().equals(requestStatus.getObjectClassesType())){
H
hot13399 已提交
127
			textsb.append("Object Classes updated: \r\n");
H
hot13399 已提交
128
			textsb.append(requestStatus.getObjectClassesType().toString());
H
hot13399 已提交
129 130 131
		}

		textsb.append("http://localhost:8080/spring-mvc-mini/requeststatus?mocrid=");
H
hot13399 已提交
132
		textsb.append(requestStatus.getmocrid());
H
hot13399 已提交
133 134 135 136 137
		textsb.append(" \r\n");
		textsb.append(" \r\n");
		return textsb.toString();
	}

138
	private String constructMailSubject(@ModelAttribute(REQUEST_STATUS) RequestStatus requestStatus) {
139
		StringBuilder subjectsb = new StringBuilder();
H
hot13399 已提交
140
		subjectsb.append("MO CR:");
H
hot13399 已提交
141
		subjectsb.append(requestStatus.getmocrid());
H
hot13399 已提交
142 143 144 145
		subjectsb.append(" Updated");
		return subjectsb.toString();
	}

146
	private boolean isMocridEquals(@ModelAttribute(REQUEST_STATUS) RequestStatus requestStatus, Model model, List<RequestStatus> mrsList) {
H
hot13399 已提交
147 148 149
		boolean boo = false;
		for(RequestStatus mrs:mrsList){

H
hot13399 已提交
150
            if(mrs.getmocrid() == requestStatus.getmocrid()){
H
hot13399 已提交
151

152
                model.addAttribute(REQUEST_STATUS, mrs);
H
hot13399 已提交
153 154 155 156 157 158 159
                boo = true;
            }
        }
		return boo;
	}

	public void commentAndSendMail(UserInfo userinfo ,String subject, String text) throws Exception{
H
hot13399 已提交
160 161 162
		
		Address[] toAddress = {new InternetAddress(userinfo.getEmail())};
		
H
hot13399 已提交
163
		mailSender.sendMail(userinfo.getUsername(), userinfo.getPassword(), userinfo.getEmail(), toAddress, subject, text);
H
hot13399 已提交
164 165 166
	}

}