有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在多个类上应用Bindy数据转换/在工厂类上应用Bindy

我有管道分隔的数据,我想将其转换为xml。这种转换需要基于管道分隔数据的内容来完成。我正在尝试应用工厂设计模式来设计我的模型类。它抛出以下错误

解决基于内容的转换问题的最佳方法是什么

来源。文本

0191155154|0000000001|0000001234|US|0000001101|2117565242|00029|00001|03000|
0191155154|0000000001|0000002342|US|0000001101|2117565242|00029|00001|03030|

PartIfd。爪哇

@CsvRecord(separator = "\\|",skipField = true)
public class PartIfd {

    @DataField(pos = 3)
    private Integer WHSID;

    @Link
    private CntrlSeg cntrlSeg;

}

CntrlSeg。爪哇

public class CntrlSeg {

    @DataField(pos = 5)
    private Integer index;

    @Link
    private PartSeg partSeg;

}

零件厂。爪哇

public PartSeg getInstance(String string){

        if(string.equals("03000")){
            return new PartSeg3000();
        }else 
            return new PartSeg3030();
    }

帕塞格。爪哇

public interface PartSeg {
    public void recordNum();
}

第3000部分。爪哇

public class PartSeg3000 implements PartSeg {

    @DataField(pos = 9)
    private Integer recordNum;

    @Override
    public void recordNum() {
        System.out.println("3000");
    }
}

第3030部分。爪哇

public class PartSeg3030 implements PartSeg {

    @DataField(pos = 7)
    private Integer recordNum;

    @Override
    public void recordNum() {
        System.out.println("3030");
    }
}

敞篷车。爪哇

public class ConverterRoute implements RoutesBuilder {

        private static final String SOURCE_INPUT_PATH = "file://inbox?fileName=3000.txt";

        private static final String SOURCE_OUTPUT_PATH = "file://outbox?fileName=file_$simple{date:now:yyyyMMddHHmmssSSS}.xml";

        public void addRoutesToCamelContext(CamelContext context) throws Exception {

            context.addRoutes(new RouteBuilder() {
                public void configure() {
                    try {
                        DataFormat bindyFixed = new BindyCsvDataFormat(PartIfd.class);

                        XStreamDataFormat xStreamDataFormat = new XStreamDataFormat();
                        xStreamDataFormat.setAliases(Collections.singletonMap("PART_INB_IFD",PartIfd.class.getCanonicalName()));

                        from(SOURCE_INPUT_PATH).
                                split().tokenize(System.lineSeparator()).
                                unmarshal(bindyFixed).
                                marshal(xStreamDataFormat).
                                to(SOURCE_OUTPUT_PATH).log("Finished Transformation").end();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
}

堆栈跟踪

Caused by: java.lang.InstantiationException: com.test.domain.PartSeg
    at java.lang.Class.newInstance(Class.java:427) ~[na:1.8.0_191]
    at org.apache.camel.util.ObjectHelper.newInstance(ObjectHelper.java:1734) ~[camel-core-2.24.1.jar:2.24.1]
    ... 32 common frames omitted
Caused by: java.lang.NoSuchMethodException: com.test.domain.PartSeg.<init>()

共 (0) 个答案