2013-10-04 2 views
0

좋은 방법으로이를 수행하는 방법에 대한 몇 가지 정보가 필요합니다.Java는 파일에 쓸 증분 텍스트 객체를 만듭니다.

내 응용 프로그램은 오늘 이와 같이 작동합니다.

SQL Server에서 레코드 집합을 읽고이를 반복하고 세미콜론으로 구분 된 데이터 행을 만들어 ArrayList<String>에 저장합니다.

이 ArrayList는 Filewriter를 열고 각 행에 줄 바꿈을 추가하는 모든 행을 인쇄하는 ArrayList를 반복하는 출력 클래스에 보냅니다.

하지만 지금은이 방법으로 함수를 편집하고 싶습니다.

레코드 세트가 입력 될 때마다 세미콜론 행이 완료 될 때마다 유효성을 검사하기 위해 행에 몇 가지 확인 방법을 넣을 것입니다. 행이 유효한 경우 위의 내용은 변경되지 않아야합니다. 그러나 행이 유효하지 않으면 오류 출력에 전체 "문서"(이 잘못된 행에 연결된 모든 행)를 보내야합니다.

그래서 레코드 세트의 각 루프에 대한 데이터 행을 저장 한 다음 문서 (첨부 된 모든 행)를 좋은 데이터 또는 나쁜 데이터 작성기로 보낼 수있는 좋은 방법을 구축하는 방법을 찾고 있습니다.

여기서 생성 된 세미콜론 행은 헤더와 X 행, 때로는 헤더, 서브 헤더 및 X 행으로 구성됩니다. 따라서 행 중 하나에 오류가 발생하면 해당 헤더에 첨부 된 모든 행을 오류 출력으로 가져와야합니다.

저는 주로 PHP 프로그래머이기 때문에, 저는 자바 방식으로하고 싶은 것을 적용하는 더 좋은 방법이 있다고 생각합니다. 그리고 저는 JAVA 기술이 시점에 이르기까지 오래 전에이 프로젝트를 시작했습니다. 지금.

+0

어떻게 "연결"되어 있다고 판단합니까? 어떤 종류의 ID가 있습니까? 임시 버퍼를 사용하고 줄 단위가 아닌 전체 집합 만 쓸 수 있습니다. 세트가 좋든 나쁘 든간에, 모든 라인의 유효성을 검사했을 때, 맞습니까? – Fildor

+0

예, 모든 라인을 함께 유지하는 ID가 있습니다. 그리고 다른 질문에 예. –

+0

라인이 고장난 수 있습니까? 나는 예를 들어 : Set1의 줄, Set2의 줄, Set1의 줄, Set3의 Set2, Set1 ...? 어떻게 세트가 완료되었는지 어떻게 알 수 있습니까? – Fildor

답변

0

유효성 검사 논리가 복잡하지 않으면 SQL 문에서 행을 필터링합니다. 또 다른 방법은 객체를 사용하여 세미콜론 표현에서 사퇴하는 것입니다.이 방법을 사용하면 자식이있는 객체를 간단히 삭제할 수 있습니다. 객체 목록 같은 것을 사용하는 것이 좋습니다 : 예를 들어 당신은 단순히 하나의 개체를 삭제할 수 있습니다 List<Data>에서 계층 구조를 구축함으로써

public class Data { 

    private Object header; 
    private Object subHeader; 
    private List<Object> rowData; 
    private List<Data> children; 
    //Constructors, getters setters, equal, hash, toString 
} 

(또는 당신이 원하는 어디든지 보내), 및 toString를 오버라이드 (override) 당신은 문자열 배열을 구축 할 필요가 없습니다 조금도. 당신이 필요하다면 equal과 hash와 같은 메소드에 대해서도 마찬가지다.

관련 문제