[SOLR] CustomClobTransformer

|
SOLR에서 ClobTransformer를 1.4부터 지원해준다고 한다.
덕분에 오라클의 CLOB타입을 인덱싱하려면 커스텀으로 트랜스포머를 만들어야 한다.
그래서 만들었다.
허접하게 나마.

====================================================================================

import java.io.BufferedReader;
import java.util.List;
import java.util.Map;

import oracle.sql.CLOB;

import org.apache.solr.handler.dataimport.Context;
import org.apache.solr.handler.dataimport.Transformer;

/**
 * CLOB to String 변환을 위한 커스텀 트랜스 포머 
 *
 * @since 2009. 3. 12.
 */
public class CustomClobTransformer extends Transformer {

    /* (non-Javadoc)
     * @see org.apache.solr.handler.dataimport.Transformer#transformRow(java.util.Map, org.apache.solr.handler.dataimport.Context)
     */
    public Map<String, Object> transformRow(Map<String, Object> row, Context context) {
        List<Map<String, String>> fields = context.getAllEntityFields();
        
        for (Map<String, String> field : fields) {
            String clob = field.get("clob");
            if ("true".equals(clob)) {
                String columnName = field.get("column");

                CLOB value = (CLOB)row.get(columnName);
                
                StringBuffer strOut = new StringBuffer();

                String str = "";
                try {
                    BufferedReader br = new BufferedReader(value.getCharacterStream());
    
                    while ((str = br.readLine()) != null) {
                        strOut.append(str);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                
                String stringValue = strOut.toString();
                
                row.put(columnName, stringValue);
            }            
        }
        
        return row;
    }
}
And