2016-03-30 18 views
1
public class ConverterRoute implements RoutesBuilder { 

    public void addRoutesToCamelContext(CamelContext context) throws Exception { 
     Tracer tracer = new Tracer(); 
     tracer.setTraceOutExchanges(true); 

     // we configure the default trace formatter where we can 
     // specify which fields we want in the output 
     DefaultTraceFormatter formatter = new DefaultTraceFormatter(); 
     formatter.setShowOutBody(true); 
     formatter.setShowOutBodyType(true); 

     // set to use our formatter 
     tracer.setFormatter(formatter); 

     context.addInterceptStrategy(tracer); 
     context.addRoutes(new RouteBuilder() { 

      public void configure() { 


       try { 
        DataFormat bindy = new BindyCsvDataFormat(com.dto.EmployeeDTO.class); 
          from("file://TEST?fileName=Employee.csv"). 
          unmarshal(bindy). 
          marshal(). 
          xstream(). 
          to("file://TESTOUT?fileName=EmployeeXML.xml"); 
        /*DataFormat bindy = new BindyCsvDataFormat(com.dto.EmployeeDTO.class); 
         from("F://Employee.csv"). 
         unmarshal(bindy). 
         marshal(). 
         xstream(). 
         to("F://EmployeeXML.xml");*/ 
        } catch (Exception e) { 
           e.printStackTrace(); 
       } 

      } 
     }); 
    } 

    public static void main(String[] args) { 
     try{ 
      CamelContext context = new DefaultCamelContext(); 
      ConverterRoute route = new ConverterRoute(); 
      System.out.println("Starting........"); 
      route.addRoutesToCamelContext(context); 
      context.start(); 
      Thread.sleep(5000); 
      System.out.println("Ending........"); 
      context.stop(); 
     }catch(Exception exe){ 
      exe.printStackTrace(); 
     } 
    } 


    @XmlRootElement 
@XmlAccessorType(XmlAccessType.FIELD) 
@CsvRecord(separator = ",", skipFirstLine = true) 
public class EmployeeDTO implements Serializable{ 
@XmlAttribute 
     @DataField(pos = 1) 
     private int employeeId; 
     @XmlAttribute 
     @DataField(pos = 2) 
     private String firstName; 
     @XmlAttribute 
     @DataField(pos = 3) 
     private String lastName; 
     @XmlAttribute 
     @DataField(pos = 4) 
     private String role; 
} 

を作成されていない:apacheのラクダを使用してXMLファイルにCSVファイルを変換:XMLファイルは、私は次のエラーを取得しています

Starting........
log4j:WARN No appenders could be found for logger (org.apache.camel.impl.DefaultCamelContext). log4j:WARN Please initialize the log4j system properly.
Ending........

変換後のXMLは、所望のフォルダに生成されていません。

答えて

0

まず、WARNINGは、クラスパス上にlog4j構成ファイルが存在しないことを示しています。あなたのresourcesディレクトリに以下の内容で「log4j.properties」という名前のファイルを追加してみてください:

log4j.rootLogger=INFO, out 
# uncomment the following line to turn on Camel debugging 
log4j.logger.org.apache.camel=INFO 
log4j.logger.org.apache.camel.component.mongodb=DEBUG 
log4j.logger.org.springframework=WARN 
log4j.appender.out=org.apache.log4j.ConsoleAppender 
log4j.appender.out.layout=org.apache.log4j.PatternLayout 
log4j.appender.out.layout.ConversionPattern=[%30.30t] %-30.30c{1} %-5p %m%n 

以上にすることで、あなたはあなたのIDEでログを取得し、何が起こっているか見ることができます。

最後に、XTREAMではなくJAXBを使用できます。あなたが行う必要があるのは、EmployeeDTOにJAXB注釈を付けることだけです。

関連する問題