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
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; |
|
} |
|
} |