Hi all digester users & developers:

   Today I use addCallMethod but it doesn't work as before.

the xml is below:


<?xml version="1.0" encoding="UTF-8"?>

<Project name="project1">
    <Functionality description="add comment" url="">
        <Action class="com.mygame.action.UserAction" method="entry"/>
<BasicInfo kpiCategoryId="K01002" contentType="thread" statisticsType="处理日"/>
        <Class name="com.mygame.bo.UserBOImpl" method="entry">
            <TextTable type="insert" name="MOCO_CODICMT">
<Handler class="com.mytest.siamon.util.DefaultSiamonHandler"/>
                <Main>
                    <Constant column="DeviceType" value="pc"/>
<Mutable property="cmtno" argidx="0" column="PrimaryKey1"/>
                </Main>
                <Sub>
<Mutable property="writeid" argidx="0" column="WriterId"/> <Mutable property="contents" argidx="0" column="Content"/>
                    <Constant column="TestType" value="test"/>
                </Sub>
            </TextTable>
        </Class>
    </Functionality>
</Project>

there's a code about Mutable and Constant that they both can show up under Main or Sub, the former represents a mutable property and the latter represents a constant property in out business logic. But the question is when TextTable element shows up, I want to set TableMap(XXXTable related class, pojo)'s type as "txt" through addCallMethod. I research on official sample but it is not right in my code, it looks just the same as the sample.

related java file:

1)ClassItem.java
package com.siamon.model.config;

import java.util.ArrayList;
import java.util.List;

public class ClassItem {

        private String method;
        private String name;
    private List<TableMap> tableMapList=new ArrayList<TableMap>();

public ClassItem(String name, String method, List<TableMap> tableMapList) {
        this.name = name;
        this.method = method;
        this.tableMapList = tableMapList;
    }


    public ClassItem() {
    }

    public String getMethod() {
        return method;
    }

    public void setMethod(String method) {
        this.method = method;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


    public void addTableMap(TableMap tm){
        getTableMapList().add(tm);
    }

    public List<TableMap> getTableMapList() {
        return tableMapList;
    }
}

2)Project.java
package com.siamon.model;

import com.siamon.model.config.Functionality;

import java.util.ArrayList;
import java.util.List;

public class Project {
    private String name;
private List<Functionality> functionalities=new ArrayList<Functionality>();

    public void addFunctionality(Functionality func){
        functionalities.add(func);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Functionality> getFunctionalities() {
        return functionalities;
    }


}

3)ConstantProp.java
package com.siamon.model.config;

public class ConstantProp {
    private String column;
    private String value;

    public String getColumn() {
        return column;
    }

    public void setColumn(String column) {
        this.column = column;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    @Override
    public String toString() {
        return "ConstantProp [ " +
                "column='" + column + '\'' +
                ", value='" + value + '\'' +
                " ] ";
    }
}

4)MutableProp.java
package com.siamon.model.config;

public class MutableProp {
    private String property;
    private int argIndex;
    private String column;
    private String value;

    public String getProperty() {
        return property;
    }

    public void setProperty(String property) {
        this.property = property;
    }

    public int getArgIndex() {
        return argIndex;
    }

    public void setArgIndex(int argIndex) {
        this.argIndex = argIndex;
    }

    public String getColumn() {
        return column;
    }

    public void setColumn(String column) {
        this.column = column;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    @Override
    public String toString() {
        return "MutableProp [ " +
                "property='" + property + '\'' +
                ", argIndex=" + argIndex +
                ", column='" + column + '\'' +
                ", value='" + value + '\'' +
                " ] ";
    }
}

5)TableMap.java
package com.siamon.model.config;

import java.util.ArrayList;
import java.util.List;

public class TableMap {
    private String type;
    private String handler="com.nhstcorp.siamon.util.DefaultSiamonHandler";
private List<ConstantProp> constantPropList=new ArrayList<ConstantProp>();
    private List<MutableProp> mutablePropList=new ArrayList<MutableProp>();

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public List<MutableProp> getMutablePropList() {
        return mutablePropList;
    }

    public List<ConstantProp> getConstantPropList() {
        return constantPropList;
    }

    public void addMutableProp(MutableProp prop){
       getMutablePropList().add(prop);
    }

    public void addConstantProp(ConstantProp prop){
        getConstantPropList().add(prop);
    }

    public String getHandler() {
        return handler;
    }

    public void setHandler(String handler) {
        this.handler = handler;
    }
}

6)Functionality.java
package com.siamon.model.config;

import java.util.*;

public class Functionality {

        private String url;
    private String description;
    private String actionName;
    private String actionMethod;
    private String kpiCategoryId;
    private String contentType;
    private String statisticsType;
    private List<ClassItem> classItems=new ArrayList<ClassItem>();
    private String projectName;

public Functionality(String projectName, String kpiCategoryId, String contentType, String statisticsType) {
        this.projectName = projectName;
        this.kpiCategoryId = kpiCategoryId;
        this.contentType = contentType;
        this.statisticsType = statisticsType;
    }

    public Functionality() {
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getActionName() {
        return actionName;
    }

    public void setActionName(String actionName) {
        this.actionName = actionName;
    }

    public String getActionMethod() {
        return actionMethod;
    }

    public void setActionMethod(String actionMethod) {
        this.actionMethod = actionMethod;
    }

    public String getKpiCategoryId() {
        return kpiCategoryId;
    }

    public void setKpiCategoryId(String kpiCategoryId) {
        this.kpiCategoryId = kpiCategoryId;
    }

    public String getContentType() {
        return contentType;
    }

    public void setContentType(String contentType) {
        this.contentType = contentType;
    }

    public String getStatisticsType() {
        return statisticsType;
    }

    public void setStatisticsType(String statisticsType) {
        this.statisticsType = statisticsType;
    }

    public List<ClassItem> getClassItems() {
        return classItems;
    }

    public void setClassItems(List<ClassItem> classItems) {
        this.classItems = classItems;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    public ClassItem findClassItem(String clazz,String method){
        for (ClassItem ci:classItems){
if (ci.getName().equals(clazz) && ci.getMethod().equals(method)){
                return ci;
            }
        }

        return null;
    }

    public void addClassItem(ClassItem ci){
        getClassItems().add(ci);
    }
}


7)parser method
  private Project parseProject2(URL url) throws IOException, SAXException {
        Digester d = new Digester();

        String pathFunc = "Project/Functionality";
        String pathClass = pathFunc + "/Class";


        d.addObjectCreate("Project", Project.class);
        d.addSetProperties("Project");

        d.addObjectCreate(pathFunc, Functionality.class);
        d.addSetNext(pathFunc, "addFunctionality");
        d.addSetProperties(pathFunc);
        d.addSetProperties(pathFunc + "/BasicInfo");

        d.addObjectCreate(pathClass, ClassItem.class);
        d.addSetNext(pathClass, "addClassItem");

        String pathTextTable = pathClass + "/TextTable";
        d.addSetProperties(pathClass);
        d.addObjectCreate(pathTextTable, TableMap.class);
        d.addSetNext(pathTextTable,"addTableMap");


        setTable(d, pathClass,"TextTable","txt");

        d.parse(url);
        Project project = (Project) d.getRoot();

        System.out.println();

        return project;
    }

private void setTable(Digester d, String pathClass, String tableElem, String type){
        String pattern=pathClass + "/"+tableElem;

        d.addObjectCreate(pattern+"/Main/Constant",ConstantProp.class);
        d.addSetNext(pattern+"/Main/Constant", "addConstantProp");
        d.addSetProperties(pattern+ "/Main/Constant");

        d.addObjectCreate(pattern+"/Main/Mutable",MutableProp.class);
        d.addSetNext(pattern + "/Main/Mutable", "addMutableProp");
        d.addSetProperties(pattern+ "/Main/Mutable");

        d.addObjectCreate(pattern+"/Sub/Constant",ConstantProp.class);
        d.addSetNext(pattern+"/Sub/Constant", "addConstantProp");
        d.addSetProperties(pattern+ "/Sub/Constant");

        d.addObjectCreate(pattern+"/Sub/Mutable",MutableProp.class);
        d.addSetNext(pattern + "/Sub/Mutable", "addMutableProp");
        d.addSetProperties(pattern+ "/Sub/Mutable");


        d.addSetProperties(pathClass + "/Handler", "class", "handler");
        d.addCallMethod(pattern, "setType", 1);
        d.addCallParam(pattern, 0, type);

        d.addSetProperties(pattern + "/Handler", "class", "handler");
    }

that's all source, the issue is the method setTable can't setType for a TableMap class successfully. It looks very normal, nothing seem wrong,but just doesn't work. I also attach the source to the email, don't know if it's allowed.

   Thanks a lot
Kurt

Attachment: com.rar
Description: application/rar

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to