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

import java.util.ArrayList;

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

H
hot13399 已提交
10
import com.spring.mvc.mini.pojo.RequestStatus;
H
hot13399 已提交
11 12 13 14 15 16 17 18 19 20 21 22 23
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;

H
hot13399 已提交
24 25
import com.spring.mvc.mini.json.RequestStatusJsonMapping;
import com.spring.mvc.mini.mail.MailSender;
H
hot13399 已提交
26
import com.spring.mvc.mini.pojo.RequestStatusListType;
H
hot13399 已提交
27
import com.spring.mvc.mini.pojo.UserInfo;
H
hot13399 已提交
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47

@Controller
@RequestMapping("/requeststatus")
//@SessionAttributes({"requeststatus"} )
public class RequestStatusController {
	
	static Logger LOGGER = LoggerFactory.getLogger(RequestStatusController.class);
	
	@Autowired
	RequestStatusJsonMapping rsjm;
	
	@Autowired
	MailSender ms;
	
	@ModelAttribute
	public void ajaxAttribute(WebRequest request, Model model) {
		model.addAttribute("ajaxRequest", AjaxUtils.isAjaxRequest(request));
	}
	
//	@ModelAttribute("requeststatus")
H
hot13399 已提交
48 49
//	public miniequestStatus createRequestStatus() {
//		return new miniequestStatus();
H
hot13399 已提交
50 51 52 53
//	}
	
	@RequestMapping(method = RequestMethod.GET)
	public void objectClassForm(Model model) {
H
hot13399 已提交
54
		model.addAttribute("miniequeststatus", new RequestStatus());
H
hot13399 已提交
55 56 57 58 59
	}
	
	@RequestMapping(params={"mocrid"},method=RequestMethod.GET)
	public void objectClassFormWithParam(@RequestParam String mocrid, Model model) {
		
H
hot13399 已提交
60
		ArrayList<RequestStatus> mrsList = rsjm.readStatus();
H
hot13399 已提交
61
		
H
hot13399 已提交
62
		for(RequestStatus mrs:mrsList){
H
hot13399 已提交
63
			
H
hot13399 已提交
64 65 66
			if(mrs.getmocrid() == Integer.parseInt(mocrid)){
				LOGGER.debug("mrs.getmocrid() is:"+mrs.getmocrid());
				model.addAttribute("miniequeststatus", mrs);
H
hot13399 已提交
67 68 69 70 71 72
			}
		}
		
	}

	@RequestMapping(method=RequestMethod.POST)
H
hot13399 已提交
73
	public String processSubmit(@ModelAttribute("miniequeststatus") RequestStatus miniequeststatus,
H
hot13399 已提交
74 75 76
								@ModelAttribute("ajaxRequest") boolean ajaxRequest, 
								Model model, RedirectAttributes redirectAttrs) {
		
H
hot13399 已提交
77 78
		if(miniequeststatus.getObjectClassListType() == null){
			ArrayList<RequestStatus> mrsList = rsjm.readStatus();
H
hot13399 已提交
79 80
			
			boolean boo = false;
H
hot13399 已提交
81
			for(RequestStatus mrs:mrsList){
H
hot13399 已提交
82
				
H
hot13399 已提交
83
				if(mrs.getmocrid() == miniequeststatus.getmocrid()){
H
hot13399 已提交
84
					
H
hot13399 已提交
85
					model.addAttribute("miniequeststatus", mrs);
H
hot13399 已提交
86 87 88 89 90
					boo = true;
				}
			}
			
			if (boo){
H
hot13399 已提交
91
				model.addAttribute("message", "SUCCESS:MO CR ID:"+miniequeststatus.getmocrid()+" is presenting.");
H
hot13399 已提交
92 93
				return null;
			} else {
H
hot13399 已提交
94
				model.addAttribute("miniequeststatus", new RequestStatus());
H
hot13399 已提交
95
				model.addAttribute("message", "FAILED:MO CR ID:"+miniequeststatus.getmocrid()+" is not existing.");
H
hot13399 已提交
96 97 98
			}
		}
		
H
hot13399 已提交
99
		ArrayList<RequestStatus> mrsl =  rsjm.readStatus();
H
hot13399 已提交
100 101
		
		int index = 0;
H
hot13399 已提交
102
		for (RequestStatus item:mrsl){
H
hot13399 已提交
103
			if(item.getmocrid() == miniequeststatus.getmocrid()){
H
hot13399 已提交
104 105 106 107 108
				index = mrsl.indexOf(item);
				break;
			}
		}
		
H
hot13399 已提交
109
		mrsl.get(index).setComments(miniequeststatus.getComments());
H
hot13399 已提交
110
		mrsl.get(index).setObjectClassListType(miniequeststatus.getObjectClassListType());
H
hot13399 已提交
111
		
H
hot13399 已提交
112
		RequestStatusListType mrslt = new RequestStatusListType();
H
hot13399 已提交
113
		
H
hot13399 已提交
114
		mrslt.setRequestStatuses(mrsl);
H
hot13399 已提交
115 116 117 118 119 120
		rsjm.writeStatus(mrslt);
		
		LOGGER.debug(mrslt.toString());
		
		StringBuffer subjectsb = new StringBuffer();
		subjectsb.append("MO CR:");
H
hot13399 已提交
121
		subjectsb.append(miniequeststatus.getmocrid());
H
hot13399 已提交
122 123 124 125
		subjectsb.append(" Updated");
		
		StringBuffer textsb = new StringBuffer();
		textsb.append("New Comments: \r\n");
H
hot13399 已提交
126
		textsb.append(miniequeststatus.getComments());
H
hot13399 已提交
127 128 129
		textsb.append(" \r\n");
		
		try {
H
hot13399 已提交
130
			if(!mrsl.get(index).getObjectClassListType().equals(miniequeststatus.getObjectClassListType())){
H
hot13399 已提交
131
				textsb.append("Object Classes updated: \r\n");
H
hot13399 已提交
132
				textsb.append(miniequeststatus.getObjectClassListType().toString());
H
hot13399 已提交
133 134
			}
			
H
hot13399 已提交
135 136
			textsb.append("http://localhost:8080/spring-mvc-mini/requeststatus?mocrid=");
			textsb.append(miniequeststatus.getmocrid());
H
hot13399 已提交
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
			textsb.append(" \r\n");
			textsb.append(" \r\n");
		
			this.commentAndSendMail(mrsl.get(index).getUserinfo(), subjectsb.toString(), textsb.toString());
		} catch (MessagingException e) {
			model.addAttribute("message", e.toString());
			return null;
		} catch (NullPointerException e){
			model.addAttribute("message", "FAILED:The MO CR id is not existing!");
			return null;	
		}

		String message = "Your update was submitted.";
		
		// Success response handling
		if (ajaxRequest) {
			// prepare model for rendering success message in this request
			model.addAttribute("message", message);
			return null;
		} else {
			// store a success message for rendering on the next request after redirect
			// redirect back to the form to render the success message along with newly bound values
			//			redirectAttrs.addFlashAttribute("message", message);
			return "redirect:/requeststatus";			
		}
	}
	
	public void commentAndSendMail(UserInfo userinfo ,String subject, String text) throws AddressException, MessagingException{
		
		Address[] toAddress = {new InternetAddress(userinfo.getEmail())};
		
		ms.sendMail(userinfo.getUsername(), userinfo.getPassword(), userinfo.getEmail(),toAddress, subject, text);
	}

}