JSD-9551 WebService开放
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

134 lines
5.1 KiB

/*
* Copyright (C), 2018-2022
* Project: starter
* FileName: ParameterTypeXMLHandler
* Author: Louis
* Date: 2022/3/11 23:05
*/
package com.fr.plugin.tabledataservice.bean;
import com.fanruan.api.log.LogKit;
import com.fr.base.MultiFieldParameter;
import com.fr.data.impl.TableColumn;
import com.fr.general.DateUtils;
import com.fr.stable.FormulaProvider;
import com.fr.stable.bridge.StableFactory;
import com.fr.stable.xml.XMLableReader;
import com.fr.third.javax.xml.stream.XMLStreamException;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.regex.Pattern;
/**
* <Function Description><br>
* <ParameterTypeXMLHandler>
*
* @author fr.open
* @since 1.0.0
*/
public enum ParameterTypeXMLHandler {
String {
public com.fr.base.Parameter parseJson(Parameter parameter, com.fr.base.Parameter parameterFR) {
parameterFR.setValue(parameter.getValue());
return parameterFR;
}
},
Integer {
public com.fr.base.Parameter parseJson(Parameter parameter, com.fr.base.Parameter parameterFR) {
parameterFR.setValue(java.lang.Integer.valueOf(parameter.getValue()));
return parameterFR;
}
},
Double {
public com.fr.base.Parameter parseJson(Parameter parameter, com.fr.base.Parameter parameterFR) {
parameterFR.setValue(java.lang.Double.valueOf(parameter.getValue()));
return parameterFR;
}
},
Date {
public com.fr.base.Parameter parseJson(Parameter parameter, com.fr.base.Parameter parameterFR) {
try {
parameterFR.setValue(this.match(parameter.getValue()).parse(parameter.getValue()));
} catch (ParseException e) {
LogKit.error(e.getMessage(), e);
}
return parameterFR;
}
private DateFormat match(String dateStr) {
return DATE_PATTERN.matcher(dateStr).matches() ? DateUtils.DATEFORMAT2 : DateUtils.DATEFORMAT1;
}
},
Boolean {
public com.fr.base.Parameter parseJson(Parameter parameter, com.fr.base.Parameter parameterFR) {
parameterFR.setValue(java.lang.Boolean.valueOf(parameter.getValue()));
return parameterFR;
}
},
Formula {
public com.fr.base.Parameter parseJson(Parameter parameter, com.fr.base.Parameter parameterFR) {
FormulaProvider formulaProvider = (FormulaProvider) StableFactory.createXmlObject("Formula");
formulaProvider.setContent(parameter.getValue());
parameterFR.setValue(formulaProvider);
return parameterFR;
}
},
Long {
public com.fr.base.Parameter parseJson(Parameter parameter, com.fr.base.Parameter parameterFR) {
parameterFR.setValue(java.lang.Long.valueOf(parameter.getValue()));
return parameterFR;
}
},
Multi {
public com.fr.base.Parameter parseJson(Parameter parameter, com.fr.base.Parameter parameterFR) {
return processMultiPara(parameter, parameterFR);
}
},
JSONArray {
public com.fr.base.Parameter parseJson(Parameter parameter, com.fr.base.Parameter parameterFR) {
return processMultiPara(parameter, parameterFR);
}
},
TableColumn {
public com.fr.base.Parameter parseJson(Parameter parameter, com.fr.base.Parameter parameterFR) {
try {
XMLableReader xmLableReader = XMLableReader.createXMLableReader(parameter.getValue());
TableColumn tableColumn = new TableColumn();
xmLableReader.readXMLObject(tableColumn);
parameterFR.setValue(tableColumn);
} catch (XMLStreamException e) {
LogKit.error(e.getMessage(), e);
}
return parameterFR;
}
};
private static final Pattern DATE_PATTERN = Pattern.compile("^\\d{4}-\\d{1,2}-\\d{1,2}");
private ParameterTypeXMLHandler() {
}
private static com.fr.base.Parameter processMultiPara(Parameter parameter, com.fr.base.Parameter parameterFR) {
MultiFieldParameter multiFieldParameter = new MultiFieldParameter(parameterFR.getName());
// multiFieldParameter.parseValueJSON(parameter.getValue());
return multiFieldParameter;
}
public static void main(String[] args) {
try {
String xml = "<TableColumn class=\"com.fr.data.impl.TableColumn\"><TableColumnAttr table=\"abc\" columnIndex=\"5\"/></TableColumn>";
XMLableReader xmLableReader = XMLableReader.createXMLableReader(xml);
TableColumn tableColumn = new TableColumn();
xmLableReader.readXMLObject(tableColumn);
System.out.printf(tableColumn.getTableDataName());
System.out.printf(java.lang.String.valueOf(tableColumn.getColumnIndex()));
} catch (XMLStreamException e) {
LogKit.error(e.getMessage(), e);
}
}
public com.fr.base.Parameter parseJson(Parameter parameter, com.fr.base.Parameter parameterFR) {
return parameterFR;
}
}