RequestStatusController.java 5.5 KB
Newer Older
H
hot13399 已提交
1
package com.spring.mvc.mini.web;
H
hot13399 已提交
2 3 4 5 6 7

import java.util.ArrayList;

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

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

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

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

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

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

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

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

H
hot13399 已提交
144
	private boolean isMocridEquals(@ModelAttribute("requestStatus") RequestStatus requestStatus, Model model, ArrayList<RequestStatus> mrsList) {
H
hot13399 已提交
145 146 147
		boolean boo = false;
		for(RequestStatus mrs:mrsList){

H
hot13399 已提交
148
            if(mrs.getmocrid() == requestStatus.getmocrid()){
H
hot13399 已提交
149

H
hot13399 已提交
150
                model.addAttribute("requestStatus", mrs);
H
hot13399 已提交
151 152 153 154 155 156 157
                boo = true;
            }
        }
		return boo;
	}

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

}