CommentParser class 추가 및 CSVParser interaface 명세 추가
책임연쇄패턴 적용
public interface CSVParser<T> {
T parse();
/**
*
* 해당 메서드는 char[index]가 targetChar와 같을 경우 index를 증분하여 반환
* 만약 매칭 실패시 0을 반환
* @param targetString
* @param targetChar
* @param index
* @return index
*/
default int incrementIfMatch(char[] targetString, char targetChar, int index) {
return targetChar == targetString[index] ? index + 1 : 0;
}
boolean canParse();
}
...
import java.util.ArrayList;
import java.util.List;
public class CommentParser implements CSVParser<List<String>>{
final InternalBuffer buffer;
final CSVConfig csvConfig;
public CommentParser(InternalBuffer buffer, CSVConfig csvConfig) {
this.buffer = buffer;
this.csvConfig = csvConfig;
}
@Override
public List<String> parse() {
final List<String> list = new ArrayList<>(1);
list.add(new String(buffer.getRow()));
return list;
}
/**
파싱가능 여부 확인을 위해 inteface에 추가
차후 RecordParser, FieldParser 부에 파싱 가능 여부확인을 위하여 interface 명세에 추가하는
것으로 결정
**/
@Override
public boolean canParse() {
return buffer.getRow()[0] == csvConfig.getComment();
}
}
Java
복사