package org.zhios.website.admin.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.zhios.website.admin.model.NewsManager;
import org.zhios.website.admin.model.UserManager;

/**
 * Servlet implementation class Test
 */
@WebServlet("/Test")
public class NewsEditorSL extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public NewsEditorSL() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		request.setCharacterEncoding("UTF-8");

		//check user.
		if(!UserManager.checkUser(request.getSession(false))){
			response.sendRedirect("error?id=err104");
			return;
		}
		
		NewsManager ne=new NewsManager();
		
		try {
			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
			DocumentBuilder builder = factory.newDocumentBuilder(); 
			Document doc = builder.parse(request.getInputStream());
			
			String eventname=doc.getElementsByTagName("eventname").item(0).getTextContent();
			String resultstr="";
			if(eventname.equals("addnews")){
				String packagepath=doc.getElementsByTagName("packagepath").item(0).getTextContent();
				String newtitle=doc.getElementsByTagName("newtitle").item(0).getTextContent();
				String forminner=doc.getElementsByTagName("forminner").item(0).getTextContent();
				
				forminner=forminner.replaceAll("\n", "\r\n");	//DOMDocument will change "\r\n" into "\n". so it should be change back.
	
				resultstr=ne.AddNews(packagepath,newtitle,forminner);
			}
			else if(eventname.equals("delnews")){
				String packagepath=doc.getElementsByTagName("packagepath").item(0).getTextContent();
				String newslist=doc.getElementsByTagName("newslist").item(0).getTextContent();
				
				resultstr=ne.DeleteFiles(packagepath,newslist);
			}
			else if(eventname.equals("getnewsform")){
				String packagepath=doc.getElementsByTagName("packagepath").item(0).getTextContent();
				String filename=doc.getElementsByTagName("filename").item(0).getTextContent();
				
				resultstr=ne.GetNewsForm(packagepath,filename);
			}
			else if(eventname.equals("editnews")){
				String packagepath=doc.getElementsByTagName("packagepath").item(0).getTextContent();
				String filename=doc.getElementsByTagName("filename").item(0).getTextContent();
				String newtitle=doc.getElementsByTagName("newtitle").item(0).getTextContent();
				String forminner=doc.getElementsByTagName("forminner").item(0).getTextContent();
				
				resultstr=ne.EditNews(packagepath, filename, newtitle, forminner);
			}
			else if(eventname.equals("updatepages")){
				String packagepath=doc.getElementsByTagName("packagepath").item(0).getTextContent();
				
				if(ne.UpdatePages(packagepath)) resultstr="true";
				else resultstr="false";
			}
			else{}

			response.setContentType("text/html;charset=utf-8");
			PrintWriter out = response.getWriter();
			out.println(resultstr);
			out.flush();
			out.close();
			
		}catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
