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
102 lines
3.6 KiB
3 years ago
|
/*
|
||
|
* 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]));
|
||
|
}
|
||
|
}
|