import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.etri.groupware.*;
import com.etri.groupware.bbs.*;
import com.etri.groupware.organization.*;

public class ClubManagerServlet extends HttpServlet{

	GroupwareControllerInterface groupwareController=null;
	BBSControllerInterface bbsController = null;
	ResultStatus bbsResultStatus = null;
	Properties pro=null;
	OrganizationManagementControllerInterface omc = null;
	
	public void init(ServletConfig sc) throws ServletException
	{
		super.init(sc);
		
		//그룹웨어 컨트롤러를 생성한다.
		//먼저 프라퍼티를 생성한다.
		pro = new Properties();

		//DB매너저 구현 클래스 이름 설정
		pro.put("OrganizationDBManagerClassName", "PandaSoftOrganizationDBManager");
		pro.put("BBSDBManagerClassName", "PandaSoftBBSDBManager");
		pro.put("EDADBManagerClassName", "PandaSoftEDADBManager");
		pro.put("MailDBManagerClassName", "PandaSoftMailDBManger");
		
		try
		{
			groupwareController = GroupwareController.init( pro );
			System.out.println("그룹웨어 컨트롤러 생성을 마쳤습니다.");
			
			//게시판 관리 컨트롤러를 가져온다.
			bbsController = groupwareController.createBBSController();
			System.out.println("게시판 컨트롤러 생성도 무사히 마쳤습니다.");
		}
		catch(Exception e)
		{ System.out.println( e.toString() );}
	}
	
	public void destroy()
	{
		super.destroy();
		DBConnectionManager.instance.release();
		System.out.println("destory 끝...");
	}
	
	/*----------------------------------------------------------------- */
	/**
	 [메소드이름]: doGet<br>
	 [기능]: 동아리와 동아리 게시판의 이름변경과 삭제를 서블릿<br>
	 [파라미터]: HttpServletRequest req, HttpServletResponse res<br>
	 [호출자] : 사용자<br>
	 */
	/*--------------------------------------------------------------- */			
	public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
	{
		// session 확인하는곳....		
		HttpSession session = req.getSession(true);
		
		boolean authentication = false ;
		String kind = null ;
		String id = null ;
		String name = null ;
		
		if ((session.isNew()))
		{
			session.invalidate();
			res.sendRedirect("../Login.html");
		}
	    else if(session.getValue("Authentication").equals("true")){
	    	authentication = true;
            kind = (String)session.getValue("Kind");
            id = (String)session.getValue("Id");
            name = (String)session.getValue("Name");          
       }
       else {
            session.invalidate();
            res.sendRedirect("../Login.html");
       }
	   // session 확인 끝!!!			*/

		res.setContentType("text/html; charset=euc-kr");
		// 캐쉬를 못하도록..
		res.setHeader("cache-control", "no-cache");
		PrintWriter out = new PrintWriter(new OutputStreamWriter(res.getOutputStream(), "EUC-KR"));

		out.println("<html>");
		
		out.println("<head>");
		out.println("<title>게시판 만들기</title>");
		
		out.println("<script language=\"JavaScript\">");
		out.println("<!--");
		
		out.println("");
		// 선택된 게시판의 부서, 팀, 이름을 보여준다.
		out.println("function show()");
		out.println("{ ");
		out.println("	var temp = document.form1.boardName.value ;");
		out.println("	var one = temp.indexOf('부', 0); ");
		out.println("	var two = temp.indexOf('팀', one); ");
		out.println("	if ( one == -1 )");
		out.println("	{");
		out.println("		document.form1.Department.value = temp.substring ( 0, two);");
		out.println("	}");
		out.println("	else");
		out.println("	{");
		out.println("		document.form1.Department.value = temp.substring( 0, one+1 );");
		out.println("	}");
		out.println("	document.form1.BoardName.value = temp.substring( two+1 );");		
		out.println("	document.form1.old.value = temp;");
		out.println("}");
		out.println("");

		out.println("function deleteBoard( form )");
		out.println("{");
		out.println("	if ( form.Department.value.length == 0)	alert( '동아리이름이 없습니다.' );");
		out.println("	else if ( form.BoardName.value.length == 0 ) alert( '게시판이름이 없습니다.' );");
		out.println("	else {");
		out.println("		var de = confirm('동아리게시판 및 동아리가 삭제됩니다. \\n\\n삭제하시겠습니까?');");
		out.println("		if ( de )	{");
		out.println("			form.type.value = 'delete';");
		out.println("			form.submit();	}");
		out.println("		else alert( '동아리 및 동아리 게시판 삭제가 취소되었습니다.');");
		out.println("	}");
		out.println("}");

		out.println("function renameBoard( form )");
		out.println("{");
		out.println("	var old = form.boardName.value.substring( form.boardName.value.indexOf('팀') +1 );");
		out.println("	var name = form.BoardName.value ;");		
		out.println("	if ( form.Department.value.length == 0)	alert( '동아리이름이 없습니다.' );");
		out.println("	else if ( old ==  name ) alert(\"새로운 동아리 이름을 입력하십시요.\"); "); 
		out.println("	else ");
		out.println("	{");
		out.println("		var re = confirm('석택된 동아리의 전데이타는 새로운이름 모두 변경됩니다. \\n\\n이름 변경 하시겠습니까?');");
		out.println("		if ( re )	{ ");
		out.println("			form.type.value = 'rename';");
		out.println("			form.submit();	}");
		out.println("		else alert( '동아리 이름변경이 취소되었습니다.');");		
		out.println("	}");		
		out.println("}");

		out.println("//-->");		
		out.println("</script>");
		
		out.println("</head>");		
		

		out.println("<basefont size=2>");
		out.println( "<body bgcolor=white text=\"#0000FF\" link=\"#0000FF\" alink=\"#FF2020\" vlink=\"#000000\" onload='show()'>" ) ;
		
		// 게시판 우측에 들어가는 이미지...
		out.println("<p align=right><img src='../image/우측_게시판.gif'></p>");		
		
		// 타이틀....
		out.println("<p align=\"center\"><font size=\"4\" color=\"gray\"><b>동아리 관리</b></font>");
		out.println("<hr width=500><br></p>");

		out.println("<form name=form1 method=\"POST\" action=\"/servlet/ClubManagerServlet\">");
		
		// 테이블 시작..
		out.println("<table align=\"center\" cellpadding=\"1\" width=500>");
		// 게시판 시작하면 보여주는 처음 화면 설정
		
		// 테이블 색상을 넣는곳..
		String option1 = "bgcolor = \"#C7E4FF\" width=250";			// 첫열
		String option2 = "";				// 두번째 열

		out.println("  <tr>");
		out.println("     <td " + option1 + "><font size=2>동아리을 선택하세요.</font></td>");
		out.println("     <td " + option2 + "><select style='width=165pt;' name=\"boardName\" onChange='show();'> ");
			
		// 데이타 베이스에서 조직도 트리의 내용 즉, 부서와 팀을 가져온다.
		String[][][] bbsTree = bbsController.getBBStree ( ) ;
		for ( int o=0 ; !(bbsTree[o][0][0].equals("null")) ; o++ ) 
		{
			if ( bbsTree[o][0][0].equals("동아리") )
			{				
				for ( int p=1 ; !(bbsTree[o][p][0].equals("null")) ; p++ )
				{
					for ( int q=1 ; !(bbsTree[o][p][q].equals("null")) ; q++ )
					{
						out.println("<option value='" + bbsTree[o][p][q]+ "'>"+ bbsTree[o][p][q].substring( bbsTree[o][p][q].indexOf( "팀" )+ 1 ) +"</option> ");
					}
				}
				break;
			}
		}

		out.println("</select></td>");
		out.println("  </tr>");					

		out.println("  <tr>");
		out.println("    <td  " + option1 + "><font size=2>동아리 이름 </font></td>");
		out.println("    <td " + option2 + "><input type=text size=30 name=\"BoardName\"></td>");
		out.println("  </tr>");

		out.println("</table>");
		out.println("<p align=center><hr width=500></p>");
		
		out.println("<input type=hidden name=\"Department\" >");							
		out.println("<input type=hidden name=type>");
		out.println("<input type=hidden name=old>");

		out.println("  <p align=center><font size=\"2\">");
		out.println("	<input type=\"button\" value=\" 삭  제 \" onClick='deleteBoard( this.form );'> ");
		out.println("	<input type=\"button\" value=\" 이름변경 \" onClick='renameBoard( this.form);'> ");
		out.println("	<input type=\"button\" value=\"원래대로\" onClick='show()'></font></p>");
		out.println("</form>");
		
		out.println("<br><br>");		

		out.println("</body>");
		out.println("</html>");
		
		out.close();
		
	}

	/*----------------------------------------------------------------- */
	/**
	 [메소드이름]: doPost<br>
	 [기능]: 동아리와 동아리 게시판의 이름변경과 삭제를 서블릿<br>
	 [파라미터]: HttpServletRequest req, HttpServletResponse res<br>
	 [호출자] : 사용자<br>
	 */
	/*--------------------------------------------------------------- */			
	public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
	{
		// session 확인하는곳....		
		HttpSession session = req.getSession(true);
		
		boolean authentication = false ;
		String kind = null ;
		String id = null ;
		String name = null ;
		
		if ((session.isNew()))
		{
			session.invalidate();
			res.sendRedirect("../Login.html");
		}
	    else if(session.getValue("Authentication").equals("true")){
	    	authentication = true;
            kind = (String)session.getValue("Kind");
            id = (String)session.getValue("Id");
            name = (String)session.getValue("Name");          
       }
       else {
            session.invalidate();
            res.sendRedirect("../Login.html");
       }
	   // session 확인 끝!!!

		res.setContentType("text/html; charset=euc-kr");
		PrintWriter out = new PrintWriter(new OutputStreamWriter(res.getOutputStream(),"EUC-KR"));

		String Department = req.getParameterValues("Department")[0];
		Department = new String ( Department.getBytes("ISO-8859-1"), "EUC-KR");
		System.out.println( Department +"<br>" );
	
		String BoardName = req.getParameterValues("BoardName")[0];
		BoardName = new String ( BoardName.getBytes("ISO-8859-1"), "EUC-KR");
		System.out.println( BoardName +"<br>");

		String type = req.getParameterValues("type")[0];
		type= new String ( type.getBytes("ISO-8859-1"), "EUC-KR");
		System.out.println( type +"<br>");

		String oldbbsID = req.getParameterValues("old")[0];
		oldbbsID = new String ( oldbbsID.getBytes("ISO-8859-1"), "EUC-KR");
		System.out.println( oldbbsID +"<br>");		
			
		// 게시판이름은 부서+팀+boardname 까지 입니다..
		String bbsID = oldbbsID.substring( 0, oldbbsID.lastIndexOf("팀")+1 ) + BoardName;
		System.out.println( " 게시판의 이름은 " + bbsID +"<br>");
		
		out.println("<html><body>");

		out.println("<basefont size=2>");
		out.println( "<body bgcolor=white text=\"#0000FF\" link=\"#0000FF\" alink=\"#FF2020\" vlink=\"#000000\">" ) ;
		
		// 게시판 우측에 들어가는 이미지...
		out.println("<p align=right><img src='../image/우측_게시판.gif'></p>");

		// 삭제일경우...
		if ( type.equals( "delete") )
		{
			System.out.println("삭제입니다.");
			bbsResultStatus = bbsController.deleteBBS( oldbbsID );
			if(bbsResultStatus.getResultStatus() != 0)
				out.println( "<p align=center>동아리 게시판 삭제 작업이 실패하였습니다.<br><br>");		
				
			bbsResultStatus = bbsController.clubDelete( BoardName, "all" );			
			if(bbsResultStatus.getResultStatus() != 0)
				out.println( "<p align=center>동아리 삭제 작업이 실패하였습니다.<br><br>");		
		}
		else if ( type.equals( "rename") )
		{	
			System.out.println("이름 변경입니다.");
			bbsResultStatus = bbsController.renameBBS( oldbbsID, bbsID );
		}
		
		if(bbsResultStatus.getResultStatus() == 0)
		{
			out.println("<p align=center> 동아리 게시판 작업이 성공하였습니다.<br><br>");
			out.println("<a href='/servlet/BBSTreeServlet' target=\"contents\" onClick=\"parent.frames['detail'].location='/servlet/ClubManagerServlet'\"><image border=0 src=\"../image/BBS_back.gif\" alt='돌아가기'></a></p>");
		}
		else
		{
			out.println( "<p align=center>동아리 게시판 작업이 실패하였습니다.<br><br>");		
			out.println("<a href='/servlet/BBSTreeServlet' target=\"contents\" onClick=\"parent.frames['detail'].location='/servlet/ClubManagerServlet'\"><image border=0 src=\"../image/BBS_back.gif\" alt='돌아가기'></a></p>");
		}

		out.println("</body></html>");
		
		out.close();
	}
		

}