'전체'에 해당되는 글 64

  1. 2010/08/31 김선수 TypeHandlerCallback 예시 (0)
  2. 2010/08/31 김선수 잊을 수 없는 향기 (0)
  3. 2010/08/05 김선수 Unitils와 DBUnit 에서 NoSuchColumnException 에러 (0)
  4. 2010/08/05 김선수 java.lang.NoSuchMethodError 에러메시지 (0)
  5. 2010/07/26 김선수 Ant의 FileSet을 Source 이용하기 (0)

TypeHandlerCallback 예시

Java | 2010/08/31 19:21 | 김선수
 
package com.naver.jr.fun.model.quiz.handler;
import java.sql.SQLException;
import org.apache.commons.lang.StringUtils;
import com.ibatis.sqlmap.client.extensions.ParameterSetter;
import com.ibatis.sqlmap.client.extensions.ResultGetter;
import com.ibatis.sqlmap.client.extensions.TypeHandlerCallback;
import com.naver.jr.fun.model.quiz.QuizCategory;
public class QuizCategoryTypeHandler implements TypeHandlerCallback {
 @Override
 public Object getResult(ResultGetter getter) throws SQLException {
  String str = getter.getString();
  if (StringUtils.equals(QuizCategory.COMMON.toString(), str)) {
   return QuizCategory.COMMON;
  } else if (StringUtils.equals(QuizCategory.COUNTRY.toString(), str)) {
   return QuizCategory.COUNTRY;
  } else if (StringUtils.equals(QuizCategory.PROVERB.toString(), str)) {
   return QuizCategory.PROVERB;
  } else if (StringUtils.equals(QuizCategory.RIDDLE.toString(), str)) {
   return QuizCategory.RIDDLE;
  } else if (StringUtils.equals(QuizCategory.TEXTBOOK.toString(), str)) {
   return QuizCategory.TEXTBOOK;
  } else if (StringUtils.equals(QuizCategory.TV.toString(), str)) {
   return QuizCategory.TV;
  }
  else {
   throw new SQLException("Unexpceted value " + str + " found. " + QuizCategory.class.toString()
    + " was expected.");
  }
 }
 @Override
 public void setParameter(ParameterSetter setter, Object parameter) throws SQLException {
  switch ((QuizCategory)parameter) {
   case COMMON:
    setter.setString(QuizCategory.COMMON.toString());
    break;
   case COUNTRY:
    setter.setString(QuizCategory.COUNTRY.toString());
    break;
   case PROVERB:
    setter.setString(QuizCategory.PROVERB.toString());
    break;
   case RIDDLE:
    setter.setString(QuizCategory.RIDDLE.toString());
    break;
   case TEXTBOOK:
    setter.setString(QuizCategory.TEXTBOOK.toString());
    break;
   case TV:
    setter.setString(QuizCategory.TV.toString());
    break;
   default:
    throw new SQLException("Unexpceted value found. " + QuizCategory.class.toString() + " was expected.");
  }
 }
 @Override
 public Object valueOf(String str) {
  if (StringUtils.equals(QuizCategory.COMMON.toString(), str)) {
   return QuizCategory.COMMON;
  } else if (StringUtils.equals(QuizCategory.COUNTRY.toString(), str)) {
   return QuizCategory.COUNTRY;
  } else if (StringUtils.equals(QuizCategory.PROVERB.toString(), str)) {
   return QuizCategory.PROVERB;
  } else if (StringUtils.equals(QuizCategory.RIDDLE.toString(), str)) {
   return QuizCategory.RIDDLE;
  } else if (StringUtils.equals(QuizCategory.TEXTBOOK.toString(), str)) {
   return QuizCategory.TEXTBOOK;
  } else if (StringUtils.equals(QuizCategory.TV.toString(), str)) {
   return QuizCategory.TV;
  }
  return null;
 }
}


 

잊을 수 없는 향기

Private | 2010/08/31 09:50 | 김선수

 

 

「마음을 다해 사랑했다면 결국 그 사람앞에 서게 됩니다.」

 

  마음에 와닿는 카피다.

 

  저런 눈빛으로 나를 보아주던 그녀의 눈빛이 느껴져서 짠하다.

 

  이제 가을인가 보다.

 

분명히 DB에 컬럼이 존재함에도 불구하고

Unitils에서 DBUnit를 연동해서 dataset의 내용을 처리할때

아래와 같은 에러가 발생할 경우가 있다.

 

org.dbunit.dataset.NoSuchColumnException

 

이것은 라이브러리 버전의 문제일수도 있다.

 

DBUnit 2.4.7 Untils- DBUnit 3.1을 사용했더니 위의 문제가 발생되었다.

DBUnit 의 버전을 2.2.2 로 내리고 나니 해결이 되었다.

(pom.xml에서 빼면 자동으로 2.2.2를 포함한다)

간혹 NoSuchMethodError가 발생할 경우가 있다.

 

메소드를 찾지 못해서 발생하는 에러인데

코드상, 라이브러리상에서 전혀 문제가 없는 경우 발생할 때에는

 

주로 classpath상에서 중복되는 class가 있어서 정상적으로 method를

찾지 못해서 발생하는 문제이므로 아래와 같이 조치를 해보자

  1. lib폴더에서 중복되는 jar파일의 존재를 확인한다
  2. maven의 pom.xml파일에서 dependency 부분에서 complict가 발생되는 라이브러리가

    없는지 확인해보도록 하자

 

Ant의 FileSet을 Source 이용하기

Java/Snippet | 2010/07/26 13:41 | 김선수

Apache의 Ant에서는 FileSet라는 파일 및 폴더 관리 방식이 있다.

 

매우 유연하게 폴더 및 파일을 접근할 수 있는데 그부분은 Java 소스에서

 

이용하는 방법을 알아보도록 하자.

 

예제1

  String fileSet = "**/F*.jsp,**/T*.jsp";
  String fileSetExclude = "**/S.jsp";
  File ws = new File("D:/Projects/lucy/text-finder/work/jobs/Test/workspace");
 
        FileSet fs = new FileSet();
        org.apache.tools.ant.Project p = new org.apache.tools.ant.Project();
        fs.setProject(p);
        fs.setDir(ws);  // Root경로를 지정
        fs.setIncludes(fileSet);  //포함할 파일 조건
        fs.setExcludes(fileSetExclude);  //제외할 파일 조건
        DirectoryScanner ds = fs.getDirectoryScanner(p);

        // Any files in the final set
        String[] files = ds.getIncludedFiles();
        if (files.length == 0) {
         System.err.println("FileSet Empty");
            throw new Exception();
        }

        for (String file : files) {
            File f = new File(ws, file);
            if (!f.exists()) {
             System.err.println("Error Find File : " + f);
                continue;
            }
            if (!f.canRead()) {
             System.err.println("Error Read File : " + f);
                continue;
            }
           
            System.out.println("File : " + f.getName());
           
        }

 

 

위의 소스가 간단하기 때문에 쉽게 파악할 수 있을것이다.

 

FileSet의 조건을 주는 방식은 ant의 설명을 참고하길 바라며 콤마(,)를 이용해 다수의 경로조건을 입력할 수 있다.


 

이전 1 2 3 4 5 ... 13 다음