From c8067b74c69d973363f4cffe260e7bd2f7bcef19 Mon Sep 17 00:00:00 2001 From: charile_Lu Date: Wed, 4 Nov 2020 15:02:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=8F=92=E4=BB=B6demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 + build.gradle | 120 ++++++++++++++++ build.xml | 128 ++++++++++++++++++ encrypt.xml | 10 ++ plugin-showtype-demo.iml | 89 ++++++++++++ plugin.xml | 23 ++++ pom.xml | 48 +++++++ screenshots/demo.png | Bin 0 -> 74403 bytes setting.gradle | 1 + .../plugin/showtype/NewPreviewComponent.java | 20 +++ .../showtype/NewPreviewInitializeMonitor.java | 23 ++++ .../showtype/NewPreviewScheduleType.java | 43 ++++++ .../showtype/NewPreviewTypeLocaleFinder.java | 15 ++ .../fr/plugin/showtype/ShowTypeTestJob.java | 25 ++++ .../showtype/locale/newPreview.properties | 1 + .../locale/newPreview_en_US.properties | 1 + .../locale/newPreview_zh_CN.properties | 1 + .../com/fr/plugin/showtype/web/show_types.js | 31 +++++ 18 files changed, 582 insertions(+) create mode 100644 build.gradle create mode 100644 build.xml create mode 100644 encrypt.xml create mode 100644 plugin-showtype-demo.iml create mode 100644 plugin.xml create mode 100644 pom.xml create mode 100644 screenshots/demo.png create mode 100644 setting.gradle create mode 100644 src/main/java/com/fr/plugin/showtype/NewPreviewComponent.java create mode 100644 src/main/java/com/fr/plugin/showtype/NewPreviewInitializeMonitor.java create mode 100644 src/main/java/com/fr/plugin/showtype/NewPreviewScheduleType.java create mode 100644 src/main/java/com/fr/plugin/showtype/NewPreviewTypeLocaleFinder.java create mode 100644 src/main/java/com/fr/plugin/showtype/ShowTypeTestJob.java create mode 100644 src/main/resources/com/fr/plugin/showtype/locale/newPreview.properties create mode 100644 src/main/resources/com/fr/plugin/showtype/locale/newPreview_en_US.properties create mode 100644 src/main/resources/com/fr/plugin/showtype/locale/newPreview_zh_CN.properties create mode 100644 src/main/resources/com/fr/plugin/showtype/web/show_types.js diff --git a/README.md b/README.md index e69de29..51085ac 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,3 @@ +**自定义预览类型插件**
+插件效果
+![1](screenshots/1.png) diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..d66f538 --- /dev/null +++ b/build.gradle @@ -0,0 +1,120 @@ +apply plugin: 'java' + + +ext { + /** + * 项目中依赖的jar的路径 + * 1.如果依赖的jar需要打包到zip中,放置在lib根目录下 + * 2.如果依赖的jar仅仅是编译时需要,防止在lib下子目录下即可 + */ + libPath = "$projectDir/../webroot/WEB-INF/lib" + + /** + * 是否对插件的class进行加密保护,防止反编译 + */ + guard = false + + def pluginInfo = getPluginInfo() + pluginPre = "fine-plugin" + pluginName = pluginInfo.id + pluginVersion = pluginInfo.version + + outputPath = "$projectDir/../webroot/WEB-INF/plugins/plugin-" + pluginName + "-1.0/classes" +} + +group = 'com.fr.plugin' +version = '10.0' +sourceCompatibility = '8' + +sourceSets { + main { + java.outputDir = file(outputPath) + output.resourcesDir = file(outputPath) + } +} + +ant.importBuild("encrypt.xml") +//定义ant变量 +ant.projectDir = projectDir +ant.references["compile.classpath"] = ant.path { + fileset(dir: libPath, includes: '**/*.jar') + fileset(dir: ".",includes:"**/*.jar" ) +} + +classes.dependsOn('clean') + +task copyFiles(type: Copy,dependsOn: 'classes'){ + from outputPath + into "$projectDir/classes" +} + +task preJar(type:Copy,dependsOn: guard ? 'compile_encrypt_javas' : 'compile_plain_javas'){ + from "$projectDir/classes" + into "$projectDir/transform-classes" + include "**/*.*" +} +jar.dependsOn("preJar") + +task makeJar(type: Jar,dependsOn: preJar){ + from fileTree(dir: "$projectDir/transform-classes") + baseName pluginPre + appendix pluginName + version pluginVersion + destinationDir = file("$buildDir/libs") + + doLast(){ + delete file("$projectDir/classes") + delete file("$projectDir/transform-classes") + } +} + +task copyFile(type: Copy,dependsOn: ["makeJar"]){ + from "$buildDir/libs" + from("$projectDir/lib") { + include "*.jar" + } + from "$projectDir/plugin.xml" + into file("$buildDir/temp/plugin") +} + +task zip(type:Zip,dependsOn:["copyFile"]){ + from "$buildDir/temp/plugin" + destinationDir file("$buildDir/install") + baseName pluginPre + appendix pluginName + version pluginVersion +} + +//控制build时包含哪些文件,排除哪些文件 +processResources { +// exclude everything +// 用*.css没效果 +// exclude '**/*.css' +// except this file +// include 'xx.xml' +} + +/*读取plugin.xml中的version*/ +def getPluginInfo(){ + def xmlFile = file("plugin.xml") + if (!xmlFile.exists()) { + return ["id":"none", "version":"1.0.0"] + } + def plugin = new XmlParser().parse(xmlFile) + def version = plugin.version[0].text() + def id = plugin.id[0].text() + return ["id":id,"version":version] +} + +repositories { + mavenLocal() + maven { + url = uri('http://mvn.finedevelop.com/repository/maven-public/') + } +} + +dependencies { + //使用本地jar + implementation fileTree(dir: 'lib', include: ['**/*.jar']) + implementation fileTree(dir: libPath, include: ['**/*.jar']) +} \ No newline at end of file diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..7907512 --- /dev/null +++ b/build.xml @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/encrypt.xml b/encrypt.xml new file mode 100644 index 0000000..15c436f --- /dev/null +++ b/encrypt.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/plugin-showtype-demo.iml b/plugin-showtype-demo.iml new file mode 100644 index 0000000..7a5f8eb --- /dev/null +++ b/plugin-showtype-demo.iml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugin.xml b/plugin.xml new file mode 100644 index 0000000..85377ba --- /dev/null +++ b/plugin.xml @@ -0,0 +1,23 @@ + + + com.fr.plugin.type.newPreview.v10 + + yes + 1.1 + 10.0 + 2020-08-24 + finereport.mata + + [2020-08-24]自定义预览类型

+ ]]> +
+ + + + + + + + +
\ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..8bfe632 --- /dev/null +++ b/pom.xml @@ -0,0 +1,48 @@ + + + + plugin + com.fr.maven + 10.0 + + 4.0.0 + + plugin-showtype-demo + + + com.fr.decision + decision-report-feature + 10.0 + compile + + + com.fr.schedule + schedule-report-feature + 10.0 + compile + + + + + ${basedir}/src/main/java + + + + E:/Tomcat/apache-tomcat-7.0.57-test/webapps/webroot/WEB-INF/plugins/plugin-com.fr.plugin.type.newPreview.v10-1.0/classes + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + + + \ No newline at end of file diff --git a/screenshots/demo.png b/screenshots/demo.png new file mode 100644 index 0000000000000000000000000000000000000000..2ef6ebf8a1c2959717e85caaee6454fec6c5fe62 GIT binary patch literal 74403 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 Yd;!<`>Pl|w-rY}8R!yc#>cgl11>eKl0RR91 literal 0 HcmV?d00001 diff --git a/setting.gradle b/setting.gradle new file mode 100644 index 0000000..ea2525d --- /dev/null +++ b/setting.gradle @@ -0,0 +1 @@ +rootProject.name = 'plugin-showtype-demo' \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/showtype/NewPreviewComponent.java b/src/main/java/com/fr/plugin/showtype/NewPreviewComponent.java new file mode 100644 index 0000000..445097f --- /dev/null +++ b/src/main/java/com/fr/plugin/showtype/NewPreviewComponent.java @@ -0,0 +1,20 @@ +package com.fr.plugin.showtype; + +import com.fr.web.struct.Component; +import com.fr.web.struct.browser.RequestClient; +import com.fr.web.struct.category.ScriptPath; + +/** + * @Author Roger + * @Date 2020/8/18 19:46 + * @Version 10.0 + */ +public class NewPreviewComponent extends Component { + + public static final NewPreviewComponent KEY = new NewPreviewComponent(); + + @Override + public ScriptPath script(RequestClient requestClient) { + return ScriptPath.build("com/fr/plugin/showtype/web/show_types.js"); + } +} diff --git a/src/main/java/com/fr/plugin/showtype/NewPreviewInitializeMonitor.java b/src/main/java/com/fr/plugin/showtype/NewPreviewInitializeMonitor.java new file mode 100644 index 0000000..901a8cc --- /dev/null +++ b/src/main/java/com/fr/plugin/showtype/NewPreviewInitializeMonitor.java @@ -0,0 +1,23 @@ +package com.fr.plugin.showtype; + +import com.fr.decision.web.MainComponent; +import com.fr.plugin.context.PluginContext; +import com.fr.plugin.observer.inner.AbstractPluginLifecycleMonitor; +import com.fr.web.struct.Registry; + +/** + * @Author Roger + * @Date 2020/8/27 8:54 + * @Version 10.0 + */ +public class NewPreviewInitializeMonitor extends AbstractPluginLifecycleMonitor { + @Override + public void afterRun(PluginContext pluginContext) { + Registry.register(MainComponent.class, NewPreviewComponent.KEY); + } + + @Override + public void beforeStop(PluginContext pluginContext) { + Registry.remove(MainComponent.class, NewPreviewComponent.KEY); + } +} diff --git a/src/main/java/com/fr/plugin/showtype/NewPreviewScheduleType.java b/src/main/java/com/fr/plugin/showtype/NewPreviewScheduleType.java new file mode 100644 index 0000000..f9f19d6 --- /dev/null +++ b/src/main/java/com/fr/plugin/showtype/NewPreviewScheduleType.java @@ -0,0 +1,43 @@ +package com.fr.plugin.showtype; + + +import com.fr.decision.web.DirectoryComponent; +import com.fr.intelli.record.Focus; +import com.fr.intelli.record.Original; +import com.fr.schedule.extension.report.provider.impl.AbstractScheduleTaskShowTypeProvider; +import com.fr.schedule.feature.job.calculation.BaseCalculationJob; +import com.fr.web.struct.Atom; + +/** + * @Author Roger + * @Date 2020/11/3 19:00 + * @Version 10.0 + */ +public class NewPreviewScheduleType extends AbstractScheduleTaskShowTypeProvider { + + @Override + public Atom attach() { + return DirectoryComponent.KEY; + } + + @Override + public Atom client() { + return NewPreviewComponent.KEY; + } + + @Override + public Class typeClass() { + return ShowTypeTestJob.class; + } + + @Override + @Focus(id = "com.fr.plugin.showtype.v10", text = "Fine-Plugin_New_Preview_Type", source = Original.PLUGIN) + public int typeValue() { + return 5; + } + + @Override + public String typeActorName() { + return "form_adaptive"; + } +} diff --git a/src/main/java/com/fr/plugin/showtype/NewPreviewTypeLocaleFinder.java b/src/main/java/com/fr/plugin/showtype/NewPreviewTypeLocaleFinder.java new file mode 100644 index 0000000..ef1d050 --- /dev/null +++ b/src/main/java/com/fr/plugin/showtype/NewPreviewTypeLocaleFinder.java @@ -0,0 +1,15 @@ +package com.fr.plugin.showtype; + +import com.fr.stable.fun.impl.AbstractLocaleFinder; + +/** + * @Author Roger + * @Date 2020/8/18 18:24 + * @Version 10.0 + */ +public class NewPreviewTypeLocaleFinder extends AbstractLocaleFinder { + @Override + public String find() { + return "com/fr/plugin/showtype/locale/newPreview"; + } +} diff --git a/src/main/java/com/fr/plugin/showtype/ShowTypeTestJob.java b/src/main/java/com/fr/plugin/showtype/ShowTypeTestJob.java new file mode 100644 index 0000000..b495321 --- /dev/null +++ b/src/main/java/com/fr/plugin/showtype/ShowTypeTestJob.java @@ -0,0 +1,25 @@ +package com.fr.plugin.showtype; + +import com.fr.log.FineLoggerFactory; +import com.fr.schedule.feature.job.calculation.BaseCalculationJob; +import com.fr.schedule.feature.job.result.CalculationResult; +import com.fr.stable.collections.combination.Pair; +import com.fr.third.v2.org.quartz.JobDataMap; + +import javax.swing.*; +import java.util.List; + +public class ShowTypeTestJob extends BaseCalculationJob { + @Override + public Pair> calculation() throws Exception { + FineLoggerFactory.getLogger().error("job has be executed"); + JOptionPane.showMessageDialog(null, "job has be executed"); + System.out.println("job has be executed"); + return null; + } + + @Override + public boolean initTemplate(JobDataMap jobDataMap) { + return true; + } +} diff --git a/src/main/resources/com/fr/plugin/showtype/locale/newPreview.properties b/src/main/resources/com/fr/plugin/showtype/locale/newPreview.properties new file mode 100644 index 0000000..c4bd0d2 --- /dev/null +++ b/src/main/resources/com/fr/plugin/showtype/locale/newPreview.properties @@ -0,0 +1 @@ +Fine-Plugin_New_Preview_Type=New_Preview_Type \ No newline at end of file diff --git a/src/main/resources/com/fr/plugin/showtype/locale/newPreview_en_US.properties b/src/main/resources/com/fr/plugin/showtype/locale/newPreview_en_US.properties new file mode 100644 index 0000000..c4bd0d2 --- /dev/null +++ b/src/main/resources/com/fr/plugin/showtype/locale/newPreview_en_US.properties @@ -0,0 +1 @@ +Fine-Plugin_New_Preview_Type=New_Preview_Type \ No newline at end of file diff --git a/src/main/resources/com/fr/plugin/showtype/locale/newPreview_zh_CN.properties b/src/main/resources/com/fr/plugin/showtype/locale/newPreview_zh_CN.properties new file mode 100644 index 0000000..5c3089f --- /dev/null +++ b/src/main/resources/com/fr/plugin/showtype/locale/newPreview_zh_CN.properties @@ -0,0 +1 @@ +Fine-Plugin_New_Preview_Type=\u65b0\u9884\u89c8 \ No newline at end of file diff --git a/src/main/resources/com/fr/plugin/showtype/web/show_types.js b/src/main/resources/com/fr/plugin/showtype/web/show_types.js new file mode 100644 index 0000000..dfec787 --- /dev/null +++ b/src/main/resources/com/fr/plugin/showtype/web/show_types.js @@ -0,0 +1,31 @@ +!(function () { + BI.config("dec.provider.report.template.show_types", function (provider) { + provider.inject({ + showTypes: { + suffix: "frm", + types: [ + { + text: BI.i18nText("新预览"), + defaultValue: true, + value: 5, + }, + ], + }, + }); + }); + + BI.config("dec.provider.report.schedule_template.show_types", function (provider) { + provider.inject({ + showTypes: { + suffix: "frm", + types: [ + { + text: BI.i18nText("新预览"), + defaultValue: true, + value: 5, + }, + ], + }, + }); + }); +}())