2012-12-27 4 views
-3

사전 정의 변수 목록을 따라 외부 파티로 보내는 것으로 가정하는 새 Java 구성 요소. 그러면 사용자는 xml 등록 정보 파일을 통해 전송할 변수 (고정 된 변수 세트)를 정의 할 수 있습니다.구성 가능한 Java 변수 작성 작성 방법

문제점 : 사전 정의 변수는 클래스 내에 있으며 비즈니스 로직을 가지고 있습니다. 나는 바꿀 수 없으며 (외부 API의 일부) 변경할 수 없다. 예는 다음과 같이

public class DataColumn implement java.io.Serializable{ 
    public static final String _actionID = "ActionID"; 
    public static final String _actionName = "ActionName"; 
    public static final String _actionDesc = "ActionDescription"; 
    public static final DataColumn ActionDesc = new DataColumn (_actionDesc); 
    public static final DataColumn ActionID = new DataColumn (_actionID); 
    public static final DataColumn ActionName = new DataColumn (_actionName); 

    ....and about 100 other variale more 

    protected WebMediaReportColumn(java.lang.String value) { 
     _value_ = value; 
     _table_.put(_value_,this); 
    } 
} 

사용자는 다음과 같이 XML 파일에 정의합니다 :

에서 보낼 수있는 변수를 설정하기 위해
<interface> 
    <fields isRequired="true"> 
     <field>ActionID</field> 
     <field>ActionName</field> 
     <field>ActionDescription</field> 
    </fields> 
</interface> 

이 코드는 다음과 같습니다 :

interface.setColumns(new DataColumn[] { 
    DataColumn.ActionID, DataColumn.ActionName, DataColumn.ActionDesc 
    } 
); 

질문 : 사용자가 속성 파일에서 정의한 것을 기반으로 할 수있는 프로그램을 작성하고 그에 따라 Datacolumn [] Array를 만드는 방법은 무엇입니까? 사용하지 않는 경우 else 블록이 너무 길고 유지하기 어렵습니다.

+7

맞습니까? 문자열이 들어있는 DataColumn [] 형식의 배열이 있습니다. –

+0

코드가 컴파일되지 않습니다. 당신이 정말로 가지고있는 것을 보여주십시오. –

+0

ops ... 잠시만 기다려주십시오 ... – Reusable

답변

0

이러한 모든 명령문을 특성 파일에 작성하십시오.

actionID = ActionID 
actionName = ActionName 
actionDesc = ActionDescription 
/*... and so on */ 

코드에서 Properties 개체를 만들고이 파일을로드하십시오. 문자열 배열을 만들고이 속성 개체의 값을 채 웁니다.

Properties p = new Properties(); 
    /*...load the file...*/ 
    String []columnData = new String[p.keySet().size()]; 
    int i=0; 
    for(Object str : p.keySet()) { 
    columnData[i++]=(String)p.getProperty((String)str); 
    } 

    /*now call the method and pass the array*/ 
    interface.setColumns(columnData); 
+0

불편을 끼쳐 드려 죄송합니다. 지금은 잘못된 코드를 게시했습니다. 코드를 다시 참조하십시오. – Reusable

+0

큰 문제는 아닙니다. 이 코드는 lil bit를 사용하여 적절하게 사용합니다. 숙제를 위해 그것을 자신의 것으로 유지하십시오 :-) –

+0

이상한 점 ...이 코드를 수정하는 방법을 알지 못합니다. 이유는 배열이 새 DataColumn [] <- 내부에있는 DataColumn.ActionID 때문입니다. 어떻게 할당/XML 속성 파일에서 DataColumn.ActionID 정의 할 수 있습니까? – Reusable