diff --git a/plugin.xml b/plugin.xml
index 4a43273..e63fb8c 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -2,15 +2,13 @@
com.fr.plugin.file.submit.oss
yes
- 1.1
+ 1.2
10.0
2018-11-02
author
-
-
-
[2018-10-31]初始化插件。
]]>
@@ -27,7 +25,6 @@
-
\ No newline at end of file
diff --git a/src/main/java/com/fr/plugin/file/submit/oss/fun/OssVariableValue.java b/src/main/java/com/fr/plugin/file/submit/oss/fun/OssVariableValue.java
index a20376e..6679f05 100644
--- a/src/main/java/com/fr/plugin/file/submit/oss/fun/OssVariableValue.java
+++ b/src/main/java/com/fr/plugin/file/submit/oss/fun/OssVariableValue.java
@@ -3,7 +3,6 @@ package com.fr.plugin.file.submit.oss.fun;
import com.fr.base.BaseFormula;
import com.fr.general.GeneralUtils;
import com.fr.log.FineLoggerFactory;
-import com.fr.script.Calculator;
import com.fr.stable.CommonUtils;
import com.fr.stable.StringUtils;
import com.fr.stable.UtilEvalError;
@@ -40,15 +39,27 @@ public class OssVariableValue implements XMLable {
}
}
+ public Type getType() {
+ return type;
+ }
+
public Object getValue() {
return value;
}
+ public String getPlainText() {
+ if (type == Type.FORMULA) {
+ return ((BaseFormula)value).getPureContent();
+ } else {
+ return GeneralUtils.objectToString(value);
+ }
+ }
+
public String getResult(CalculatorProvider cal) {
Object result = value;
if (type == Type.FORMULA) {
try {
- result = ((BaseFormula)value).evalValue(cal);
+ result = ((BaseFormula) value).evalValue(cal);
} catch (UtilEvalError u) {
FineLoggerFactory.getLogger().error(u.getMessage(), u);
}
diff --git a/src/main/java/com/fr/plugin/file/submit/oss/script/OssDownloadHyperlink.java b/src/main/java/com/fr/plugin/file/submit/oss/script/OssDownloadHyperlink.java
index 897bd23..0651ee3 100644
--- a/src/main/java/com/fr/plugin/file/submit/oss/script/OssDownloadHyperlink.java
+++ b/src/main/java/com/fr/plugin/file/submit/oss/script/OssDownloadHyperlink.java
@@ -1,16 +1,29 @@
package com.fr.plugin.file.submit.oss.script;
+import com.fr.base.BaseFormula;
+import com.fr.base.Parameter;
+import com.fr.base.ParameterMapNameSpace;
+import com.fr.general.GeneralUtils;
import com.fr.general.xml.GeneralXMLTools;
import com.fr.js.Hyperlink;
import com.fr.json.JSONException;
import com.fr.json.JSONObject;
import com.fr.log.FineLoggerFactory;
import com.fr.plugin.file.submit.oss.fun.OssVariableValue;
+import com.fr.script.Calculator;
+import com.fr.stable.ArrayUtils;
import com.fr.stable.AssistUtils;
+import com.fr.stable.ColumnRow;
+import com.fr.stable.FormulaProvider;
+import com.fr.stable.ParameterProvider;
import com.fr.stable.StringUtils;
+import com.fr.stable.script.CalculatorProvider;
+import com.fr.stable.script.ExTool;
+import com.fr.stable.script.NameSpace;
import com.fr.stable.web.Repository;
import com.fr.stable.xml.XMLPrintWriter;
import com.fr.stable.xml.XMLableReader;
+import com.fr.web.session.SessionIDInfo;
public class OssDownloadHyperlink extends Hyperlink {
@@ -32,6 +45,7 @@ public class OssDownloadHyperlink extends Hyperlink {
public void setDirectory(OssVariableValue directory) {
this.directory = directory;
+ modifyParameters(directory, "directory");
}
public OssVariableValue getFileName() {
@@ -40,18 +54,39 @@ public class OssDownloadHyperlink extends Hyperlink {
public void setFileName(OssVariableValue fileName) {
this.fileName = fileName;
+ modifyParameters(fileName, "fileName");
}
+ private void modifyParameters(OssVariableValue variableValue, String parameterName) {
+ if (variableValue == null) {
+ return;
+ }
+ ParameterProvider[] providers = getParameters();
+ if (ArrayUtils.isEmpty(providers)) {
+ providers = ArrayUtils.add(providers, new Parameter(parameterName, variableValue.getValue()));
+ } else {
+ for (ParameterProvider provider : providers) {
+ if (AssistUtils.equals(provider.getValue(), parameterName)) {
+ provider.setValue(variableValue.getValue());
+ } else {
+ providers = ArrayUtils.add(providers, new Parameter(parameterName, variableValue.getValue()));
+ }
+ }
+ }
+ setParameters(providers);
+ }
+
+
@Override
protected String actionJS(Repository repository) {
JSONObject data = JSONObject.create();
try {
data.put("bucket", bucket);
if (directory != null) {
- data.put("directory", directory.getResult(repository.getCalculator()));
+ data.put("directory", getResultValue(repository, "directory", directory));
}
if (fileName != null) {
- data.put("fileName", fileName.getResult(repository.getCalculator()));
+ data.put("fileName", getResultValue(repository, "fileName", fileName));
}
} catch (JSONException e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
@@ -59,6 +94,40 @@ public class OssDownloadHyperlink extends Hyperlink {
return "FR.doHyperlinkByOssDownload(" + data.toString() + ");";
}
+ private String getResultValue(Repository repository, String parameterName, OssVariableValue variableValue) {
+ Object result = null;
+ ParameterProvider[] providers = getParameters();
+ for (ParameterProvider provider : providers) {
+ if (AssistUtils.equals(parameterName, provider.getName())) {
+ Object value = provider.getValue();
+ if (value instanceof BaseFormula) {
+ result = ((BaseFormula) value).getResult();
+ break;
+ } else {
+ result = value;
+ }
+ }
+ }
+ if (result == null) {
+ Calculator calculator = newCalculator(repository);
+ result = variableValue.getResult(calculator);
+ }
+ return GeneralUtils.objectToString(result);
+ }
+
+
+ private Calculator newCalculator(Repository repository) {
+ Calculator calculator = Calculator.createCalculator();
+ if (repository != null) {
+ calculator.pushNameSpace(ParameterMapNameSpace.create(repository.getReportParameterMap()));
+ calculator.pushNameSpace(SessionIDInfo.asNameSpace(repository.getSessionID()));
+ }
+ if (!paraMap.isEmpty()) {
+ calculator.pushNameSpace(ParameterMapNameSpace.create(this.paraMap));
+ }
+ return calculator;
+ }
+
public void readXML(final XMLableReader reader) {
super.readXML(reader);
if (reader.isChildNode()) {
@@ -66,9 +135,9 @@ public class OssDownloadHyperlink extends Hyperlink {
if ("Bucket".equals(tagName)) {
this.bucket = reader.getElementValue();
} else if ("Directory".equals(tagName)) {
- this.directory = (OssVariableValue) GeneralXMLTools.readXMLable(reader);
+ this.setDirectory((OssVariableValue)GeneralXMLTools.readXMLable(reader));
} else if ("FileName".equals(tagName)) {
- this.fileName = (OssVariableValue) GeneralXMLTools.readXMLable(reader);
+ this.setFileName((OssVariableValue) GeneralXMLTools.readXMLable(reader));
}
}
}
diff --git a/src/main/java/com/fr/plugin/file/submit/oss/ui/tools/RewriteAction.java b/src/main/java/com/fr/plugin/file/submit/oss/ui/tools/RewriteAction.java
index b628a6f..b7562e3 100644
--- a/src/main/java/com/fr/plugin/file/submit/oss/ui/tools/RewriteAction.java
+++ b/src/main/java/com/fr/plugin/file/submit/oss/ui/tools/RewriteAction.java
@@ -8,11 +8,15 @@ import java.awt.event.ActionEvent;
public class RewriteAction extends UpdateAction {
+ public RewriteAction() {
+ setName("Rewrite");
+ }
+
@Override
public void actionPerformed(ActionEvent e) {
- RewritePane rewritePane = new RewritePane();
- BasicDialog dialog = rewritePane.showWindow(DesignerContext.getDesignerFrame());
- dialog.setVisible(true);
+// RewritePane rewritePane = new RewritePane();
+// BasicDialog dialog = rewritePane.showWindow(DesignerContext.getDesignerFrame());
+// dialog.setVisible(true);
}
}
diff --git a/src/main/java/com/fr/plugin/file/submit/oss/ui/tools/RewritePane.java b/src/main/java/com/fr/plugin/file/submit/oss/ui/tools/RewritePane.java
index 75bc825..477b1d6 100644
--- a/src/main/java/com/fr/plugin/file/submit/oss/ui/tools/RewritePane.java
+++ b/src/main/java/com/fr/plugin/file/submit/oss/ui/tools/RewritePane.java
@@ -1,124 +1,146 @@
-package com.fr.plugin.file.submit.oss.ui.tools;
-
-import com.fr.base.FRContext;
-import com.fr.base.extension.FileExtension;
-import com.fr.data.SubmitJob;
-import com.fr.design.dialog.BasicPane;
-import com.fr.design.gui.ibutton.UIButton;
-import com.fr.file.filetree.FileNode;
-import com.fr.io.TemplateWorkBookIO;
-import com.fr.main.impl.WorkBook;
-import com.fr.plugin.customsubmmit.core.PathConfig;
-import com.fr.plugin.customsubmmit.core.ServerPathColumnConfig;
-import com.fr.plugin.customsubmmit.report.ServerPathSubmiterJob;
-import com.fr.plugin.file.submit.oss.fun.OssSubmitTarget;
-import com.fr.plugin.file.submit.oss.fun.OssSubmitTargetConfig;
-import com.fr.plugin.file.submit.oss.fun.OssVariableValue;
-import com.fr.plugin.file.submit.oss.job.OssSubmitJob;
-import com.fr.report.report.Report;
-import com.fr.report.worksheet.WorkSheet;
-import com.fr.report.write.ReportWriteAttr;
-import com.fr.report.write.SubmitVisitor;
-import com.fr.report.write.WClassSubmiter;
-import com.fr.stable.project.ProjectConstants;
-
-import javax.swing.*;
-import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.List;
-
-public class RewritePane extends BasicPane {
-
-
- public RewritePane() {
- initComponents();
- }
-
- private void initComponents() {
- setLayout(new BorderLayout());
- UIButton button = new UIButton("Start");
- button.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- rewrite();
- }
- });
- add(button, BorderLayout.NORTH);
- }
-
- private void rewrite() {
- new SwingWorker() {
- @Override
- protected Void doInBackground() {
- FileNode[] fileNodes = FRContext.getFileNodes().list(ProjectConstants.REPORTLETS_NAME, FileExtension.CPT, true);
- int len = fileNodes.length;
- for (int i = 0; i < len; i++) {
- FileNode fileNode = fileNodes[i];
- try {
- WorkBook workBook = (WorkBook) TemplateWorkBookIO.readTemplateWorkBook(fileNode.getEnvPath().substring(10));
- int count = workBook.getReportCount();
- for (int n = 0; n < count; n++) {
- Report report = workBook.getReport(n);
- if (report instanceof WorkSheet) {
- ReportWriteAttr reportWriteAttr = ((WorkSheet) report).getAttributeTarget(ReportWriteAttr.XML_TAG);
- if (reportWriteAttr != null) {
- int submitJobCount = reportWriteAttr.getSubmitVisitorCount();
- for (int sn = 0; sn < submitJobCount; sn++) {
- SubmitVisitor submitVisitor = reportWriteAttr.getSubmitVisitor(sn);
- if (submitVisitor instanceof WClassSubmiter) {
- SubmitJob job = ((WClassSubmiter) submitVisitor).getSubmitJob();
- if (job instanceof ServerPathSubmiterJob) {
- ((WClassSubmiter) submitVisitor).setSubmitJob(convert2OssJob((ServerPathSubmiterJob) job));
- }
- }
- }
- }
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- try {
- Thread.sleep(2000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- publish(i);
- }
-
- return null;
- }
-
- @Override
- protected void process(List chunks) {
- System.out.println("已经到第" + chunks.get(chunks.size() - 1) + "个模板");
-
- }
- }.execute();
- }
-
- private OssSubmitJob convert2OssJob(ServerPathSubmiterJob job) {
- OssSubmitJob ossSubmitJob = new OssSubmitJob();
- OssSubmitTargetConfig targetConfig = new OssSubmitTargetConfig();
- ossSubmitJob.setSubmitTargetConfig(targetConfig);
-
- PathConfig pathConfig = job.getPathConfig();
- if (pathConfig != null) {
- for (ServerPathColumnConfig config : pathConfig.getColumnConfigList()) {
- OssSubmitTarget target = new OssSubmitTarget();
- targetConfig.addSubmitTarget(target);
- target.setBucket("fanruan-crm");
- target.setDirectory(new OssVariableValue(config.getPath()));
- target.setFile(new OssVariableValue(config.getCellConfig().toString()));
- target.setName(new OssVariableValue(config.getName()));
- }
- }
- return ossSubmitJob;
- }
-
- @Override
- protected String title4PopupWindow() {
- return "Transform";
- }
-}
+//package com.fr.plugin.file.submit.oss.ui.tools;
+//
+//import com.fr.base.FRContext;
+//import com.fr.base.extension.FileExtension;
+//import com.fr.data.SubmitJob;
+//import com.fr.design.dialog.BasicPane;
+//import com.fr.design.gui.ibutton.UIButton;
+//import com.fr.design.gui.itextarea.UITextArea;
+//import com.fr.file.filetree.FileNode;
+//import com.fr.io.TemplateWorkBookIO;
+//import com.fr.log.FineLoggerFactory;
+//import com.fr.main.TemplateWorkBook;
+//import com.fr.main.impl.WorkBook;
+//import com.fr.plugin.customsubmmit.core.PathConfig;
+//import com.fr.plugin.customsubmmit.core.ServerPathColumnConfig;
+//import com.fr.plugin.customsubmmit.report.ServerPathSubmiterJob;
+//import com.fr.plugin.file.submit.oss.fun.OssSubmitTarget;
+//import com.fr.plugin.file.submit.oss.fun.OssSubmitTargetConfig;
+//import com.fr.plugin.file.submit.oss.fun.OssVariableValue;
+//import com.fr.plugin.file.submit.oss.job.OssSubmitJob;
+//import com.fr.report.report.Report;
+//import com.fr.report.worksheet.WorkSheet;
+//import com.fr.report.write.ReportWriteAttr;
+//import com.fr.report.write.SubmitVisitor;
+//import com.fr.report.write.WClassSubmiter;
+//import com.fr.stable.project.ProjectConstants;
+//
+//import javax.swing.*;
+//import java.awt.*;
+//import java.awt.event.ActionEvent;
+//import java.awt.event.ActionListener;
+//import java.util.ArrayList;
+//import java.util.List;
+//import java.util.concurrent.ExecutionException;
+//
+//public class RewritePane extends BasicPane {
+//
+// private UITextArea textArea;
+//
+// public RewritePane() {
+// initComponents();
+// }
+//
+// private void initComponents() {
+// setLayout(new BorderLayout());
+// UIButton button = new UIButton("Start");
+// button.addActionListener(new ActionListener() {
+// @Override
+// public void actionPerformed(ActionEvent e) {
+// rewrite();
+// }
+// });
+// add(button, BorderLayout.NORTH);
+// textArea = new UITextArea();
+// add(new JScrollPane(textArea), BorderLayout.CENTER);
+// }
+//
+// private void rewrite() {
+// new SwingWorker, Integer>() {
+// @Override
+// protected List doInBackground() {
+// FileNode[] fileNodes = FRContext.getFileNodes().list(ProjectConstants.REPORTLETS_NAME, FileExtension.CPT, true);
+// int len = fileNodes.length;
+// List names = new ArrayList();
+// for (int i = 0; i < len; i++) {
+// boolean willSave = false;
+// FileNode fileNode = fileNodes[i];
+// try {
+// String path = fileNode.getEnvPath().substring(10);
+// WorkBook workBook = (WorkBook) TemplateWorkBookIO.readTemplateWorkBook(path);
+// int count = workBook.getReportCount();
+// for (int n = 0; n < count; n++) {
+// Report report = workBook.getReport(n);
+// if (report instanceof WorkSheet) {
+// ReportWriteAttr reportWriteAttr = ((WorkSheet) report).getAttributeTarget(ReportWriteAttr.XML_TAG);
+// if (reportWriteAttr != null) {
+// int submitJobCount = reportWriteAttr.getSubmitVisitorCount();
+// for (int sn = 0; sn < submitJobCount; sn++) {
+// SubmitVisitor submitVisitor = reportWriteAttr.getSubmitVisitor(sn);
+// if (submitVisitor instanceof WClassSubmiter) {
+// SubmitJob job = ((WClassSubmiter) submitVisitor).getSubmitJob();
+// if (job instanceof ServerPathSubmiterJob) {
+// ((WClassSubmiter) submitVisitor).setSubmitJob(convert2OssJob((ServerPathSubmiterJob) job));
+// willSave = true;
+// }
+// }
+// }
+// }
+// }
+// }
+// if (willSave) {
+// names.add(path);
+// TemplateWorkBookIO.writeTemplateWorkBook(workBook, path);
+// }
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// publish(i);
+// }
+//
+// return names;
+// }
+//
+// @Override
+// protected void process(List chunks) {
+// textArea.append("已经到第" + chunks.get(chunks.size() - 1) + "个模板" + "\n");
+// }
+//
+// @Override
+// protected void done() {
+// try {
+// List paths = get();
+// for (String text : paths) {
+// textArea.append("成功修改了模板:" + text + "\n");
+// }
+// } catch (Exception e) {
+// FineLoggerFactory.getLogger().error(e.getMessage(), e);
+// }
+// }
+// }.execute();
+// }
+//
+// private OssSubmitJob convert2OssJob(ServerPathSubmiterJob job) {
+// OssSubmitJob ossSubmitJob = new OssSubmitJob();
+// OssSubmitTargetConfig targetConfig = new OssSubmitTargetConfig();
+// ossSubmitJob.setSubmitTargetConfig(targetConfig);
+//
+// PathConfig pathConfig = job.getPathConfig();
+// if (pathConfig != null) {
+// for (ServerPathColumnConfig config : pathConfig.getColumnConfigList()) {
+// OssSubmitTarget target = new OssSubmitTarget();
+// targetConfig.addSubmitTarget(target);
+// target.setBucket("fanruan-crm");
+// target.setDirectory(new OssVariableValue(config.getPath()));
+// target.setFile(new OssVariableValue(config.getCellConfig().toString()));
+// target.setName(new OssVariableValue(config.getName()));
+// }
+// }
+// return ossSubmitJob;
+// }
+//
+// @Override
+// protected String title4PopupWindow() {
+// return "Transform";
+// }
+//}