JSD-9277 导出excel文件属性自定义
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.

102 lines
3.6 KiB

/*
* Copyright (C), 2018-2022
* Project: starter
* FileName: DocSummaryAttr
* Author: Louis
* Date: 2022/1/4 13:58
*/
package com.fr.plugin.ibgq.provider;
import com.fanruan.api.log.LogKit;
import com.fanruan.api.util.StringKit;
import com.fanruan.api.xml.XmlKit;
import com.fr.config.holder.factory.Holders;
import com.fr.config.holder.impl.ColConf;
import com.fr.json.JSONException;
import com.fr.json.JSONObject;
import com.fr.script.Calculator;
import com.fr.stable.ArrayUtils;
import com.fr.stable.ParameterProvider;
import com.fr.stable.fun.impl.AbstractIOFileAttrMark;
import com.fr.stable.xml.XMLPrintWriter;
import com.fr.stable.xml.XMLReadable;
import com.fr.stable.xml.XMLableReader;
import java.util.ArrayList;
import java.util.Collection;
/**
* <Function Description><br>
* <DocSummaryAttr>
*
* @author fr.open
* @since 1.0.0
*/
public class DocSummaryAttr extends AbstractIOFileAttrMark {
public final static String XML_TAG = "DocumentSummaryAttr";
private static final long serialVersionUID = 6037990832141495913L;
private ColConf<Collection<ParameterProvider>> parameters = Holders.collection(new ArrayList<>(), ParameterProvider.class);
@Override
public String xmlTag() {
return XML_TAG;
}
@Override
public void readXML(XMLableReader reader) {
if (reader.isChildNode()) {
String tag = reader.getTagName();
if (StringKit.equals(tag, "Parameters")) {
final ArrayList<ParameterProvider> parameterProviders = new ArrayList<>();
reader.readXMLObject(new XMLReadable() {
public void readXML(XMLableReader xmLableReader) {
if ("Parameter".equals(xmLableReader.getTagName())) {
parameterProviders.add(XmlKit.readParameter(xmLableReader));
}
}
});
if (!parameterProviders.isEmpty()) {
this.parameters.set(parameterProviders);
}
}
}
}
@Override
public void writeXML(XMLPrintWriter writer) {
Collection<ParameterProvider> parameterProviders = this.parameters.get();
XmlKit.writeParameters(writer, parameterProviders.toArray(new ParameterProvider[0]));
}
@Override
public DocSummaryAttr clone() {
DocSummaryAttr docSummaryAttr = (DocSummaryAttr) super.clone();
try {
docSummaryAttr.parameters = (ColConf) this.parameters.clone();
} catch (CloneNotSupportedException e) {
LogKit.error(e.getMessage(), e);
}
return docSummaryAttr;
}
@Override
public JSONObject createJSONConfig() throws JSONException {
JSONObject json = super.createJSONConfig();
json.put("parameters", this.parameters.toString());
return json;
}
public ParameterProvider[] getParameters(Calculator calculator) {
Collection<ParameterProvider> parameterProviders = (Collection) this.parameters.get();
return parameterProviders.size() == 0 ? this.processParameters(calculator) : parameterProviders.toArray(new ParameterProvider[0]);
}
public void setParameters(ParameterProvider[] parameterProviders) {
this.parameters.set(ArrayUtils.toList(parameterProviders));
}
protected ParameterProvider[] processParameters(Calculator calculator) {
Collection<ParameterProvider> parameterProviders = this.parameters.get();
return Calculator.processParameters(calculator, parameterProviders.toArray(new ParameterProvider[0]));
}
}