/* * 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; /** *
* * * @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> 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 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 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 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 parameterProviders = this.parameters.get(); return Calculator.processParameters(calculator, parameterProviders.toArray(new ParameterProvider[0])); } }