2013년 8월 11일 일요일

스트럿츠 멀티 게시판5. 사용자( 2 - 4 ) BoardDAO.java( 4 )

/*
    *                개요                :  답글쓰기
    *                작성일            :        2005-08-15       
    *                작성자        :        김길재
    *                수정자        :
    */ 


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)  




 
    public String reply_insert( String board_code ,
                                        String board_no ,
                                        String board_grade ,
                                        String title ,
                                            String content_type ,
                                            String content ,
                                            FormFile file_name ,
                                            String member_id )
    {
            String file = null;
            String current_time = getCurrentTime();
           
            try
        {
                        con = DriverManager.getConnection(ConnectionPoolManager.URL_PREFIX+"multiboard");
                        con.setAutoCommit(false);
                       
                        //파일 처리
                        //파일이 있으면 (board_code)_(board_no).확장자로 입력한다.
                        if( file_name != null && !file_name.getFileName().equals( "" ) )
                        {
                                file = board_code + board_no + "_reply_" + current_time.replaceAll( " " , "-" ) + Util.getExtension( file_name );
                                FileUploadUtil.FileUpload( file_name , constants.getFILE_PATH() + file );
                                KKJLog.info( "file = " + file );
                        }
                        else
                        {
                                file = "no_file";
                        }
                       
                       
                        sql =  " INSERT INTO BOARD( BOARD_CODE , ";
                        sql += "                    BOARD_NO , ";
                        sql += "                    BOARD_GRADE , ";
                        sql += "                    WRITE_DATE , ";
                        sql += "                    TITLE , ";
                        sql += "                    HIT , ";
                        sql += "                    CONTENT_TYPE , ";
                        sql += "                    CONTENT , ";
                        sql += "                    FILE_NAME , ";
                        sql += "                    MEMBER_ID ) ";
                        sql += "            VALUES( ? , ";
                        sql += "                    ? , ";
                        sql += "                    ? , ";
                        sql += "                    ? ,  ";
                        sql += "                    ? , ";
                        sql += "                    0 , ";
                        sql += "                    ? , ";
                        sql += "                    EMPTY_CLOB() , ";
                        sql += "                    ? , ";
                        sql += "                    ? ) ";
                       
                        pstmt = con.prepareStatement(sql);
           
                        pstmt.setString( 1 , board_code );
            pstmt.setInt( 2 , Integer.parseInt( board_no ) );
            //현재 글의 레벨보다 한단계 더한 값을 board_grade에 입력한다.
            pstmt.setInt( 3 , ( Integer.parseInt( board_grade ) + 1 ) );
            pstmt.setString( 4 , current_time );
            pstmt.setString( 5 , Util.uni2ksc( title ) );
            pstmt.setString( 6 , content_type );
            pstmt.setString( 7 , file );
            pstmt.setString( 8 , member_id );
         
           
            pstmt.executeUpdate();
           
            //CLOB Content 입력
                        sql =  "  SELECT CONTENT ";
                        sql += "    FROM BOARD ";
                        sql += "  WHERE BOARD_CODE = ? ";
                        sql += "    AND BOARD_NO = ? ";
                        sql += "    AND BOARD_GRADE = ? ";
                        sql += "    AND WRITE_DATE = ? FOR UPDATE";
                           
                        pstmt = con.prepareStatement(sql);
                        pstmt.setString( 1 , board_code );
                        pstmt.setInt( 2 , Integer.parseInt( board_no ) );
                        pstmt.setInt( 3 , ( Integer.parseInt( board_grade ) + 1 ) );
                        pstmt.setString( 4 , current_time );
                        rs = pstmt.executeQuery();
                       
                        System.out.println( "--------------------1" ); 
                       
                        if( rs.next() )
                        {
                                System.out.println( "------------------2-1" );
                                System.out.println( "------------------2-2" );
                                CLOB clob = ( ( OracleResultSet ) rs ).getCLOB( 1 );
                                Writer write = clob.getCharacterOutputStream();
                                Reader src = null;
                                if( content_type.equals( "text" ) )
                                {
                                        src = new CharArrayReader( Util.lineBreak( Util.uni2ksc( content ) ).toCharArray() );
                                }
                                else if( content_type.equals( "html" ) )
                                {
                                        src = new CharArrayReader( Util.uni2ksc( content ).toCharArray() );
                                }
                               
                                char[] buffer = new char[ 1024 ];
                                int read = 0;
                                while( ( read = src.read( buffer , 0 , 1024 ) ) != -1 )
                                {
                                        write.write( buffer , 0 , read );
                                }
                                src.close();
                                write.close();
                        }
                       
                        pstmt.executeUpdate();
           
            con.commit();
               
                        return "success";
        }
                catch( Exception e )
                {
                try
                        {
                        con.rollback();
                        }
                catch( Exception e1 )
                        {}
                KKJLog.info( "//////////////////////////////////////////////" );
                KKJLog.info( "reply_insert Error : " + e.toString() );
                KKJLog.info( "//////////////////////////////////////////////" );
                return "fail";
                }
        finally
        {
            try
            {
                    if ( rs != null )
                            rs.close();
                if ( pstmt != null )
                        pstmt.close();
                if ( con != null )
                        con.close();
            }
            catch ( Exception ignore )
            {
            }
   
        }
    }
   
    /*
    *                개요                :  글수정
    *                작성일            :        2005-08-12       
    *                작성자        :        김길재
    *                수정자        :
    */
    public String update( String board_code ,
                                  String board_no ,
                                  String board_grade ,
                                  String write_date ,
                          String title ,
                                      String content_type ,
                                      String content ,
                                      FormFile file_name )
    {
            String file = "";
           
           
            try
        {
                        con = DriverManager.getConnection(ConnectionPoolManager.URL_PREFIX+"multiboard");
                        con.setAutoCommit(false);
                       
                        //파일 처리
                        //파일이 있으면 (board_code)_(board_no).확장자로 입력한다.
                        if( file_name != null && !file_name.getFileName().equals( "" ) )
                        {
                                file = board_code + board_no + Util.getExtension( file_name );
                                FileUploadUtil.FileUpload( file_name , constants.getFILE_PATH() + file );
                                KKJLog.info( "file = " + file );
                        }
                       
                       
                        sql =  " UPDATE BOARD SET TITLE = ? , ";
                        sql += "                  CONTENT_TYPE = ? ,";
                        sql += "                  CONTENT = EMPTY_CLOB() ";
                        //파일 처리
                        //새로 업로드한 파일이 있으면 파일명 수정
                        if( file_name != null && !file_name.getFileName().equals( "" ) )
                        {
                                sql += "                  , FILE_NAME = ? ";
                        }
                        sql += "            WHERE BOARD_CODE = ? ";
                        sql += "              AND BOARD_NO = ? ";
                        sql += "              AND BOARD_GRADE = ? ";
                        sql += "              AND WRITE_DATE = ? ";
                       
                    pstmt = con.prepareStatement(sql);
                        pstmt.setString( 1 , Util.uni2ksc( title ) );
            pstmt.setString( 2 , content_type );
            int i = 3;
            if( file_name != null && !file_name.getFileName().equals( "" ) )
                        {
                    pstmt.setString( i++ , file );
                        }
            pstmt.setString( i++ , board_code );
            pstmt.setInt( i++ , Integer.parseInt( board_no ) );
            pstmt.setInt( i++ , Integer.parseInt( board_grade ) );
            pstmt.setString( i++ , write_date );
           
            pstmt.executeUpdate();
           
            //CLOB Content 입력
                        sql =  "  SELECT CONTENT ";
                        sql += "    FROM BOARD ";
                        sql += "  WHERE BOARD_NO = ? ";
                        sql += "    AND BOARD_CODE = ? ";
                        sql += "    AND BOARD_GRADE = ? ";
                        sql += "    AND WRITE_DATE = ? FOR UPDATE";
                       
                        pstmt = con.prepareStatement(sql);
                        pstmt.setInt( 1 , Integer.parseInt( board_no ) );
                        pstmt.setString( 2 , board_code );
                        pstmt.setString( 3 , board_grade );
                        pstmt.setString( 4 , write_date );
                        rs = pstmt.executeQuery();
                       
                        if( rs.next() )
                        {
                                CLOB clob = ( ( OracleResultSet ) rs ).getCLOB( 1 );
                                Writer write = clob.getCharacterOutputStream();
                                Reader src = null;
                                if( content_type.equals( "text" ) )
                                {
                                        src = new CharArrayReader( Util.lineBreak( Util.uni2ksc( content ) ).toCharArray() );
                                }
                                else if( content_type.equals( "html" ) )
                                {
                                        src = new CharArrayReader( Util.uni2ksc( content ).toCharArray() );
                                }
                               
                                char[] buffer = new char[ 1024 ];
                                int read = 0;
                                while( ( read = src.read( buffer , 0 , 1024 ) ) != -1 )
                                {
                                        write.write( buffer , 0 , read );
                                }
                                src.close();
                                write.close();
                        }
                       
                       
           
            pstmt.executeUpdate();
            con.commit();
               
                        return "success";
        }
                catch( Exception e )
                {
                try
                        {
                        con.rollback();
                        }
                catch( Exception e1 )
                        {}
                KKJLog.info( "//////////////////////////////////////////////" );
                KKJLog.info( "update Error : " + e.toString() );
                KKJLog.info( "//////////////////////////////////////////////" );
                return "fail";
                }
        finally
        {
            try
            {
                    if ( rs != null )
                            rs.close();
                if ( pstmt != null )
                        pstmt.close();
                if ( con != null )
                        con.close();
            }
            catch ( Exception ignore )
            {
            }
   
        }
    } 

댓글 없음:

댓글 쓰기