diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..fc202594ce3af477a60542482d59c6a09de71f33 --- /dev/null +++ b/.gitignore @@ -0,0 +1,757 @@ +.scratch/ +.mvn/repository + +# Created by https://www.gitignore.io/api/vim,node,java,linux,macos,emacs,nanoc,eclipse,windows,java-web,visualstudio,jetbrains+iml,visualstudiocode,maven,gradle + +### Eclipse ### + +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# CDT- autotools +.autotools + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Annotation Processing +.apt_generated/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +### Eclipse Patch ### +# Eclipse Core +.project + +# JDT-specific (Eclipse Java Development Tools) +.classpath + +# Annotation Processing +.apt_generated + +### Emacs ### +# -*- mode: gitignore; -*- +*~ +\#*\# +/.emacs.desktop +/.emacs.desktop.lock +*.elc +auto-save-list +tramp +.\#* + +# Org-mode +.org-id-locations +*_archive + +# flymake-mode +*_flymake.* + +# eshell files +/eshell/history +/eshell/lastdir + +# elpa packages +/elpa/ + +# reftex files +*.rel + +# AUCTeX auto folder +/auto/ + +# cask packages +.cask/ +dist/ + +# Flycheck +flycheck_*.el + +# server auth directory +/server/ + +# projectiles files +.projectile + +# directory configuration +.dir-locals.el + +### Java ### +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +### Java-Web ### +## ignoring target file +target/ + +### JetBrains+iml ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/modules.xml +# .idea/*.iml +# .idea/modules + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +### JetBrains+iml Patch ### +# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023 + +*.iml +modules.xml +.idea/misc.xml +*.ipr +.idea/workspace.xml + +### Linux ### + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### macOS ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### Maven ### +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +.mvn/wrapper/maven-wrapper.jar +.mvn/settings.xml + +### Nanoc ### +# For projects using Nanoc (http://nanoc.ws/) + +# Default location for output (needs to match output_dir's value found in nanoc.yaml) +output/ + +# Temporary file directory +tmp/nanoc/ + +# Crash Log +crash.log + +### Node ### +# Logs +logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# next.js build output +.next + +# nuxt.js build output +.nuxt + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless + +### Vim ### +# Swap +[._]*.s[a-v][a-z] +[._]*.sw[a-p] +[._]s[a-rt-v][a-z] +[._]ss[a-gi-z] +[._]sw[a-p] + +# Session +Session.vim + +# Temporary +.netrwhist +# Auto-generated tag files +tags +# Persistent undo +[._]*.un~ + +### VisualStudioCode ### +.vscode/* +# !.vscode/settings.json +# !.vscode/tasks.json +# !.vscode/launch.json +# !.vscode/extensions.json + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +### Gradle ### +.gradle +/build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +# Cache of project +.gradletasknamecache + +# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 +# gradle/wrapper/gradle-wrapper.properties + +### VisualStudio ### +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp_proj +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + + +# End of https://www.gitignore.io/api/vim,node,java,linux,macos,emacs,nanoc,eclipse,windows,java-web,visualstudio,jetbrains+iml,visualstudiocode,maven,gradle + +!charts/*/charts/*.tgz \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..758a0662ea8ca813f51321a31d2ce6d8256d6b00 --- /dev/null +++ b/pom.xml @@ -0,0 +1,144 @@ + + + + + + io.iec.edp + caf-boot-parent + 0.3.6 + + + 4.0.0 + + com.inspur.edp + viewObject-model + pom + 0.1.1 + + + view-object-manager + view-object-webapi + + + 0.2.23 + 0.1.16 + 0.2.16 + 0.1.5 + 0.1.28 + 0.1.28 + 0.1.24 + 0.1.15 + + + + + com.inspur.edp + cef-designtime-api + ${cef.designtime.version} + + + com.inspur.edp + das-commonmodel + ${das.commonmodel.designtime.version} + + + com.inspur.edp + bef-bizentity + ${bef.designtime.version} + + + com.inspur.edp + caf-cef-rt-api + ${caf.cef.schema.version} + + + com.inspur.edp + caf-cef-rt-spi + ${caf.cef.schema.version} + + + com.inspur.edp + caf-cef-schema + ${caf.cef.schema.version} + + + com.inspur.edp + caf-cef-schema-base + ${caf.cef.schema.version} + + + com.inspur.edp + lcm-metadata-api + ${lcm.metadata.version} + + + com.inspur.edp + lcm-metadata-spi + ${lcm.metadata.spi.version} + + + com.inspur.edp + metadata-to-java-core + ${lcm.metadata.version} + + + com.inspur.edp + metadata-to-java-context + 0.1.4 + + + com.inspur.edp + metadata-rtcustomization-spi + ${metadata.rtcustomization.version} + + + com.inspur.edp + metadata-rtcustomization-api + 0.1.28 + + + com.inspur.edp + metadata-deploy-api + ${metadata.deploy.version} + + + + + + + gsp-snapshots-repo + https://repos.iec.io/repository/maven-gsp-snapshots/ + + + gsp-releases-repo + https://repos.iec.io/repository/maven-gsp-releases/ + + + + + gsp-releases-repo + https://repos.iec.io/repository/maven-gsp-releases/ + + + gsp-snapshots-repo + https://repos.iec.io/repository/maven-gsp-snapshots/ + + + diff --git a/style/ubml_checkstyle.xml b/style/ubml_checkstyle.xml new file mode 100644 index 0000000000000000000000000000000000000000..b3d1b34c7366a3594d3077a84de90f14818cde63 --- /dev/null +++ b/style/ubml_checkstyle.xml @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/view-object-manager/pom.xml b/view-object-manager/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..8ba01fc477a257fbcd820e32c4ac3e40ef4cd98d --- /dev/null +++ b/view-object-manager/pom.xml @@ -0,0 +1,150 @@ + + + + + 4.0.0 + + + com.inspur.edp + viewObject-model + 0.1.1 + + + + view-object-manager + 0.1.1 + + + + com.inspur.edp + das-commonmodel + + + com.inspur.edp + lcm-metadata-api + + + com.inspur.edp + caf-cef-rt-api + + + com.inspur.edp + caf-cef-rt-spi + + + com.inspur.edp + lcm-metadata-spi + + + com.inspur.edp + metadata-rtcustomization-api + 0.1.28 + + + com.inspur.edp + metadata-deploy-api + + + com.inspur.edp + lcm-logging-service + 0.1.4 + + + com.inspur.edp + bef-component + 0.1.0 + + + io.iec.edp + caf-boot-commons-json + + + com.inspur.edp + common-component-api + 0.1.40 + + + com.inspur.edp + metadata-businesstype-api + 0.1.2 + compile + + + io.iec.edp + caf-rpc-api + 0.3.4 + + + com.inspur.edp + cef-variable-dtgenerator + 0.1.0-SNAPSHOT + + + com.inspur.edp + lcm-fs-api + 0.1.0 + compile + + + com.inspur.edp + caf-cef-dt-spi + 0.1.7 + + + com.inspur.edp + metadata-rtcustomization-server-api + 0.1.23 + compile + + + com.inspur.edp + bff-engine-core + 0.1.4 + + + com.inspur.edp + metadata-rtcustomization-spi + + + com.inspur.edp + task-api + 0.3.27 + + + com.inspur.edp + wf-runtime-api + 0.3.23 + + + com.inspur.edp + view-object-model + ${project.version} + compile + + + com.inspur.edp.cef.designtime.core + com.inspur.edp.cef.designtime.core + 0.1.1 + system + ${project.basedir}/../ref/com.inspur.edp.cef.designtime.core.jar + + + + diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/BffMetadataEventListener.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/BffMetadataEventListener.java new file mode 100644 index 0000000000000000000000000000000000000000..ca672d4d7c58c67a86bc9d72328e31210ad01311 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/BffMetadataEventListener.java @@ -0,0 +1,87 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager; + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.common.LinkBeUtils; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoObjectSourceType; +import com.inspur.edp.formserver.vmmanager.i18nservice.ViewModelI18nService; +import com.inspur.edp.formserver.vmmanager.validate.ViewModelValidator; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.spi.event.MetadataEventArgs; +import com.inspur.edp.lcm.metadata.spi.event.MetadataEventListener; + +public class BffMetadataEventListener implements MetadataEventListener { + /** + 业务实体元数据保存前事件 + + @param e + */ + public final void fireMetadataSavingEvent(MetadataEventArgs e) + { + // 类型判断 + if (!(e.getMetadata().getContent() instanceof GspViewModel)) + { + return; + } + + GspViewModel vm = (GspViewModel)((e.getMetadata().getContent() instanceof GspViewModel) ? e.getMetadata().getContent() : null); + + //保存前校验 + ViewModelValidator validator = new ViewModelValidator(); + validator.validate(e.getPath(), vm); + //国际化抽取 + ViewModelI18nService service = new ViewModelI18nService(); + service.getResourceItem(e.getMetadata()); + + + } + + /** + 视图对象元数据保存后事件 + + @param e + */ + public final void fireMetadataSavedEvent(MetadataEventArgs e) { + + } + + @Override + public void fireMetadataDeletingEvent(MetadataEventArgs metadataEventArgs) { + + } + + @Override + public void fireMetadataDeletedEvent(MetadataEventArgs metadataEventArgs) { + + } + @Override + public void fireMetadataAchievedEvent(MetadataEventArgs args) { + GspMetadata metadata=args.getMetadata(); + + if (!(metadata.getContent() instanceof GspViewModel)){ + return; + } + GspViewModel viewModel= (GspViewModel) metadata.getContent(); + if (viewModel.getIsVirtual()) + return; + if(viewModel.getMainObject().getMapping() != null && viewModel.getMainObject().getMapping().getSourceType() == GspVoObjectSourceType.BeObject){ + LinkBeUtils utils=new LinkBeUtils(false); + utils.linkWithBe(viewModel); + } + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/ContentSerializer.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/ContentSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..8b7eacd94a569799a8441383a57fa64247756468 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/ContentSerializer.java @@ -0,0 +1,84 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager; + + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.inspur.edp.formserver.viewmodel.Context; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.VoThreadLoacl; +import com.inspur.edp.lcm.metadata.api.IMetadataContent; +import com.inspur.edp.lcm.metadata.spi.MetadataContentSerializer; + +import java.io.IOException; + +/** + * @author shksatrt + * @DATE 2019/7/29 - 10:12 + */ +public class ContentSerializer implements MetadataContentSerializer { + + @Override + public JsonNode Serialize(IMetadataContent iMetadataContent) { +// throw new RuntimeException("vo未实现序列化"); + Context context = new Context(); + context.setfull(false); + VoThreadLoacl.set(context); + try { + String json = new ObjectMapper().writeValueAsString(iMetadataContent); + JsonNode jsonNode = new ObjectMapper().readTree(json); + return jsonNode; + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } catch (RuntimeException e) { + throw new RuntimeException(e + ((GspViewModel) iMetadataContent).getGeneratingAssembly()); + }finally { + VoThreadLoacl.unset(); + } + } + + @Override + public IMetadataContent DeSerialize(JsonNode jsonNode) { + ObjectMapper mapper = new ObjectMapper(); + try { + GspViewModel vm=mapper.readValue(handleJsonString(jsonNode.toString()), GspViewModel.class); +// if(RefCommonContext.isInvokeAtDesignTime()){ +// if (vm.getMainObject().getMapping() != null && vm.getMainObject().getMapping().getSourceType() == GspVoObjectSourceType.BeObject) { +// LinkBeUtils linkUtil = new LinkBeUtils(); +// linkUtil.linkWithBe(vm); +// } +// } + return vm; + } catch (IOException e) { + throw new RuntimeException("vo元数据反序列化失败"+e); + } + } + + private static String handleJsonString(String contentJson) { + if (contentJson.startsWith("\"")) { + contentJson = contentJson.replace("\\\"", "\""); + while (contentJson.startsWith("\"")) { + contentJson = contentJson.substring(1, contentJson.length() - 1); + } + } + return contentJson; + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/PushChangeSetListener.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/PushChangeSetListener.java new file mode 100644 index 0000000000000000000000000000000000000000..d691ccc979efc86851a5ef0490fd942a7bb86dda --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/PushChangeSetListener.java @@ -0,0 +1,89 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager; + +import com.inspur.edp.bef.bizentity.pushchangesetargs.MetadataInfo; +import com.inspur.edp.bef.bizentity.pushchangesetargs.PushChangeSet; +import com.inspur.edp.bef.bizentity.pushchangesetargs.PushChangeSetArgs; +import com.inspur.edp.bef.bizentity.pushchangesetargs.RelatedMetadata; +import com.inspur.edp.bef.bizentity.pushchangesetlistener.IPushChangeSetListener; +import com.inspur.edp.formserver.viewmodel.pushchangesetargs.VmPushChangeSet; +import com.inspur.edp.formserver.viewmodel.pushchangesetargs.VmPushChangeSetArgs; +import com.inspur.edp.formserver.vmmanager.pushchangesetevent.PushVmChangeSetEventBroker; +import com.inspur.edp.formserver.vmmanager.util.PushChangeSets; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.service.MetadataService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +public class PushChangeSetListener implements IPushChangeSetListener { + + @Override + public void bePushChangeSet(PushChangeSetArgs args) { + PushChangeSet changeSet = args.getPushChangeSet(); + List metadataList = getRelatedMetadataList(changeSet.getMetadataInfo(), changeSet.getRelatedMetadatas()); + if(metadataList == null && metadataList.size() == 0) { + return; + } + metadataList.forEach(metadata -> { + new PushChangeSets(metadata, changeSet).pushChangeSetToMetadata(); + }); + pushVmChangeSet(metadataList); + } + + /** + * 过滤需要推送的元数据 + * @param metadataInfo + * @param relatedMetadataInfo + * @return + */ + private List getRelatedMetadataList(MetadataInfo metadataInfo, List relatedMetadataInfo) { + if (metadataInfo == null | relatedMetadataInfo == null) { + return null; + }; + MetadataService metadataService = SpringBeanUtils.getBean(com.inspur.edp.lcm.metadata.api.service.MetadataService.class); + List gspMetadataList = metadataService.getMetadataListByRefedMetadataId(metadataInfo.getPath(),metadataInfo.getEntityId()); + List selectMetadata = gspMetadataList.stream().filter(item -> + relatedMetadataInfo.stream().anyMatch( + metadata -> metadata.getContentCode().equals(item.getHeader().getCode()) && metadata.getNameSpace().equals(item.getHeader().getNameSpace())) + ).collect(Collectors.toList()); + return getMetadataListWithContent(selectMetadata, metadataService); + } + + + private List getMetadataListWithContent(List metadataList, MetadataService service) { + List newMetadataList = new ArrayList<>(); + metadataList.forEach(metadata -> { + newMetadataList.add(service.getRefMetadata(metadata.getRelativePath(),metadata.getHeader().getId())); + }); + return newMetadataList; + } + + private void pushVmChangeSet(List metadataList) { + PushVmChangeSetEventBroker pushEventBroker = SpringBeanUtils.getBean(PushVmChangeSetEventBroker.class); + VmPushChangeSet vmPushChangeSet = new VmPushChangeSet(metadataList); + pushEventBroker.firePushChangeSet(new VmPushChangeSetArgs(vmPushChangeSet)); + } + + + + + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/TransferSerializer.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/TransferSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..0d30f8e3f382bc01aef01e27d5950fbb94c420dd --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/TransferSerializer.java @@ -0,0 +1,150 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.inspur.edp.bef.bizentity.GspBusinessEntity; +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.cef.designtime.api.collection.GspAssociationCollection; +import com.inspur.edp.cef.designtime.api.collection.GspFieldCollection; +import com.inspur.edp.cef.designtime.api.element.GspAssociation; +import com.inspur.edp.cef.designtime.api.element.GspElementObjectType; +import com.inspur.edp.das.commonmodel.IGspCommonElement; +import com.inspur.edp.das.commonmodel.IGspCommonModel; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.formserver.viewmodel.collection.VMElementCollection; +import com.inspur.edp.formserver.viewmodel.collection.ViewObjectCollection; +import com.inspur.edp.formserver.viewmodel.json.model.ViewModelDeserializer; +import com.inspur.edp.formserver.viewmodel.json.model.ViewModelSerializer; +import com.inspur.edp.formserver.vmmanager.exception.VmManagerException; +import com.inspur.edp.lcm.metadata.api.IMetadataContent; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.service.RefCommonService; +import com.inspur.edp.lcm.metadata.spi.MetadataTransferSerializer; +import io.iec.edp.caf.commons.exception.ExceptionLevel; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +public class TransferSerializer implements MetadataTransferSerializer { + + + //region getMapper + + private ObjectMapper getMapper() { + ObjectMapper mapper = new ObjectMapper(); + SimpleModule module = new SimpleModule(); + module.addDeserializer(IGspCommonModel.class, new ViewModelDeserializer()); + module.addSerializer(IGspCommonModel.class, new ViewModelSerializer()); + mapper.registerModule(module); + return mapper; + } + + //endregion + + //region 序列化 + public final String serialize(IMetadataContent metadataContent) { + GspViewModel viewModel = (GspViewModel) ((metadataContent instanceof GspViewModel) ? metadataContent : null); +// dealContent(viewModel); + String modelJson = null; + try { + modelJson = getMapper().writeValueAsString(viewModel); + } catch (JsonProcessingException e) { + throw new RuntimeException("ViewModel序列化失败!"); + } + return modelJson; + } + + private void dealContent(GspViewModel viewModel) { + dealObject(viewModel.getMainObject()); + } + + private void dealObject(GspViewObject viewObject){ + + ViewObjectCollection childObjs = viewObject.getContainChildObjects(); + if(childObjs != null && childObjs.size() > 0){ + childObjs.forEach((childObj) -> { + dealObject((GspViewObject)childObj); + }); + } + + VMElementCollection eles = viewObject.getContainElements(); + if(eles != null && eles.size() > 0){ + eles.forEach((ele) -> { + dealElement(ele); + }); + } + } + + private void dealElement(IGspCommonField element){ + if(element.getObjectType() != GspElementObjectType.Association) + return; + + GspAssociationCollection assos = element.getChildAssociations(); + if(assos != null && assos.size() > 0){ + assos.forEach((asso) -> { + dealAssociation(asso); + }); + } + } + + private void dealAssociation(GspAssociation association){ + + GspFieldCollection refEles = association.getRefElementCollection(); + if(refEles != null && refEles.size() > 0){ + refEles.forEach((refEle) -> { + dealRefElement(association, refEle); + }); + } + } + + private void dealRefElement(GspAssociation association, IGspCommonField refElement){ + if(refElement.getObjectType() != GspElementObjectType.Association) + return ; + RefCommonService service= SpringBeanUtils.getBean(RefCommonService.class); + GspMetadata refMetadata = service.getRefMetadata(association.getRefModelID()); + if(refMetadata == null) + throw new VmManagerException("","", "关联be["+association.getRefModelID()+"] ["+association.getRefModelCode()+"]没有获取到。",null, ExceptionLevel.Error,false); + GspBusinessEntity refBe= (GspBusinessEntity) refMetadata.getContent(); + IGspCommonObject refObj = refBe.findObjectById(association.getRefObjectID()); + if(refObj == null) + throw new VmManagerException("","", "关联be["+association.getRefModelCode()+"]中没有获取到节点["+association.getRefObjectID()+"] ["+association.getRefObjectCode()+"]。",null, ExceptionLevel.Error,false); + + IGspCommonElement element = refObj.findElement(refElement.getRefElementId()); + if(element == null) + throw new VmManagerException("","", "关联be["+association.getRefModelCode()+"]中没有获取到字段["+refElement.getRefElementId()+"] ["+refElement.getLabelID()+"]。",null, ExceptionLevel.Error,false); + + refElement.getChildAssociations().addAll(element.getChildAssociations().clone()); + + dealElement(refElement); + } + //endregion + + + public final IMetadataContent deserialize(String contentString) { + GspViewModel viewModel = new GspViewModel(); + try { + viewModel = getMapper().readValue(contentString, GspViewModel.class); + } catch (JsonProcessingException e) { + throw new VmManagerException("","", "vo反序列化失败" + contentString ,null, ExceptionLevel.Error,false); + + } + return viewModel; + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/accessory/AccessoryServiceImpl.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/accessory/AccessoryServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..88bf7946d02b95b224a51fe058ddc92f121717d7 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/accessory/AccessoryServiceImpl.java @@ -0,0 +1,625 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.accessory; + +import com.inspur.common.component.api.service.workflow.ApprovalCommentsPropMapping; +import com.inspur.edp.bef.component.detailcmpentity.vm.VMComponent; +import com.inspur.edp.bef.component.detailcmpentity.vm.VMMethodParameter; +import com.inspur.edp.cef.designtime.api.element.GspAssociationKey; +import com.inspur.edp.cef.designtime.api.element.GspElementDataType; +import com.inspur.edp.cef.designtime.api.util.Guid; +import com.inspur.edp.cef.designtime.api.util.MetadataUtil; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.das.commonmodel.entity.object.GspColumnGenerate; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.formserver.viewmodel.accessory.AccessoryService; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelActionType; +import com.inspur.edp.formserver.viewmodel.action.mappedcdp.MappedCdpActionParameter; +import com.inspur.edp.formserver.viewmodel.common.VMCollectionParameterType; +import com.inspur.edp.formserver.viewmodel.common.VMParameterType; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.task.entity.CommentFieldInfo; +import com.inspur.edp.task.payload.GetTaskLogsPayload; +import com.inspur.edp.task.service.TaskCommentService; +import io.iec.edp.caf.common.JSONSerializer; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; +import io.iec.edp.caf.rpc.client.RpcClassHolder; + +import java.util.*; + +public class AccessoryServiceImpl implements AccessoryService { + + @Override + public void addApprovalComments(GspViewModel model, String parentNodeCode, + String processInstLabelId, boolean includeBacklog) { + Objects.requireNonNull(model, "model"); + Objects.requireNonNull(parentNodeCode, "parentNodeCode"); + Objects.requireNonNull(processInstLabelId, "processInstLabelId"); + + GspViewObject node = (GspViewObject) model.findObjectByCode(parentNodeCode); + if (node == null) { + throw new RuntimeException("找不到节点" + model.getCode() + "." + parentNodeCode); + } + GspViewModelElement element = (GspViewModelElement) node + .getElementByLabelId(processInstLabelId); + if (element == null) { + throw new RuntimeException("找不到流程实例字段" + model.getCode() + "." + processInstLabelId); + } + + GspViewObject childObj = addVirtualChildObject(model, node); + addAfterRetrieveAction(model, childObj, processInstLabelId,RETRIEVE_ACTION_APPROVALPROCESSINS_ID,RETRIEVE_ACTION_APPROVALPROCESSINS_LABELID,RETRIEVE_ACTION_APPROVALCHILDCODE,includeBacklog); + } + + @Override + public void addApprovalWorkItenLogs(GspViewModel model, String nodeCode, + String billCodeLabelId, boolean includeBacklog) { + + Objects.requireNonNull(model, "model"); + Objects.requireNonNull(nodeCode, "parentNodeCode"); + Objects.requireNonNull(billCodeLabelId, "billCodeLabelId"); + + GspViewObject node = (GspViewObject) model.findObjectByCode(nodeCode); + if (node == null) { + throw new RuntimeException("找不到节点" + model.getCode() + "." + nodeCode); + } + GspViewModelElement element = (GspViewModelElement) node + .getElementByLabelId(billCodeLabelId); + if (element == null) { + throw new RuntimeException("找不到单据内码字段" + model.getCode() + "." + billCodeLabelId); + } + + GspViewObject childObj = addVirtualChildObject(model, node); + addAfterRetrieveAction(model, childObj, billCodeLabelId,RETRIEVE_ACTION_APPROVALBILLCODE_ID,RETRIEVE_ACTION_APPROVALBILLCODE_LABELID,RETRIEVE_ACTION_APPROVALCHILDCODE,includeBacklog); + } + + private static final String COL_ID = "ID"; + private static final String COL_ParentID = "ParentID"; + private static final String COL_ProcessInstanceId = "ProcessInstanceId"; + private static final String COL_ProcessInstanceId_Name = "流程实例标识符"; + private static final String COL_RootProcessInstanceId = "RootProcessInstanceId"; + private static final String COL_RootProcessInstanceId_Name = "父流程实例标识符"; + private static final String COL_ActivityInstanceId = "ActivityInstanceId"; + private static final String COL_ActivityInstanceId_Name = "活动实例标识符"; + private static final String COL_ActivityName = "ActivityName"; + private static final String COL_ActivityName_Name = "活动实例名称"; + private static final String COL_WorkItemId = "WorkItemId"; + private static final String COL_WorkItemId_Name = "工作项标识符"; + private static final String COL_OperatorId = "OperatorId"; + private static final String COL_OperatorId_Name = "操作人标识符"; + private static final String COL_OperatorName = "OperatorName"; + private static final String COL_OperatorName_Name = "操作人名称"; + private static final String COL_Type = "Type"; + private static final String COL_Type_Name = "日志类型"; + private static final String COL_ActionCode = "Action"; + private static final String COL_ActionCode_Name = "审批动作编号"; + private static final String COL_ActionName = "ActionName"; + private static final String COL_ActionName_Name = "审批动作名称"; + private static final String COL_Message = "Message"; + private static final String COL_Message_Name = "审批信息"; + private static final String COL_Time = "Time"; + private static final String COL_Time_Name = "审批时间"; + private static final String COL_Attachment = "Attachment"; + private static final String COL_Attachment_Name = "附件标识符"; + private static final String COL_SignatureImage = "SignatureImage"; + private static final String COL_SignatureImage_Name = "签名图片"; + + //流程实例构件元数据 + private static final String RETRIEVE_ACTION_COMP_ID = "91ee8167-891b-4308-afdf-db4319a918dd"; + private static final String RETRIEVE_ACTION_PAR_CHILD_CODE = "commentsChildCode"; + private static final String RETRIEVE_ACTION_PAR_PROCESS_INST_LABELID = "processInstLabelId"; + private static final String RETRIEVE_ACTION_PAR_PROPERTY_MAPPING = "propMapping"; + + //单据内码构件元数据 + private static final String RETRIEVE_ACTION_BILLODE_ID = "d3fc5bb2-6de0-4413-842c-03e7f7fffc83"; + private static final String RETRIEVE_ACTION_BILLODE_CHILD_CODE = "workItemLogChildCode"; + private static final String RETRIEVE_ACTION_BILLODE_LABELID = "billCodeLabelId"; + + private static final String RETRIEVE_ACTION_APPROVALBILLCODE_ID="3645d756-4b57-4d12-99e2-db5453e598ad"; + private static final String RETRIEVE_ACTION_APPROVALBILLCODE_LABELID="commentsLabelId"; + private static final String RETRIEVE_ACTION_APPROVALCHILDCODE="commentsChildCode"; + private static final String RETRIEVE_ACTION_APPROVALGETLOGS_PAYLOAD = "taskLogsPayload"; + + private static final String RETRIEVE_ACTION_APPROVALPROCESSINS_ID="727f9648-ce0d-43ab-9ddd-b421affc4b31"; + private static final String RETRIEVE_ACTION_APPROVALPROCESSINS_LABELID="commentsLabelId"; + + //添加vo子表信息 + private GspViewObject addChildObject(GspViewModel model, GspViewObject parentObj) { + GspViewObject childObj = new GspViewObject(); + childObj.setID(Guid.newGuid().toString()); + String nodeCode = "ApprovalComment"; + int index = 0; + while (model.findObjectByCode(nodeCode) != null) { + nodeCode = "ApprovalComment" + (++index); + } + childObj.setCode(nodeCode); + childObj.setName("审批日志" + (index == 0 ? "" : index)); + childObj.setIsVirtual(true); + childObj.setParent(parentObj); + + //id + GspViewModelElement idElement = new GspViewModelElement(); + idElement.setID(Guid.newGuid().toString()); + idElement.setCode(COL_ID); + idElement.setName(COL_ID); + idElement.setLabelID(COL_ID); + idElement.setIsVirtualViewElement(true); + idElement.setIsVirtual(true); + idElement.setMDataType(GspElementDataType.String); + idElement.setLength(36); + childObj.getContainElements().add(idElement); + GspColumnGenerate genId = new GspColumnGenerate(); + genId.setElementID(idElement.getID()); + childObj.setColumnGenerateID(genId); + + //parentid + GspViewModelElement parentIdElement = new GspViewModelElement(); + parentIdElement.setID(Guid.newGuid().toString()); + parentIdElement.setCode(COL_ParentID); + parentIdElement.setName(COL_ParentID); + parentIdElement.setLabelID(COL_ParentID); + parentIdElement.setIsVirtualViewElement(true); + parentIdElement.setIsVirtual(true); + parentIdElement.setMDataType(GspElementDataType.String); + parentIdElement.setLength(36); + childObj.getContainElements().add(parentIdElement); + GspAssociationKey assoKey = new GspAssociationKey(); + assoKey.setSourceElement(parentIdElement.getID()); + assoKey.setSourceElementDisplay(parentIdElement.getName()); + assoKey.setTargetElement(parentObj.getIDElement().getID()); + assoKey.setTargetElementDisplay(parentObj.getIDElement().getName()); + childObj.getKeys().add(assoKey); + + //processInstanceId + GspViewModelElement processInstanceIdElement = new GspViewModelElement(); + processInstanceIdElement.setID(Guid.newGuid().toString()); + processInstanceIdElement.setCode(COL_ProcessInstanceId); + processInstanceIdElement.setName(COL_ProcessInstanceId_Name); + processInstanceIdElement.setLabelID(COL_ProcessInstanceId); + processInstanceIdElement.setIsVirtualViewElement(true); + processInstanceIdElement.setIsVirtual(true); + processInstanceIdElement.setMDataType(GspElementDataType.String); + processInstanceIdElement.setLength(36); + childObj.getContainElements().add(processInstanceIdElement); + + //rootprocessInstanceId + GspViewModelElement rootProcessInstanceIdElement = new GspViewModelElement(); + rootProcessInstanceIdElement.setID(Guid.newGuid().toString()); + rootProcessInstanceIdElement.setCode(COL_RootProcessInstanceId); + rootProcessInstanceIdElement.setName(COL_RootProcessInstanceId_Name); + rootProcessInstanceIdElement.setLabelID(COL_RootProcessInstanceId); + rootProcessInstanceIdElement.setIsVirtualViewElement(true); + rootProcessInstanceIdElement.setIsVirtual(true); + rootProcessInstanceIdElement.setMDataType(GspElementDataType.String); + rootProcessInstanceIdElement.setLength(36); + childObj.getContainElements().add(rootProcessInstanceIdElement); + + //activityInstanceId + GspViewModelElement activityInstanceIdElement = new GspViewModelElement(); + activityInstanceIdElement.setID(Guid.newGuid().toString()); + activityInstanceIdElement.setCode(COL_ActivityInstanceId); + activityInstanceIdElement.setName(COL_ActivityInstanceId_Name); + activityInstanceIdElement.setLabelID(COL_ActivityInstanceId); + activityInstanceIdElement.setIsVirtualViewElement(true); + activityInstanceIdElement.setIsVirtual(true); + activityInstanceIdElement.setMDataType(GspElementDataType.String); + activityInstanceIdElement.setLength(36); + childObj.getContainElements().add(activityInstanceIdElement); + + //审批活动 + GspViewModelElement activityNameElement = new GspViewModelElement(); + activityNameElement.setID(Guid.newGuid().toString()); + activityNameElement.setCode(COL_ActivityName); + activityNameElement.setName(COL_ActivityName_Name); + activityNameElement.setLabelID(COL_ActivityName); + activityNameElement.setIsVirtualViewElement(true); + activityNameElement.setIsVirtual(true); + activityNameElement.setMDataType(GspElementDataType.Text); + childObj.getContainElements().add(activityNameElement); + + //workItemIdElement + GspViewModelElement workItemIdElement = new GspViewModelElement(); + workItemIdElement.setID(Guid.newGuid().toString()); + workItemIdElement.setCode(COL_WorkItemId); + workItemIdElement.setName(COL_WorkItemId_Name); + workItemIdElement.setLabelID(COL_WorkItemId); + workItemIdElement.setIsVirtualViewElement(true); + workItemIdElement.setIsVirtual(true); + workItemIdElement.setMDataType(GspElementDataType.String); + workItemIdElement.setLength(36); + childObj.getContainElements().add(workItemIdElement); + + //operatorId + GspViewModelElement operatorIdElement = new GspViewModelElement(); + operatorIdElement.setID(Guid.newGuid().toString()); + operatorIdElement.setCode(COL_OperatorId); + operatorIdElement.setName(COL_OperatorId_Name); + operatorIdElement.setLabelID(COL_OperatorId); + operatorIdElement.setIsVirtualViewElement(true); + operatorIdElement.setIsVirtual(true); + operatorIdElement.setMDataType(GspElementDataType.String); + operatorIdElement.setLength(36); + childObj.getContainElements().add(operatorIdElement); + + //审批人 + GspViewModelElement operatorNameElement = new GspViewModelElement(); + operatorNameElement.setID(Guid.newGuid().toString()); + operatorNameElement.setCode(COL_OperatorName); + operatorNameElement.setName(COL_OperatorName_Name); + operatorNameElement.setLabelID(COL_OperatorName); + operatorNameElement.setIsVirtualViewElement(true); + operatorNameElement.setIsVirtual(true); + operatorNameElement.setMDataType(GspElementDataType.Text); + childObj.getContainElements().add(operatorNameElement); + + //type + GspViewModelElement typeElement = new GspViewModelElement(); + typeElement.setID(Guid.newGuid().toString()); + typeElement.setCode(COL_Type); + typeElement.setName(COL_Type_Name); + typeElement.setLabelID(COL_Type); + typeElement.setIsVirtualViewElement(true); + typeElement.setIsVirtual(true); + typeElement.setMDataType(GspElementDataType.String); + typeElement.setLength(36); + childObj.getContainElements().add(typeElement); + + //action + GspViewModelElement actionElement = new GspViewModelElement(); + actionElement.setID(Guid.newGuid().toString()); + actionElement.setCode(COL_ActionCode); + actionElement.setName(COL_ActionCode_Name); + actionElement.setLabelID(COL_ActionCode); + actionElement.setIsVirtualViewElement(true); + actionElement.setIsVirtual(true); + actionElement.setMDataType(GspElementDataType.String); + actionElement.setLength(36); + childObj.getContainElements().add(actionElement); + + //审批动作 + GspViewModelElement actionNameElement = new GspViewModelElement(); + actionNameElement.setID(Guid.newGuid().toString()); + actionNameElement.setCode(COL_ActionName); + actionNameElement.setName(COL_ActionName_Name); + actionNameElement.setLabelID(COL_ActionName); + actionNameElement.setIsVirtualViewElement(true); + actionNameElement.setIsVirtual(true); + actionNameElement.setMDataType(GspElementDataType.Text); + childObj.getContainElements().add(actionNameElement); + + //审批时间 + GspViewModelElement actionTimeElement = new GspViewModelElement(); + actionTimeElement.setID(Guid.newGuid().toString()); + actionTimeElement.setCode(COL_Time); + actionTimeElement.setName(COL_Time_Name); + actionTimeElement.setLabelID(COL_Time); + actionTimeElement.setIsVirtualViewElement(true); + actionTimeElement.setIsVirtual(true); + actionTimeElement.setMDataType(GspElementDataType.DateTime); + childObj.getContainElements().add(actionTimeElement); + + //审批信息 + GspViewModelElement messageElement = new GspViewModelElement(); + messageElement.setID(Guid.newGuid().toString()); + messageElement.setCode(COL_Message); + messageElement.setName(COL_Message_Name); + messageElement.setLabelID(COL_Message); + messageElement.setIsVirtualViewElement(true); + messageElement.setIsVirtual(true); + messageElement.setMDataType(GspElementDataType.Text); + childObj.getContainElements().add(messageElement); + + //附件信息 + GspViewModelElement attachmentElement = new GspViewModelElement(); + attachmentElement.setID(Guid.newGuid().toString()); + attachmentElement.setCode(COL_Attachment); + attachmentElement.setName(COL_Attachment_Name); + attachmentElement.setLabelID(COL_Attachment); + attachmentElement.setIsVirtualViewElement(true); + attachmentElement.setIsVirtual(true); + attachmentElement.setMDataType(GspElementDataType.String); + attachmentElement.setLength(36); + childObj.getContainElements().add(attachmentElement); + + //签名图片信息 + GspViewModelElement signatureImageElement = new GspViewModelElement(); + signatureImageElement.setID(Guid.newGuid().toString()); + signatureImageElement.setCode(COL_SignatureImage); + signatureImageElement.setName(COL_SignatureImage_Name); + signatureImageElement.setLabelID(COL_SignatureImage); + signatureImageElement.setIsVirtualViewElement(true); + signatureImageElement.setIsVirtual(true); + signatureImageElement.setMDataType(GspElementDataType.Text); + childObj.getContainElements().add(signatureImageElement); + + parentObj.getContainChildObjects().add(childObj); + return childObj; + } + + private void addIdAndparentId(GspViewObject childObj, GspViewObject parentObj){ + GspViewModelElement idElement = new GspViewModelElement(); + idElement.setID(Guid.newGuid().toString()); + idElement.setCode(COL_ID); + idElement.setName(COL_ID); + idElement.setLabelID(COL_ID); + idElement.setIsVirtualViewElement(true); + idElement.setIsVirtual(true); + idElement.setMDataType(GspElementDataType.String); + idElement.setLength(36); + childObj.getContainElements().add(idElement); + GspColumnGenerate genId = new GspColumnGenerate(); + genId.setElementID(idElement.getID()); + childObj.setColumnGenerateID(genId); + + GspViewModelElement parentIdElement = new GspViewModelElement(); + parentIdElement.setID(Guid.newGuid().toString()); + parentIdElement.setCode(COL_ParentID); + parentIdElement.setName(COL_ParentID); + parentIdElement.setLabelID(COL_ParentID); + parentIdElement.setIsVirtualViewElement(true); + parentIdElement.setIsVirtual(true); + parentIdElement.setMDataType(GspElementDataType.String); + parentIdElement.setLength(36); + childObj.getContainElements().add(parentIdElement); + GspAssociationKey assoKey = new GspAssociationKey(); + assoKey.setSourceElement(parentIdElement.getID()); + assoKey.setSourceElementDisplay(parentIdElement.getName()); + assoKey.setTargetElement(parentObj.getIDElement().getID()); + assoKey.setTargetElementDisplay(parentObj.getIDElement().getName()); + childObj.getKeys().add(assoKey); + } + private GspViewObject addVirtualChildObject(GspViewModel model,GspViewObject parentObj){ + GspViewObject childObj = new GspViewObject(); + childObj.setID(Guid.newGuid().toString()); + String nodeCode = "ApprovalComment"; + int index = 0; + while (model.findObjectByCode(nodeCode) != null) { + nodeCode = "ApprovalComment" + (++index); + } + childObj.setCode(nodeCode); + childObj.setName("审批日志" + (index == 0 ? "" : index)); + childObj.setIsVirtual(true); + childObj.setParent(parentObj); + TaskCommentService service=SpringBeanUtils.getBean(RpcClassHolder.class).getRpcClass(TaskCommentService.class); + List commentFieldInfos=service.getTaskCommentFields(); + if(commentFieldInfos==null || commentFieldInfos.size()<0) + throw new RuntimeException("根据工作流接口获取的审批日志字段列表为空!"); + addIdAndparentId(childObj,parentObj); + for (CommentFieldInfo commentFieldInfo : commentFieldInfos) { + if(COL_ID.equals(commentFieldInfo.getVoCode())) + continue; + GspViewModelElement element=getElement(commentFieldInfo); + childObj.getContainElements().add(element); + } + parentObj.getContainChildObjects().add(childObj); + return childObj; + } + private GspViewModelElement getElement(CommentFieldInfo info){ + GspViewModelElement viewModelElement=new GspViewModelElement(); + viewModelElement.setID(UUID.randomUUID().toString()); + viewModelElement.setCode(info.getVoCode()); + viewModelElement.setName(info.getName()); + viewModelElement.setLabelID(info.getVoCode()); + viewModelElement.setIsVirtualViewElement(true); + viewModelElement.setIsVirtual(true); + viewModelElement.setMDataType(converFromCommoFieldType(info)); + if(dealLength(info)) + viewModelElement.setLength(info.getLength()); + return viewModelElement; + } + + private boolean dealLength(CommentFieldInfo info) { + if(info.getLength()>0) + return true; + else + return false; + } + + private void addAfterRetrieveAction(GspViewModel model,GspViewObject childObj,String approvalCommentLabel,String componentID,String approvalLabelId,String approvalChildCode,boolean includeBacklogs){ + MappedCdpAction action = new MappedCdpAction(); + action.setID(Guid.newGuid().toString()); + String code = "InitApprovalComments"; + while (true) { + final String tempCode = code; + if (model.getDataExtendInfo().getAfterRetrieveActions().stream() + .anyMatch(item -> item.getCode().equalsIgnoreCase(tempCode))) { + code = "InitApprovalComments" + Guid.newGuid().toString().substring(0, 7); + continue; + } + break; + } + action.setCode(code); + action.setType(ViewModelActionType.VMAction); + action.setName(code); + action.setComponentEntityId(componentID); + + GspMetadata retrieveActionMetadata = MetadataUtil.getCustomMetadata(componentID); + VMComponent retrieveComponent = (VMComponent) retrieveActionMetadata.getContent(); + + VMMethodParameter childCodePar = null; + VMMethodParameter approvalLabelIdPar = null; + VMMethodParameter getPayLoadPar = null; + + for (VMMethodParameter param : retrieveComponent.getVmMethod().getParams()) { + if (param.getParamCode().equalsIgnoreCase(approvalChildCode)) { + childCodePar = param; + } else if (param.getParamCode().equalsIgnoreCase(approvalLabelId)) { + approvalLabelIdPar = param; + } else if (param.getParamCode().equalsIgnoreCase(RETRIEVE_ACTION_APPROVALGETLOGS_PAYLOAD)) { + getPayLoadPar = param; + } + } + MappedCdpActionParameter parChildCode = new MappedCdpActionParameter(); + parChildCode.setID(childCodePar.getID()); + parChildCode.setParamName(childCodePar.getParamName()); + parChildCode.setParamCode(childCodePar.getParamCode()); + parChildCode.setParameterType(VMParameterType.String); + parChildCode.setCollectionParameterType(VMCollectionParameterType.List); + List codes = new ArrayList<>(); + IGspCommonObject currentObj = childObj; + while (currentObj.getParentObject() != null) { + codes.add(currentObj.getCode()); + currentObj = currentObj.getParentObject(); + } + Collections.reverse(codes); + parChildCode.getActualValue().setHasValue(true); + parChildCode.getActualValue().setEnable(true); + parChildCode.getActualValue().setValue(JSONSerializer.serialize(codes)); + action.getParameterCollection().add(parChildCode); + + MappedCdpActionParameter parProcessInstLabelId = new MappedCdpActionParameter(); + parProcessInstLabelId.setID(approvalLabelIdPar.getID()); + parProcessInstLabelId.setParamCode(approvalLabelIdPar.getParamName()); + parProcessInstLabelId.setParamCode(approvalLabelIdPar.getParamCode()); + parProcessInstLabelId.setParameterType(VMParameterType.String); + parProcessInstLabelId.getActualValue().setHasValue(true); + parProcessInstLabelId.getActualValue().setEnable(true); + parProcessInstLabelId.getActualValue().setValue(approvalCommentLabel); + action.getParameterCollection().add(parProcessInstLabelId); + + MappedCdpActionParameter parPropertyMapping = new MappedCdpActionParameter(); + parPropertyMapping.setID(getPayLoadPar.getID()); + parPropertyMapping.setParamCode(getPayLoadPar.getParamName()); + parPropertyMapping.setParamCode(getPayLoadPar.getParamCode()); + parPropertyMapping.setParameterType(VMParameterType.Custom); + parPropertyMapping.setAssembly("com.inspur.edp.task.payload"); + parPropertyMapping.setClassName( + "com.inspur.edp.task.payload.GetTaskLogsPayload"); + parPropertyMapping.getActualValue().setHasValue(true); + parPropertyMapping.getActualValue().setEnable(true); + GetTaskLogsPayload taskLogsPayload=new GetTaskLogsPayload(); + taskLogsPayload.setIsIncludeBackLogs(includeBacklogs); + taskLogsPayload.setIsIncludeSignImageBase64(true); + parPropertyMapping.getActualValue().setValue(JSONSerializer.serialize(taskLogsPayload)); + action.getParameterCollection().add(parPropertyMapping); + + model.getDataExtendInfo().getAfterRetrieveActions().add(action); + } + + private GspElementDataType converFromCommoFieldType(CommentFieldInfo info){ + switch (info.getFieldType()){ + case String: + return GspElementDataType.String; + case Text: + return GspElementDataType.Text; + case Boolean: + return GspElementDataType.Boolean; + case DateTime: + return GspElementDataType.DateTime; + case Date: + return GspElementDataType.Date; + default: + throw new RuntimeException(String.format("目前暂不支持审批日志CommentFieldType类型为:%$s1的字段,当前字段编号为:%$s2,当前字段名称为:%$s2",info.getFieldType(),info.getVoCode(),info.getName())); + } + } + private void addDataExtendInfo(GspViewModel model, GspViewObject childObj, + String processInstLabelId,String componentID,String childNodeCode,String approvalFieldLabelID ,boolean includeBacklogs) { + MappedCdpAction action = new MappedCdpAction(); + action.setID(Guid.newGuid().toString()); + String code = "InitApprovalComments"; + while (true) { + final String tempCode = code; + if (model.getDataExtendInfo().getAfterRetrieveActions().stream() + .anyMatch(item -> item.getCode().equalsIgnoreCase(tempCode))) { + code = "InitApprovalComments" + Guid.newGuid().toString().substring(0, 7); + continue; + } + break; + } + action.setCode(code); + action.setType(ViewModelActionType.VMAction); + action.setName(code); + action.setComponentEntityId(componentID); + + GspMetadata retrieveActionMetadata = MetadataUtil.getCustomMetadata(componentID); + VMComponent retrieveComponent = (VMComponent) retrieveActionMetadata.getContent(); + + VMMethodParameter childCodePar = null; + VMMethodParameter processInstLabelIdPar = null; + VMMethodParameter propertyMappingPar = null; + + for (VMMethodParameter param : retrieveComponent.getVmMethod().getParams()) { + if (param.getParamCode().equalsIgnoreCase(childNodeCode)) { + childCodePar = param; + } else if (param.getParamCode().equalsIgnoreCase(approvalFieldLabelID)) { + processInstLabelIdPar = param; + } else if (param.getParamCode().equalsIgnoreCase(RETRIEVE_ACTION_PAR_PROPERTY_MAPPING)) { + propertyMappingPar = param; + } + } + MappedCdpActionParameter parChildCode = new MappedCdpActionParameter(); + parChildCode.setID(childCodePar.getID()); + parChildCode.setParamName(childCodePar.getParamName()); + parChildCode.setParamCode(childCodePar.getParamCode()); + parChildCode.setParameterType(VMParameterType.String); + parChildCode.setCollectionParameterType(VMCollectionParameterType.List); + ArrayList codes = new ArrayList<>(); + IGspCommonObject currentObj = childObj; + while (currentObj.getParentObject() != null) { + codes.add(currentObj.getCode()); + currentObj = currentObj.getParentObject(); + } + Collections.reverse(codes); + parChildCode.getActualValue().setHasValue(true); + parChildCode.getActualValue().setEnable(true); + parChildCode.getActualValue().setValue(JSONSerializer.serialize(codes)); + action.getParameterCollection().add(parChildCode); + + MappedCdpActionParameter parProcessInstLabelId = new MappedCdpActionParameter(); + parProcessInstLabelId.setID(processInstLabelIdPar.getID()); + parProcessInstLabelId.setParamCode(processInstLabelIdPar.getParamName()); + parProcessInstLabelId.setParamCode(processInstLabelIdPar.getParamCode()); + parProcessInstLabelId.setParameterType(VMParameterType.String); + parProcessInstLabelId.getActualValue().setHasValue(true); + parProcessInstLabelId.getActualValue().setEnable(true); + parProcessInstLabelId.getActualValue().setValue(processInstLabelId); + action.getParameterCollection().add(parProcessInstLabelId); + + MappedCdpActionParameter parPropertyMapping = new MappedCdpActionParameter(); + parPropertyMapping.setID(propertyMappingPar.getID()); + parPropertyMapping.setParamCode(propertyMappingPar.getParamName()); + parPropertyMapping.setParamCode(propertyMappingPar.getParamCode()); + parPropertyMapping.setParameterType(VMParameterType.Custom); + parPropertyMapping.setAssembly("com.inspur.edp.common.component.api"); + parPropertyMapping.setClassName( + "com.inspur.common.component.api.service.workflow.ApprovalCommentsPropMapping"); + parPropertyMapping.getActualValue().setHasValue(true); + parPropertyMapping.getActualValue().setEnable(true); + ApprovalCommentsPropMapping mapping = new ApprovalCommentsPropMapping(); + mapping.setProcessInstanceId(COL_ProcessInstanceId); + mapping.setRootProcessInstanceId(COL_RootProcessInstanceId); + mapping.setActivityInstanceId(COL_ActivityInstanceId); + mapping.setActivityName(COL_ActivityName); + mapping.setWorkItemId(COL_WorkItemId); + mapping.setOperatorId(COL_OperatorId); + mapping.setOperatorName(COL_OperatorName); + mapping.setType(COL_Type); + mapping.setActionCode(COL_ActionCode); + mapping.setActionName(COL_ActionName); + mapping.setMessage(COL_Message); + mapping.setTime(COL_Time); + mapping.setAttachment(COL_Attachment); + mapping.setSignatureImage(COL_SignatureImage); + mapping.setIncludeBackLogs(includeBacklogs); + parPropertyMapping.getActualValue().setValue(JSONSerializer.serialize(mapping)); + action.getParameterCollection().add(parPropertyMapping); + + model.getDataExtendInfo().getAfterRetrieveActions().add(action); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/accessory/ApprovalLogType.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/accessory/ApprovalLogType.java new file mode 100644 index 0000000000000000000000000000000000000000..b708e57dd8dc19b62516c0abfbbaaa53104ac01a --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/accessory/ApprovalLogType.java @@ -0,0 +1,55 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.accessory; + + +public enum ApprovalLogType { + /** 流程实例 + */ + ProcessInstant(0), + + /** 单据内码 + */ + BIllCode(1); + + private int intValue; + private static java.util.HashMap mappings; + private synchronized static java.util.HashMap getMappings() + { + if (mappings == null) + { + mappings = new java.util.HashMap(); + } + return mappings; + } + + ApprovalLogType(int value) + { + intValue = value; + ApprovalLogType.getMappings().put(value, this); + } + + public int getValue() + { + return intValue; + } + + public static ApprovalLogType forValue(int value) + { + return getMappings().get(value); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/accessory/Configuration.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/accessory/Configuration.java new file mode 100644 index 0000000000000000000000000000000000000000..38f5c7d2f65091dc9b0f342eed6d021be990be39 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/accessory/Configuration.java @@ -0,0 +1,31 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.accessory; + +import com.inspur.edp.formserver.viewmodel.accessory.AccessoryService; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.context.annotation.Bean; + +@org.springframework.context.annotation.Configuration +@ConditionalOnClass(name = {"com.inspur.edp.task.entity.CommentFieldInfo"}) +public class Configuration { + + @Bean + public AccessoryService createAccessoryService() { + return new AccessoryServiceImpl(); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/commonstructure/VMComStructureSchemaExtension.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/commonstructure/VMComStructureSchemaExtension.java new file mode 100644 index 0000000000000000000000000000000000000000..985759eca08fa08561a3f7f37d5899be3273e3f6 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/commonstructure/VMComStructureSchemaExtension.java @@ -0,0 +1,43 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.commonstructure; + +import com.inspur.edp.caf.cef.dt.spi.CommonStructureSchemaExtension; +import com.inspur.edp.caf.cef.schema.common.CommonStructureContext; +import com.inspur.edp.caf.cef.schema.common.CommonStructureInfo; +import com.inspur.edp.caf.cef.schema.structure.CommonStructure; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.lcm.metadata.api.IMetadataContent; + +public class VMComStructureSchemaExtension implements CommonStructureSchemaExtension { + + @Override + public String getEntityType() { + return "GSPViewModel"; + } + + @Override + public CommonStructure getCommonStructure(IMetadataContent iMetadataContent, + CommonStructureContext commonStructureContext) { + return (GspViewModel)iMetadataContent; + } + + @Override + public CommonStructureInfo getCommonStructureSummary(IMetadataContent iMetadataContent) { + return null; + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/commonstructure/VMEntitySchemaConfiguration.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/commonstructure/VMEntitySchemaConfiguration.java new file mode 100644 index 0000000000000000000000000000000000000000..8e61eab13818a59b867f9bb01e2da669df876368 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/commonstructure/VMEntitySchemaConfiguration.java @@ -0,0 +1,30 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.commonstructure; + +import com.inspur.edp.caf.cef.rt.spi.EntitySchemaExtension; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration("com.inspur.edp.formserver.vmmanager.commonstructure.VMEntitySchemaExtension") +public class VMEntitySchemaConfiguration { + @Bean("com.inspur.edp.formserver.vmmanager.commonstructure.VMEntitySchemaExtension.VMEntitySchemaExtension()") + public EntitySchemaExtension getVMEntitySchemaExtension() + { + return new VMEntitySchemaExtension(); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/commonstructure/VMEntitySchemaExtension.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/commonstructure/VMEntitySchemaExtension.java new file mode 100644 index 0000000000000000000000000000000000000000..144d622ba6a99953a15da98661e796642010f706 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/commonstructure/VMEntitySchemaExtension.java @@ -0,0 +1,43 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.commonstructure; + +import com.inspur.edp.caf.cef.rt.api.CommonStructureInfo; +import com.inspur.edp.caf.cef.rt.spi.EntitySchemaExtension; +import com.inspur.edp.caf.cef.schema.structure.CommonStructure; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.lcm.metadata.api.service.MetadataRTService; +import io.iec.edp.caf.runtime.config.CefDesignTimeBeanUtil; + +public class VMEntitySchemaExtension implements EntitySchemaExtension { + @Override + public CommonStructure getEntity(String metaId) { + MetadataRTService service = CefDesignTimeBeanUtil.getAppCtx().getBean(MetadataRTService.class); + GspViewModel vo = (GspViewModel) service.getMetadata(metaId).getContent(); + return vo; + } + + @Override + public CommonStructureInfo getEntitySummary(String s) { + return null; + } + + @Override + public String getEntityType() { + return "GSPViewModel"; + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/compcodebutton/CompButton.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/compcodebutton/CompButton.java new file mode 100644 index 0000000000000000000000000000000000000000..52f8988fe7e373b5e7488fdd90088fb0eef3f72c --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/compcodebutton/CompButton.java @@ -0,0 +1,701 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.compcodebutton; + +import com.inspur.edp.cef.designtime.api.operation.CommonDetermination; +import com.inspur.edp.cef.variable.dtgenerator.vardtmGenerate.javageneratecmpcode.JavaCommonDeterminationGenerator; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.common.ValueHelpConfig; +import com.inspur.edp.formserver.viewmodel.util.ViewModelUtils; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction.*; +import com.inspur.edp.formserver.vmmanager.service.VmManagerService; +import com.inspur.edp.formserver.vmmanager.util.CheckComUtil; + +import java.util.ArrayList; +import java.util.List; + +public class CompButton { + + private static final String javaCodeFileExtension = ".java"; + private static final String javaPathInfo = "java\\code\\comp\\src\\main\\java"; + + public String getCompPath(GspViewModel vo, String type, String relativePath, ArrayList actionList, String compAssemblyName) { + String componentEntityId = ""; + if(!"VarDeterminations".equals(type)){ + componentEntityId =((MappedCdpAction)getAction(actionList.get(0),vo,type)).getComponentEntityId(); + }else { + componentEntityId = getDtm(actionList.get(0),vo).getComponentId(); + } + String classname = VmManagerService.getComponentJavaClassName(componentEntityId).replace(".", ViewModelUtils.getSeparator()); + String path = ViewModelUtils.getCombinePath(javaPathInfo, classname+javaCodeFileExtension); + return path; + } + + public String getCompCode(GspViewModel vo, String type, String relativePath, ArrayList actionList, String compAssemblyName) { + String code = ""; + if(!"VarDeterminations".equals(type)){ + ViewModelAction action = getAction(actionList.get(0),vo,type); + code = getActionCode(action,vo,compAssemblyName,relativePath,type); + }else { + CommonDetermination action = getDtm(actionList.get(0),vo); + code = getDtmCode(action,vo,compAssemblyName,relativePath); + } + return code; + } + + private String getDtmCode(CommonDetermination action, GspViewModel vo, String compAssemblyName, String relativePath){ + JavaCommonDeterminationGenerator gen = new JavaCommonDeterminationGenerator(vo, action, compAssemblyName, relativePath); + if(gen.getIsCommonGenerate()){ + return gen.generateCommon(); + }else { + return gen.generateExecute(); + } + } + + private String getActionCode(ViewModelAction action, GspViewModel vo, String compAssemblyName, String relativePath, String type){ + switch (type){ + case "VMActions": + JavaMappedCdpActionGenerator gen = new JavaMappedCdpActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(gen.getIsCommonGenerate()){ + return gen.generateCommon(); + }else { + return gen.generateExecute(); + } + case "BeforeHelp": + JavaMappedCdpActionGenerator gena = new JavaMappedCdpActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + gena.setBelongElement(true); + if(gena.getIsCommonGenerate()){ + return gena.generateCommon(); + }else { + return gena.generateExecute(); + } + case "AfterMultiDeleteActions": + JavaAfterMultiDeleteActionGenerator genb = new JavaAfterMultiDeleteActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(genb.getIsCommonGenerate()){ + return genb.generateCommon(); + }else { + return genb.generateExecute(); + } + case "MultiDeleteActions": + JavaAbstractMultiDeleteActionGenerator genc = new JavaAbstractMultiDeleteActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(genc.getIsCommonGenerate()){ + return genc.generateCommon(); + }else { + return genc.generateExecute(); + } + case "BeforeMultiDeleteActions": + JavaBeforeMultiDeleteActionGenerator gend = new JavaBeforeMultiDeleteActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(gend.getIsCommonGenerate()){ + return gend.generateCommon(); + }else { + return gend.generateExecute(); + } + case "ModifyActions": + JavaAbstractModifyActionGenerator gene = new JavaAbstractModifyActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(gene.getIsCommonGenerate()){ + return gene.generateCommon(); + }else { + return gene.generateExecute(); + } + case "AfterModifyActions": + JavaAfterModifyActionGenerator genf = new JavaAfterModifyActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(genf.getIsCommonGenerate()){ + return genf.generateCommon(); + }else { + return genf.generateExecute(); + } + case "BeforeModifyActions": + JavaBeforeModifyActionGenerator geng = new JavaBeforeModifyActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(geng.getIsCommonGenerate()){ + return geng.generateCommon(); + }else { + return geng.generateExecute(); + } + case "BeforeSaveActions": + JavaBeforeSaveActionGenerator genh = new JavaBeforeSaveActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(genh.getIsCommonGenerate()){ + return genh.generateCommon(); + }else { + return genh.generateExecute(); + } + case "AfterSaveActions": + JavaAfterSaveActionGenerator geni = new JavaAfterSaveActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(geni.getIsCommonGenerate()){ + return geni.generateCommon(); + }else { + return geni.generateExecute(); + } + case "BeforeCreateActions": + JavaBeforeRetrieveDefaultActionGenerator genj = new JavaBeforeRetrieveDefaultActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(genj.getIsCommonGenerate()){ + return genj.generateCommon(); + }else { + return genj.generateExecute(); + } + case "CreateActions": + JavaAbstractRetrieveDefaultActionGenerator genk = new JavaAbstractRetrieveDefaultActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(genk.getIsCommonGenerate()){ + return genk.generateCommon(); + }else { + return genk.generateExecute(); + } + case "AfterCreateActions": + JavaAfterRetrieveDefaultActionGenerator genl = new JavaAfterRetrieveDefaultActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(genl.getIsCommonGenerate()){ + return genl.generateCommon(); + }else { + return genl.generateExecute(); + } + case "BeforeDeleteActions": + JavaBeforeDeleteActionGenerator genm = new JavaBeforeDeleteActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(genm.getIsCommonGenerate()){ + return genm.generateCommon(); + }else { + return genm.generateExecute(); + } + case "DeleteActions": + JavaAbstractDeleteActionGenerator genn = new JavaAbstractDeleteActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(genn.getIsCommonGenerate()){ + return genn.generateCommon(); + }else { + return genn.generateExecute(); + } + case "AfterDeleteActions": + JavaAfterDeleteActionGenerator geno = new JavaAfterDeleteActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(geno.getIsCommonGenerate()){ + return geno.generateCommon(); + }else { + return geno.generateExecute(); + } + case "BeforeQueryActions": + JavaBeforeQueryActionGenerator genp = new JavaBeforeQueryActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(genp.getIsCommonGenerate()){ + return genp.generateCommon(); + }else { + return genp.generateExecute(); + } + case "QueryActions": + JavaQueryActionGenerator genq = new JavaQueryActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(genq.getIsCommonGenerate()){ + return genq.generateCommon(); + }else { + return genq.generateExecute(); + } + case "AfterQueryActions": + JavaAfterQueryActionGenerator genr = new JavaAfterQueryActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(genr.getIsCommonGenerate()){ + return genr.generateCommon(); + }else { + return genr.generateExecute(); + } + case "BeforeRetrieveActions": + JavaBeforeRetrieveActionsGenerator gens = new JavaBeforeRetrieveActionsGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(gens.getIsCommonGenerate()){ + return gens.generateCommon(); + }else { + return gens.generateExecute(); + } + case "RetrieveActions": + JavaRetrieveActionGenerator gent = new JavaRetrieveActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(gent.getIsCommonGenerate()){ + return gent.generateCommon(); + }else { + return gent.generateExecute(); + } + case "AfterRetrieveActions": + JavaAfterRetrieveActionGenerator genu = new JavaAfterRetrieveActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(genu.getIsCommonGenerate()){ + return genu.generateCommon(); + }else { + return genu.generateExecute(); + } + case "DataMappingActions": + JavaDataMappingActionsGenerator genv = new JavaDataMappingActionsGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(genv.getIsCommonGenerate()){ + return genv.generateCommon(); + }else { + return genv.generateExecute(); + } + case "ChangesetReversalMappingActions": + JavaChangeReversalMappingActionGenerator genw = new JavaChangeReversalMappingActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(genw.getIsCommonGenerate()){ + return genw.generateCommon(); + }else { + return genw.generateExecute(); + } + case "DataReversalMappingActions": + JavaDataReversalMappingActionsGenerator genx = new JavaDataReversalMappingActionsGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(genx.getIsCommonGenerate()){ + return genx.generateCommon(); + }else { + return genx.generateExecute(); + } + case "ChangesetMappingActions": + JavaChangeMappingActionGenerator geny = new JavaChangeMappingActionGenerator(vo, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, relativePath); + if(geny.getIsCommonGenerate()){ + return geny.generateCommon(); + }else { + return geny.generateExecute(); + } + default: + throw new RuntimeException("构件类型 "+type+" 无法识别"); + } + } + + private ViewModelAction getAction(String code , GspViewModel vo, String type){ + switch (type){ + case "VMActions": + for(ViewModelAction action : vo.getActions()){ + if(code.equals(action.getCode())) + return action; + } + case "BeforeHelp": + for (ValueHelpConfig valueHelpConfig : vo.getValueHelpConfigs()) { + for(ViewModelAction action : valueHelpConfig.getHelpExtend().getBeforeHelp()){ + if(code.equals(action.getCode())) + return action; + } + } + case "AfterMultiDeleteActions": + for(ViewModelAction action : vo.getDataExtendInfo().getAfterMultiDeleteActions()){ + if(code.equals(action.getCode())) + return action; + } + case "MultiDeleteActions": + for(ViewModelAction action : vo.getDataExtendInfo().getMultiDeleteActions()){ + if(code.equals(action.getCode())) + return action; + } + case "BeforeMultiDeleteActions": + for(ViewModelAction action : vo.getDataExtendInfo().getBeforeMultiDeleteActions()){ + if(code.equals(action.getCode())) + return action; + } + case "ModifyActions": + for(ViewModelAction action : vo.getDataExtendInfo().getModifyActions()){ + if(code.equals(action.getCode())) + return action; + } + case "AfterModifyActions": + for(ViewModelAction action : vo.getDataExtendInfo().getAfterModifyActions()){ + if(code.equals(action.getCode())) + return action; + } + case "BeforeModifyActions": + for(ViewModelAction action : vo.getDataExtendInfo().getBeforeModifyActions()){ + if(code.equals(action.getCode())) + return action; + } + case "BeforeSaveActions": + for(ViewModelAction action : vo.getDataExtendInfo().getBeforeSaveActions()){ + if(code.equals(action.getCode())) + return action; + } + case "AfterSaveActions": + for(ViewModelAction action : vo.getDataExtendInfo().getAfterSaveActions()){ + if(code.equals(action.getCode())) + return action; + } + case "BeforeCreateActions": + for(ViewModelAction action : vo.getDataExtendInfo().getBeforeCreateActions()){ + if(code.equals(action.getCode())) + return action; + } + case "CreateActions": + for(ViewModelAction action : vo.getDataExtendInfo().getCreateActions()){ + if(code.equals(action.getCode())) + return action; + } + case "AfterCreateActions": + for(ViewModelAction action : vo.getDataExtendInfo().getAfterCreateActions()){ + if(code.equals(action.getCode())) + return action; + } + case "BeforeDeleteActions": + for(ViewModelAction action : vo.getDataExtendInfo().getBeforeDeleteActions()){ + if(code.equals(action.getCode())) + return action; + } + case "DeleteActions": + for(ViewModelAction action : vo.getDataExtendInfo().getDeleteActions()){ + if(code.equals(action.getCode())) + return action; + } + case "AfterDeleteActions": + for(ViewModelAction action : vo.getDataExtendInfo().getAfterDeleteActions()){ + if(code.equals(action.getCode())) + return action; + } + case "BeforeQueryActions": + for(ViewModelAction action : vo.getDataExtendInfo().getBeforeQueryActions()){ + if(code.equals(action.getCode())) + return action; + } + case "QueryActions": + for(ViewModelAction action : vo.getDataExtendInfo().getQueryActions()){ + if(code.equals(action.getCode())) + return action; + } + case "AfterQueryActions": + for(ViewModelAction action : vo.getDataExtendInfo().getAfterQueryActions()){ + if(code.equals(action.getCode())) + return action; + } + case "BeforeRetrieveActions": + for(ViewModelAction action : vo.getDataExtendInfo().getBeforeRetrieveActions()){ + if(code.equals(action.getCode())) + return action; + } + case "RetrieveActions": + for(ViewModelAction action : vo.getDataExtendInfo().getRetrieveActions()){ + if(code.equals(action.getCode())) + return action; + } + case "AfterRetrieveActions": + for(ViewModelAction action : vo.getDataExtendInfo().getAfterRetrieveActions()){ + if(code.equals(action.getCode())) + return action; + } + case "DataMappingActions": + for(ViewModelAction action : vo.getDataExtendInfo().getDataMappingActions()){ + if(code.equals(action.getCode())) + return action; + } + case "ChangesetReversalMappingActions": + for(ViewModelAction action : vo.getDataExtendInfo().getChangesetReversalMappingActions()){ + if(code.equals(action.getCode())) + return action; + } + case "DataReversalMappingActions": + for(ViewModelAction action : vo.getDataExtendInfo().getDataReversalMappingActions()){ + if(code.equals(action.getCode())) + return action; + } + case "ChangesetMappingActions": + for(ViewModelAction action : vo.getDataExtendInfo().getChangesetMappingActions()){ + if(code.equals(action.getCode())) + return action; + } + + default: + throw new RuntimeException("构件类型 "+type+" 无法识别"); + } + } + + private CommonDetermination getDtm(String code , GspViewModel vo){ + for(CommonDetermination action : vo.getVariables().getDtmAfterModify()){ + if(code.equals(action.getCode())) + return action; + } + throw new RuntimeException("变量联动计算"+code+"不存在,请检查元数据ID:"+vo.getID()); + } + + + //保存前校验遍历获取所有新增动作信息 + public void getNewActions(GspViewModel vo, List checkInfo){ + for(ViewModelAction action : vo.getActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("VO动作"); + info.setType("VMActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for (ValueHelpConfig valueHelpConfig : vo.getValueHelpConfigs()) { + for(ViewModelAction action : valueHelpConfig.getHelpExtend().getBeforeHelp()) { + if (action.getComponentName() == null || "".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("帮助前事件"); + info.setType("BeforeHelp"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + } + for(CommonDetermination action : vo.getVariables().getDtmAfterModify()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("自定义变量联动计算"); + info.setType("VarDeterminations"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getMultiDeleteActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("批量删除扩展动作"); + info.setType("MultiDeleteActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getBeforeMultiDeleteActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("批量删除前扩展动作"); + info.setType("BeforeMultiDeleteActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action :vo.getDataExtendInfo().getAfterMultiDeleteActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("批量删除后扩展动作"); + info.setAction("AfterMultiDeleteActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getQueryActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("查询数据扩展动作"); + info.setType("QueryActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getBeforeQueryActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("查询数据前扩展动作"); + info.setAction("BeforeQueryActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getAfterQueryActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("查询数据后扩展动作"); + info.setAction("AfterQueryActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getRetrieveActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("检索数据扩展动作"); + info.setType("RetrieveActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getBeforeRetrieveActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("检索数据前扩展动作"); + info.setType("BeforeRetrieveActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getAfterRetrieveActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("检索数据后扩展动作"); + info.setType("AfterRetrieveActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getCreateActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("新增数据扩展动作"); + info.setType("CreateActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getBeforeCreateActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("新增数据前扩展动作"); + info.setType("BeforeCreateActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getAfterCreateActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("新增数据后扩展动作"); + info.setType("AfterCreateActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getDeleteActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("删除数据扩展动作"); + info.setType("DeleteActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getBeforeDeleteActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("删除数据前扩展动作"); + info.setType("BeforeDeleteActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getAfterDeleteActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("删除数据后扩展动作"); + info.setType("AfterDeleteActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getModifyActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("修改数据扩展动作"); + info.setType("ModifyActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getBeforeModifyActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("修改数据前扩展动作"); + info.setType("BeforeModifyActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getAfterModifyActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("修改数据后扩展动作"); + info.setType("AfterModifyActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getBeforeSaveActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("保存数据前扩展动作"); + info.setType("BeforeSaveActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getAfterSaveActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("保存数据后扩展动作"); + info.setType("AfterSaveActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getChangesetMappingActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("变更集Mapping扩展动作"); + info.setType("ChangesetMappingActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getChangesetReversalMappingActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("变更集反向Mapping扩展动作"); + info.setType("ChangesetReversalMappingActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getDataReversalMappingActions()){ + if(action.getComponentName()==null||"".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("数据反向Mapping扩展动作"); + info.setType("DataReversalMappingActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + for(ViewModelAction action : vo.getDataExtendInfo().getDataMappingActions()) { + if (action.getComponentName() == null || "".equals(action.getComponentName())) { + CheckComUtil info = new CheckComUtil(); + info.setAction(action.getCode()); + info.setCheckInfo("数据Mapping扩展动作"); + info.setType("DataMappingActions"); + info.setActionName(action.getName()); + checkInfo.add(info); + } + } + } + public String getFilePath(GspViewModel vo, CheckComUtil info,String compModulePath,String compAssemblyName){ + String path = getClassName(vo,info.getType(),compModulePath,compAssemblyName,info.getAction()); + return path; + } + + private String getClassName(GspViewModel vo,String type,String compModulePath,String compAssemblyName,String actionCode){ + String classPath = ""; + if(!"VarDeterminations".equals(type)){ + classPath = compModulePath+"\\com\\"+compAssemblyName.replace(".", ViewModelUtils.getSeparator())+"\\"+vo.getName()+"\\"+"voactions"+"\\"+actionCode+"VOAction.java"; + }else { + classPath = compModulePath+"\\com\\"+compAssemblyName.replace(".", ViewModelUtils.getSeparator())+"\\"+vo.getName()+"\\"+"vardeterminations"+"\\"+vo.getName()+"Variable"+actionCode+"VODtm.java"; + } + return classPath; + } + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/config/MdPkgDeployConfig.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/config/MdPkgDeployConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..b93bd6cfc6e8ed333e2d3deab563e05bd08e0cf1 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/config/MdPkgDeployConfig.java @@ -0,0 +1,43 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.config; + +import io.iec.edp.caf.commons.event.config.EventListenerData; +import io.iec.edp.caf.commons.event.config.EventManagerData; +import lombok.var; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.ArrayList; +import java.util.List; + +@Configuration(proxyBeanMethods=false) +public class MdPkgDeployConfig { + + @Bean + public EventManagerData createEventManagerData(){ + EventManagerData data= new EventManagerData(); + data.setName("MdpkgChangedEventManager"); + List listeners = new ArrayList<>(); + data.setListeners(listeners); + var listenerData = new EventListenerData(); + listenerData.setName("VoListener"); + listenerData.setImplClassName("com.inspur.edp.formserver.vmmanager.lowcode.MdPkgDeployListener"); + data.getListeners().add(listenerData); + return data; + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/config/VMManagerConfig.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/config/VMManagerConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..02e22985d3cfe6c28f379fae5793238c17113a57 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/config/VMManagerConfig.java @@ -0,0 +1,33 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.config; + +import com.inspur.edp.caf.cef.dt.spi.CommonStructureSchemaExtension; +import com.inspur.edp.formserver.vmmanager.commonstructure.VMComStructureSchemaExtension; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration("com.inspur.edp.formserver.vmmanager.config.VMManagerConfig") +public class VMManagerConfig { + @Bean("com.inspur.edp.formserver.vmmanager.config.VMManagerConfig.VMComStructureSchemaExtension()") + public CommonStructureSchemaExtension getVMComStructureSchemaExtension() + { + return new VMComStructureSchemaExtension(); + } + +} + diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/createvmmetadata/ComponentGenUtil.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/createvmmetadata/ComponentGenUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..a9ea231d201894dccedfcee9f00bb9b77afa0ff1 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/createvmmetadata/ComponentGenUtil.java @@ -0,0 +1,52 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.createvmmetadata; + + +import com.inspur.edp.formserver.viewmodel.util.ViewModelUtils; +import com.inspur.edp.lcm.fs.api.IFsService; +import com.inspur.edp.lcm.metadata.api.entity.MetadataProject; +import com.inspur.edp.lcm.metadata.api.service.MetadataProjectService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +public final class ComponentGenUtil +{ + public static final String ComponentDir = "component"; + + public static String getComponentAssemblyName(String path) + { + MetadataProjectService service= SpringBeanUtils.getBean(MetadataProjectService.class); + MetadataProject projSvr = service.getMetadataProjInfo(path); + + if (projSvr == null) + { + throw new RuntimeException("请先建立元数据工程!"); + } + return projSvr.getNameSpace(); + } + + public static String prepareComponentDir(String vmPath) + { + String path = ViewModelUtils.getCombinePath(vmPath, ComponentDir); + IFsService fsSvr = SpringBeanUtils.getBean(IFsService.class); + if (!fsSvr.existsAsDir(path)) + { + fsSvr.createDir(path); + } + return path; + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/createvmmetadata/ComponentGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/createvmmetadata/ComponentGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..9b8a5bfffdeb509ad71c4dcd3ffca078bceb23f4 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/createvmmetadata/ComponentGenerator.java @@ -0,0 +1,328 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.createvmmetadata; + + +import com.inspur.edp.cef.designtime.api.operation.CommonDetermination; +import com.inspur.edp.cef.designtime.api.util.DataValidator; +import com.inspur.edp.cef.designtime.api.variable.CommonVariableEntity; +import com.inspur.edp.cef.variable.dtgenerator.vardtmGenerate.cmpgenerators.CommonDtmGenerator; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelActionType; +import com.inspur.edp.formserver.viewmodel.collection.VMActionCollection; +import com.inspur.edp.formserver.viewmodel.common.ValueHelpConfig; +import com.inspur.edp.formserver.viewmodel.dataextendinfo.VoDataExtendInfo; +import com.inspur.edp.lcm.metadata.api.entity.MetadataProject; +import com.inspur.edp.lcm.metadata.api.service.MetadataProjectService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +public class ComponentGenerator +{ + public static final String ComponentDir = "component"; + public static ComponentGenerator getInstance() + { + return new ComponentGenerator(); + } + private ComponentGenerator() + { + createComponentActionList = new java.util.ArrayList(); + } + private java.util.ArrayList createComponentActionList; + /** + VM的编号 + + */ + private String privateVMActionCode; + private String getVMActionCode() + { + return privateVMActionCode; + } + private void setVMActionCode(String value) + { + privateVMActionCode = value; + } + /** + VM变量实体的编号 + + */ + private String privateVMVariableEntityCode; + private String getVMVariableEntityCode() + { + return privateVMVariableEntityCode; + } + private void setVMVariableEntityCode(String value) + { + privateVMVariableEntityCode = value; + } + /** + VM的程序集名称 + + */ + private String privateAssemblyName; + private String getAssemblyName() + { + return privateAssemblyName; + } + private void setAssemblyName(String value) + { + privateAssemblyName = value; + } + + private String privateNamespace; + private String getNamespace() + { + return privateNamespace; + } + private void setNamespace(String value) + { + privateNamespace = value; + } + /** + 业务对象ID + + */ + private String privateBizObjectID; + private String getBizObjectID() + { + return privateBizObjectID; + } + private void setBizObjectID(String value) + { + privateBizObjectID = value; + } + + public final java.util.ArrayList GenerateComponent(GspViewModel viewModel, String path, String bizObjectID) + { + // 参数校验 + DataValidator.checkForNullReference(viewModel, "viewModel"); + DataValidator.checkForEmptyString(path, "path"); + + MetadataProject metadataProj = SpringBeanUtils.getBean(MetadataProjectService.class).getMetadataProjInfo(path); + setAssemblyName(metadataProj.getCsprojAssemblyName()); + setNamespace(metadataProj.getNameSpace()); + DataValidator.checkForEmptyString(getAssemblyName(), "AssemblyName"); + setVMActionCode(viewModel.getCode()); + DataValidator.checkForEmptyString(getVMActionCode(), "VMActionCode"); + setBizObjectID(bizObjectID); + String cmpPath = ComponentGenUtil.prepareComponentDir(path); + + generateViewModelActionComponents(viewModel, cmpPath); + generateVariableDtmComponents(viewModel, cmpPath); + return this.createComponentActionList; + } + + /** + 变量联动计算 + + @param viewModel + @param path + */ + private void generateVariableDtmComponents(GspViewModel viewModel, String path) + { + if (viewModel.getVariables()==null) + { + return; + } + + CommonVariableEntity cdtDef = viewModel.getVariables(); + setVMVariableEntityCode(cdtDef.getCode()); + for (CommonDetermination dtmInfo : cdtDef.getDtmBeforeSave()) + { + if (dtmInfo.getIsRef() || !dtmInfo.getIsGenerateComponent()) + { + continue; + } + setNewCompActionCode( + CommonDtmGenerator.getInstance().GenerateComponent(viewModel, dtmInfo, path, this.getVMVariableEntityCode(), this.getAssemblyName(), getNamespace(), this.getBizObjectID())); + + } + for (CommonDetermination dtmInfo : cdtDef.getDtmAfterCreate()) + { + if (dtmInfo.getIsRef() || !dtmInfo.getIsGenerateComponent()) + { + continue; + } + setNewCompActionCode(CommonDtmGenerator.getInstance().GenerateComponent(viewModel, dtmInfo, path, this.getVMVariableEntityCode(), this.getAssemblyName(), getNamespace(), this.getBizObjectID())); + } + for (CommonDetermination dtmInfo : cdtDef.getDtmAfterModify()) + { + if (dtmInfo.getIsRef() || !dtmInfo.getIsGenerateComponent()) + { + continue; + } + setNewCompActionCode(CommonDtmGenerator.getInstance().GenerateComponent(viewModel, dtmInfo, path, this.getVMVariableEntityCode(), this.getAssemblyName(), getNamespace(), this.getBizObjectID())); + } + } + + /** + + @param viewModel BE实体 + @param path 生成路径 + */ + private void generateViewModelActionComponents(GspViewModel viewModel, String path) + { + for (ViewModelAction action : viewModel.getActions()) + { + if (action.getType() == ViewModelActionType.VMAction && ((MappedCdpAction)((action instanceof MappedCdpAction) ? action : null)).getIsGenerateComponent()) + { + setNewCompActionCode(MappedCdpActionComponentGenerator.getInstance().GenerateComponent((MappedCdpAction)((action instanceof MappedCdpAction) ? action : null), path, this.getVMActionCode(), this.getAssemblyName(), getNamespace(), this.getBizObjectID())); + + } + + } + + //var extendInfo = viewModel.DataExtendInfo; + + //foreach (var action in extendInfo.AfterQueryActions) + //{ + // if (action.Type == ViewModelActionType.VMAction && (action as MappedCdpAction).getIsGenerateComponent()) + // { + // JavaAfterQueryActionComponentGenerator.Instance.GenerateComponent(action as MappedCdpAction, path, this.VMActionCode, this.AssemblyName, Namespace,this.BizObjectID); + // } + //} + + + java.util.ArrayList list = new java.util.ArrayList(); + VoDataExtendInfo extendInfo = viewModel.getDataExtendInfo(); + list.add(extendInfo.getAfterCreateActions()); + list.add(extendInfo.getAfterModifyActions()); + list.add(extendInfo.getAfterQueryActions()); + list.add(extendInfo.getAfterRetrieveActions()); + list.add(extendInfo.getAfterSaveActions()); + list.add(extendInfo.getBeforeCreateActions()); + list.add(extendInfo.getBeforeDeleteActions()); + list.add(extendInfo.getBeforeQueryActions()); + list.add(extendInfo.getBeforeRetrieveActions()); + list.add(extendInfo.getBeforeSaveActions()); + list.add(extendInfo.getChangesetMappingActions()); + list.add(extendInfo.getChangesetReversalMappingActions()); + list.add(extendInfo.getCreateActions()); + list.add(extendInfo.getDataMappingActions()); + list.add(extendInfo.getDataReversalMappingActions()); + list.add(extendInfo.getDeleteActions()); + list.add(extendInfo.getModifyActions()); + list.add(extendInfo.getQueryActions()); + list.add(extendInfo.getRetrieveActions()); + list.add(extendInfo.getAfterDeleteActions()); + list.add(extendInfo.getBeforeModifyActions()); + list.add(extendInfo.getBeforeMultiDeleteActions()); + list.add(extendInfo.getMultiDeleteActions()); + list.add(extendInfo.getAfterMultiDeleteActions()); + + + for (VMActionCollection item : list) + { + + for (ViewModelAction action : item) + { + if (action.getType() == ViewModelActionType.VMAction && ((MappedCdpAction)((action instanceof MappedCdpAction) ? action : null)).getIsGenerateComponent()) + { + if (InterActionCheck(action) == false) + { + //MappedCdpActionComponentGenerator.Instance.GenerateComponent(action as MappedCdpAction, path, this.VMActionCode, this.AssemblyName, this.BizObjectID); + setNewCompActionCode(MappedCdpActionComponentGenerator.getInstance().GenerateComponent((MappedCdpAction)((action instanceof MappedCdpAction) ? action : null), path, this.getVMActionCode(), this.getAssemblyName(), getNamespace(), this.getBizObjectID())); + } + + } + } + } + + //var elementList=viewModel.GetAllElementList(true); + //foreach(var item in elementList) + //{ + // GspViewModelElement element = (GspViewModelElement)item; + // if (element.HelpActions == null) + // continue; + + for (ValueHelpConfig valueHelpConfig : viewModel.getValueHelpConfigs()) + { + if (valueHelpConfig.getHelpExtend() != null && valueHelpConfig.getHelpExtend().getBeforeHelp() != null) + { + + for (ViewModelAction action : valueHelpConfig.getHelpExtend().getBeforeHelp()) + { + if (action.getType() == ViewModelActionType.VMAction && ((MappedCdpAction)((action instanceof MappedCdpAction) ? action : null)).getIsGenerateComponent()) + { + setNewCompActionCode(MappedCdpActionComponentGenerator.getInstance().GenerateComponent((MappedCdpAction)((action instanceof MappedCdpAction) ? action : null), path, this.getVMActionCode(), this.getAssemblyName(), getNamespace(), this.getBizObjectID())); + } + } + } + } + + } + /** + 检查是否是内置动作,如果是内置动作返回值为true + + @param action + @return + */ + private boolean InterActionCheck(ViewModelAction action) + { + boolean value = false; + if (action.getID().equals("52479451-8e22-4751-8684-80489ce5786b")) + { + value = true; //CreateActions + } + if (action.getID().equals("47dd3752-72a3-4c56-81c0-ae8ccfe5eb98")) + { + value = true; //ModifyActions + } + if (action.getID().equals("5798f884-c222-47f4-8bbe-685c7013dee4")) + { + value = true; //ChangesetMappingActions + } + if (action.getID().equals("301c5991-a32d-4221-88bf-8c9d07bdd884")) + { + value = true; //ChangesetReversalMappingData + } + if (action.getID().equals("6fe68bfa-7c1b-4d6b-a7ef-14654168ae75")) + { + value = true; //QueryActions + } + if (action.getID().equals("42221ca3-9ee4-40af-89d2-ff4c8b466ac3")) + { + value = true; //DataMappingActions + } + if (action.getID().equals("991bf216-f55b-40bf-bb42-1b831b6ef3e9")) + { + value = true; //DataReversalMappingActions + } + if (action.getID().equals("7a02f472-5bbd-424b-9d9e-f82e3f9f448e")) + { + value = true; //RetrieveActions + } + if (action.getID().equals("9a17e935-7366-489d-b110-0ae103e5648e")) + { + value = true; //DeleteActions + } + if (action.getID().equals("7b1c3c4l-t1a4-4dyc-b75b-7695hcb3we7e")) + { + value = true; //MultiDeleteActions + } + return value; + } + private void setNewCompActionCode(String code) + { + if (code == null || code.equals("")) + { + return; + } + this.createComponentActionList.add(code); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/createvmmetadata/GspMetadataExchangeUtil.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/createvmmetadata/GspMetadataExchangeUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..97ec231daf2ce06aba32d4ba6b0d23898bc883b8 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/createvmmetadata/GspMetadataExchangeUtil.java @@ -0,0 +1,296 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.createvmmetadata; + + +import com.inspur.edp.bef.component.base.GspComponent; +import com.inspur.edp.formserver.viewmodel.util.ViewModelUtils; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.entity.MetadataHeader; +import com.inspur.edp.lcm.metadata.api.entity.MetadataReference; +import com.inspur.edp.lcm.metadata.api.service.MetadataService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +import java.util.ArrayList; + +/** + 与元数据交互的工具 + +*/ +public class GspMetadataExchangeUtil +{ + private final String VM_TYPE="VMComponent"; + private final String VM_FILESUFFIX=".vmCmp"; + private final String VOACTIONCONTROLLER="VOActionController"; + public static GspMetadataExchangeUtil getInstance(){ + return new GspMetadataExchangeUtil(); + } + private GspMetadataExchangeUtil() + { + } + /** + 业务实体编号 + + */ + private String privateVMActionCode; + private String getVMActionCode() + { + return privateVMActionCode; + } + private void setVMActionCode(String value) + { + privateVMActionCode = value; + } + /** + 元数据存放路径 + + */ + private String privateMetadataPath; + private String getMetadataPath() + { + return privateMetadataPath; + } + private void setMetadataPath(String value) + { + privateMetadataPath = value; + } + /** + 元数据名称 + + */ + private String privateComponentName; + private String getComponentName() + { + return privateComponentName; + } + private void setComponentName(String value) + { + privateComponentName = value; + } + /** + 是否是新建元数据 + + */ + private boolean privateIsNewMetadata; + private boolean getIsNewMetadata() + { + return privateIsNewMetadata; + } + private void setIsNewMetadata(boolean value) + { + privateIsNewMetadata = value; + } + + private String privateBizObjectID; + private String getBizObjectID() + { + return privateBizObjectID; + } + private void setBizObjectID(String value) + { + privateBizObjectID = value; + } + + private String privateNameSpace; + private String getNameSpace() + { + return privateNameSpace; + } + private void setNameSpace(String value) + { + privateNameSpace = value; + } + /** + 创建构件元数据,返回构件元数据ID + + @param component 构件实体 + @param path 生成构件元数据的路径 + @param vmActionCode 业务实体编号 + @return + 生成的构件元数据名称 + + + */ + public final String establishVMMetdadata(GspComponent component, String path, String vmActionCode, String bizObjectID, String nameSpace) + { + this.setIsNewMetadata(true); + this.setVMActionCode(vmActionCode); + this.setMetadataPath(path); + this.setBizObjectID(bizObjectID); + this.setNameSpace(nameSpace); + //1、构建元数据实体 + GspMetadata metadata = buildGspMetadataEntity(component,false); + //2、生成构件元数据 + return generateGspMetadata(metadata); + } + /** + 更新构件元数据 + + @param component 构件实体 + @param fullPath 要修改的构件元数据完整路径 + */ + public final void updateGspMetadata(GspComponent component, String fullPath, String bizEntityCode, String bizObjectID, String nameSpace) + { + this.setIsNewMetadata(false); + this.setVMActionCode(bizEntityCode); + this.setBizObjectID(bizObjectID); + this.setNameSpace(nameSpace); + this.setMetadataPath(ViewModelUtils.getDirectoryName(fullPath)); + this.setComponentName(ViewModelUtils.getFileNameWithoutExtension(fullPath)); + //1、构建元数据实体 + GspMetadata metadata = buildGspMetadataEntity(component, true); + updateComponentMetadata(metadata, fullPath); + } + + + ///#region 构建构件元数据实体 + /** + 创建GspMetadata实体 + + @param component 构件实体 + @return GspMetadata实体 + */ + +//ORIGINAL LINE: private GspMetadata buildGspMetadataEntity(GspComponent component, bool isUpdate=false) + private GspMetadata buildGspMetadataEntity(GspComponent component, boolean isUpdate) + { + GspMetadata metadata = createMetadataEntity(); + + evaluateMetadataHeader(component, metadata); + evaluateMetadataContent(component, metadata); + return metadata; + } + + /** + 创建元数据实例 + + @return + 实例化的元数据 + + + */ + private GspMetadata createMetadataEntity() + { + GspMetadata tempVar = new GspMetadata(); + tempVar.setHeader(new MetadataHeader()); + tempVar.setRefs(new ArrayList()); + GspMetadata metadata = tempVar; + return metadata; + } + /** + 为元数据的Header属性赋值 + + @param component 构件实体 + @param metadata 元数据实体 + */ + private void evaluateMetadataHeader(GspComponent component, GspMetadata metadata) + { + if (ViewModelUtils.checkNull(metadata.getHeader().getNameSpace())) + { + metadata.getHeader().setNameSpace(getNameSpace()); + } + + metadata.getHeader().setName(generateComponentMetadataName(component, this.getMetadataPath())); + metadata.getHeader().setCode (generateComponentMetadataName(component, this.getMetadataPath())); + metadata.getHeader().setFileName(this.getComponentName() + VM_FILESUFFIX); + metadata.getHeader().setType(VM_TYPE); + + if (!ViewModelUtils.checkNull(getBizObjectID())) + { + metadata.getHeader().setBizobjectID(getBizObjectID()); + } + + if (ViewModelUtils.checkNull(metadata.getHeader().getId()) && ViewModelUtils.checkNull(component.getComponentID())) //新建构件元数据时,需要初始化后获取ID + { + MetadataService metadataService = SpringBeanUtils.getBean(MetadataService.class); + //初始化元数据,为了获取元数据ID + metadata = metadataService.initializeMetadataEntity(metadata); + component.setComponentID(metadata.getHeader().getId()); + } + else if (ViewModelUtils.checkNull(metadata.getHeader().getId()) && !ViewModelUtils.checkNull(component.getComponentID())) //修改构件元数据时,需要为元数据的ID赋值 + { + metadata.getHeader().setId(component.getComponentID()); + } + } + /** + 为元数据的Content属性赋值 + + @param component 构件实体 + @param metadata 元数据实体 + */ + private void evaluateMetadataContent(GspComponent component, GspMetadata metadata) + { + metadata.setContent(component); + } + + ///#endregion + + /** + 生成构件元数据 + + @param metadata 元数据 + @param + @return + 生成的构件元数据名称 + + + */ + private String generateGspMetadata(GspMetadata metadata) + { + MetadataService metadataService = SpringBeanUtils.getBean(MetadataService.class); + + //创建元数据 + metadataService.createMetadata(this.getMetadataPath(), metadata); + return metadata.getHeader().getCode(); + } + + private void updateComponentMetadata(GspMetadata metadata, String fullPath) + { + MetadataService metadataService = SpringBeanUtils.getBean(MetadataService.class); + + metadataService.saveMetadata(metadata, fullPath); + } + /** + 生成当前路径下唯一的元数据名称 + + @param component 构件实体 + @param path 生成的元数据存放路径 + @return 唯一的要生成的元数据名称 + */ + private String generateComponentMetadataName(GspComponent component, String path) + { + // 构件元数据命名规则 + String metadataFileName = this.getVMActionCode() + component.getComponentCode() + VOACTIONCONTROLLER; + // 若为新增元数据操作,则需要检查路径下是否有重名元数据;若为修改元数据操作,则无需操作 + if (this.getIsNewMetadata()) + { + String orgMetadataFileName = metadataFileName; + String metadataFileNameWithSuffix = metadataFileName + VM_FILESUFFIX; + int index = 0; + MetadataService metadataService = SpringBeanUtils.getBean(MetadataService.class); + while (metadataService.isMetadataExist(path, metadataFileNameWithSuffix)) + { + //(同一个Be元数据中,若有重名,则自动增加后缀) + metadataFileName = orgMetadataFileName + ++index; + metadataFileNameWithSuffix = metadataFileName + VM_FILESUFFIX; + } + this.setComponentName(metadataFileName); + } + + return metadataFileName; + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/createvmmetadata/MappedCdpActionComponentGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/createvmmetadata/MappedCdpActionComponentGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..8932a74598c3a6b0f87b1934af11697df8bdb7ef --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/createvmmetadata/MappedCdpActionComponentGenerator.java @@ -0,0 +1,275 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.createvmmetadata; + + +import com.inspur.edp.bef.component.base.GspComponent; +import com.inspur.edp.bef.component.base.VoidReturnType; +import com.inspur.edp.bef.component.detailcmpentity.vm.VMComponent; +import com.inspur.edp.bef.component.detailcmpentity.vm.VMMethodParameter; +import com.inspur.edp.bef.component.enums.ParameterCollectionType; +import com.inspur.edp.bef.component.enums.ParameterMode; +import com.inspur.edp.bef.component.enums.ParameterType; +import com.inspur.edp.formserver.viewmodel.action.IViewModelParameter; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelParameter; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelVoidReturnValue; +import com.inspur.edp.formserver.viewmodel.util.ViewModelUtils; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.service.MetadataService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +public class MappedCdpActionComponentGenerator +{ + /** + 业务实体编号 + + */ + protected String vmActionCode; + /** + 业务实体程序集名称 + + */ + protected String assemblyName; + + protected String namespace; + /** + 业务对象ID + + */ + protected String bizObjectID; + /** + 原始构件 + + */ + protected VMComponent originalComponent; + + public static MappedCdpActionComponentGenerator getInstance(){ + return new MappedCdpActionComponentGenerator(); + } + private MappedCdpActionComponentGenerator() + { + } + + /** + 生成构件元数据 + + @param mappedCdpAction 业务操作 + @param path 生成指定路径 + @param vmActionCode 业务实体编号 + @param assemblyName 业务实体程序集名称 + @param bizObjectID 业务对象ID + */ + public final String GenerateComponent(MappedCdpAction mappedCdpAction, String path, String vmActionCode, String assemblyName, String defaltnamespace, String bizObjectID) + { + this.vmActionCode = vmActionCode; + this.assemblyName = assemblyName; + namespace = defaltnamespace; + this.bizObjectID = bizObjectID; + if (ViewModelUtils.checkNull(mappedCdpAction.getComponentEntityId())) + { + createComponent(mappedCdpAction, path); + return mappedCdpAction.getCode(); + } + else + { + modifyComponent(mappedCdpAction, path); + } + return null; + } + /** + 新建构件 + + @param action + @param path + */ + private void createComponent(MappedCdpAction action, String path) + { + //1、构建实体 + VMComponent component = new VMComponent(); + this.originalComponent = null; + //2、赋值 + evaluateComponentInfo(component, action,true); + //3、生成构件 + String componentMetadataName = establishComponent(component, path); + //4、建立Action与元数据之间的关联关系 + action.setComponentEntityId(component.getComponentID()); + //操作的ComponentName用来记录生成的构件元数据的名称 + action.setComponentName(componentMetadataName); + } + + ///#region 构件赋值 isInit默认为true + private void evaluateComponentInfo(VMComponent component, MappedCdpAction action, boolean isInit) + { + //1、基本信息 + evaluateComponentBasicInfo(component, action, isInit); + //2、参数信息 + evaluateComponentParameterInfos(component, action); + //3、返回值信息 + evaluateComponentReturnValueInfo(component, action); + } + private void evaluateComponentBasicInfo(VMComponent component, MappedCdpAction action, boolean isInit) + { + if (!ViewModelUtils.checkNull(action.getComponentEntityId())) + { + component.setComponentID(action.getComponentEntityId()); + } + component.setComponentCode(action.getCode()); + component.setComponentName(action.getName()); + component.setComponentDescription(""); //无描述信息 + component.getVmMethod().setDotnetAssembly(this.assemblyName); + + String suffix = String.format("%1$s%2$s%3$s%4$s",'.',this.vmActionCode, '.', JavaCompCodeNames.VOActionNameSpaceSuffix); + String packageName = javaModuleImportPackage(namespace); + packageName = String.format("%1$s%2$s",packageName, suffix.toLowerCase()); + + if (this.originalComponent != null) + { + component.getVmMethod().setDotnetClassName(originalComponent.getMethod().getDotnetClassName()); + component.getMethod().setClassName(javaModuleClassName(originalComponent.getMethod().getDotnetClassName(),packageName)); + } + else + { + //20190507wj_新生成的构件,VM=>VO + if (isInit) + { + component.getVmMethod().setDotnetClassName((String.format("%1$s.%2$s.%3$s%4$s", this.namespace, JavaCompCodeNames.VMActionNameSpaceSuffix, action.getCode(), JavaCompCodeNames.VMActionClassNameSuffix))); + component.getMethod().setClassName(javaModuleClassName(component.getVmMethod().getDotnetClassName(), packageName)); + } + } + } + + protected final String javaModuleClassName(String classNamestr, String packageNameStr) + { + String connections = ""; + if (!ViewModelUtils.checkNull(classNamestr)) + { + connections = classNamestr.substring(classNamestr.lastIndexOf('.')); + connections = String.format("%1$s%2$s",packageNameStr, connections); + } + + return (connections); + } + + protected final String javaModuleImportPackage(String packageName) + { + String[] strArray = packageName.split("[.]", -1); + String str = "com."; + int i; + + for (i = 0; i < strArray.length - 1; i++) + { + str += strArray[i].toLowerCase() + "."; + } + return (str + strArray[i].toLowerCase()); + } + private void evaluateComponentParameterInfos(VMComponent component, MappedCdpAction action) + { + for (Object parameter : action.getParameterCollection()) + { + evaluateComponentParameterInfo((IViewModelParameter) parameter, component); + } + } + private void evaluateComponentParameterInfo(IViewModelParameter vmParameter, VMComponent component) + { + VMMethodParameter tempVar = new VMMethodParameter(); + tempVar.setID(vmParameter.getID()); + tempVar.setParamCode(vmParameter.getParamCode()); + tempVar.setParamName( vmParameter.getParamName()); + tempVar.setParamDescription(vmParameter.getParamDescription()); + tempVar.setMode(ParameterMode.valueOf(vmParameter.getMode().name().toString())); + tempVar.setParameterType(ParameterType.valueOf(vmParameter.getParameterType().name().toString())); + tempVar.setAssembly(vmParameter.getAssembly()); + tempVar.setDotnetClassName(((ViewModelParameter)vmParameter).getDotnetClassName()); + tempVar.setClassName(vmParameter.getClassName()); + tempVar.setParameterCollectionType(ParameterCollectionType.valueOf(vmParameter.getCollectionParameterType().name().toString())); + VMMethodParameter parameter = tempVar; + + component.getVmMethod().getParams().add(parameter); + } + private void evaluateComponentReturnValueInfo(VMComponent component, MappedCdpAction action) + { + //类型 + if (action.getReturnValue() instanceof ViewModelVoidReturnValue) + { + component.getVmMethod().setReturnValue(new VoidReturnType()); + } + else + { + component.getVmMethod().getReturnValue().setParameterCollectionType(ParameterCollectionType.valueOf(action.getReturnValue().getCollectionParameterType().name().toString())); + component.getVmMethod().getReturnValue().setParameterType(ParameterType.valueOf(action.getReturnValue().getParameterType().name().toString())); + component.getVmMethod().getReturnValue().setAssembly(action.getReturnValue().getAssembly()); + component.getVmMethod().getReturnValue().setDotnetClassName(action.getReturnValue().getDotnetClassName()); + component.getVmMethod().getReturnValue().setClassName(action.getReturnValue().getClassName()); + } + //基本信息 + component.getVmMethod().getReturnValue().setID(action.getReturnValue().getID()); + component.getVmMethod().getReturnValue().setParamDescription(action.getReturnValue().getParamDescription()); + } + ///#endregion + + /** + 生成构件实体对应的构件元数据 + + @param component 构件实体 + @param path 生成构件元数据指定路径 + @return + 生成的构件元数据名称 + + + */ + private String establishComponent(GspComponent component, String path) + { + return GspMetadataExchangeUtil.getInstance().establishVMMetdadata(component, path, this.vmActionCode, this.bizObjectID, this.namespace); + } + + /** + 修改构件 + + @param action + @param path + */ + private void modifyComponent(MappedCdpAction action, String path) + { + //1、构建实体 + VMComponent component = new VMComponent(); + + //3、获取要修改的构件元数据完整路径(包括后缀) + String fullPath = ""; + MetadataService metadataService = SpringBeanUtils.getBean(MetadataService.class); + // 带针对不同类型构件的扩展名的文件全名 + String metadataFileNameWithExtendName = action.getComponentName() + ".vmCmp"; + if (!metadataService.isMetadataExist(path, metadataFileNameWithExtendName)) + { + throw new RuntimeException("构件元数据" + metadataFileNameWithExtendName + "不存在!"); + } + fullPath = path + ViewModelUtils.getSeparator() + action.getComponentName() + ".vmCmp"; + this.originalComponent = getoriginalComponent(path, metadataFileNameWithExtendName); + //2、赋值 + evaluateComponentInfo(component, action,true); + //4、修改更新构件元数据 + GspMetadataExchangeUtil.getInstance().updateGspMetadata(component, fullPath, this.vmActionCode, this.bizObjectID, this.namespace); + } + private VMComponent getoriginalComponent(String path, String metadataFileNameWithSuffix) + { + MetadataService metadataService = SpringBeanUtils.getBean(MetadataService.class); + GspMetadata metadata = metadataService.loadMetadata(metadataFileNameWithSuffix, path); + VMComponent originalComponent = (VMComponent)((metadata.getContent() instanceof VMComponent) ? metadata.getContent() : null); + return originalComponent; + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/exception/VmManagerException.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/exception/VmManagerException.java new file mode 100644 index 0000000000000000000000000000000000000000..e917f0fe2bb0e580d67ead3e4d8a275728151290 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/exception/VmManagerException.java @@ -0,0 +1,26 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.exception; + +import io.iec.edp.caf.commons.exception.CAFRuntimeException; + +public class VmManagerException extends CAFRuntimeException { + + public VmManagerException(String serviceUnitCode, String exceptionCode, String exceptionMessage, RuntimeException innerException, io.iec.edp.caf.commons.exception.ExceptionLevel level, boolean isBizException) { + super(serviceUnitCode, exceptionCode, exceptionMessage, innerException, level, isBizException); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/extendinfo/GspVoExtendInfoServiceImpl.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/extendinfo/GspVoExtendInfoServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..113efeaa61ed45818ee03301786fe930c5ab85d6 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/extendinfo/GspVoExtendInfoServiceImpl.java @@ -0,0 +1,164 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.extendinfo; + +import com.inspur.edp.formserver.viewmodel.extendinfo.api.GspVoExtendInfoService; +import com.inspur.edp.formserver.viewmodel.extendinfo.entity.GspVoExtendInfo; +import com.inspur.edp.formserver.vmmanager.extendinfo.repository.GspVoExtendInfoRepository; +import io.iec.edp.caf.commons.exception.CAFRuntimeException; +import io.iec.edp.caf.commons.exception.ExceptionLevel; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; +import io.iec.edp.caf.rpc.api.service.RpcClient; +import io.iec.edp.caf.rpc.api.support.Type; +import org.springframework.dao.IncorrectResultSizeDataAccessException; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.concurrent.ConcurrentHashMap; + +public class GspVoExtendInfoServiceImpl implements GspVoExtendInfoService { + + private GspVoExtendInfoRepository extendInfoRepository; + protected static ConcurrentHashMap configIdGspVoExtendInfo; + protected static ConcurrentHashMap idGspVoExtendInfo; + + private String Lcm_SU = "Lcm"; + private String VIEWWMODEL_SERVICE="com.inspur.edp.formserver.voextendinfo.server.api.GspVoExtendInfoRpcService"; + + public GspVoExtendInfoServiceImpl(GspVoExtendInfoRepository extendInfoRepository) { + this.extendInfoRepository = extendInfoRepository; + configIdGspVoExtendInfo = new ConcurrentHashMap<>(); + idGspVoExtendInfo = new ConcurrentHashMap<>(); + } + // 使用be Id的取消缓存 + @Override + public GspVoExtendInfo getVoExtendInfo(String id) { + GspVoExtendInfo voExtendInfo = idGspVoExtendInfo.get(id); + if(voExtendInfo == null) { + RpcClient client = SpringBeanUtils.getBean(RpcClient.class); + LinkedHashMap params = new LinkedHashMap<>(); + params.put("id", id); + voExtendInfo = (GspVoExtendInfo) client.invoke(GspVoExtendInfo.class, + getMethodString("getVoExtendInfo"), Lcm_SU, params, null); + if(voExtendInfo != null) { + idGspVoExtendInfo.put(id, voExtendInfo); + } + } + return voExtendInfo; + } + + @Override + public GspVoExtendInfo getVoExtendInfoByConfigId(String configId) { + if(configIdGspVoExtendInfo.containsKey(configId)){ + return configIdGspVoExtendInfo.get(configId); + } + try{ + RpcClient client= SpringBeanUtils.getBean(RpcClient.class); + LinkedHashMap params = new LinkedHashMap<>(); + params.put("configId", configId); + GspVoExtendInfo voExtendInfo=(GspVoExtendInfo)client.invoke(GspVoExtendInfo.class, + getMethodString("getVoExtendInfoByConfigId"),Lcm_SU,params,null); + putConfigIdGspVoExtendInfo(configId,voExtendInfo); + return voExtendInfo; + }catch (IncorrectResultSizeDataAccessException e){ + throw new CAFRuntimeException("", "", + "ConfigId为"+configId+"的vo有多个,请检查", null, ExceptionLevel.Error); + } + + } + + @Override + public List getVoExtendInfos() { + RpcClient client= SpringBeanUtils.getBean(RpcClient.class); + LinkedHashMap params = new LinkedHashMap<>(); + Type type=getViewModelListType(); + List voExtendInfos=(List) client.invoke(type, + getMethodString("getVoExtendInfos"),Lcm_SU,params,null); + return voExtendInfos; + } + + @Override + public void saveGspVoExtendInfos(List infos) { + infos.stream().forEach(item -> { + if(item.getId() == null ||"".equals(item.getId())) + throw new RuntimeException("id不允许为空"); + }); + RpcClient client= SpringBeanUtils.getBean(RpcClient.class); + LinkedHashMap params = new LinkedHashMap<>(); + params.put("infos",infos); + client.invoke(Void.class, + getMethodString("saveGspVoExtendInfos"),Lcm_SU,params,null); + } + + @Override + public void deleteVoExtendInfo(String id) { + if (!extendInfoRepository.existsById(id)) { + return; + } + RpcClient client= SpringBeanUtils.getBean(RpcClient.class); + LinkedHashMap params = new LinkedHashMap<>(); + params.put("id",id); + client.invoke(Void.class, + getMethodString("deleteVoExtendInfo"),Lcm_SU,params,null); + if(id != null) + idGspVoExtendInfo.remove(id); + if (id == null || configIdGspVoExtendInfo == null + || configIdGspVoExtendInfo.values().size() == 0) { + return; + } + String deleteConfigId = null; + for (GspVoExtendInfo item : configIdGspVoExtendInfo.values()) { + if (item.getConfigId().equals(id) || item.getId().equals(id)) { + deleteConfigId = item.getConfigId(); + break; + } + } + if (deleteConfigId != null) { + configIdGspVoExtendInfo.remove(deleteConfigId); + } + } + + @Override + public List getVoId(String beId) { + if(beId==null || "".equals(beId)){ + + throw new RuntimeException("beId不能为空!"); + } + RpcClient client= SpringBeanUtils.getBean(RpcClient.class); + LinkedHashMap params = new LinkedHashMap<>(); + params.put("beId",beId); + Type type=getViewModelListType(); + List voExtendInfos=(List) client.invoke(type, + getMethodString("getVoId"),Lcm_SU,params,null); + return voExtendInfos; + } + + private boolean putConfigIdGspVoExtendInfo(String id, GspVoExtendInfo info){ + if(id == null || info == null) + return false; + configIdGspVoExtendInfo.put(id,info); + return true; + } + private String getMethodString(String methodName) { + return VIEWWMODEL_SERVICE + "." + methodName; + } + + private Type getViewModelListType() { + Type type = new Type<>(List.class, GspVoExtendInfo.class); + return type; + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/extendinfo/config/GspVoExtendInfoConfig.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/extendinfo/config/GspVoExtendInfoConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..4686bc490bb6677618498e99ae5019575eab9136 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/extendinfo/config/GspVoExtendInfoConfig.java @@ -0,0 +1,38 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.extendinfo.config; + +import com.inspur.edp.formserver.viewmodel.extendinfo.api.GspVoExtendInfoService; +import com.inspur.edp.formserver.vmmanager.extendinfo.GspVoExtendInfoServiceImpl; +import com.inspur.edp.formserver.vmmanager.extendinfo.repository.GspVoExtendInfoRepository; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; + +@Configuration +@EntityScan({"com.inspur.edp.formserver.viewmodel.extendinfo.entity"}) +@EnableJpaRepositories({"com.inspur.edp.formserver.vmmanager.extendinfo.repository"}) +public class GspVoExtendInfoConfig { + @Bean + public GspVoExtendInfoService getVoExtendInfoService(GspVoExtendInfoRepository voRepository) { + return new GspVoExtendInfoServiceImpl(voRepository); + } + + +} + diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/extendinfo/repository/GspVoExtendInfoRepository.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/extendinfo/repository/GspVoExtendInfoRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..e1e705cffe8a4b8d7f0413fe80f1063c5c71a89a --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/extendinfo/repository/GspVoExtendInfoRepository.java @@ -0,0 +1,38 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.extendinfo.repository; + +import com.inspur.edp.formserver.viewmodel.extendinfo.entity.GspVoExtendInfo; +import io.iec.edp.caf.data.orm.DataRepository; + +import java.util.List; + +public interface GspVoExtendInfoRepository extends DataRepository { + + /** + * 根据configId获取某条BE扩展信息 + * @param configId + * @return + */ + GspVoExtendInfo getVoExtendInfoByConfigId(String configId); + + List getVoExtendInfosByConfigId(String configId); + + List getVoExtendInfoByBeSourceId(String beId); + +} + diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/JavaBaseActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/JavaBaseActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..f0938c559f68f0cd7d18ffd927b68bcc1714eea2 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/JavaBaseActionGenerator.java @@ -0,0 +1,509 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.IViewModelParameter; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelParameter; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelVoidReturnValue; +import com.inspur.edp.formserver.viewmodel.common.VMCollectionParameterType; +import com.inspur.edp.formserver.viewmodel.common.VMParameterType; +import com.inspur.edp.formserver.viewmodel.util.ViewModelUtils; +import com.inspur.edp.formserver.vmmanager.exception.VmManagerException; +import io.iec.edp.caf.commons.exception.ExceptionLevel; + +import java.util.Map; + +public abstract class JavaBaseActionGenerator extends JavaBaseCompCodeGenerator +{ + + ///#region 字段和属性 + private MappedCdpAction vmAction; + private java.util.ArrayList usingList; + private java.util.LinkedHashMap parameters; + private java.util.ArrayList allGenericParamType; + protected String ReturnTypeName = "VoidActionResult"; + protected String errorCode = "VmBaseActionGenerator"; + + ///#endregion + ///#region 构造与初始化 + public JavaBaseActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.vmAction = vmAction; + if (this.vmAction == null) + { + throw new RuntimeException("选择了错误的代码模板生成器"); + } + this.usingList = new java.util.ArrayList(); + this.allGenericParamType = new java.util.ArrayList(); + + + ///#region ReturnValue + if (this.vmAction.getReturnValue() != null && !(this.vmAction.getReturnValue() instanceof ViewModelVoidReturnValue)) + { + getParameterUsing(this.vmAction.getReturnValue()); + ReturnTypeName = GetParameterTypeName(this.vmAction.getReturnValue()); + } + + ///#endregion + + + ///#region Parameters + if (this.vmAction.getParameterCollection() == null || this.vmAction.getParameterCollection().getCount() < 1) + { + return; + } + parameters = new java.util.LinkedHashMap(); + + for (Object actionParameter : this.vmAction.getParameterCollection()) + { + getParameterUsing((IViewModelParameter) actionParameter); + if (parameters.containsKey(((IViewModelParameter) actionParameter).getParamCode())) + { + throw new RuntimeException("存在重复的参数【" + ((IViewModelParameter) actionParameter).getParamCode() + "】"); + } + parameters.put(((IViewModelParameter) actionParameter).getParamCode(), buildParameterInfo( + (IViewModelParameter) actionParameter)); + + + } + + ///#endregion + } + private void getParameterUsing(IViewModelParameter param) + { + if (param.getCollectionParameterType() == VMCollectionParameterType.List) + { + addUsing(JavaCompCodeNames.ArrayListNameSpace); + } + if (param.getParameterType() == VMParameterType.DateTime) + { + addUsing(JavaCompCodeNames.DateNameSpace); + } + if (param.getParameterType() == VMParameterType.Decimal) + { + addUsing(JavaCompCodeNames.BigDecimalNameSpace); + } + if (param.getParameterType() == VMParameterType.Custom) + { + addUsing(param.getClassName()); + } + } + private String GetParameterTypeName(IViewModelParameter param) + { + switch (param.getCollectionParameterType()) + { + case None: + return GetNoneCollectionParaTypeName(param); + case List: + return GetListParaTypeName(param); + case Array: + return GetArrayParaTypeName(param); + default: + throw new VmManagerException("",errorCode, "无效的Vo操作参数集合类型{param.CollectionParameterType.ToString()}",null, + ExceptionLevel.Error,false); + } + } + + private String GetArrayParaTypeName(IViewModelParameter param) + { + switch (param.getParameterType()) + { + case String: + return "String[]"; + case Boolean: + return "Boolean[]"; + case DateTime: + return "Date[]"; + case Decimal: + return "BigDecimal[]"; + case Double: + return "Double[]"; + case Int32: + return "Integer[]"; + case Object: + return "Object[]"; + default: + handleJavaInfo(param); + if (ViewModelUtils.checkNull(param.getClassName())) + { + throw new RuntimeException("当前参数【" + param.getParamName() + "】的JavaClassName属性为空,请完善。"); + } + int index = param.getClassName().lastIndexOf("."); + return param.getClassName().substring(index + 1, param.getClassName().length())+"[]"; +// if (!IsGeneric(param)) +// { +// return param.getJavaClassName().substring(index + 1, index + 1 + param.getJavaClassName().length() - index - 1) + "[]"; +// } +// else +// { +// String result = GetGenericExpress(allGenericParamType.get(0)); +// allGenericParamType.clear(); +// return result + "[]"; +// } + + } + + } + + private String GetListParaTypeName(IViewModelParameter param) + { + switch (param.getParameterType()) + { + case String: + return "ArrayList"; + case Boolean: + return "ArrayList"; + case DateTime: + return "ArrayList"; + case Decimal: + return "ArrayList"; + case Double: + return "ArrayList"; + case Int32: + return "ArrayList"; + case Object: + return "ArrayList"; + default: + handleJavaInfo(param); + if (ViewModelUtils.checkNull(param.getClassName())) + { + throw new RuntimeException("当前参数【" + param.getParamName() + "】的JavaClassName属性为空,请完善。"); + } + int index = param.getClassName().lastIndexOf("."); + return "ArrayList<"+param.getClassName().substring(index + 1, param.getClassName().length())+">"; +// if (!IsGeneric(param)) +// { +// return "ArrayList<" + param.getJavaClassName().substring(index + 1, index + 1 + param.getJavaClassName().length() - index - 1) + ">"; +// } +// else +// { +// String result = GetGenericExpress(allGenericParamType.get(0)); +// allGenericParamType.clear(); +// return "ArrayList<" + result + ">"; +// } + + } + } + + private String GetNoneCollectionParaTypeName(IViewModelParameter param) + { + switch (param.getParameterType()) + { + case String: + return "String"; + case Boolean: + return "Boolean"; + case DateTime: + return "Date"; + case Decimal: + return "BigDecimal"; + case Double: + return "Double"; + case Int32: + return "Integer"; + case Object: + return "Object"; + default: + handleJavaInfo(param); + if (ViewModelUtils.checkNull(param.getClassName())) + { + throw new RuntimeException("当前参数【" + param.getParamName() + "】的JavaClassName属性为空,请完善。"); + } + int index = param.getClassName().lastIndexOf("."); + return param.getClassName().substring(index + 1, param.getClassName().length()); +// if (!IsGeneric(param)) +// { +// return param.getJavaClassName().substring(index + 1, index + 1 + param.getJavaClassName().length() - index - 1); +// } +// else +// { +// String result = GetGenericExpress(allGenericParamType.get(0)); +// allGenericParamType.clear(); +// return result; +// } + + } + } + + private String getParameterMode(IViewModelParameter param) + { + switch (param.getMode()) + { + case OUT: + return "out"; + //TODO 待确认 + case INOUT: + return "ref"; + default: + return ""; + } + + } + private ParameterInfo buildParameterInfo(IViewModelParameter param) + { + String typeName = GetParameterTypeName(param); + String paramMode = getParameterMode(param); + ParameterInfo tempVar = new ParameterInfo(); + tempVar.setParamName(param.getParamCode()); + tempVar.setParamType(typeName); + tempVar.setParameterMode(paramMode); + return tempVar; + } + + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.FormServerSpiNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.BefApiActionNameSpace)); + + //参数列表 + if (usingList == null || usingList.size() < 1) + { + return; + } + for (String usingName : usingList) + { + result.append(getUsingStr(usingName)); + } + } + + protected boolean hasCustomConstructorParams() + { + if (parameters == null || parameters.size() < 1) + { + return false; + } + return true; + } + protected void generateConstructorParams(StringBuilder result) + { + for (int i = 0; i < parameters.size(); i++) + { + + String parameterKey = (String) parameters.keySet().toArray()[i]; + + ParameterInfo parameterValue = parameters.get(parameterKey); + + if (!ViewModelUtils.checkNull(parameterValue.getParameterMode())) + { + result.append(parameterValue.getParameterMode()).append(" "); + } + result.append(parameterValue.getParamType()).append(" ").append(parameterKey); + if (i < parameters.size() - 1) + { + result.append(","); + } + else + { + result.append(""); + } + } + } + + protected void generateConstructorContent(StringBuilder result) + { + if (parameters == null || parameters.size() < 1) + { + return; + } + + for (Map.Entry parameter : parameters.entrySet()) + { + result.append(getNewLine()).append(getIndentationStr()).append(getIndentationStr()).append("this.").append(parameter.getKey()).append(" = ").append(parameter.getKey()).append(";"); + + } + } + + ///#endregion + + + ///#region Field + @Override + protected void generateField(StringBuilder result) + { + + if (parameters == null || parameters.size() < 1) + { + return; + } + + for (Map.Entry parameter : parameters.entrySet()) + { + result.append(getNewLine()).append(getIndentationStr()).append(JavaCompCodeNames.KeywordPrivate).append(" ").append(parameter.getValue().getParamType()).append(" ").append(parameter.getKey()).append(";"); + } + } + + ///#endregion +//TODO 后续确认 + private boolean IsGeneric(IViewModelParameter param) + { + return false; +// try +// { +// +// var psn = Assembly.Load(param.getAssembly()); +// Class type = psn.GetType(param.getJavaClassName()); +// return type.IsGenericType; +// } +// catch (Exception e) +// { +// //如果libs目录下如果未加载到程序集,默认其不是泛型类型 +// return false; +// } + } + //TODO 后续确认 + //把泛型参数类型涉及到的所有类型得到并存在List集合中 + private void getAllGenericParameterType(Class type) + { +// if (allGenericParamType.isEmpty()) +// { +// allGenericParamType.add(type); +// } +// Class[] allType = type.getGenericArguments(); +// +// for (Class t : allType) +// { +// allGenericParamType.add(t); +// if (t.IsGenericType) +// { +// getAllGenericParameterType(t); +// } +// } + + } + + private void addUsing(String usingName) + { + if (ViewModelUtils.checkNull(usingName)) + { + throw new RuntimeException("命名空间不能为空"); + } + if (!ViewModelUtils.checkNull(usingName) && !usingList.contains(usingName)) + { + usingList.add(usingName); + } + } + + private String getClassName(Class type) + { + if (Integer.class == type) + { + return "Integer"; + } + if (String.class == type) + { + return "String"; + } + if (Boolean.class == type) + { + return "Boolean"; + } + if (java.util.Date.class == type) + { + return "Date"; + } + if (java.math.BigDecimal.class == type) + { + return "BigDecimal"; + } + if (Double.class == type) + { + return "BigDecimal"; + } + if (Object.class == type) + { + return "Object"; + } + + String fullClassName = type.toString().split("[`]", -1)[0]; + String[] content = fullClassName.split("[.]", -1); + return content[content.length - 1]; + + + } +//TODO 后续确认 + private String getGenericExpress(Class type) + { +// if (!type.IsGenericType) +// { +// return getClassName(type); +// } +// else +// { +// Class[] array = type.GenericTypeArguments; +// int count = array.length; +// String info = "{0}"; +// for (int i = 1; i < count; i++) +// { +// info = info + "," + "{" + i + "}"; +// } +// info = getClassName(type) + "<" + info + ">"; +// String[] arrayStr = new String[count]; +// for (int i = 0; i < count; i++) +// { +// arrayStr[i] = getGenericExpress(array[i]); +// } +// info = String.format(info, arrayStr); +// +// return info; +// } + return ""; + } + + private void handleJavaInfo(IViewModelParameter para) + { + if (ViewModelUtils.checkNull(para.getClassName()) && !ViewModelUtils.checkNull(((ViewModelParameter)para).getDotnetClassName())) + { + //仅平台提供包,自动转Inspur.Gsp为com.inspur.edp + if (((ViewModelParameter)para).getDotnetClassName().startsWith("Inspur.Gsp.")) + { + para.setClassName(handleJavaClassName(((ViewModelParameter)para).getDotnetClassName())); + } + } + } + + private String handleJavaClassName(String source) + { + if (ViewModelUtils.checkNull(source)) + { + return source; + } + String result = ""; + String[] list = source.split("[.]", -1); + for (int i = 0; i < list.length; i++) + { + String lowerCase = list[i].toLowerCase(); + if (i == 0 && lowerCase.equals("inspur")) + { + result = String.format("%1$s%2$s",result, "com.inspur"); + continue; + } + if (i == list.length - 1) + { + // 类名不需要转换为小写 + result = String.format("%1$s%2$s%3$s",result, ".", list[i]); + continue; + } + result = String.format("%1$s%2$s%3$s",result, ".", lowerCase); + } + return result; + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/JavaBaseCompCodeGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/JavaBaseCompCodeGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..30eeccf04161cb3b75c05f6f53e3bf35fd7ab58f --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/JavaBaseCompCodeGenerator.java @@ -0,0 +1,309 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode; + + +import com.inspur.edp.bef.component.base.GspComponent; +import com.inspur.edp.bef.component.detailcmpentity.vm.VMComponent; +import com.inspur.edp.cef.variable.dtgenerator.vardtmGenerate.javageneratecmpcode.JavaIBaseCompCodeGen; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.service.VmManagerService; +import com.inspur.edp.formserver.vmmanager.util.CheckInfoUtil; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.service.MetadataProjectService; +import com.inspur.edp.lcm.metadata.api.service.RefCommonService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +public abstract class JavaBaseCompCodeGenerator implements JavaIBaseCompCodeGen +{ + + ///#region 字段 + + //private string compName; + protected String nameSpace; + private String entityNamespace; + private GspViewModel vm; + private String apiNamespace; + private String path; + + public String getPath(){ + return path; + } + public void setPath(String value){ + path=value; + } + public boolean getBelongElement() { + return belongElement; + } + + public void setBelongElement(boolean belongElement) { + this.belongElement = belongElement; + } + + private boolean belongElement; + private RefCommonService lcmDtService; + protected boolean isInterpretation; + + + protected MappedCdpAction VMAction; + + protected RefCommonService getLcmDtService(){ + if(lcmDtService==null) + lcmDtService=SpringBeanUtils.getBean(RefCommonService.class); + return lcmDtService; + } + + protected VMComponent getVmComponent() + { + GspMetadata metadata = getLcmDtService().getRefMetadata(VMAction.getComponentEntityId()); + if (metadata == null||!(metadata.getContent() instanceof VMComponent)) + { + throw new RuntimeException("没有生成构件,无法继续生成代码"); + } + return (VMComponent)((metadata.getContent() instanceof VMComponent) ? metadata.getContent() : null); + } + + + //protected string EntityClassName; + //protected string ChildCode { get; private set; } + + protected abstract String getBaseClassName(); + + ///#region 构造函数 + protected JavaBaseCompCodeGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + this.vm = vm; + setPath(path); + this.VMAction = vmAction; + this.nameSpace = VmManagerService.getComponentJavaClassName(VMAction.getComponentEntityId()); + this.apiNamespace = vm.getApiNamespace().getDefaultNamespace(); + this.entityNamespace = vm.getMainObject().getGeneratedEntityClassInfo().getClassNamespace(); + //解析型标志 + this.isInterpretation = SpringBeanUtils.getBean(MetadataProjectService.class).isInterpretation(path); + } + + + private String convertJavaImportPackage(String readPropertyValue_string) + { + String[] strArray = readPropertyValue_string.split("[.]", -1); + String str = "com."; + int i; + + for (i = 0; i < strArray.length - 1; i++) + { + str += strArray[i].toLowerCase() + "."; + } + str += strArray[i].toLowerCase(); + return str; + } + + protected abstract String getNameSpaceSuffix(); + + public String getCompName() { + if (CheckInfoUtil.checkNull(VMAction.getComponentEntityId())) { + return getInitializeCompName(); + } + + String fullClassName = ""; + + GspComponent component = getVmComponent(); + fullClassName = component.getMethod().getDotnetClassName(); + + String[] sections = fullClassName.split("[.]", -1); + + return sections[sections.length - 1]; + } + + /** + 是否执行generateCommon() + + */ + public boolean getIsCommonGenerate(){ + return true; + } + + public String generateCommon() + { + StringBuilder result = new StringBuilder(); + ///#region Package + nameSpace = nameSpace.substring(0,nameSpace.lastIndexOf(".")); + result.append(JavaCompCodeNames.KeywordPackage).append(" ").append(nameSpace).append(";").append(getNewLine()); + ///#endregion + generateUsing(result); + result.append("\n"); + result.append(JavaCompCodeNames.KeywordPublic).append(" ").append(JavaCompCodeNames.KeywordClass).append(" ").append(getCompName()).append(" extends ").append(getBaseClassName()); + result.append(" {").append(getNewLine()); + ///#endregion + generateField(result); + result.append("\n"); + generateConstructor(result); + + executeCode(result); + generateExtendMethod(result); + ///#region ClassEnd + result.append("}").append(getNewLine()); + return result.toString(); + } + + private String getPackageName(String componentEntityId) + { + GspMetadata metadata = getLcmDtService().getRefMetadata(componentEntityId); + if (metadata.getContent() instanceof VMComponent) + { + return ((VMComponent)metadata.getContent()).getVmMethod().getClassName(); + } + else + { + throw new RuntimeException("没有找到构件,构件ID为:" + componentEntityId); + } + } + + private void generateUsing(StringBuilder result) + { + if (!this.isInterpretation) + { + //此处不调用convertJavaImportPackage()方法,entityNamespace已经java包名 + entityNamespace = String.format("%1$s%2$s",entityNamespace, ".*"); + apiNamespace = String.format("%1$s%2$s",apiNamespace, ".*"); + result.append(getUsingStr(entityNamespace)); + result.append(getUsingStr(apiNamespace)); + } + + if (getBelongElement()) + { + result.append("import com.inspur.edp.web.help.api.LookupQueryParam;").append(getNewLine()); + } + generateExtendUsing(result); + } + protected abstract void generateExtendUsing(StringBuilder result); + protected abstract void generateConstructor(StringBuilder result); + protected void generateExtendMethod(StringBuilder result) + { + + } + protected void generateField(StringBuilder result) + { + + } + + ///#endregion + + + ///#region 通用方法 + + protected String getUsingStr(String value) + { + return new StringBuilder(JavaCompCodeNames.KeywordImport).append(" ").append(value).append(";").append(getNewLine()).toString(); + } + + + //不加.* + protected String getUsingStrNoStar(String value) + { + return new StringBuilder(JavaCompCodeNames.KeywordImport).append(" ").append(value).append(";").append(getNewLine()).toString(); + } + + protected String getNewLine() + { + return "\r\n"; + } + + protected String getIndentationStr() + { + return "\t"; + //return " "; + } + + protected String getDoubleIndentationStr() + { + return "\t\t"; + } + + protected void executeCode(StringBuilder result) + { + if (!getBelongElement()) + { + result.append(getIndentationStr()).append("@").append(JavaCompCodeNames.KeywordOverride).append(getNewLine()); + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(JavaCompCodeNames.KeywordVoid).append(" ").append("execute()").append(" ").append("{").append(getNewLine()); + result.append(getIndentationStr()).append("}").append(getNewLine()); + } + if (getBelongElement()) + { + generateBeforeHelpMethod(result); + } + } + + ///#endregion + + + ///#region 生成Execute方法 + + public String generateExecute() //这个应该用不到了 + { + StringBuilder result = new StringBuilder(); + if (getBelongElement()) + { + result.append(getNewLine()).append(JavaCompCodeNames.HelpUsing); + result.append("\n"); + } + + + result.append(JavaCompCodeNames.KeywordPackage).append(" ").append(getNewLine()).append(nameSpace); + result.append(getNewLine()).append("{"); + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append("partial").append(" ").append(JavaCompCodeNames.KeywordClass).append(" ").append(getCompName()); + result.append(getIndentationStr()).append("{").append(getNewLine()); + + if (!getBelongElement()) + { + result.append(getDoubleIndentationStr()).append(JavaCompCodeNames.KeywordProtected).append(" ").append(JavaCompCodeNames.KeywordOverride).append(" ").append(JavaCompCodeNames.KeywordVoid).append(" ").append("Execute()").append(getNewLine()); + result.append(getDoubleIndentationStr()).append("{").append(getNewLine()); + result.append(getDoubleIndentationStr()).append("}").append(getNewLine()); + } + if(getBelongElement()) + { + generateBeforeHelpMethod(result); + } + + result.append(getIndentationStr()).append("}").append(getNewLine()); + + result.append("}").append(getNewLine()); + + ///#endregion + + return result.toString(); + } + + ///#endregion + + protected abstract String getInitializeCompName(); + + private void generateBeforeHelpMethod(StringBuilder result) + { + result.append(getIndentationStr()).append("@").append(JavaCompCodeNames.KeywordOverride).append(getNewLine()); + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(getNewLine()); + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordVoid).append(" ").append("beforeHelp(LookupQueryParam lookupQueryParam)").append(" ").append("{").append(getNewLine()); + result.append(getIndentationStr()).append("}").append(getNewLine()); + } + + private void generateAfterHelpMethod(StringBuilder result) + { + result.append(getDoubleIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(JavaCompCodeNames.KeywordOverride).append(" ").append(JavaCompCodeNames.KeywordVoid).append(" ").append("AfterHelp() "); + result.append(getDoubleIndentationStr()).append("{").append(getNewLine()); + result.append(getDoubleIndentationStr()).append("}").append(getNewLine()); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/JavaCodeFileGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/JavaCodeFileGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..6de3672768829f89cd3c63dbc541d294bf8dcbbf --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/JavaCodeFileGenerator.java @@ -0,0 +1,573 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode; + + +import com.inspur.edp.cef.designtime.api.collection.CommonDtmCollection; +import com.inspur.edp.cef.designtime.api.operation.CommonDetermination; +import com.inspur.edp.cef.variable.dtgenerator.vardtmGenerate.javageneratecmpcode.JavaCommonDeterminationGenerator; +import com.inspur.edp.cef.variable.dtgenerator.vardtmGenerate.javageneratecmpcode.JavaIBaseCompCodeGen; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelActionType; +import com.inspur.edp.formserver.viewmodel.common.InternalExtendActionUtil; +import com.inspur.edp.formserver.viewmodel.common.ValueHelpConfig; +import com.inspur.edp.formserver.viewmodel.dataextendinfo.VoDataExtendInfo; +import com.inspur.edp.formserver.viewmodel.util.ViewModelUtils; +import com.inspur.edp.formserver.vmmanager.createvmmetadata.ComponentGenUtil; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction.*; +import com.inspur.edp.formserver.vmmanager.service.VmManagerService; +import com.inspur.edp.lcm.fs.api.IFsService; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.entity.GspProject; +import com.inspur.edp.lcm.metadata.api.service.FileService; +import com.inspur.edp.lcm.metadata.api.service.MetadataProjectService; +import com.inspur.edp.lcm.metadata.api.service.MetadataService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +import java.util.ArrayList; + +public class JavaCodeFileGenerator { + + private String relativePath; + private GspViewModel viewModel; + private String compAssemblyName; + private FileService fsService; + IFsService iFsService; + private static final String codeFileExtension = ".java"; + + + public JavaCodeFileGenerator(GspMetadata metadata) { + relativePath = metadata.getRelativePath(); + + GspProject metadataProj = SpringBeanUtils.getBean(MetadataService.class) + .getGspProjectInfo(relativePath); + viewModel = (GspViewModel) metadata.getContent(); + compAssemblyName = metadataProj.getProjectNameSpace(); + fsService = SpringBeanUtils.getBean(FileService.class); + iFsService = SpringBeanUtils.getBean(IFsService.class); + } + + public final void generate(ArrayList actionList) { + generateVMActions(actionList); + generateVariableDtms(actionList); + } + + + private boolean isGenCompCode(ArrayList actionList, String actionCode) { + return actionList.contains(actionCode); + } + + private void generateVMActions(ArrayList actionList) { + //var path = prepareDir(viewModel.Code, voFileName); + String path = null; + + for (ViewModelAction action : viewModel.getActions()) { + if (action.getType() == ViewModelActionType.VMAction && isGenCompCode(actionList, + action.getCode())) { + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + VMCodeGenerate(viewModel, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), path, false); + } + } + + for (ValueHelpConfig valueHelpConfig : viewModel.getValueHelpConfigs()) { + if (valueHelpConfig.getHelpExtend() != null && valueHelpConfig.getHelpExtend().getBeforeHelp() != null) { + + for (ViewModelAction action : valueHelpConfig.getHelpExtend().getBeforeHelp()) { + if (isGenCompCode(actionList, action.getCode())) { + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + VMCodeGenerate(viewModel, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), path, true); + } + + } + } + } + //扩展操作 + VoDataExtendInfo extendInfo = viewModel.getDataExtendInfo(); + //创建BeforeCreateActions + + for (ViewModelAction action : extendInfo.getBeforeCreateActions()) { + if (isGenCompCode(actionList, action.getCode())) { + JavaBeforeRetrieveDefaultActionGenerator gen = new JavaBeforeRetrieveDefaultActionGenerator( + viewModel, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), + compAssemblyName, relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + //创建AfterCreateActions + + for (ViewModelAction action : extendInfo.getAfterCreateActions()) { + if (isGenCompCode(actionList, action.getCode())) { + JavaAfterRetrieveDefaultActionGenerator gen = new JavaAfterRetrieveDefaultActionGenerator( + viewModel, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), + compAssemblyName, relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + //创建CreateActions + + for (ViewModelAction action : extendInfo.getCreateActions()) { + + //if (!action.ID.Equals("52479451-8e22-4751-8684-80489ce5786b")) + if (!action.getID().equals(InternalExtendActionUtil.CreateActionId)) { + if(isGenCompCode(actionList,action.getCode())){ + JavaAbstractRetrieveDefaultActionGenerator gen = new JavaAbstractRetrieveDefaultActionGenerator( + viewModel, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), + compAssemblyName, relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + } + } + //创建BeforeModifyActions + + for (ViewModelAction action : extendInfo.getBeforeModifyActions()) { + if(isGenCompCode(actionList,action.getCode())){ + JavaBeforeModifyActionGenerator gen = new JavaBeforeModifyActionGenerator(viewModel, + (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, + relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + //创建AfterModifyActions + + for (ViewModelAction action : extendInfo.getAfterModifyActions()) { + if(isGenCompCode(actionList,action.getCode())){ + JavaAfterModifyActionGenerator gen = new JavaAfterModifyActionGenerator(viewModel, + (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, + relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + //创建ModifyActions + + for (ViewModelAction action : extendInfo.getModifyActions()) { + //if (!action.ID.Equals("47dd3752-72a3-4c56-81c0-ae8ccfe5eb98")) + if (!action.getID().equals(InternalExtendActionUtil.ModifyActionId)) { + if(isGenCompCode(actionList,action.getCode())){ + JavaAbstractModifyActionGenerator gen = new JavaAbstractModifyActionGenerator(viewModel, + (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), + compAssemblyName, relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + } + //创建ChangesetMappingActions + + for (ViewModelAction action : extendInfo.getChangesetMappingActions()) { + //if (!action.ID.Equals("5798f884-c222-47f4-8bbe-685c7013dee4")) + if (!action.getID().equals(InternalExtendActionUtil.ChangesetMappingActionId)) { + if(isGenCompCode(actionList,action.getCode())){ + JavaChangeMappingActionGenerator gen = new JavaChangeMappingActionGenerator(viewModel, + (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), + compAssemblyName, relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + } + //创建ChangesetReversalMappingActions + + for (ViewModelAction action : extendInfo.getChangesetReversalMappingActions()) { + if (!action.getID().equals(InternalExtendActionUtil.ChangesetReversalMappingActionId)) { + if(isGenCompCode(actionList,action.getCode())){ + JavaChangeReversalMappingActionGenerator gen = new JavaChangeReversalMappingActionGenerator( + viewModel, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), + compAssemblyName, relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + } + //创建AfterQueryActions + + for (ViewModelAction action : extendInfo.getAfterQueryActions()) { + if(isGenCompCode(actionList,action.getCode())){ + JavaAfterQueryActionGenerator gen = new JavaAfterQueryActionGenerator(viewModel, + (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, + relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + //创建BeforeQueryActions + + for (ViewModelAction action : extendInfo.getBeforeQueryActions()) { + if(isGenCompCode(actionList,action.getCode())){ + JavaBeforeQueryActionGenerator gen = new JavaBeforeQueryActionGenerator(viewModel, + (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, + relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + + for (ViewModelAction action : extendInfo.getQueryActions()) { + + if (!action.getID().equals(InternalExtendActionUtil.QueryActionId)) { + if(isGenCompCode(actionList,action.getCode())){ + JavaQueryActionGenerator gen = new JavaQueryActionGenerator(viewModel, + (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), + compAssemblyName, relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + } + + for (ViewModelAction action : extendInfo.getDataMappingActions()) { + if (!action.getID().equals(InternalExtendActionUtil.DataMappingActionId)) { + if(isGenCompCode(actionList,action.getCode())){ + JavaDataMappingActionsGenerator gen = new JavaDataMappingActionsGenerator(viewModel, + (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), + compAssemblyName, relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + } + + for (ViewModelAction action : extendInfo.getDataReversalMappingActions()) { + if (!action.getID().equals(InternalExtendActionUtil.DataReversalMappingActionId)) { + if(isGenCompCode(actionList,action.getCode())){ + JavaDataReversalMappingActionsGenerator gen = new JavaDataReversalMappingActionsGenerator( + viewModel, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), + compAssemblyName, relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + } + + for (ViewModelAction action : extendInfo.getBeforeRetrieveActions()) { + if(isGenCompCode(actionList,action.getCode())){ + JavaBeforeRetrieveActionsGenerator gen = new JavaBeforeRetrieveActionsGenerator(viewModel, + (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, + relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + + for (ViewModelAction action : extendInfo.getAfterRetrieveActions()) { + if(isGenCompCode(actionList,action.getCode())){ + JavaAfterRetrieveActionGenerator gen = new JavaAfterRetrieveActionGenerator(viewModel, + (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, + relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + + for (ViewModelAction action : extendInfo.getRetrieveActions()) { + if (!action.getID().equals(InternalExtendActionUtil.RetrieveActionId)) { + if(isGenCompCode(actionList,action.getCode())){ + JavaRetrieveActionGenerator gen = new JavaRetrieveActionGenerator(viewModel, + (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), + compAssemblyName, relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + } + + for (ViewModelAction action : extendInfo.getBeforeMultiDeleteActions()) { + if(isGenCompCode(actionList,action.getCode())){ + JavaBeforeMultiDeleteActionGenerator gen = new JavaBeforeMultiDeleteActionGenerator(viewModel, + (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, + relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + + for (ViewModelAction action : extendInfo.getMultiDeleteActions()) { + if (!action.getID().equals(InternalExtendActionUtil.MultiDeleteActionId)) { + if(isGenCompCode(actionList,action.getCode())){ + JavaAbstractMultiDeleteActionGenerator gen = new JavaAbstractMultiDeleteActionGenerator( + viewModel, (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), + compAssemblyName, relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + } + + for (ViewModelAction action : extendInfo.getAfterMultiDeleteActions()) { + if(isGenCompCode(actionList,action.getCode())){ + JavaAfterMultiDeleteActionGenerator gen = new JavaAfterMultiDeleteActionGenerator(viewModel, + (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, + relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + + for (ViewModelAction action : extendInfo.getBeforeDeleteActions()) { + if(isGenCompCode(actionList,action.getCode())){ + JavaBeforeDeleteActionGenerator gen = new JavaBeforeDeleteActionGenerator(viewModel, + (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, + relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + + for (ViewModelAction action : extendInfo.getDeleteActions()) { + if (!action.getID().equals(InternalExtendActionUtil.DeleteActionId)) { + if(isGenCompCode(actionList,action.getCode())){ + JavaAbstractDeleteActionGenerator gen = new JavaAbstractDeleteActionGenerator(viewModel, + (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), + compAssemblyName, relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + } + + for (ViewModelAction action : extendInfo.getAfterDeleteActions()) { + if(isGenCompCode(actionList,action.getCode())){ + JavaAfterDeleteActionGenerator gen = new JavaAfterDeleteActionGenerator(viewModel, + (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, + relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + + for (ViewModelAction action : extendInfo.getBeforeSaveActions()) { + if(isGenCompCode(actionList,action.getCode())){ + JavaBeforeSaveActionGenerator gen = new JavaBeforeSaveActionGenerator(viewModel, + (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, + relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + + for (ViewModelAction action : extendInfo.getAfterSaveActions()) { + if(isGenCompCode(actionList,action.getCode())){ + JavaAfterSaveActionGenerator gen = new JavaAfterSaveActionGenerator(viewModel, + (MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), compAssemblyName, + relativePath); + gen.setBelongElement(false); + if (path == null) { + path = prepareDir(((MappedCdpAction) action).getComponentEntityId()); + } + extendActionCodeGen((MappedCdpAction) ((action instanceof MappedCdpAction) ? action : null), gen, path, false); + } + + } + } + + /** + * 变量联动计算构件代码生成 + */ + private void generateVariableDtms(ArrayList actionList) { + if (viewModel.getVariables() == null) { + return; + } + //var path = prepareDir(viewModel.Code,voVarFileName); + javaGenerateVariableDtms(viewModel.getVariables().getDtmAfterCreate(), actionList); + javaGenerateVariableDtms(viewModel.getVariables().getDtmAfterModify(), actionList); + javaGenerateVariableDtms(viewModel.getVariables().getDtmBeforeSave(), actionList); + } + + private void javaGenerateVariableDtms(CommonDtmCollection dtms, ArrayList actionList) { + String dirPath = null; + + for (CommonDetermination dtm : dtms) { + if (dirPath == null) { + dirPath = prepareDir(dtm.getComponentId()); + } + if (!dtm.getIsRef() && dtm.getIsGenerateComponent() && actionList.contains(dtm.getCode())) { + javaGenerateVariableDtm(dtm, dirPath); + } + } + } + + private void javaGenerateVariableDtm(CommonDetermination dtm, String dirPath) { + JavaCommonDeterminationGenerator gen = new JavaCommonDeterminationGenerator(viewModel, dtm, + compAssemblyName, relativePath); + generateSplitFile(gen, dirPath, false); + } + + private String getMetaProjName(GspProject projInfo) { + String boProjName = projInfo.getMetadataProjectName().toLowerCase(); + return boProjName.substring(0, 0) + boProjName.substring(0 + boProjName.indexOf('-') + 1); + } + + private String prepareDir(String componentEntityId) { + MetadataProjectService service = SpringBeanUtils.getBean(MetadataProjectService.class); + + String compModulePath = service.getJavaCompProjectPath(relativePath); + + String className = VmManagerService.getComponentJavaClassName(componentEntityId); + //构件中获取javaClassName,需要截取掉一级ClassName拼接相对路径 + + String path = String.format("%1$s%2$s%3$s", compModulePath, ViewModelUtils.getSeparator(), + (className.substring(0, className.lastIndexOf(".")).replace(".", ViewModelUtils.getSeparator()))); + if (!fsService.isDirectoryExist(path)) { + fsService.createDirectory(path); + } + return path; + } + + + //ORIGINAL LINE: private void extendActionCodeGen(MappedCdpAction vmAction, JavaIBaseCompCodeGen codeGen, string dirPath, bool belongElement = false) + private void extendActionCodeGen(MappedCdpAction vmAction, JavaIBaseCompCodeGen codeGen, + String dirPath, boolean belongElement) { + if (vmAction.getIsGenerateComponent()) { + generateSplitFile(codeGen, dirPath, false); + } + } + + private void VMCodeGenerate(GspViewModel viewModel, MappedCdpAction vmAction, String dirPath, + boolean belongElement) { + if (vmAction.getIsGenerateComponent()) { + JavaMappedCdpActionGenerator gen = new JavaMappedCdpActionGenerator(viewModel, vmAction, + compAssemblyName, relativePath); + gen.setBelongElement(belongElement); + generateSplitFile(gen, dirPath, belongElement); + } + } + + // belongElement 默认为false, + private void generateSplitFile(JavaIBaseCompCodeGen codeGen, String dirPath, + boolean belongElement) { + belongElement = true; //已存在文件时,true:不覆盖;false:覆盖 + String compName = codeGen.getCompName(); + + String originalFilePath = ViewModelUtils + .getCombinePath(relativePath, ComponentGenUtil.ComponentDir, compName + codeFileExtension); + + String filePathCommon = fsService.getCombinePath(dirPath, compName + codeFileExtension); + if (fsService.isFileExist(filePathCommon) && belongElement) { + return; + } + if (fsService.isFileExist(originalFilePath)) { + return; + } + + if (codeGen.getIsCommonGenerate()) { + iFsService.createFile(filePathCommon, codeGen.generateCommon()); + } else { + iFsService.createFile(filePathCommon, codeGen.generateExecute()); + } + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/JavaCompCodeNames.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/JavaCompCodeNames.java new file mode 100644 index 0000000000000000000000000000000000000000..d457bd471f6ab68ae8a352d9248e42abc1ef3603 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/JavaCompCodeNames.java @@ -0,0 +1,99 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode; + +public final class JavaCompCodeNames +{ + public static String VMActionNameSpaceSuffix = "VO"; + public static String VOActionNameSpaceSuffix = "voactions"; + public static String VMActionClassNameSuffix = "VOAction"; + public static String VMControllerName = "VOController"; + + public static String AbstractFSActionClassName = "AbstractFSAction"; + + public static String KeywordImport = "import"; + public static String KeywordPackage = "package"; + public static String KeywordPublic = "public"; + public static String KeywordProtected = "protected"; + public static String KeywordInternal = "internal"; + public static String KeywordPrivate = "private"; + public static String KeywordClass = "class"; + public static String KeywordOverride = "Override"; + public static String KeywordVoid = "void"; + public static String KeywordQueryContext = "QueryContext"; + public static String KeyWordRetrieveContext = "RetrieveContext"; + public static String KeyWordDataMapperContext = "DataMapperContext"; + public static String Keywordcontext = "context"; + public static String KeywordSuper = "super"; + + public static String VMActionEntityNameSpace = "CardSOBizAction"; + + public static String FormServerSpiNameSpace = "com.inspur.edp.bff.spi.*"; + public static String BefApiActionNameSpace = "com.inspur.edp.bef.api.action.*"; + public static String VMQueryContextNameSpace = "com.inspur.edp.bff.api.manager.context.QueryContext"; + public static String VMAfterQueryNameSpace = "com.inspur.edp.bff.spi.action.query.AfterQueryAction"; + public static String VMBeforeQueryNameSpace = "com.inspur.edp.bff.spi.action.query.BeforeQueryAction"; + public static String VMQueryNameSpace = "com.inspur.edp.bff.spi.action.query.AbstractQueryAction"; + public static String DataMapperContextNameSpace = "com.inspur.edp.bff.api.manager.context.DataMapperContext"; + public static String DataMappingActionsNameSpace = "com.inspur.edp.bff.spi.action.datamapping.DataMappingAction"; + public static String DataReversalMappingActionNameSpace = "com.inspur.edp.bff.spi.action.datamapping.DataReversalMappingAction"; + public static String RetrieveContextNameSpace = "com.inspur.edp.bff.api.manager.context.RetrieveContext"; + public static String BeforeRetrieveActionNameSpace = "com.inspur.edp.bff.spi.action.retrieve.BeforeRetrieveAction"; + public static String AfterRetrieveActionNameSpace = "com.inspur.edp.bff.spi.action.retrieve.AfterRetrieveAction"; + public static String AbstractRetrieveActionNameSpace = "com.inspur.edp.bff.spi.action.retrieve.AbstractRetrieveAction"; + + public static String DeleteContextNameSpace = "com.inspur.edp.bff.api.manager.context.DeleteContext"; + public static String BeforeDeleteActionNameSpace = "com.inspur.edp.bff.spi.action.delete.BeforeDeleteAction"; + public static String AbstractDeleteActionNameSpace = "com.inspur.edp.bff.spi.action.delete.AbstractDeleteAction"; + public static String AfterDeleteActionNameSpace = "com.inspur.edp.bff.spi.action.delete.AfterDeleteAction"; + + public static String BeforeMultiDeleteActionNameSpace = "com.inspur.edp.bff.spi.action.multidelete.BeforeMultiDeleteAction"; + public static String AbstractMultiDeleteActionNameSpace = "com.inspur.edp.bff.spi.action.multidelete.AbstractMultiDeleteAction"; + public static String AfterMultiDeleteActionNameSpace = "com.inspur.edp.bff.spi.action.multidelete.AfterMultiDeleteAction"; + + public static String SaveContextNameSpace = "com.inspur.edp.bff.api.manager.context.SaveContext"; + public static String BeforeSaveActionNameSpace = "com.inspur.edp.bff.spi.action.save.BeforeSaveAction"; + public static String AfterSaveActionNameSpace = "com.inspur.edp.bff.spi.action.save.AfterSaveAction"; + + + + public static String BeforeRetrieveDefaultActionNameSpace = "com.inspur.edp.bff.spi.action.retrievedefault.BeforeRetrieveDefaultAction"; + public static String RetrieveDefaultContextNameSpace = "com.inspur.edp.bff.api.manager.context.RetrieveDefaultContext"; + public static String AfterRetrieveDefaultActionNameSpace = "com.inspur.edp.bff.spi.action.retrievedefault.AfterRetrieveDefaultAction"; + public static String AbstractRetrieveDefaultActionNameSpace = "com.inspur.edp.bff.spi.action.retrievedefault.AbstractRetrieveDefaultAction"; + public static String AbstractModifyActionNameSpace = "com.inspur.edp.bff.spi.action.modify.AbstractModifyAction"; + public static String BeforeModifyActionNameSpace = "com.inspur.edp.bff.spi.action.modify.BeforeModifyAction"; + public static String AfterModifyActionNameSpace = "com.inspur.edp.bff.spi.action.modify.AfterModifyAction"; + public static String ModifyContextNameSpace = "com.inspur.edp.bff.api.manager.context.ModifyContext"; + public static String ChangeMapperContextSpace = "com.inspur.edp.bff.api.manager.context.ChangeMapperContext"; + public static String ChangeMappingActionNameSpace = "com.inspur.edp.bff.spi.action.changemapping.ChangeMappingAction"; + public static String ChangeReversalMappingActionNameSpace = "com.inspur.edp.bff.spi.action.changemapping.ChangeReversalMappingAction"; + + + public static String DateNameSpace = "java.util.Date"; + public static String BigDecimalNameSpace = "java.math.BigDecimal"; + public static String ArrayListNameSpace = "java.util.ArrayList"; + + //public static string VoidActionResult = "com.inspur.edp.bef.api.action.VoidActionResult"; + //public static string AbstractFSAction = "com.inspur.edp.bff.spi.AbstractFSAction"; + //public static string AbstractFSAction = "com.inspur.edp.bff.spi"; + + + public static String HelpUsing = " using Inspur.Gsp.Web.LookupManager.Api;"; + + public static String VMCmpExtendName = ".vmCmp"; +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/JavaMappedCdpActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/JavaMappedCdpActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..75040f5360263e275b337874d1f0c8b51506296d --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/JavaMappedCdpActionGenerator.java @@ -0,0 +1,134 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode; + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; + +public class JavaMappedCdpActionGenerator extends JavaBaseActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + if(getBelongElement()) + { + return "AbstractHelpAction"; + } + else + { + return "AbstractFSAction<" + ReturnTypeName + ">"; + } + } + + + ///#endregion + + + ///#region 构造函数 + public JavaMappedCdpActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.getBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.getBEMgrInterfaceClassName(vm); + } + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("("); + + if (hasCustomConstructorParams()) + { + generateConstructorParams(result); + result.append(") "); + } + else + { + result.append(") "); + } + + result.append("{").append(getNewLine()); + generateConstructorContent(result); + result.append(getNewLine()).append(getIndentationStr()).append("}").append(getNewLine()); + + //generateExecute(result); + + } + + protected final void generateExecute(StringBuilder result) + { + result.append(getIndentationStr()).append("@").append(JavaCompCodeNames.KeywordOverride).append(getNewLine()); + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(JavaCompCodeNames.KeywordVoid).append(" ").append("execute()").append(" ").append("{").append(getNewLine()); + result.append(getIndentationStr()).append("}").append(getNewLine()); + } + + @Override + protected void generateExtendMethod(StringBuilder result) + { + //generategetEntityMethod(result); + //generategetMgrMethod(result); + } + + //private void generategetEntityMethod(StringBuilder result) + //{ + // result.append(getDoubleIndentationStr()).append(JavaCompCodeNames.KeywordPrivate).append(" ") + // .append(allInterfaceName).append(getNewLine()).append(" getEntity(string dataId) "); + // result.append(getDoubleIndentationStr()).append(getNewLine()).append("{"); + + // result.append(getDoubleIndentationStr()).append(getIndentationStr()) + // .append("return base.BEManagerContext.getEntity(dataId) as ").append(allInterfaceName).append(getNewLine()).append(" ;"); + + // result.append(getDoubleIndentationStr()).append(getNewLine()).append("}"); + //} + + //private void generategetMgrMethod(StringBuilder result) + //{ + // result.append(getDoubleIndentationStr()).append(JavaCompCodeNames.KeywordPrivate).append(" ") + // .append(beMgrInterfaceName).append(getNewLine()).append(" getMgr() "); + // result.append(getDoubleIndentationStr()).append(getNewLine()).append("{"); + + // result.append(getDoubleIndentationStr()).append(getIndentationStr()) + // .append("return base.BEManagerContext.BEManager as ").append(beMgrInterfaceName).append(getNewLine()).append(" ;"); + + // result.append(getDoubleIndentationStr()).append(getNewLine()).append("}"); + //} + + ///#endregion + + @Override + public String getInitializeCompName() + { + return String.format("%1$s%2$s",this.VMAction, "VO"); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/ParameterInfo.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/ParameterInfo.java new file mode 100644 index 0000000000000000000000000000000000000000..65582b1fa739b2a18c1a4fb8e994ac131cfa0f94 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/ParameterInfo.java @@ -0,0 +1,48 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode; + +public class ParameterInfo +{ + private String privateParamName; + public final String getParamName() + { + return privateParamName; + } + public final void setParamName(String value) + { + privateParamName = value; + } + private String privateParamType; + public final String getParamType() + { + return privateParamType; + } + public final void setParamType(String value) + { + privateParamType = value; + } + private String privateParameterMode; + public final String getParameterMode() + { + return privateParameterMode; + } + public final void setParameterMode(String value) + { + privateParameterMode = value; + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/genutils/EntityGetChildDatasMethodGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/genutils/EntityGetChildDatasMethodGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..0cc5e402d60df17a0d7429f1c85772e92c892714 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/genutils/EntityGetChildDatasMethodGenerator.java @@ -0,0 +1,49 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.genutils; + +import com.inspur.edp.cef.designtime.core.utilsgenerator.*; +import com.inspur.edp.cef.entity.entity.IEntityData; +import com.inspur.edp.cef.entity.entity.IEntityDataCollection; + +public class EntityGetChildDatasMethodGenerator { + private final String childNodeCode; + private final JavaClassInfo classInfo; + private MethodInfo methodInfo; + + public EntityGetChildDatasMethodGenerator(String code, JavaClassInfo classInfo) { + + this.childNodeCode = code; + this.classInfo = classInfo; + this.methodInfo=new MethodInfo(); + } + + public void generate() { + methodInfo.setMethodName("get" + childNodeCode + "s"); + methodInfo.setReturnType(new TypeRefInfo(IEntityDataCollection.class)); + methodInfo.getAccessModifiers().add(JavaAccessModifier.Public); + methodInfo.getAccessModifiers().add(JavaAccessModifier.Static); + methodInfo.getParameters().add(new ParameterInfo("data", new TypeRefInfo(IEntityData.class))); + generateMethodBodies(); + classInfo.addMethodInfo(methodInfo); + } + + private void generateMethodBodies() { + classInfo.getImportInfos().addImportPackage("com.inspur.edp.cef.entity.entity.EntityDataUtils"); + methodInfo.getMethodBodies().add("return EntityDataUtils.getChildDatas(data,\""+childNodeCode+"\");"); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/genutils/VoCommonUtilsGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/genutils/VoCommonUtilsGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..c68e72a07d1ace5dd93c80f8533ab263e8f7fa81 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/genutils/VoCommonUtilsGenerator.java @@ -0,0 +1,59 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.genutils; + +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.entity.ProcessMode; +import com.inspur.edp.lcm.metadata.api.service.MetadataProjectService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +import java.io.File; + +public class VoCommonUtilsGenerator { + private final GspViewModel viewModel; + private final GspMetadata metadata; + private String relativePath; + private String compAssemblyName; + + public VoCommonUtilsGenerator(GspViewModel viewModel, GspMetadata metadata) + { + this.relativePath = metadata.getRelativePath(); + this.compAssemblyName = viewModel.getGeneratedConfigID().toLowerCase()+".common"; + this.viewModel = viewModel; + this.metadata = metadata; + } + + public void generateCommonUtils() + { + MetadataProjectService service = SpringBeanUtils.getBean(MetadataProjectService.class); + ProcessMode mode = service.getProcessMode(relativePath); + if(mode!=ProcessMode.interpretation) + return; + String compModulePath = service.getJavaCompProjectPath(relativePath); + File folder =new File(compModulePath); + if(folder.exists()==false) + return; + compAssemblyName=compAssemblyName.replace(".vo.","."); + for (IGspCommonObject entityObject:viewModel.getAllObjectList()) + { + new VoEntityUtilsGenerator((GspViewObject) entityObject,compAssemblyName,relativePath).generate(); + } + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/genutils/VoEntityUtilsGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/genutils/VoEntityUtilsGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..e7ad829663e5c88154dfe604f391dfbded6f7e2c --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/genutils/VoEntityUtilsGenerator.java @@ -0,0 +1,57 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.genutils; + +import com.inspur.edp.cef.designtime.core.utilsgenerator.DataTypeUtilsGenerator; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.formserver.viewmodel.GspViewObject; + +public class VoEntityUtilsGenerator extends DataTypeUtilsGenerator { + private final GspViewObject viewObject; + private final String packageName; + + public VoEntityUtilsGenerator(GspViewObject viewObject, String packageName, String basePath) { + super(viewObject, basePath); + this.viewObject = viewObject; + this.packageName = packageName; + } + + @Override + protected String getClassName() { + return viewObject.getCode()+"Utils"; + } + + @Override + protected String getClassPackage() { + return packageName; + } + + @Override + protected void generateExtendInfos() { + super.generateExtendInfos(); + generateGetChildObjectDatas(); + } + + private void generateGetChildObjectDatas() { + if(viewObject.getContainChildObjects()==null||viewObject.getContainChildObjects().size()==0) + return; + for(IGspCommonObject childObject:viewObject.getContainChildObjects()) + { + new EntityGetChildDatasMethodGenerator(childObject.getCode(),getClassInfo()).generate(); + } + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAbstractDeleteActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAbstractDeleteActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..1338fa18b1358b837f640e55f2e0e8db0b79f0a5 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAbstractDeleteActionGenerator.java @@ -0,0 +1,87 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaAbstractDeleteActionGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + return "AbstractDeleteAction"; + } + + + ///#endregion + + + ///#region 构造函数 + public JavaAbstractDeleteActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(DeleteContext context)").append(" ").append("{").append(getNewLine()); + + result.append(getIndentationStr()).append(getIndentationStr()).append("super(context)").append(";").append(getNewLine()); + result.append(getIndentationStr()).append("}").append(getNewLine()); + + + //将部分类合并,加入GenerateExecute方法 + // GenerateExecute(result); + } + + ///#endregion + + ///#region Using + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.AbstractDeleteActionNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.DeleteContextNameSpace)); + } + + ///#endregion + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAbstractModifyActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAbstractModifyActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..a22124f63aee3c9711901196960da7a4ccdfc696 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAbstractModifyActionGenerator.java @@ -0,0 +1,88 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaAbstractModifyActionGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + return "AbstractModifyAction"; + } + + + ///#endregion + + + ///#region 构造函数 + public JavaAbstractModifyActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(ModifyContext context)").append(" ").append("{").append(getNewLine()); + + result.append(getIndentationStr()).append(getIndentationStr()).append("super(context)").append(";").append(getNewLine()); + result.append(getIndentationStr()).append("}").append(getNewLine()); + + + //将部分类合并,加入GenerateExecute方法 + // GenerateExecute(result); + + } + + ///#endregion + + ///#region Using + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.AbstractModifyActionNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.ModifyContextNameSpace)); + } + + ///#endregion + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAbstractMultiDeleteActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAbstractMultiDeleteActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..b405d649e75701607e6d03f07cb882f77668e5b3 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAbstractMultiDeleteActionGenerator.java @@ -0,0 +1,87 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaAbstractMultiDeleteActionGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + return "AbstractMultiDeleteAction"; + } + + + ///#endregion + + + ///#region 构造函数 + public JavaAbstractMultiDeleteActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(DeleteContext context)").append(" ").append("{").append(getNewLine()); + + result.append(getIndentationStr()).append(getIndentationStr()).append("super(context)").append(";").append(getNewLine()); + result.append(getIndentationStr()).append("}").append(getNewLine()); + + + //将部分类合并,加入GenerateExecute方法 + //GenerateExecute(result); + } + + ///#endregion + + ///#region Using + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.AbstractMultiDeleteActionNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.DeleteContextNameSpace)); + } + + ///#endregion + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAbstractRetrieveDefaultActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAbstractRetrieveDefaultActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..f28cc667c6270040e20604c3b1418fcca51552c0 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAbstractRetrieveDefaultActionGenerator.java @@ -0,0 +1,88 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaAbstractRetrieveDefaultActionGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + return "AbstractRetrieveDefaultAction"; + } + + + ///#endregion + + + ///#region 构造函数 + public JavaAbstractRetrieveDefaultActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(RetrieveDefaultContext context)").append(" ").append("{").append(getNewLine()); + + result.append(getIndentationStr()).append(getIndentationStr()).append("super(context)").append(";").append(getNewLine()); + result.append(getIndentationStr()).append("}").append(getNewLine()); + + + //将部分类合并,加入GenerateExecute方法 + //GenerateExecute(result); + + } + + ///#endregion + + ///#region Using + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.AbstractRetrieveDefaultActionNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.RetrieveDefaultContextNameSpace)); + } + + ///#endregion + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAfterDeleteActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAfterDeleteActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..3d0996c74cd43c87afaf4717bf4f835b1eea44e2 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAfterDeleteActionGenerator.java @@ -0,0 +1,87 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaAfterDeleteActionGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + return "AfterDeleteAction"; + } + + + ///#endregion + + + ///#region 构造函数 + public JavaAfterDeleteActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(DeleteContext context)").append(" ").append("{").append(getNewLine()); + + result.append(getIndentationStr()).append(getIndentationStr()).append("super(context)").append(";").append(getNewLine()); + result.append(getIndentationStr()).append("}").append(getNewLine()); + + + //将部分类合并,加入GenerateExecute方法 + //GenerateExecute(result); + } + + ///#endregion + + ///#region Using + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.AfterDeleteActionNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.DeleteContextNameSpace)); + } + + ///#endregion + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAfterModifyActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAfterModifyActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..ad195c1c751b26ae258d6b8591c20409164c5f1d --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAfterModifyActionGenerator.java @@ -0,0 +1,87 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaAfterModifyActionGenerator extends JavaMappedCdpActionGenerator + { + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + return "AfterModifyAction"; + } + + + ///#endregion + + + ///#region 构造函数 + public JavaAfterModifyActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(ModifyContext context)").append(" ").append("{").append(getNewLine()); + + result.append(getIndentationStr()).append(getIndentationStr()).append("super(context)").append(";").append(getNewLine()); + result.append(getIndentationStr()).append("}").append(getNewLine()); + + + //将部分类合并,加入GenerateExecute方法 + //GenerateExecute(result); + } + + ///#endregion + + ///#region Using + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.AfterModifyActionNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.ModifyContextNameSpace)); + } + + ///#endregion + + } diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAfterMultiDeleteActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAfterMultiDeleteActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..d59c21c7a34d2c6758f63dda5e0d7621db3e9bb3 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAfterMultiDeleteActionGenerator.java @@ -0,0 +1,87 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaAfterMultiDeleteActionGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + return "AfterMultiDeleteAction"; + } + + + ///#endregion + + + ///#region 构造函数 + public JavaAfterMultiDeleteActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(DeleteContext context)").append(" ").append("{").append(getNewLine()); + + result.append(getIndentationStr()).append(getIndentationStr()).append("super(context)").append(";").append(getNewLine()); + result.append(getIndentationStr()).append("}").append(getNewLine()); + + + //将部分类合并,加入GenerateExecute方法 + //GenerateExecute(result); + } + + ///#endregion + + ///#region Using + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.AfterMultiDeleteActionNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.DeleteContextNameSpace)); + } + + ///#endregion + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAfterQueryActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAfterQueryActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..4419d82e784e2102581b35ea20670237449a30f9 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAfterQueryActionGenerator.java @@ -0,0 +1,195 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaAfterQueryActionGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + if(getBelongElement()) + { + return "AfterQueryAction"; + } + else + //return "AfterQueryAction<" + ReturnTypeName + ">"; + { + return "AfterQueryAction"; + } + } + + + ///#endregion + + ///#region import + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.VMQueryContextNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.VMAfterQueryNameSpace)); + //if (BaseClassName.Contains("Date")) + //{ + // result.append(getUsingStrNoStar(JavaCompCodeNames.DateNameSpace)); + //} + //if (BaseClassName.Contains("BigDecimal")) + //{ + // result.append(getUsingStrNoStar(JavaCompCodeNames.BigDecimalNameSpace)); + //} + + //参数列表 + //if (usingList == null || usingList.Count < 1) + // return; + + //foreach (var usingName in usingList) + //{ + // result.append(getUsingStr(usingName)); + //} + } + + ///#endregion + + + ///#region 构造函数 + public JavaAfterQueryActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(").append(JavaCompCodeNames.KeywordQueryContext).append(" ").append(JavaCompCodeNames.Keywordcontext); + + //result.append(getDoubleIndentationStr()).append(getIndentationStr()).append("IBEManagerContext managerContext"); + + if (hasCustomConstructorParams()) + { + result.append("\n"); + generateConstructorParams(result); + result.append(getDoubleIndentationStr()).append(getIndentationStr()).append(")").append("{").append(getNewLine()); + } + else + { + result.append(")").append("{").append(getNewLine()); + } + + result.append(getDoubleIndentationStr()).append(JavaCompCodeNames.KeywordSuper).append("(").append(JavaCompCodeNames.Keywordcontext).append(")").append(";").append(getNewLine()); + + //result.append(getDoubleIndentationStr()).append(getIndentationStr()).append(getNewLine()).append(") : base(managerContext)"); + + //result.append(getDoubleIndentationStr()).append(getNewLine()).append("{"); + generateConstructorContent(result); + result.append(getIndentationStr()).append("}"); + result.append("\n"); + + //GenerateExecute(result); + + } + + ///#endregion + + + ///#region GenerateExtendMethod + //protected override void GenerateExtendMethod(StringBuilder result) + //{ + // //GenerateGetEntityMethod(result); + // //GenerateGetMgrMethod(result); + //} + + //{ + // if (param.CollectionParameterType == VMCollectionParameterType.List) + // AddUsing("System.Collections.Generic"); + // if (param.ParameterType == VMParameterType.DateTime) + // AddUsing("System"); + // if (param.ParameterType == VMParameterType.Custom) + // { + + // if (!IsGeneric(param)) + // { + // var usingName = param.ClassName.Substring(0, param.ClassName.LastIndexOf(".", StringComparison.Ordinal)); + // AddUsing(usingName); + // } + // else + // { + // var psn = Assembly.Load(param.Assembly); + // Type type = psn.GetType(param.ClassName); + // GetAllGenericParameterType(type); + // foreach (Type s in allGenericParamType) + // { + // AddUsing(s.ToString().Split('`')[0].Substring(0, s.ToString().Split('`')[0].LastIndexOf(".", StringComparison.Ordinal))); + // } + // } + // } + // } + + //private void GenerateGetEntityMethod(StringBuilder result) + //{ + // result.append(getDoubleIndentationStr()).append(CompCodeNames.KeywordPrivate).append(" ") + // .append(allInterfaceName).append(getNewLine()).append(" GetEntity(string dataId) "); + // result.append(getDoubleIndentationStr()).append(getNewLine()).append("{"); + + // result.append(getDoubleIndentationStr()).append(getIndentationStr()) + // .append("return base.BEManagerContext.GetEntity(dataId) as ").append(allInterfaceName).append(getNewLine()).append(" ;"); + + // result.append(getDoubleIndentationStr()).append(getNewLine()).append("}"); + //} + + //private void GenerateGetMgrMethod(StringBuilder result) + //{ + // result.append(getDoubleIndentationStr()).append(CompCodeNames.KeywordPrivate).append(" ") + // .append(beMgrInterfaceName).append(getNewLine()).append(" GetMgr() "); + // result.append(getDoubleIndentationStr()).append(getNewLine()).append("{"); + + // result.append(getDoubleIndentationStr()).append(getIndentationStr()) + // .append("return base.BEManagerContext.BEManager as ").append(beMgrInterfaceName).append(getNewLine()).append(" ;"); + + // result.append(getDoubleIndentationStr()).append(getNewLine()).append("}"); + //} + + ///#endregion + + @Override + public String getInitializeCompName() + { + return String.format("%1$s%2$s",VMAction.getCode(), "VO"); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAfterRetrieveActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAfterRetrieveActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..1231bf76ca90c8b11ee10c9624764ca099f2ad9b --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAfterRetrieveActionGenerator.java @@ -0,0 +1,94 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaAfterRetrieveActionGenerator extends JavaMappedCdpActionGenerator { + + private MappedCdpAction action; + + //private String allInterfaceName; + //private String beMgrInterfaceName; + protected String getBaseClassName(){ + { + + if(getBelongElement()) + return "AfterRetrieveAction"; + else + //return "AfterQueryAction<" + ReturnTypeName + ">"; + return "AfterRetrieveAction"; + } + } + + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.RetrieveContextNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.AfterRetrieveActionNameSpace)); + + } + + public JavaAfterRetrieveActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + + } + public String getNameSpaceSuffix(){ + + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ") + .append(getCompName()).append("(").append(JavaCompCodeNames.KeyWordRetrieveContext).append(" ").append(JavaCompCodeNames.Keywordcontext); + + //result.append(getDoubleIndentationStr()).append(getIndentationStr()).append("IBEManagerContext managerContext"); + + if (hasCustomConstructorParams()) + { + result.append(getNewLine()); + generateConstructorParams(result); + result.append(getDoubleIndentationStr()).append(getIndentationStr()).append("{").append(")").append(getNewLine()); + } + else + { + result.append(")").append("{").append(getNewLine()); + } + + result.append(getDoubleIndentationStr()).append(JavaCompCodeNames.KeywordSuper).append("(").append(JavaCompCodeNames.Keywordcontext).append(")").append(";").append(getNewLine()); + + //result.append(getDoubleIndentationStr()).append(getIndentationStr()).append(getNewLine()).append(") : base(managerContext)"); + + //result.append(getDoubleIndentationStr()).append(getNewLine()).append("{"); + generateConstructorContent(result); + result.append(getIndentationStr()).append("}"); + result.append(getNewLine()); + + // GenerateExecute(result); + + } + + public String getInitializeCompName() + { + return String.format("%1$s%2$s",VMAction.getCode(), "VO"); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAfterRetrieveDefaultActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAfterRetrieveDefaultActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..e9cde46d113c93082393a33547cf03eb8d2417f9 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAfterRetrieveDefaultActionGenerator.java @@ -0,0 +1,86 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaAfterRetrieveDefaultActionGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + return "AfterRetrieveDefaultAction"; + } + + + ///#endregion + + + ///#region 构造函数 + public JavaAfterRetrieveDefaultActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(RetrieveDefaultContext context)").append(" ").append("{").append(getNewLine()); + + result.append(getIndentationStr()).append(getIndentationStr()).append("super(context)").append(";").append(getNewLine()); + result.append(getIndentationStr()).append("}").append(getNewLine()); + + + //将部分类合并,加入GenerateExecute方法 + //GenerateExecute(result); + } + + ///#endregion + + ///#region Using + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.AfterRetrieveDefaultActionNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.RetrieveDefaultContextNameSpace)); + } + + ///#endregion +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAfterSaveActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAfterSaveActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..ddaa1ca0d6f716d81a7c0487d9fc999d397fe55b --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaAfterSaveActionGenerator.java @@ -0,0 +1,87 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaAfterSaveActionGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + return "AfterSaveAction"; + } + + + ///#endregion + + + ///#region 构造函数 + public JavaAfterSaveActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(SaveContext context)").append(" ").append("{").append(getNewLine()); + + result.append(getIndentationStr()).append(getIndentationStr()).append("super(context)").append(";").append(getNewLine()); + result.append(getIndentationStr()).append("}").append(getNewLine()); + + + //将部分类合并,加入GenerateExecute方法 + //GenerateExecute(result); + } + + ///#endregion + + ///#region Using + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.AfterSaveActionNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.SaveContextNameSpace)); + } + + ///#endregion + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaBeforeDeleteActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaBeforeDeleteActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..f8948d94cb7b117dc1d578d9f8c1c8dbca741ceb --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaBeforeDeleteActionGenerator.java @@ -0,0 +1,87 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaBeforeDeleteActionGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + return "BeforeDeleteAction"; + } + + + ///#endregion + + + ///#region 构造函数 + public JavaBeforeDeleteActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(DeleteContext context)").append(" ").append("{").append(getNewLine()); + + result.append(getIndentationStr()).append(getIndentationStr()).append("super(context)").append(";").append(getNewLine()); + result.append(getIndentationStr()).append("}").append(getNewLine()); + + + //将部分类合并,加入GenerateExecute方法 + // GenerateExecute(result); + } + + ///#endregion + + ///#region Using + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.BeforeDeleteActionNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.DeleteContextNameSpace)); + } + + ///#endregion + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaBeforeModifyActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaBeforeModifyActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..40f33f5b166ab67cf109ef9f753f0b57149297b6 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaBeforeModifyActionGenerator.java @@ -0,0 +1,87 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaBeforeModifyActionGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + return "BeforeModifyAction"; + } + + + ///#endregion + + + ///#region 构造函数 + public JavaBeforeModifyActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(ModifyContext context)").append(" ").append("{").append(getNewLine()); + + result.append(getIndentationStr()).append(getIndentationStr()).append("super(context)").append(";").append(getNewLine()); + result.append(getIndentationStr()).append("}").append(getNewLine()); + + + //将部分类合并,加入GenerateExecute方法 + // GenerateExecute(result); + } + + ///#endregion + + ///#region Using + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.BeforeModifyActionNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.ModifyContextNameSpace)); + } + + ///#endregion + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaBeforeMultiDeleteActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaBeforeMultiDeleteActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..e45829daefd47c26438c5b8a030e1627f6a6da32 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaBeforeMultiDeleteActionGenerator.java @@ -0,0 +1,87 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaBeforeMultiDeleteActionGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + return "BeforeMultiDeleteAction"; + } + + + ///#endregion + + + ///#region 构造函数 + public JavaBeforeMultiDeleteActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(DeleteContext context)").append(" ").append("{").append(getNewLine()); + + result.append(getIndentationStr()).append(getIndentationStr()).append("super(context)").append(";").append(getNewLine()); + result.append(getIndentationStr()).append("}").append(getNewLine()); + + + //将部分类合并,加入GenerateExecute方法 + //GenerateExecute(result); + } + + ///#endregion + + ///#region Using + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.BeforeMultiDeleteActionNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.DeleteContextNameSpace)); + } + + ///#endregion + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaBeforeQueryActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaBeforeQueryActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..9fa4e04d1af5032efdf5aa515d99c5dc50914d43 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaBeforeQueryActionGenerator.java @@ -0,0 +1,193 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaBeforeQueryActionGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + if(getBelongElement()) + { + return "BeforeQueryAction"; + } + else + //return "AfterQueryAction<" + ReturnTypeName + ">"; + { + return "BeforeQueryAction"; + } + } + + + ///#endregion + + ///#region import + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.VMQueryContextNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.VMBeforeQueryNameSpace)); + //if (BaseClassName.Contains("Date")) + //{ + // result.append(getUsingStrNoStar(JavaCompCodeNames.DateNameSpace)); + //} + //if (BaseClassName.Contains("BigDecimal")) + //{ + // result.append(getUsingStrNoStar(JavaCompCodeNames.BigDecimalNameSpace)); + //} + + //参数列表 + //if (usingList == null || usingList.Count < 1) + // return; + + //foreach (var usingName in usingList) + //{ + // result.append(getUsingStr(usingName)); + //} + } + + ///#endregion + + + ///#region 构造函数 + public JavaBeforeQueryActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(").append(JavaCompCodeNames.KeywordQueryContext).append(" ").append(JavaCompCodeNames.Keywordcontext); + + //result.append(getDoubleIndentationStr()).append(getIndentationStr()).append("IBEManagerContext managerContext"); + + if (hasCustomConstructorParams()) + { + result.append("\n"); + generateConstructorParams(result); + result.append(getDoubleIndentationStr()).append(getIndentationStr()).append(")").append("{").append(getNewLine()); + } + else + { + result.append(")").append("{").append(getNewLine()); + } + + result.append(getDoubleIndentationStr()).append(JavaCompCodeNames.KeywordSuper).append("(").append(JavaCompCodeNames.Keywordcontext).append(")").append(";").append(getNewLine()); + + //result.append(getDoubleIndentationStr()).append(getIndentationStr()).append(getNewLine()).append(") : base(managerContext)"); + + //result.append(getDoubleIndentationStr()).append(getNewLine()).append("{"); + generateConstructorContent(result); + result.append(getIndentationStr()).append("}"); + result.append("\n"); + + //GenerateExecute(result); + + } + + ///#endregion + + ///#region GenerateExtendMethod + //protected override void GenerateExtendMethod(StringBuilder result) + //{ + // //GenerateGetEntityMethod(result); + // //GenerateGetMgrMethod(result); + //} + + //{ + // if (param.CollectionParameterType == VMCollectionParameterType.List) + // AddUsing("System.Collections.Generic"); + // if (param.ParameterType == VMParameterType.DateTime) + // AddUsing("System"); + // if (param.ParameterType == VMParameterType.Custom) + // { + + // if (!IsGeneric(param)) + // { + // var usingName = param.ClassName.Substring(0, param.ClassName.LastIndexOf(".", StringComparison.Ordinal)); + // AddUsing(usingName); + // } + // else + // { + // var psn = Assembly.Load(param.Assembly); + // Type type = psn.GetType(param.ClassName); + // GetAllGenericParameterType(type); + // foreach (Type s in allGenericParamType) + // { + // AddUsing(s.ToString().Split('`')[0].Substring(0, s.ToString().Split('`')[0].LastIndexOf(".", StringComparison.Ordinal))); + // } + // } + // } + // } + + //private void GenerateGetEntityMethod(StringBuilder result) + //{ + // result.append(getDoubleIndentationStr()).append(CompCodeNames.KeywordPrivate).append(" ") + // .append(allInterfaceName).append(getNewLine()).append(" GetEntity(string dataId) "); + // result.append(getDoubleIndentationStr()).append(getNewLine()).append("{"); + + // result.append(getDoubleIndentationStr()).append(getIndentationStr()) + // .append("return base.BEManagerContext.GetEntity(dataId) as ").append(allInterfaceName).append(getNewLine()).append(" ;"); + + // result.append(getDoubleIndentationStr()).append(getNewLine()).append("}"); + //} + + //private void GenerateGetMgrMethod(StringBuilder result) + //{ + // result.append(getDoubleIndentationStr()).append(CompCodeNames.KeywordPrivate).append(" ") + // .append(beMgrInterfaceName).append(getNewLine()).append(" GetMgr() "); + // result.append(getDoubleIndentationStr()).append(getNewLine()).append("{"); + + // result.append(getDoubleIndentationStr()).append(getIndentationStr()) + // .append("return base.BEManagerContext.BEManager as ").append(beMgrInterfaceName).append(getNewLine()).append(" ;"); + + // result.append(getDoubleIndentationStr()).append(getNewLine()).append("}"); + //} + ///#endregion + + @Override + public String getInitializeCompName() + { + return String.format("%1$s%2$s",VMAction.getCode(), "VO"); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaBeforeRetrieveActionsGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaBeforeRetrieveActionsGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..692317550a336fa508b175c2a17c517e08323a71 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaBeforeRetrieveActionsGenerator.java @@ -0,0 +1,193 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaBeforeRetrieveActionsGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + if(getBelongElement()) + { + return "BeforeRetrieveAction"; + } + else + //return "AfterQueryAction<" + ReturnTypeName + ">"; + { + return "BeforeRetrieveAction"; + } + } + + + ///#endregion + + ///#region import + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.RetrieveContextNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.BeforeRetrieveActionNameSpace)); + //if (BaseClassName.Contains("Date")) + //{ + // result.append(getUsingStrNoStar(JavaCompCodeNames.DateNameSpace)); + //} + //if (BaseClassName.Contains("BigDecimal")) + //{ + // result.append(getUsingStrNoStar(JavaCompCodeNames.BigDecimalNameSpace)); + //} + + //参数列表 + //if (usingList == null || usingList.Count < 1) + // return; + + //foreach (var usingName in usingList) + //{ + // result.append(getUsingStr(usingName)); + //} + } + + ///#endregion + + + ///#region 构造函数 + public JavaBeforeRetrieveActionsGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(").append(JavaCompCodeNames.KeyWordRetrieveContext).append(" ").append(JavaCompCodeNames.Keywordcontext); + + //result.append(getDoubleIndentationStr()).append(getIndentationStr()).append("IBEManagerContext managerContext"); + + if (hasCustomConstructorParams()) + { + result.append("\n"); + generateConstructorParams(result); + result.append(getDoubleIndentationStr()).append(getIndentationStr()).append("{").append(")").append(getNewLine()); + } + else + { + result.append(")").append("{").append(getNewLine()); + } + + result.append(getDoubleIndentationStr()).append(JavaCompCodeNames.KeywordSuper).append("(").append(JavaCompCodeNames.Keywordcontext).append(")").append(";").append(getNewLine()); + + //result.append(getDoubleIndentationStr()).append(getIndentationStr()).append(") : base(managerContext)"); + + //result.append(getDoubleIndentationStr()).append("{"); + generateConstructorContent(result); + result.append(getIndentationStr()).append("}"); + result.append("\n"); + + // GenerateExecute(result); + + } + + ///#endregion + + ///#region GenerateExtendMethod + //protected override void GenerateExtendMethod(StringBuilder result) + //{ + //GenerateGetEntityMethod(result); + //GenerateGetMgrMethod(result); + //} + + //{ + // if (param.CollectionParameterType == VMCollectionParameterType.List) + // AddUsing("System.Collections.Generic"); + // if (param.ParameterType == VMParameterType.DateTime) + // AddUsing("System"); + // if (param.ParameterType == VMParameterType.Custom) + // { + + // if (!IsGeneric(param)) + // { + // var usingName = param.ClassName.Substring(0, param.ClassName.LastIndexOf(".", StringComparison.Ordinal)); + // AddUsing(usingName); + // } + // else + // { + // var psn = Assembly.Load(param.Assembly); + // Type type = psn.GetType(param.ClassName); + // GetAllGenericParameterType(type); + // foreach (Type s in allGenericParamType) + // { + // AddUsing(s.ToString().Split('`')[0].Substring(0, s.ToString().Split('`')[0].LastIndexOf(".", StringComparison.Ordinal))); + // } + // } + // } + // } + + //private void GenerateGetEntityMethod(StringBuilder result) + //{ + // result.append(getDoubleIndentationStr()).append(CompCodeNames.KeywordPrivate).append(" ") + // .append(allInterfaceName).append(" GetEntity(string dataId) "); + // result.append(getDoubleIndentationStr()).append("{"); + + // result.append(getDoubleIndentationStr()).append(getIndentationStr()) + // .append("return base.BEManagerContext.GetEntity(dataId) as ").append(allInterfaceName).append(" ;"); + + // result.append(getDoubleIndentationStr()).append("}"); + //} + + //private void GenerateGetMgrMethod(StringBuilder result) + //{ + // result.append(getDoubleIndentationStr()).append(CompCodeNames.KeywordPrivate).append(" ") + // .append(beMgrInterfaceName).append(" GetMgr() "); + // result.append(getDoubleIndentationStr()).append("{"); + + // result.append(getDoubleIndentationStr()).append(getIndentationStr()) + // .append("return base.BEManagerContext.BEManager as ").append(beMgrInterfaceName).append(" ;"); + + // result.append(getDoubleIndentationStr()).append("}"); + //} + ///#endregion + + @Override + public String getInitializeCompName() + { + return String.format("%1$s%2$s",VMAction.getCode(), "VO"); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaBeforeRetrieveDefaultActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaBeforeRetrieveDefaultActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..49a9e0433ed31485cf79f6329936488b1a3cf6f4 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaBeforeRetrieveDefaultActionGenerator.java @@ -0,0 +1,91 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaBeforeRetrieveDefaultActionGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + return "BeforeRetrieveDefaultAction"; + } + + + ///#endregion + + + ///#region 构造函数 + public JavaBeforeRetrieveDefaultActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(RetrieveDefaultContext context)").append(" ").append("{").append(getNewLine()); + + result.append(getIndentationStr()).append(getIndentationStr()).append("super(context)").append(";").append(getNewLine()); + result.append(getIndentationStr()).append("}").append(getNewLine()); + + + //将部分类合并,加入GenerateExecute方法 + //GenerateExecute(result); + } + + ///#endregion + + ///#region Using + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.BeforeRetrieveDefaultActionNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.RetrieveDefaultContextNameSpace)); + } + + ///#endregion + + + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaBeforeSaveActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaBeforeSaveActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..74d8bec828b158ba807649d8bdb7bf80d21bbfd1 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaBeforeSaveActionGenerator.java @@ -0,0 +1,87 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaBeforeSaveActionGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + return "BeforeSaveAction"; + } + + + ///#endregion + + + ///#region 构造函数 + public JavaBeforeSaveActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(SaveContext context)").append(" ").append("{").append(getNewLine()); + + result.append(getIndentationStr()).append(getIndentationStr()).append("super(context)").append(";").append(getNewLine()); + result.append(getIndentationStr()).append("}").append(getNewLine()); + + + //将部分类合并,加入GenerateExecute方法 + // GenerateExecute(result); + } + + ///#endregion + + ///#region Using + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.BeforeSaveActionNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.SaveContextNameSpace)); + } + + ///#endregion + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaChangeMappingActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaChangeMappingActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..11e6f737def7d58adba81b48977d71dada3488f7 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaChangeMappingActionGenerator.java @@ -0,0 +1,90 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaChangeMappingActionGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + return "ChangeMappingAction"; + } + + + ///#endregion + + + ///#region 构造函数 + public JavaChangeMappingActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(ChangeMapperContext context)").append(" ").append("{").append(getNewLine()); + + result.append(getIndentationStr()).append(getIndentationStr()).append("super(context)").append(";").append(getNewLine()); + result.append(getIndentationStr()).append("}").append(getNewLine()); + + + //将部分类合并,加入GenerateExecute方法 + // GenerateExecute(result); + } + + + ///#endregion + + ///#region Using + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.ChangeMappingActionNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.ChangeMapperContextSpace)); + } + + ///#endregion +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaChangeReversalMappingActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaChangeReversalMappingActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..171953ae72b38322f8989235a1454bc9f55c5617 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaChangeReversalMappingActionGenerator.java @@ -0,0 +1,90 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaChangeReversalMappingActionGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + return "ChangeReversalMappingAction"; + } + + + ///#endregion + + + ///#region 构造函数 + public JavaChangeReversalMappingActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(ChangeMapperContext context)").append(" ").append("{").append(getNewLine()); + + result.append(getIndentationStr()).append(getIndentationStr()).append("super(context)").append(";").append(getNewLine()); + result.append(getIndentationStr()).append("}").append(getNewLine()); + + + //将部分类合并,加入GenerateExecute方法 + // GenerateExecute(result); + } + + + ///#endregion + + ///#region Using + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.ChangeReversalMappingActionNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.ChangeMapperContextSpace)); + } + + ///#endregion +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaDataMappingActionsGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaDataMappingActionsGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..f27d843f23afe18060c818797e0d1b3f9a5c65f4 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaDataMappingActionsGenerator.java @@ -0,0 +1,193 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaDataMappingActionsGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + if(getBelongElement()) + { + return "DataMappingAction"; + } + else + //return "AfterQueryAction<" + ReturnTypeName + ">"; + { + return "DataMappingAction"; + } + } + + + ///#endregion + + ///#region import + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.DataMapperContextNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.DataMappingActionsNameSpace)); + //if (BaseClassName.Contains("Date")) + //{ + // result.append(getUsingStrNoStar(JavaCompCodeNames.DateNameSpace)); + //} + //if (BaseClassName.Contains("BigDecimal")) + //{ + // result.append(getUsingStrNoStar(JavaCompCodeNames.BigDecimalNameSpace)); + //} + + //参数列表 + //if (usingList == null || usingList.Count < 1) + // return; + + //foreach (var usingName in usingList) + //{ + // result.append(getUsingStr(usingName)); + //} + } + + ///#endregion + + + ///#region 构造函数 + public JavaDataMappingActionsGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(").append(JavaCompCodeNames.KeyWordDataMapperContext).append(" ").append(JavaCompCodeNames.Keywordcontext); + + //result.append(getDoubleIndentationStr()).append(getIndentationStr()).append("IBEManagerContext managerContext"); + + if (hasCustomConstructorParams()) + { + result.append("\n"); + generateConstructorParams(result); + result.append(getDoubleIndentationStr()).append(getIndentationStr()).append(")").append("{").append(getNewLine()); + } + else + { + result.append(")").append("{").append(getNewLine()); + } + + result.append(getDoubleIndentationStr()).append(JavaCompCodeNames.KeywordSuper).append("(").append(JavaCompCodeNames.Keywordcontext).append(")").append(";").append(getNewLine()); + + //result.append(getDoubleIndentationStr()).append(getIndentationStr()).append(") : base(managerContext)"); + + //result.append(getDoubleIndentationStr()).append("{"); + generateConstructorContent(result); + result.append(getIndentationStr()).append("}"); + result.append("\n"); + + // GenerateExecute(result); + + } + + ///#endregion + + ///#region GenerateExtendMethod + //protected override void GenerateExtendMethod(StringBuilder result) + //{ + // //GenerateGetEntityMethod(result); + // //GenerateGetMgrMethod(result); + //} + + //{ + // if (param.CollectionParameterType == VMCollectionParameterType.List) + // AddUsing("System.Collections.Generic"); + // if (param.ParameterType == VMParameterType.DateTime) + // AddUsing("System"); + // if (param.ParameterType == VMParameterType.Custom) + // { + + // if (!IsGeneric(param)) + // { + // var usingName = param.ClassName.Substring(0, param.ClassName.LastIndexOf(".", StringComparison.Ordinal)); + // AddUsing(usingName); + // } + // else + // { + // var psn = Assembly.Load(param.Assembly); + // Type type = psn.GetType(param.ClassName); + // GetAllGenericParameterType(type); + // foreach (Type s in allGenericParamType) + // { + // AddUsing(s.ToString().Split('`')[0].Substring(0, s.ToString().Split('`')[0].LastIndexOf(".", StringComparison.Ordinal))); + // } + // } + // } + // } + + //private void GenerateGetEntityMethod(StringBuilder result) + //{ + // result.append(getDoubleIndentationStr()).append(CompCodeNames.KeywordPrivate).append(" ") + // .append(allInterfaceName).append(" GetEntity(string dataId) "); + // result.append(getDoubleIndentationStr()).append("{"); + + // result.append(getDoubleIndentationStr()).append(getIndentationStr()) + // .append("return base.BEManagerContext.GetEntity(dataId) as ").append(allInterfaceName).append(" ;"); + + // result.append(getDoubleIndentationStr()).append("}"); + //} + + //private void GenerateGetMgrMethod(StringBuilder result) + //{ + // result.append(getDoubleIndentationStr()).append(CompCodeNames.KeywordPrivate).append(" ") + // .append(beMgrInterfaceName).append(" GetMgr() "); + // result.append(getDoubleIndentationStr()).append("{"); + + // result.append(getDoubleIndentationStr()).append(getIndentationStr()) + // .append("return base.BEManagerContext.BEManager as ").append(beMgrInterfaceName).append(" ;"); + + // result.append(getDoubleIndentationStr()).append("}"); + //} + ///#endregion + + @Override + public String getInitializeCompName() + { + return String.format("%1$s%2$s",VMAction.getCode(), "VO"); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaDataReversalMappingActionsGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaDataReversalMappingActionsGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..551fef8b765002d2904f9d54c37573b7c7440697 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaDataReversalMappingActionsGenerator.java @@ -0,0 +1,193 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaDataReversalMappingActionsGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + if(getBelongElement()) + { + return "DataReversalMappingAction"; + } + else + //return "AfterQueryAction<" + ReturnTypeName + ">"; + { + return "DataReversalMappingAction"; + } + } + + + ///#endregion + + ///#region import + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.DataMapperContextNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.DataReversalMappingActionNameSpace)); + //if (BaseClassName.Contains("Date")) + //{ + // result.append(getUsingStrNoStar(JavaCompCodeNames.DateNameSpace)); + //} + //if (BaseClassName.Contains("BigDecimal")) + //{ + // result.append(getUsingStrNoStar(JavaCompCodeNames.BigDecimalNameSpace)); + //} + + //参数列表 + //if (usingList == null || usingList.Count < 1) + // return; + + //foreach (var usingName in usingList) + //{ + // result.append(getUsingStr(usingName)); + //} + } + + ///#endregion + + + ///#region 构造函数 + public JavaDataReversalMappingActionsGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(").append(JavaCompCodeNames.KeyWordDataMapperContext).append(" ").append(JavaCompCodeNames.Keywordcontext); + + //result.append(getDoubleIndentationStr()).append(getIndentationStr()).append("IBEManagerContext managerContext"); + + if (hasCustomConstructorParams()) + { + result.append("\n"); + generateConstructorParams(result); + result.append(getDoubleIndentationStr()).append(getIndentationStr()).append(")").append("{").append(getNewLine()); + } + else + { + result.append(")").append("{").append(getNewLine()); + } + + result.append(getDoubleIndentationStr()).append(JavaCompCodeNames.KeywordSuper).append("(").append(JavaCompCodeNames.Keywordcontext).append(")").append(";").append(getNewLine()); + + //result.append(getDoubleIndentationStr()).append(getIndentationStr()).append(") : base(managerContext)"); + + //result.append(getDoubleIndentationStr()).append("{"); + generateConstructorContent(result); + result.append(getIndentationStr()).append("}"); + result.append("\n"); + + //GenerateExecute(result); + + } + + ///#endregion + + ///#region GenerateExtendMethod + //protected override void GenerateExtendMethod(StringBuilder result) + //{ + // //GenerateGetEntityMethod(result); + // //GenerateGetMgrMethod(result); + //} + + //{ + // if (param.CollectionParameterType == VMCollectionParameterType.List) + // AddUsing("System.Collections.Generic"); + // if (param.ParameterType == VMParameterType.DateTime) + // AddUsing("System"); + // if (param.ParameterType == VMParameterType.Custom) + // { + + // if (!IsGeneric(param)) + // { + // var usingName = param.ClassName.Substring(0, param.ClassName.LastIndexOf(".", StringComparison.Ordinal)); + // AddUsing(usingName); + // } + // else + // { + // var psn = Assembly.Load(param.Assembly); + // Type type = psn.GetType(param.ClassName); + // GetAllGenericParameterType(type); + // foreach (Type s in allGenericParamType) + // { + // AddUsing(s.ToString().Split('`')[0].Substring(0, s.ToString().Split('`')[0].LastIndexOf(".", StringComparison.Ordinal))); + // } + // } + // } + // } + + //private void GenerateGetEntityMethod(StringBuilder result) + //{ + // result.append(getDoubleIndentationStr()).append(CompCodeNames.KeywordPrivate).append(" ") + // .append(allInterfaceName).append(" GetEntity(string dataId) "); + // result.append(getDoubleIndentationStr()).append("{"); + + // result.append(getDoubleIndentationStr()).append(getIndentationStr()) + // .append("return base.BEManagerContext.GetEntity(dataId) as ").append(allInterfaceName).append(" ;"); + + // result.append(getDoubleIndentationStr()).append("}"); + //} + + //private void GenerateGetMgrMethod(StringBuilder result) + //{ + // result.append(getDoubleIndentationStr()).append(CompCodeNames.KeywordPrivate).append(" ") + // .append(beMgrInterfaceName).append(" GetMgr() "); + // result.append(getDoubleIndentationStr()).append("{"); + + // result.append(getDoubleIndentationStr()).append(getIndentationStr()) + // .append("return base.BEManagerContext.BEManager as ").append(beMgrInterfaceName).append(" ;"); + + // result.append(getDoubleIndentationStr()).append("}"); + //} + ///#endregion + + @Override + public String getInitializeCompName() + { + return String.format("%1$s%2$s",VMAction.getCode(), "VO"); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaQueryActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaQueryActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..eb3177eae3afae7f34f52357c0f09c24e19c7204 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaQueryActionGenerator.java @@ -0,0 +1,134 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaQueryActionGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + if(getBelongElement()) + { + return "AbstractQueryAction"; + } + else + //return "AfterQueryAction<" + ReturnTypeName + ">"; + { + return "AbstractQueryAction"; + } + } + + + ///#endregion + + ///#region import + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.VMQueryContextNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.VMQueryNameSpace)); + //if (BaseClassName.Contains("Date")) + //{ + // result.append(getUsingStrNoStar(JavaCompCodeNames.DateNameSpace)); + //} + //if (BaseClassName.Contains("BigDecimal")) + //{ + // result.append(getUsingStrNoStar(JavaCompCodeNames.BigDecimalNameSpace)); + //} + + //参数列表 + //if (usingList == null || usingList.Count < 1) + // return; + + //foreach (var usingName in usingList) + //{ + // result.append(getUsingStr(usingName)); + //} + } + + ///#endregion + + + ///#region 构造函数 + public JavaQueryActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(").append(JavaCompCodeNames.KeywordQueryContext).append(" ").append(JavaCompCodeNames.Keywordcontext); + + //result.append(getDoubleIndentationStr()).append(getIndentationStr()).append("IBEManagerContext managerContext"); + + if (hasCustomConstructorParams()) + { + result.append("\n"); + generateConstructorParams(result); + result.append(getDoubleIndentationStr()).append(getIndentationStr()).append("{").append(")").append(getNewLine()); + } + else + { + result.append(")").append("{").append(getNewLine()); + } + + result.append(getDoubleIndentationStr()).append(JavaCompCodeNames.KeywordSuper).append("(").append(JavaCompCodeNames.Keywordcontext).append(")").append(";").append(getNewLine()); + + //result.append(getDoubleIndentationStr()).append(getIndentationStr()).append(") : base(managerContext)"); + + //result.append(getDoubleIndentationStr()).append("{"); + generateConstructorContent(result); + result.append(getIndentationStr()).append("}"); + result.append("\n"); + + //GenerateExecute(result); + + } + + + @Override + public String getInitializeCompName() + { + return String.format("%1$s%2$s",VMAction.getCode(), "VO"); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaRetrieveActionGenerator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaRetrieveActionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..06ef3d4b00ced6bcec6d50af7878dc069a17d837 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/generatacmpcode/voextendedaction/JavaRetrieveActionGenerator.java @@ -0,0 +1,134 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.generatacmpcode.voextendedaction; + + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCompCodeNames; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaMappedCdpActionGenerator; + +public class JavaRetrieveActionGenerator extends JavaMappedCdpActionGenerator +{ + private MappedCdpAction action; + + ///#region 属性 + //private string allInterfaceName; + //private string beMgrInterfaceName; + @Override + protected String getBaseClassName() + { + if(getBelongElement()) + { + return "AbstractRetrieveAction"; + } + else + //return "AfterQueryAction<" + ReturnTypeName + ">"; + { + return "AbstractRetrieveAction"; + } + } + + + ///#endregion + + ///#region import + @Override + protected void generateExtendUsing(StringBuilder result) + { + result.append(getUsingStr(JavaCompCodeNames.RetrieveContextNameSpace)); + result.append(getUsingStr(JavaCompCodeNames.AbstractRetrieveActionNameSpace)); + //if (BaseClassName.Contains("Date")) + //{ + // result.append(getUsingStrNoStar(JavaCompCodeNames.DateNameSpace)); + //} + //if (BaseClassName.Contains("BigDecimal")) + //{ + // result.append(getUsingStrNoStar(JavaCompCodeNames.BigDecimalNameSpace)); + //} + + //参数列表 + //if (usingList == null || usingList.Count < 1) + // return; + + //foreach (var usingName in usingList) + //{ + // result.append(getUsingStr(usingName)); + //} + } + + ///#endregion + + + ///#region 构造函数 + public JavaRetrieveActionGenerator(GspViewModel vm, MappedCdpAction vmAction, String nameSpace, String path) + { + super(vm, vmAction, nameSpace, path); + this.action = vmAction; + //allInterfaceName = ApiHelper.GetBEAllInterfaceClassName(vm); + //beMgrInterfaceName = ApiHelper.GetBEMgrInterfaceClassName(vm); + } + @Override + public String getNameSpaceSuffix() + { + return JavaCompCodeNames.VOActionNameSpaceSuffix; + } + + + ///#endregion + + + ///#region generateConstructor + + @Override + public void generateConstructor(StringBuilder result) + { + result.append(getIndentationStr()).append(JavaCompCodeNames.KeywordPublic).append(" ").append(getCompName()).append("(").append(JavaCompCodeNames.KeyWordRetrieveContext).append(" ").append(JavaCompCodeNames.Keywordcontext); + + //result.append(getDoubleIndentationStr()).append(getIndentationStr()).append("IBEManagerContext managerContext"); + + if (hasCustomConstructorParams()) + { + result.append("\n"); + generateConstructorParams(result); + result.append(getDoubleIndentationStr()).append(getIndentationStr()).append("{").append(")").append(getNewLine()); + } + else + { + result.append(")").append("{").append(getNewLine()); + } + + result.append(getDoubleIndentationStr()).append(JavaCompCodeNames.KeywordSuper).append("(").append(JavaCompCodeNames.Keywordcontext).append(")").append(";").append(getNewLine()); + + //result.append(getDoubleIndentationStr()).append(getIndentationStr()).append(") : base(managerContext)"); + + //result.append(getDoubleIndentationStr()).append("{"); + generateConstructorContent(result); + result.append(getIndentationStr()).append("}"); + result.append("\n"); + + // GenerateExecute(result); + + } + + + @Override + public String getInitializeCompName() + { + return String.format("%1$s%2$s",VMAction.getCode(), "VO"); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/helpconfig/HelpConfigFilterSortHandler.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/helpconfig/HelpConfigFilterSortHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..a05783c5db42ac54c0c0ada05d7f79b86bcad04d --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/helpconfig/HelpConfigFilterSortHandler.java @@ -0,0 +1,241 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.helpconfig; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.JsonNodeType; +import com.inspur.edp.cef.designtime.api.util.Guid; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.viewmodel.action.mappedcdp.MappedCdpActionParameter; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelParActualValue; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelParameter; +import com.inspur.edp.formserver.viewmodel.collection.VMActionCollection; +import com.inspur.edp.formserver.viewmodel.common.VMParameterMode; +import com.inspur.edp.formserver.viewmodel.common.ValueHelpConfig; +import com.inspur.edp.formserver.vmmanager.util.CheckInfoUtil; +import com.inspur.edp.lcm.metadata.api.service.MdpkgService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.UUID; + +public class HelpConfigFilterSortHandler { + + public static final String SORT_FILTER_CMPID = "07156c90-f6ee-4d1b-ad57-a40e4027c50c"; + public static final String FILTER_CONDITION_PROPERTY = "filterCondition"; + public static final String SORT_CONDITION_PROPERTY = "orderByCondition"; + public static final String COMMON_CMP_PKGNAME = "Inspur.Gsp.Common.CommonCmp.mdpkg"; + + private MdpkgService mdpkgService; + + private MdpkgService getMdpkgService() { + if (mdpkgService == null) { + this.mdpkgService = SpringBeanUtils.getBean(MdpkgService.class); + } + return this.mdpkgService; + } + + private HashMap actionMap; + private ValueHelpConfig config; + private String metaPath; + + public HelpConfigFilterSortHandler(ValueHelpConfig config, String path) { + + this.config = config; + this.metaPath = path; + } + + public HelpConfigFilterSortHandler(ValueHelpConfig config) { + this.config = config; + } + + public static HelpConfigFilterSortHandler getInstance(ValueHelpConfig config, String path) { + return new HelpConfigFilterSortHandler(config, path); + } + + public static HelpConfigFilterSortHandler getInstance(ValueHelpConfig config) { + return new HelpConfigFilterSortHandler(config); + } + /** + * 处理帮助配置中的过滤排序 + */ + public void handleConfigFilterAndSort(String newFilterCondition, String newSortCondition + ) { + // 无过滤条件且无排序条件,删除对应Action + if (isConditionNull(newSortCondition) && isConditionNull(newFilterCondition)) { + MappedCdpAction action = getCurrentAction(); + if (action != null) { + config.getHelpExtend().getBeforeHelp().remove(action); + } + return; + } + // 有条件,无Action,新增对应Action + if (getCurrentAction() == null) { + VMActionCollection currentActions = config.getHelpExtend().getBeforeHelp().clone(); + config.getHelpExtend().getBeforeHelp().clear(); + config.getHelpExtend().getBeforeHelp() + .add(getHelpVOAction(config, newFilterCondition, newSortCondition)); + config.getHelpExtend().getBeforeHelp().addAll(currentActions); + // 添加元数据包引用 + addMetadataPkgDependency(metaPath); + return; + } + // 已有Action,赋值对应属性 + getCurrentAction().getParameterCollection().forEach(item -> { + ViewModelParameter para = (ViewModelParameter) item; + switch (para.getParamCode()) { + case FILTER_CONDITION_PROPERTY: + para.getActualValue().setValue(newFilterCondition); + break; + case SORT_CONDITION_PROPERTY: + para.getActualValue().setValue(newSortCondition); + break; + } + }); + } + + + public void handleRtConfigFilterAndSort(String newFilterCondition, String newSortCondition + ) { + // 无过滤条件且无排序条件,删除对应Action + if (isConditionNull(newSortCondition) && isConditionNull(newFilterCondition)) { + MappedCdpAction action = getCurrentAction(); + if (action != null) { + config.getHelpExtend().getBeforeHelp().remove(action); + } + return; + } + // 有条件,无Action,新增对应Action + if (getCurrentAction() == null) { + VMActionCollection currentActions = config.getHelpExtend().getBeforeHelp().clone(); + config.getHelpExtend().getBeforeHelp().clear(); + config.getHelpExtend().getBeforeHelp() + .add(getHelpVOAction(config, newFilterCondition, newSortCondition)); + config.getHelpExtend().getBeforeHelp().addAll(currentActions); + // 添加元数据包引用 + //addMetadataPkgDependency(metaPath); + return; + } + // 已有Action,赋值对应属性 + getCurrentAction().getParameterCollection().forEach(item -> { + ViewModelParameter para = (ViewModelParameter) item; + switch (para.getParamCode()) { + case FILTER_CONDITION_PROPERTY: + para.getActualValue().setValue(newFilterCondition); + break; + case SORT_CONDITION_PROPERTY: + para.getActualValue().setValue(newSortCondition); + break; + } + }); + } + private MappedCdpAction getCurrentAction() { + if (actionMap == null) { + actionMap = new HashMap<>(); + MappedCdpAction action = (MappedCdpAction) config.getHelpExtend().getBeforeHelp() + .getItem(item -> (item instanceof MappedCdpAction) && ((MappedCdpAction) item) + .getComponentEntityId().equals(SORT_FILTER_CMPID)); + actionMap.put(config.getElementId(), action); + } + return actionMap.get(config.getElementId()); + } + + /** + * 过滤排序条件是否为空 + */ + private Boolean isConditionNull(String currentSort) { + try { + if (CheckInfoUtil.checkNull(currentSort)) { + return true; + } + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode nodeList = objectMapper.readTree(currentSort); + if (nodeList.getNodeType() != JsonNodeType.ARRAY) { + return true; + } + return nodeList.size() == 0; + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + /** + * 添加元数据包引用 + */ + private void addMetadataPkgDependency(String path) { + if (CheckInfoUtil.checkNull(path)) { + return; + } + ArrayList list = new ArrayList(); + list.add(COMMON_CMP_PKGNAME); + this.getMdpkgService().addDepedencyAndRestore(path, list); + } + + /** + * 新增过滤排序Action + */ + private MappedCdpAction getHelpVOAction(ValueHelpConfig valueHelpConfig, String filterCondition, + String sortCondition) { + MappedCdpAction mappedCdpAction = new MappedCdpAction(); + mappedCdpAction.setIsGenerateComponent(false); + if (valueHelpConfig.getHelpExtend().getBeforeHelp().isEmpty()) { + mappedCdpAction.setID(Guid.newGuid().toString()); + } + String originalKey = valueHelpConfig.getElementId(); //此ID分两段,用/区分 + String[] info = originalKey.split("[/]", -1); + if (info.length != 2) { + throw new RuntimeException("ValueHelpConfig对象的ElementId字段不符合约定"); + } + mappedCdpAction.setCode(info[1]); + mappedCdpAction.setName(info[1]); + mappedCdpAction.setComponentEntityId(SORT_FILTER_CMPID); + mappedCdpAction.setComponentName("VO帮助前支持过滤筛选构件"); + + MappedCdpActionParameter filterParameter = getPara(FILTER_CONDITION_PROPERTY, + FILTER_CONDITION_PROPERTY); + ViewModelParActualValue filterValue = new ViewModelParActualValue(); + filterValue.setHasValue(true); + filterValue.setEnable(true); + filterValue.setValue(filterCondition); + filterParameter.setActualValue(filterValue); + mappedCdpAction.getParameterCollection().add(filterParameter); + + MappedCdpActionParameter orderByParameter = getPara(SORT_CONDITION_PROPERTY, + SORT_CONDITION_PROPERTY); + ViewModelParActualValue orderByValue = new ViewModelParActualValue(); + orderByValue.setHasValue(true); + orderByValue.setEnable(true); + orderByValue.setValue(sortCondition); + orderByParameter.setActualValue(orderByValue); + mappedCdpAction.getParameterCollection().add(orderByParameter); + + return mappedCdpAction; + } + + private MappedCdpActionParameter getPara(String code, String name) { + MappedCdpActionParameter para = new MappedCdpActionParameter(); + para.setID(UUID.randomUUID().toString()); + para.setParamName(name); + para.setParamCode(code); + para.setMode(VMParameterMode.IN); + return para; + } + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/i18nservice/ViewModelI18nService.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/i18nservice/ViewModelI18nService.java new file mode 100644 index 0000000000000000000000000000000000000000..d388c2c28859c25f5ce00ebe78cd20d177576520 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/i18nservice/ViewModelI18nService.java @@ -0,0 +1,70 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.i18nservice; + +import com.inspur.edp.cef.designtime.api.i18n.context.CefResourceExtractContext; +import com.inspur.edp.cef.designtime.api.i18n.context.CefResourceMergeContext; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.i18n.ViewModelResourceExtractor; +import com.inspur.edp.formserver.viewmodel.i18n.merger.ViewModelResourceMerger; +import com.inspur.edp.lcm.metadata.api.entity.*; +import com.inspur.edp.lcm.metadata.spi.MetadataI18nService; + +public class ViewModelI18nService implements MetadataI18nService { + public GspMetadata merge(GspMetadata metadata, java.util.List list) { + + if (list==null || list.size()==0) + return metadata; + if (!(metadata.getContent() instanceof GspViewModel)) + return metadata; + I18nResourceItemCollection resourceItems=list.get(0).getStringResources(); + if (resourceItems==null) + return metadata; + GspViewModel viewModel= (GspViewModel) metadata.getContent(); + mergeViewModelResource(viewModel,resourceItems); + + metadata.setContent(viewModel); + return metadata; + } + + private void mergeViewModelResource(GspViewModel viewModel, + I18nResourceItemCollection resourceItems) { + CefResourceMergeContext context=new CefResourceMergeContext(viewModel.getDotnetGeneratingAssembly(),resourceItems); + ViewModelResourceMerger merger=new ViewModelResourceMerger(viewModel,context); + merger.merge(); + } + + public I18nResource getResourceItem(GspMetadata metadata) { + I18nResource resource = new I18nResource(); + resource.setResourceType(ResourceType.Metadata); + resource.setResourceLocation(ResourceLocation.Backend); + GspViewModel vo = (GspViewModel) metadata.getContent(); + String assemblyName = vo.getDotnetGeneratingAssembly(); + I18nResourceItemCollection collection = new I18nResourceItemCollection(); + extractBizEntityI18nResource(vo, assemblyName, collection); + + resource.setStringResources(collection); + return resource; + + } + + private void extractBizEntityI18nResource(GspViewModel vo, String metaNamespace, I18nResourceItemCollection items) { + CefResourceExtractContext context = new CefResourceExtractContext(metaNamespace, items); + ViewModelResourceExtractor extractor = new ViewModelResourceExtractor(vo, context); + extractor.extract(); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/increment/ViewModelCustomizationSerializer.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/increment/ViewModelCustomizationSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..b9b8b46212dd9e1df319cfad5f27b390b132688c --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/increment/ViewModelCustomizationSerializer.java @@ -0,0 +1,56 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.increment; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.inspur.edp.formserver.viewmodel.increment.ViewModelIncrement; +import com.inspur.edp.metadata.rtcustomization.api.ICustomizedContent; +import com.inspur.edp.metadata.rtcustomization.spi.CustomizationSerializer; + +public class ViewModelCustomizationSerializer implements CustomizationSerializer { + + private ObjectMapper mapper; + private ObjectMapper getMapper(){ + if(mapper == null){ + mapper = new ObjectMapper(); +// SimpleModule module = new SimpleModule(); +// module.addSerializer(ViewModelIncrement.class, new ViewModelIncrementSerializer()); +// module.addDeserializer(ViewModelIncrement.class, new ViewModelIncrementDeserializer()); +// mapper.registerModule(module); + } + return mapper; + } + + @Override + public String serialize(ICustomizedContent increament) { + try { + return getMapper().writeValueAsString(increament); + } catch (JsonProcessingException e) { + throw new RuntimeException("vo元数据增量序列化失败",e); + } + } + + @Override + public ICustomizedContent deSerialize(String increamentStr) { + try { + return getMapper().readValue(increamentStr,ViewModelIncrement.class); + } catch (JsonProcessingException e) { + throw new RuntimeException("vo元数据增量反序列化失败",e); + } + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/increment/ViewModelExtChecker.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/increment/ViewModelExtChecker.java new file mode 100644 index 0000000000000000000000000000000000000000..3463ea233a7c685cb251195d7a91c0f63204255d --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/increment/ViewModelExtChecker.java @@ -0,0 +1,34 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.increment; + +import com.inspur.edp.metadata.rtcustomization.spi.CustomizationExtChecker; +import com.inspur.edp.metadata.rtcustomization.spi.args.ConflictCheckArgs; +import com.inspur.edp.metadata.rtcustomization.spi.args.MdConflictCheckArgs; + +public class ViewModelExtChecker implements CustomizationExtChecker { + + @Override + public void checkMergeConflict(ConflictCheckArgs conflictCheckArgs) { + + } + + @Override + public void checkMergeConflict(MdConflictCheckArgs mdConflictCheckArgs) { + + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/increment/ViewModelExtHandler.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/increment/ViewModelExtHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..faba825c0e81bf834e8985838d6e3b2f0b5323d3 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/increment/ViewModelExtHandler.java @@ -0,0 +1,164 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.increment; + +import com.inspur.edp.cef.designtime.api.element.increment.GspCommonFieldIncrement; +import com.inspur.edp.cef.designtime.api.element.increment.ModifyFieldIncrement; +import com.inspur.edp.cef.designtime.api.entity.increment.CommonEntityIncrement; +import com.inspur.edp.cef.designtime.api.entity.increment.ModifyEntityIncrement; +import com.inspur.edp.cef.designtime.api.increment.IncrementType; +import com.inspur.edp.cef.designtime.api.increment.property.PropertyIncrement; +import com.inspur.edp.das.commonmodel.entity.GspCommonModel; +import com.inspur.edp.das.commonmodel.entity.increment.CommonModelIncrement; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.controlrule.rule.VoControlRule; +import com.inspur.edp.formserver.viewmodel.controlrule.rule.convert.VoControlRuleConvertor; +import com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.VoControlRuleDef; +import com.inspur.edp.formserver.viewmodel.increment.ViewModelIncrement; +import com.inspur.edp.formserver.viewmodel.increment.extract.ViewModelExtractor; +import com.inspur.edp.formserver.viewmodel.increment.merger.ViewModelMerger; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.metadata.rtcustomization.api.AbstractCustomizedContent; +import com.inspur.edp.metadata.rtcustomization.spi.CustomizationExtHandler; +import com.inspur.edp.metadata.rtcustomization.spi.args.*; + +import java.util.HashMap; +import java.util.Map; + +public class ViewModelExtHandler implements CustomizationExtHandler { + + @Override + public AbstractCustomizedContent getExtContent(ExtContentArgs args) { + GspMetadata oldMetadata = args.getBasicMetadata(); + GspMetadata newMetadata = args.getExtMetadata(); + if(oldMetadata == null) + throw new RuntimeException("增量抽取时,更新前的元数据为空"); + if(newMetadata == null) + throw new RuntimeException("增量抽取时,更新后的元数据为空"); + ViewModelExtractor extractor =new ViewModelExtractor(); + GspViewModel oldVo = (GspViewModel)oldMetadata.getContent(); + GspViewModel newVo = (GspViewModel)newMetadata.getContent(); + + VoControlRuleDef def = new VoControlRuleDef(); + VoControlRule rule = new VoControlRule(); + VoControlRuleConvertor.convert2ControlRule(def, rule, oldVo); + + return extractor.extract(oldVo, newVo, rule, def); + } + + @Override + public GspMetadata merge(MetadataMergeArgs args) { + + GspMetadata extendMetadata = args.getExtendMetadata(); + AbstractCustomizedContent baseIncrement = args.getCustomizedContent(); + GspMetadata metadata = (GspMetadata)extendMetadata.clone(); + if(metadata == null) + throw new RuntimeException("增量合并时,扩展元数据为空"); + ViewModelMerger merger = new ViewModelMerger(true); +// GspViewModel extendVo = (GspViewModel)metadata.getContent(); + GspViewModel extendVo = ((GspViewModel)extendMetadata.getContent()).clone(); + + VoControlRuleDef def = new VoControlRuleDef(); + VoControlRule rule = new VoControlRule(); + + GspMetadata baseVoMetadata = args.getRootMetadata(); + + VoControlRuleConvertor.convert2ControlRule(def, rule, (GspViewModel)baseVoMetadata.getContent()); + + ViewModelIncrement extendIncrement = null; +// ViewModelIncrement extendIncrement = (ViewModelIncrement)service.getChangeset(metadata.getHeader().getId() ,null, null); + GspViewModel mergedVo = (GspViewModel)merger.merge(extendVo, (GspCommonModel) args.getRootMetadata().getContent(), extendIncrement == null ? new ViewModelIncrement():extendIncrement, (ViewModelIncrement)baseIncrement, rule, def); + metadata.setContent(mergedVo); + + return metadata; + } + + @Override + public AbstractCustomizedContent getExtContent4SameLevel(Compare4SameLevelArgs args) { + GspMetadata oldMetadata = args.getOldMetadata(); + GspMetadata newMetadata = args.getMetadata(); + if(oldMetadata == null) + throw new RuntimeException("增量抽取时,更新前的元数据为空"); + if(newMetadata == null) + throw new RuntimeException("增量抽取时,更新后的元数据为空"); + + ViewModelExtractor extractor =new ViewModelExtractor(!oldMetadata.isExtended()); + GspViewModel oldVo = (GspViewModel)oldMetadata.getContent(); + GspViewModel newVo = (GspViewModel)newMetadata.getContent(); + + VoControlRuleDef def = new VoControlRuleDef(); + VoControlRule rule = new VoControlRule(); + VoControlRuleConvertor.convert2ControlRule(def, rule, oldVo); + + return extractor.extract(oldVo, newVo, rule, def); + } + + //region changeMerge + @Override + public AbstractCustomizedContent changeMerge(ChangeMergeArgs changeMergeArgs) { + CommonModelIncrement parentChange = (CommonModelIncrement)changeMergeArgs.getParentChage(); + CommonModelIncrement extendChange = (CommonModelIncrement)changeMergeArgs.getChangeToParent(); + + if(extendChange == null) + return parentChange; + mergeChangeProperties(parentChange.getChangeProperties(), extendChange.getChangeProperties()); + + if(extendChange.getMainEntityIncrement() != null && parentChange.getMainEntityIncrement() != null) + mergeObjectIncrement(parentChange.getMainEntityIncrement(), extendChange.getMainEntityIncrement()); + + return parentChange; + } + + + private void mergeObjectIncrement(ModifyEntityIncrement parentIncrement, ModifyEntityIncrement extendIncrement){ + + mergeChangeProperties(parentIncrement.getChangeProperties(), extendIncrement.getChangeProperties()); + + for(Map.Entry childPair : parentIncrement.getChildEntitis().entrySet()){ + if(childPair.getValue().getIncrementType() != IncrementType.Modify) + continue; + if(extendIncrement.getChildEntitis().containsKey(childPair.getKey())) + mergeObjectIncrement((ModifyEntityIncrement)childPair.getValue(), (ModifyEntityIncrement)extendIncrement.getChildEntitis().get(childPair.getKey())); + } + + for(Map.Entry elePair : parentIncrement.getFields().entrySet()){ + GspCommonFieldIncrement fieldIncrement = elePair.getValue(); + if(fieldIncrement.getIncrementType() != IncrementType.Modify) + continue; + HashMap extendFields = extendIncrement.getFields(); + if(extendFields.containsKey(elePair.getKey())){ + mergeElementIncrement((ModifyFieldIncrement)fieldIncrement, (ModifyFieldIncrement)extendFields.get(elePair.getKey())); + } + } + + } + + private void mergeElementIncrement(ModifyFieldIncrement parentIncrement, ModifyFieldIncrement extendIncrement){ + mergeChangeProperties(parentIncrement.getChangeProperties(), extendIncrement.getChangeProperties()); + } + + private void mergeChangeProperties(HashMap parentChanges, HashMap extendChanges){ + for(Map.Entry changePair : extendChanges.entrySet()){ + if(parentChanges.containsKey(changePair.getKey())){ + parentChanges.remove(changePair.getKey()); + } + } + } + + //endregion + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/lowcode/BSessionUtil.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/lowcode/BSessionUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..333d3c8293b16a3d3f7bf9ef8d501fce91d2cc9a --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/lowcode/BSessionUtil.java @@ -0,0 +1,36 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.lowcode; + +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.entity.MetadataPackage; +import io.iec.edp.caf.tenancy.api.entity.Tenant; + +import java.util.function.Consumer; +import java.util.function.Function; + +public class BSessionUtil { + + public static void wrapFirstTenantBSession(Consumer consumer) { + } + private static void clearSession() { + } + + public static void handleMdPkg(MetadataPackage metadataPackage, + Function getMetadata) { + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/lowcode/MdPkgDeployListener.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/lowcode/MdPkgDeployListener.java new file mode 100644 index 0000000000000000000000000000000000000000..fa73f3028fb63144a79eb10c11ac3f165e31f9f2 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/lowcode/MdPkgDeployListener.java @@ -0,0 +1,157 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.lowcode; + +import com.inspur.edp.formserver.viewmodel.extendinfo.api.GspVoExtendInfoService; +import com.inspur.edp.formserver.viewmodel.extendinfo.entity.GspVoExtendInfo; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.entity.MetadataPackage; +import com.inspur.edp.lcm.metadata.spi.event.MdPkgChangedArgs; +import com.inspur.edp.lcm.metadata.spi.event.MdPkgChangedEventListener; +import com.inspur.edp.metadata.rtcustomization.api.CustomizationService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +public class MdPkgDeployListener implements MdPkgChangedEventListener { + + CustomizationService metadataService; + + public MdPkgDeployListener() { + this.metadataService = SpringBeanUtils.getBean(CustomizationService.class); + } + + @Override + public void fireMdPkgAddedEvent(MdPkgChangedArgs mdPkgChangedArgs) { +// if(metadataService == null) { +// this.metadataService = SpringBeanUtils.getBean(CustomizationService.class); +// } +// MetadataPackage metadataPackage = mdPkgChangedArgs.getMetadataPackage(); +// handleMdPkg(metadataPackage, var -> metadataService.getMetadata(var)); + } + + @Override + public void fireMdPkgChangedEvent(MdPkgChangedArgs mdPkgChangedArgs) { + if(metadataService == null) { + this.metadataService = SpringBeanUtils.getBean(CustomizationService.class); + } + MetadataPackage metadataPackage = mdPkgChangedArgs.getMetadataPackage(); + clearVoCache(metadataPackage,metadataService); + //handleMdPkg(metadataPackage, var -> metadataService.getMetadata(var)); + } + public void clearVoCache( MetadataPackage metadataPackage,CustomizationService metadataService){ + + List packageMetadataList = metadataPackage.getMetadataList(); + if (packageMetadataList == null || packageMetadataList.isEmpty()) { + return; + } + List metadatas = packageMetadataList.stream() + .filter(item -> item.getHeader().getType().equals("GSPBusinessEntity")) + .collect(Collectors.toList()); + if (metadatas.isEmpty()) { + return; + } + ArrayList metadataLists=new ArrayList<>(); + GspVoExtendInfoService service = SpringBeanUtils.getBean(GspVoExtendInfoService.class); + for (GspMetadata metadata: metadatas){ + List voExtendInfos=service.getVoId(metadata.getHeader().getId()); + if(voExtendInfos==null || voExtendInfos.size()==0){ + continue; + } + voExtendInfos.forEach(info -> metadataLists.add(info.getId())); + } + + metadataService.removeCacheByMetadataIds(metadataLists); + + } + +// void handleMdPkg(MetadataPackage metadataPackage, +// Function getMetadata) { +// try { +//// if (metadataPackage.getHeader().getProcessMode() != ProcessMode.interpretation) { +//// //如果不是无需生成代码的元数据包,直接忽略 +//// return; +//// } +// +// List packageMetadataList = metadataPackage.getMetadataList(); +// if (packageMetadataList == null || packageMetadataList.isEmpty()) { +// //如果元数据包下不存在元数据 +// return; +// } +// List metadatas = packageMetadataList.stream() +// .filter(item -> item.getHeader().getType().equals("GSPViewModel")) +// .collect(Collectors.toList()); +// if (metadatas.isEmpty()) { +// return; +// } +// ProcessMode processMode = Optional.ofNullable(metadataPackage.getHeader().getProcessMode()).orElse(ProcessMode.generation); +// BSessionUtil.wrapFirstTenantBSession(tenant -> { +// // 获取当前已部署的eapi版本,并移除未变动的Eapi元数据 +// GspVoExtendInfoService beInfoService = SpringBeanUtils +// .getBean(GspVoExtendInfoService.class); +// List infos = new ArrayList(metadatas.size()); +// for (GspMetadata metadata : metadatas) { +// GspViewModel be = (GspViewModel) getMetadata.apply(metadata.getHeader().getId()) +// .getContent(); +// ((GspViewModel) getMetadata.apply(metadata.getHeader().getId()).getContent()) +// .getCoreAssemblyInfo().getDefaultNamespace(); +// BffEngineCacheService.remove(be.getID()); +// if (be.getGeneratedConfigID() == null) { +// continue; +// } +// GspVoExtendInfo existing = beInfoService.getVoExtendInfo(be.getID()); +// GspVoExtendInfo info = buildVoExtendInfo(processMode, be, existing); +// infos.add(info); +// } +// if (!infos.isEmpty()) { +// beInfoService.saveGspVoExtendInfos(infos); +// } +// }); +// } catch (Exception e) { +// throw new RuntimeException("部署解析VO元数据出错:", e); +// } +// } +// +// private GspVoExtendInfo buildVoExtendInfo(ProcessMode processMode, GspViewModel be, GspVoExtendInfo existing) { +// GspVoExtendInfo info = new GspVoExtendInfo(); +// VoConfigCollectionInfo voConfigCollectionInfo = getBffConfigCollectionInfo(be); +// voConfigCollectionInfo.setProjectType(processMode); +// info.setVoConfigCollectionInfo(voConfigCollectionInfo); +// info.setId(be.getID()); +// info.setConfigId(be.getGeneratedConfigID());; +// info.setCreatedOn(Date.from(CAFContext.current.getCurrentDateTime().toInstant())); +// info.setLastChangedOn(Date.from(CAFContext.current.getCurrentDateTime().toInstant())); +// if (!be.getIsVirtual()) { +// info.setBeSourceId(be.getMapping().getTargetMetadataId()); +// } +// if (existing != null) { +// info.setLastChangedOn(Date.from(CAFContext.current.getCurrentDateTime().toInstant())); +// } +// return info; +// } +// +// private VoConfigCollectionInfo getBffConfigCollectionInfo(GspViewModel be) { +// CefConfig cefConfig = new CefConfig(); +// cefConfig.setID(be.getGeneratedConfigID()); +// cefConfig.setDefaultNamespace(be.getCoreAssemblyInfo().getDefaultNamespace().toLowerCase()); +// VoConfigCollectionInfo voConfigCollectionInfo = new VoConfigCollectionInfo(); +// voConfigCollectionInfo.setConfig(cefConfig); +// return voConfigCollectionInfo; +// } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/lowcode/MdPkgToolsDeployListener.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/lowcode/MdPkgToolsDeployListener.java new file mode 100644 index 0000000000000000000000000000000000000000..1b26bf37fee487afeee2325825a6ef243ec7c784 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/lowcode/MdPkgToolsDeployListener.java @@ -0,0 +1,36 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.lowcode; + +import com.inspur.edp.metadata.rtcustomization.spi.event.ExtMdSavedArgs; +import com.inspur.edp.metadata.rtcustomization.spi.event.IMetadataDeployEventListener; +import com.inspur.edp.metadata.rtcustomization.spi.event.MdPkgDeployedEventArgs; + +public class MdPkgToolsDeployListener implements IMetadataDeployEventListener { + + + public MdPkgToolsDeployListener() { + } + + @Override + public void fireMdPkgDeployedEvent(MdPkgDeployedEventArgs mdPkgDeployedEventArgs) { + } + + @Override + public void fireExtMdSavedEvent(ExtMdSavedArgs extMdSavedArgs) { + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/metadataeventlistener/BffMetadataRtEventListener.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/metadataeventlistener/BffMetadataRtEventListener.java new file mode 100644 index 0000000000000000000000000000000000000000..8220181a5724c81bd39fa5abcca0fb6e6d813020 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/metadataeventlistener/BffMetadataRtEventListener.java @@ -0,0 +1,197 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.metadataeventlistener; + +import com.inspur.edp.bef.bizentity.GspBusinessEntity; +import com.inspur.edp.bff.engine.core.cache.BffEngineCacheService; +import com.inspur.edp.cef.entity.config.CefConfig; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.common.LinkBeUtils; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoObjectSourceType; +import com.inspur.edp.formserver.viewmodel.extendinfo.api.GspVoExtendInfoService; +import com.inspur.edp.formserver.viewmodel.extendinfo.entity.GspVoExtendInfo; +import com.inspur.edp.formserver.viewmodel.extendinfo.entity.VoConfigCollectionInfo; +import com.inspur.edp.formserver.voextendinfo.server.api.GspVoExtendInfoRpcService; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.entity.ProcessMode; +import com.inspur.edp.metadata.rtcustomization.api.CustomizationRtService; +import com.inspur.edp.metadata.rtcustomization.api.entity.EnvironmentEnum; +import com.inspur.edp.metadata.rtcustomization.serverapi.CustomizationRtServerService; +import com.inspur.edp.metadata.rtcustomization.spi.event.IMetadataRtEventListener; +import com.inspur.edp.metadata.rtcustomization.spi.event.MetadataRtEventArgs; +import io.iec.edp.caf.boot.context.CAFContext; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class BffMetadataRtEventListener implements IMetadataRtEventListener { + @Override public void fireGeneratedMetadataSavingEvent(MetadataRtEventArgs args) { + + } + private static final Logger logger = LoggerFactory.getLogger(BffMetadataRtEventListener.class); + @Override public void fireGeneratedMetadataSavedEvent(MetadataRtEventArgs args) { +// GspMetadata metadata=args.getMetadata(); +// if(metadata.getContent() instanceof GspBusinessEntity){ +// +// GspVoExtendInfoService service= SpringBeanUtils.getBean(GspVoExtendInfoService.class); +// +// CustomizationService customizationService=SpringBeanUtils.getBean(CustomizationService.class); +// +// GspBusinessEntity businessEntity= (GspBusinessEntity) metadata.getContent(); +// String beId=businessEntity.getId(); +// +// List voExtendInfos=service.getVoId(beId); +// if(voExtendInfos==null ||voExtendInfos.size()==0){ +// return; +// } +// ArrayList metadataLists=new ArrayList<>(); +// voExtendInfos.forEach(info -> metadataLists.add(info.getId())); +// +// customizationService.removeCacheByMetadataIds(metadataLists); +// +// } + } + + @Override public void fireMetadataSavingEvent(MetadataRtEventArgs args) { + + } + + @Override public void fireMetadataSavedEvent(MetadataRtEventArgs args) { + + GspVoExtendInfoService service = SpringBeanUtils.getBean(GspVoExtendInfoService.class); + CustomizationRtService customizationService = SpringBeanUtils.getBean(CustomizationRtService.class); + GspMetadata metadata = args.getMetadata(); + if (metadata.getContent() instanceof GspBusinessEntity) { + + GspBusinessEntity businessEntity = (GspBusinessEntity) metadata.getContent(); + String beId = businessEntity.getId(); + List voExtendInfos = service.getVoId(beId); + if (voExtendInfos == null || voExtendInfos.size() == 0) { + return; + } + ArrayList metadataLists = new ArrayList<>(); + voExtendInfos.forEach(info -> metadataLists.add(info.getId())); + customizationService.removeCacheByMetadataIds(metadataLists); + } + + if(!(metadata.getContent() instanceof GspViewModel)) { + if ("GSPViewModel".equals(metadata.getHeader().getType())) { + logger.error("参数中content为null,更新config信息失败!ID:" + metadata.getHeader().getId() + "...name:" + metadata.getHeader().getName()); + } + return; + } + GspViewModel vo = (GspViewModel) metadata.getContent(); + BffEngineCacheService.remove(vo.getID()); + GspVoExtendInfo existed = service.getVoExtendInfo(vo.getID()); + if(existed != null) { + service.deleteVoExtendInfo(vo.getID()); + } + + try { + List infos = new ArrayList(); + ProcessMode processMode = args.getProcessMode(); + BffEngineCacheService.remove(vo.getID()); + GspVoExtendInfo info = buildVoExtendInfo(processMode, vo, existed); + if(metadata.isExtended()){ + info.setVoConfigCollectionInfo(null); + } + if (vo.getGeneratedConfigID()!=null) { + infos.add(info); + service.saveGspVoExtendInfos(infos); + } + } catch (Exception e) { + throw new RuntimeException("部署解析VO元数据出错:", e); + } + } + + @Override public void fireMetadataDeletingEvent(MetadataRtEventArgs args) { + + } + + @Override public void fireMetadataDeletedEvent(MetadataRtEventArgs args) { + + GspVoExtendInfoRpcService service = SpringBeanUtils.getBean(GspVoExtendInfoRpcService.class); + CustomizationRtServerService customizationService = SpringBeanUtils.getBean(CustomizationRtServerService.class); + GspMetadata metadata = args.getMetadata(); + if ("GspBusinessEntity".equals(metadata.getHeader().getType())) { + + String beId = metadata.getHeader().getId(); + List voExtendInfos = service.getVoId(beId); + if (voExtendInfos == null || voExtendInfos.size() == 0) { + return; + } + ArrayList metadataLists = new ArrayList<>(); + voExtendInfos.forEach(info -> metadataLists.add(info.getId())); + customizationService.removeCacheByMetadataIds(metadataLists); + } + + if(!"GSPViewModel".equals(metadata.getHeader().getType())) + return; + BffEngineCacheService.remove(args.getMetadata().getHeader().getId()); + GspVoExtendInfo existed = service.getVoExtendInfo(args.getMetadata().getHeader().getId()); + if(existed != null) { + service.deleteVoExtendInfo(args.getMetadata().getHeader().getId()); + } + + } + + public void fireMetadataAchievedEvent(MetadataRtEventArgs args) { + if(args.getEnv()== EnvironmentEnum.TOOL) + return; + GspMetadata metadata=args.getMetadata(); + if(!(metadata.getContent() instanceof GspViewModel)) + return; + GspViewModel viewModel= (GspViewModel) metadata.getContent(); + if (viewModel.getIsVirtual()) + return; + if (viewModel.getMainObject().getMapping() != null && viewModel.getMainObject().getMapping().getSourceType() == GspVoObjectSourceType.BeObject) { + LinkBeUtils linkUtil = new LinkBeUtils(true); + linkUtil.linkWithBe(viewModel); + } + } + + private GspVoExtendInfo buildVoExtendInfo(ProcessMode processMode, GspViewModel vo, GspVoExtendInfo existing) { + GspVoExtendInfo info = new GspVoExtendInfo(); + VoConfigCollectionInfo voConfigCollectionInfo = getBffConfigCollectionInfo(vo); + voConfigCollectionInfo.setProjectType(processMode); + info.setVoConfigCollectionInfo(voConfigCollectionInfo); + info.setId(vo.getID()); + info.setConfigId(vo.getGeneratedConfigID());; + info.setCreatedOn(Date.from(CAFContext.current.getCurrentDateTime().toInstant())); + info.setLastChangedOn(Date.from(CAFContext.current.getCurrentDateTime().toInstant())); + if (!vo.getIsVirtual()) { + info.setBeSourceId(vo.getMapping().getTargetMetadataId()); + } + if (existing != null) { + info.setLastChangedOn(Date.from(CAFContext.current.getCurrentDateTime().toInstant())); + } + return info; + } + + private VoConfigCollectionInfo getBffConfigCollectionInfo(GspViewModel vo) { + CefConfig cefConfig = new CefConfig(); + cefConfig.setID(vo.getGeneratedConfigID()); + cefConfig.setDefaultNamespace(vo.getCoreAssemblyInfo().getDefaultNamespace().toLowerCase()); + VoConfigCollectionInfo voConfigCollectionInfo = new VoConfigCollectionInfo(); + voConfigCollectionInfo.setConfig(cefConfig); + return voConfigCollectionInfo; + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/pushchangesetevent/PushVmChangeSetConf.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/pushchangesetevent/PushVmChangeSetConf.java new file mode 100644 index 0000000000000000000000000000000000000000..0f9fb929576f3d5197fcac6c6afc03863bf58562 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/pushchangesetevent/PushVmChangeSetConf.java @@ -0,0 +1,33 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.pushchangesetevent; + +import io.iec.edp.caf.commons.event.config.EventListenerSettings; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class PushVmChangeSetConf { + @Bean(name = "PushVmChangeSetEventBroker") + public PushVmChangeSetEventBroker setEventBroker(EventListenerSettings settings, PushVmChangeSetEventManager eventManager) { + return new PushVmChangeSetEventBroker(settings, eventManager); + } + @Bean(name = "PushVmChangeSetEventManager") + public PushVmChangeSetEventManager setEventManager() { + return new PushVmChangeSetEventManager(); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/pushchangesetevent/PushVmChangeSetEventBroker.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/pushchangesetevent/PushVmChangeSetEventBroker.java new file mode 100644 index 0000000000000000000000000000000000000000..dff93354f250fae11f714ddd9308bf55587131cc --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/pushchangesetevent/PushVmChangeSetEventBroker.java @@ -0,0 +1,39 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.pushchangesetevent; + +import com.inspur.edp.formserver.viewmodel.pushchangesetargs.VmPushChangeSetArgs; +import io.iec.edp.caf.commons.event.EventBroker; +import io.iec.edp.caf.commons.event.config.EventListenerSettings; + +public class PushVmChangeSetEventBroker extends EventBroker { + private PushVmChangeSetEventManager eventManager; + public PushVmChangeSetEventBroker(EventListenerSettings settings,PushVmChangeSetEventManager eventManager){ + super(settings); + this.eventManager = eventManager; + this.init(); + } + + @Override + protected void onInit() { + this.getEventManagerCollection().add(this.eventManager); + } + + public void firePushChangeSet(VmPushChangeSetArgs args) { + this.eventManager.firePushChangeSet(args); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/pushchangesetevent/PushVmChangeSetEventManager.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/pushchangesetevent/PushVmChangeSetEventManager.java new file mode 100644 index 0000000000000000000000000000000000000000..d64b0a6f0f62832b4bd30fe7b8ad68a45bd8ba68 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/pushchangesetevent/PushVmChangeSetEventManager.java @@ -0,0 +1,66 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.pushchangesetevent; + +import com.inspur.edp.formserver.viewmodel.pushchangesetargs.VmPushChangeSetArgs; +import com.inspur.edp.formserver.viewmodel.pushchangesetlistener.IVmPushChangeSetListener; +import io.iec.edp.caf.commons.event.EventManager; +import io.iec.edp.caf.commons.event.IEventListener; + +public class PushVmChangeSetEventManager extends EventManager { + + @Override + public String getEventManagerName() { + return "PushVmChangeSetEventManager"; + } + + @Override + public boolean isHandlerListener(IEventListener listener) { + return listener instanceof IVmPushChangeSetListener; + } + + /** + * 注册事件 + * @param listener 监听者 + */ + @Override + public void addListener(IEventListener listener) { + if(!(listener instanceof IVmPushChangeSetListener)) { + throw new RuntimeException("指定的监听者没有实现 IVmPushChangeSetListener 接口!"); + } + IVmPushChangeSetListener pushChangeSetListener = (IVmPushChangeSetListener)listener; + this.addEventHandler(PushVmChangeSetType.vmPushChangeSet, pushChangeSetListener,"vmPushChangeSet"); + } + + /*** + * 注销事件 + * @param listener 监听者 + */ + @Override + public void removeListener(IEventListener listener) { + if(!(listener instanceof IVmPushChangeSetListener)) { + throw new RuntimeException("指定的监听者没有实现 IVmPushChangeSetListener 接口!"); + } + IVmPushChangeSetListener pushChangeSetListener = (IVmPushChangeSetListener)listener; + this.removeEventHandler(PushVmChangeSetType.vmPushChangeSet, pushChangeSetListener,"vmPushChangeSet"); + } + + // fire + public final void firePushChangeSet(VmPushChangeSetArgs args) { + this.fire(PushVmChangeSetType.vmPushChangeSet, args); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/pushchangesetevent/PushVmChangeSetType.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/pushchangesetevent/PushVmChangeSetType.java new file mode 100644 index 0000000000000000000000000000000000000000..9d1c7e279c7eedaea943e2cae9eabbe69d281245 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/pushchangesetevent/PushVmChangeSetType.java @@ -0,0 +1,21 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.pushchangesetevent; + +public enum PushVmChangeSetType { + vmPushChangeSet, +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/EntityFunction.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/EntityFunction.java new file mode 100644 index 0000000000000000000000000000000000000000..241603de48035f4a5c8739562f133f494a7e8ef6 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/EntityFunction.java @@ -0,0 +1,26 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.service; + +import com.inspur.edp.bef.bizentity.GspBusinessEntity; + +public interface EntityFunction { + GspBusinessEntity getBizEntity(String path, String bePkgName, String beId); + default String getInfo() { + return "getBizEntity"; + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/MetadataReferenceService.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/MetadataReferenceService.java new file mode 100644 index 0000000000000000000000000000000000000000..768e866e4e11de6a733e065850eec8554eabb0ee --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/MetadataReferenceService.java @@ -0,0 +1,203 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.service; + +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.das.commonmodel.IGspCommonElement; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.das.commonmodel.entity.GspCommonElement; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelActionType; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.entity.MetadataReference; +import com.inspur.edp.lcm.metadata.api.service.MetadataService; +import com.inspur.edp.lcm.metadata.api.service.RefCommonService; +import com.inspur.edp.lcm.metadata.spi.IMetadataReferenceManager; +import io.iec.edp.caf.commons.exception.CAFRuntimeException; +import io.iec.edp.caf.commons.exception.ExceptionLevel; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class MetadataReferenceService implements IMetadataReferenceManager { + + private HashMap map = new HashMap(); + private String errorCode = "MetadataReferenceService"; + //TODO 临时添加 + private String errorToken = "#GSPBefError# "; + private void buildMetadataReference(GspMetadata metadata) + { + if (metadata.getRefs() == null) + { + metadata.setRefs(new ArrayList()); + } + map.clear(); + + MetadataService metadataService = SpringBeanUtils.getBean(MetadataService.class); + GspViewModel vm = (GspViewModel) metadata.getContent(); + addAssoVirtualFieldBeReference(vm,metadata,metadataService); + // 虚拟vo无依赖 + if (vm.getIsVirtual()) + { + return; + } + + // ① vm.Mapping + String beId = vm.getMapping().getTargetMetadataId(); + addMappingBeReference(beId, metadata, metadataService); + + // ② obj + dealObjectReference(vm.getMainObject(), metadata, metadataService); + + // ③ vm.Actions + if (vm.getActions() != null && vm.getActions().getCount() > 0) + { + for (ViewModelAction action : vm.getActions()) + { + if (action.getType() == ViewModelActionType.VMAction) + { + if (action instanceof MappedCdpAction) + { + buildCompReference((MappedCdpAction) action, metadata, metadataService); + } + else + { + throw new CAFRuntimeException("", errorCode,errorToken+action.getName()+"类型应为MappedCdpAction. "+errorToken , null, ExceptionLevel.Error,false); + } + } + } + } + + // ④ vm.DataExtendInfo + //todo: + } + private void addAssoVirtualFieldBeReference(GspViewModel viewModel, GspMetadata metadata, MetadataService metadataService) { + List elementList = viewModel.getAllElementList(false); + for(IGspCommonElement element : elementList) + { + if (!element.getIsVirtual() || element.getChildAssociations().size() == 0) + { + continue; + } + String virualRefBeId = ((GspCommonElement)element).getChildAssociations().get(0).getRefModelID(); + addMappingBeReference(virualRefBeId, metadata, metadataService); + } + } + + + private void dealObjectReference(GspViewObject obj, GspMetadata metadata, MetadataService metadataService) + { + if (obj.getIsVirtual()) + { + return; + } + + // ① mapping + addMappingBeReference(obj.getMapping().getTargetMetadataId(), metadata, metadataService); + + // ① Elemnet + if (obj.getContainElements() != null && obj.getContainElements().getCount() > 0) + { + for (IGspCommonField ele : obj.getContainElements()) + { + dealElementReference( (GspViewModelElement)ele, metadata, metadataService); + } + } + + // ② Child + if (obj.getContainChildObjects() != null && obj.getContainChildObjects().getCount() > 0) + { + for (IGspCommonObject childObj : obj.getContainChildObjects()) + { + dealObjectReference( (GspViewObject)childObj, metadata, metadataService); + } + } + } + + private void dealElementReference(GspViewModelElement ele, GspMetadata metadata, MetadataService metadataService) + { + //① mapping + if (!ele.getIsVirtualViewElement()) + { + addMappingBeReference(ele.getMapping().getTargetMetadataId(), metadata, metadataService); + } + + //② vmElement.Help + //todo: + } + + public void buildCompReference(MappedCdpAction operation, GspMetadata metadata, MetadataService metadataService) + { + addMappingBeReference(operation.getComponentEntityId(), metadata, metadataService); + } + + private void addMappingBeReference(String refBeId, GspMetadata metadata, MetadataService metadataService) + { + if (refBeId==null ||"".equals(refBeId) || map.containsKey(refBeId)) + { + return; + } + + map.put(refBeId, refBeId); + buildReference(refBeId, metadata, metadataService); + } + + private void buildReference(String refMetadataId, GspMetadata metadata, MetadataService metadataService) + { + if (refMetadataId==null || "".equals(refMetadataId)) + { + return; + } + for (MetadataReference metadataReference : metadata.getRefs()) { + if (refMetadataId.equals(metadataReference.getDependentMetadata().getId())) { + return; + } + } + RefCommonService refService =SpringBeanUtils.getBean(RefCommonService.class); + GspMetadata refMetaData=refService.getRefMetadata(refMetadataId); + if(refMetaData==null){ + throw new RuntimeException(String.format("VO元数据在构造依赖的元数据关系时,未找到ID值为:%1$s的元数据,请确认依赖的元数据是否部署到环境中!",refMetadataId)); + } + MetadataReference metadataReference = new MetadataReference(); + metadataReference.setMetadata(metadata.getHeader()); + metadataReference.setDependentMetadata(refMetaData.getHeader()); + metadata.getRefs().add(metadataReference); + } + + public List getConstraint(GspMetadata metadata) + { + if(metadata.getRefs()!=null){ + metadata.getRefs().clear(); + } + buildMetadataReference(metadata); + List list = new ArrayList<>(); + if (metadata.getRefs() != null && metadata.getRefs().size() > 0) + { + for (MetadataReference item : metadata.getRefs()) + { + list.add(item); + } + } + return list; + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/MetadataRtReferenceService.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/MetadataRtReferenceService.java new file mode 100644 index 0000000000000000000000000000000000000000..3be9a238f3377acd519d5cce9e8ca9a8fdacea31 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/MetadataRtReferenceService.java @@ -0,0 +1,188 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.service; + +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.cef.designtime.api.util.MetadataUtil; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelActionType; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.entity.MetadataReference; +import com.inspur.edp.metadata.rtcustomization.api.CustomizationService; +import com.inspur.edp.metadata.rtcustomization.spi.IMetadataRtReferenceManager; +import io.iec.edp.caf.commons.exception.CAFRuntimeException; +import io.iec.edp.caf.commons.exception.ExceptionLevel; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class MetadataRtReferenceService implements IMetadataRtReferenceManager { + + private HashMap map = new HashMap(); + private String errorCode = "MetadataReferenceService"; + //TODO 临时添加 + private String errorToken = "#GSPBefError# "; + private void buildMetadataReference(GspMetadata metadata) + { + if (metadata.getRefs() == null) + { + metadata.setRefs(new ArrayList()); + } + map.clear(); + + CustomizationService service = SpringBeanUtils.getBean(CustomizationService.class); + GspViewModel vm = (GspViewModel) metadata.getContent(); + // 虚拟vo无依赖 + if (vm.getIsVirtual()) + { + return; + } + + // ① vm.Mapping + String beId = vm.getMapping().getTargetMetadataId(); + addMappingBeReference(vm,beId, metadata, service); + + // ② obj + dealObjectReference(vm,vm.getMainObject(), metadata, service); + + // ③ vm.Actions + if (vm.getActions() != null && vm.getActions().getCount() > 0) + { + for (ViewModelAction action : vm.getActions()) + { + if (action.getType() == ViewModelActionType.VMAction) + { + if (action instanceof MappedCdpAction) + { + buildCompReference(vm,(MappedCdpAction) action, metadata, service); + } + else + { + throw new CAFRuntimeException("", errorCode,errorToken+action.getName()+"类型应为MappedCdpAction. "+errorToken , null, ExceptionLevel.Error,false); + } + } + } + } + + // ④ vm.DataExtendInfo + //todo: + } + + private void dealObjectReference(GspViewModel vm,GspViewObject obj, GspMetadata metadata, CustomizationService service) + { + if (obj.getIsVirtual()) + { + return; + } + + // ① mapping + addMappingBeReference(vm,obj.getMapping().getTargetMetadataId(), metadata, service); + + // ① Elemnet + if (obj.getContainElements() != null && obj.getContainElements().getCount() > 0) + { + for (IGspCommonField ele : obj.getContainElements()) + { + dealElementReference( vm,(GspViewModelElement)ele, metadata, service); + } + } + + // ② Child + if (obj.getContainChildObjects() != null && obj.getContainChildObjects().getCount() > 0) + { + for (IGspCommonObject childObj : obj.getContainChildObjects()) + { + dealObjectReference(vm, (GspViewObject)childObj, metadata, service); + } + } + } + + private void dealElementReference(GspViewModel vm,GspViewModelElement ele, GspMetadata metadata, CustomizationService service) + { + //① mapping + if (!ele.getIsVirtualViewElement()) + { + addMappingBeReference(vm,ele.getMapping().getTargetMetadataId(), metadata, service); + } + + //② vmElement.Help + //todo: + } + + public void buildCompReference(GspViewModel vm,MappedCdpAction operation, GspMetadata metadata, CustomizationService service) + { + addMappingBeReference(vm,operation.getComponentEntityId(), metadata, service); + } + + private void addMappingBeReference(GspViewModel vm,String refBeId, GspMetadata metadata, CustomizationService service) + { + if (refBeId==null ||"".equals(refBeId) || map.containsKey(refBeId)) + { + return; + } + + map.put(refBeId, refBeId); + buildReference(vm,refBeId, metadata, service); + } + + private void buildReference(GspViewModel vm,String refMetadataId, GspMetadata metadata, CustomizationService service) + { + if (refMetadataId==null || "".equals(refMetadataId)) + { + return; + } + for (MetadataReference metadataReference : metadata.getRefs()) { + if (refMetadataId.equals(metadataReference.getDependentMetadata().getId())) { + return; + } + } +// CustomizationService refService =SpringBeanUtils.getBean(CustomizationService.class); + GspMetadata refMetaData= MetadataUtil.getCustomMetadata(refMetadataId); + if(refMetaData==null){ + throw new RuntimeException(String.format("编号为:%1$s,名称为:%2$s,ID为:%3$s的VO元数据在构造依赖的元数据关系时,未找到ID值为:%4$s的元数据,请确认依赖的元数据是否部署到环境中!", + vm.getCode(),vm.getName(),vm.getID(),refMetadataId)); + } + MetadataReference metadataReference = new MetadataReference(); + metadataReference.setMetadata(metadata.getHeader()); + metadataReference.setDependentMetadata(refMetaData.getHeader()); + metadata.getRefs().add(metadataReference); + } + + public List getConstraint(GspMetadata metadata) + { + if(metadata.getRefs()!=null){ + metadata.getRefs().clear(); + } + buildMetadataReference(metadata); + List list = new ArrayList<>(); + if (metadata.getRefs() != null && metadata.getRefs().size() > 0) + { + for (MetadataReference item : metadata.getRefs()) + { + list.add(item); + } + } + return list; + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/SimplifyVoBeforeSavedToDB.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/SimplifyVoBeforeSavedToDB.java new file mode 100644 index 0000000000000000000000000000000000000000..ce320e2002258a8c39b34cedb9e6f31cfde6b165 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/SimplifyVoBeforeSavedToDB.java @@ -0,0 +1,42 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.service; + +/*import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.common.Utils; +import com.inspur.edp.metadata.rtcustomization.spi.MetadataBeforeSaveToDBExtend; +import com.inspur.edp.formserver.vmmanager.ContentSerializer; + +public class SimplifyVoBeforeSavedToDB implements MetadataBeforeSaveToDBExtend { + + public String execute(GspMetadata gspMetadata){ + ContentSerializer serializer = new ContentSerializer(); + JsonNode jsonNode = serializer.Serialize(gspMetadata.getContent()); + ObjectMapper mapper = Utils.getMapper(); + String mdValue; + try { + mdValue = mapper.writeValueAsString(jsonNode); + }catch (JsonProcessingException e){ + throw new RuntimeException("序列化失败,元数据id:"+gspMetadata.getHeader().getId()); + } + return mdValue; + } + +}*/ diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/UpdateVariableWithUdtService.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/UpdateVariableWithUdtService.java new file mode 100644 index 0000000000000000000000000000000000000000..b84f2aa14fce964c6c8233b12673ff171226fd36 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/UpdateVariableWithUdtService.java @@ -0,0 +1,92 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.service; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.cef.designtime.api.json.Variable.CommonVariableDeserializer; +import com.inspur.edp.cef.designtime.api.json.Variable.CommonVariableSerializer; +import com.inspur.edp.cef.designtime.api.variable.CommonVariable; +import com.inspur.edp.formserver.viewmodel.util.UpdateVoVariableUtil; +import com.inspur.edp.formserver.vmmanager.exception.VmManagerException; +import com.inspur.edp.lcm.metadata.api.IMetadataContent; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.service.RefCommonService; +import com.inspur.edp.udt.designtime.api.entity.UnifiedDataTypeDef; +import io.iec.edp.caf.commons.exception.ExceptionLevel; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +public class UpdateVariableWithUdtService { + private String errorCode = "UpdateVariableWithUdtService"; + + public static UpdateVariableWithUdtService getInstance() { + + return new UpdateVariableWithUdtService(); + } + + /** + 根据选中的udt元数据,更新多值udt字段信息 + 更新ChildElements,Mapping + 说明:若为字段上选择udt,所有属性带出;若为加载更新,则仅更新使用方式为【约束】的属性。 + + @return 更新后字段的json序列化 + */ + public String updateVariableWithRefUdt(String refUdtId, String path, String udtElementJson, boolean isFirstChoose) + { + RefCommonService metadataService = SpringBeanUtils.getBean(RefCommonService.class); + + GspMetadata refUdtMetadata = metadataService.getRefMetadata(refUdtId); + + CommonVariable commonVariable; + try { + commonVariable= getMapper().readValue(udtElementJson,CommonVariable.class); + } catch (JsonProcessingException e) { + throw new RuntimeException("udt字段反序列化失败!"); + } + + IMetadataContent content = refUdtMetadata.getContent(); + if (content instanceof UnifiedDataTypeDef) + { + UpdateVoVariableUtil util = new UpdateVoVariableUtil(); + util.UpdateElementWithRefUdt(commonVariable, (UnifiedDataTypeDef) content, isFirstChoose); + } + else + { + throw new VmManagerException("",errorCode, "未定义的业务字段元数据类型。",null, ExceptionLevel.Error,false); + } + + String eleJson; + try { + eleJson=getMapper().writeValueAsString(commonVariable); + } catch (JsonProcessingException e) { + throw new RuntimeException("udt字段序列化失败!"); + } + return eleJson; + } + + private ObjectMapper getMapper(){ + + ObjectMapper mapper=new ObjectMapper(); + SimpleModule module=new SimpleModule(); + module.addDeserializer(IGspCommonField.class, new CommonVariableDeserializer()); + module.addSerializer(IGspCommonField.class,new CommonVariableSerializer()); + mapper.registerModule(module); + return mapper; + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/UpdateVirtualVoElementWithUdtService.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/UpdateVirtualVoElementWithUdtService.java new file mode 100644 index 0000000000000000000000000000000000000000..f291c3e180840075c6d0a2e0d3d9a2dafa87e3c3 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/UpdateVirtualVoElementWithUdtService.java @@ -0,0 +1,105 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.service; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.cef.designtime.api.util.MetadataUtil; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.formserver.viewmodel.json.element.ViewElementDeserializer; +import com.inspur.edp.formserver.viewmodel.json.element.ViewElementSerializer; +import com.inspur.edp.formserver.viewmodel.util.UpdateVoElementUtil; +import com.inspur.edp.formserver.vmmanager.exception.VmManagerException; +import com.inspur.edp.lcm.metadata.api.IMetadataContent; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.service.RefCommonService; +import com.inspur.edp.udt.designtime.api.entity.UnifiedDataTypeDef; +import io.iec.edp.caf.commons.exception.ExceptionLevel; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +public class UpdateVirtualVoElementWithUdtService { + private String errorCode = "UpdateVirtualVoWithUdtService"; + + public static UpdateVirtualVoElementWithUdtService getInstance() { + return new UpdateVirtualVoElementWithUdtService(); + } + + /// + /// 根据选中的udt元数据,更新多值udt字段信息 + /// 更新ChildElements,Mapping + /// 说明:若为字段上选择udt,所有属性带出;若为加载更新,则仅更新使用方式为【约束】的属性。 + /// + /// 更新后字段的json序列化 + public String UpdateVariableWithRefUdt(String refUdtId, String path, String udtElementJson, boolean isFirstChoose) + { + RefCommonService metadataService = SpringBeanUtils.getBean(RefCommonService.class); + + GspMetadata refUdtMetadata = metadataService.getRefMetadata(refUdtId); + return UpdateVariable(refUdtMetadata,udtElementJson,isFirstChoose); + } + + /** + * 运行时选择选中的udt元数据,更新udt信息 + * @param refUdtId + * @param path + * @param udtElementJson + * @param isFirstChoose + * @return + */ + public String UpdateVariableWithRefUdtRT(String refUdtId, String path, String udtElementJson, boolean isFirstChoose) { + GspMetadata refUdtMetadata = MetadataUtil.getCustomMetadata(refUdtId); + return UpdateVariable(refUdtMetadata,udtElementJson,isFirstChoose); + } + + public String UpdateVariable(GspMetadata refUdtMetadata, String udtElementJson, boolean isFirstChoose) { + GspViewModelElement element; + try { + element= getMapper().readValue(udtElementJson, GspViewModelElement.class) ; + } catch (JsonProcessingException e) { + throw new RuntimeException("GspViewModel反序列化失败!"); + } + IMetadataContent content = refUdtMetadata.getContent(); + if (content instanceof UnifiedDataTypeDef) + { + UpdateVoElementUtil util = new UpdateVoElementUtil(); + util.UpdateElementWithRefUdt(element, (UnifiedDataTypeDef) content, isFirstChoose); + } + else + { + throw new VmManagerException("",errorCode, "未定义的业务字段元数据类型。",null, ExceptionLevel.Error,false); + } + String eleJson; + try { + eleJson=getMapper().writeValueAsString(element); + } catch (JsonProcessingException e) { + throw new RuntimeException("GspViewModel序列化失败!"); + } + return eleJson; + } + + private ObjectMapper getMapper() { + + ObjectMapper mapper = new ObjectMapper(); + SimpleModule module = new SimpleModule(); + module.addDeserializer(IGspCommonField.class, new ViewElementDeserializer()); + module.addSerializer(IGspCommonField.class, new ViewElementSerializer()); + mapper.registerModule(module); + return mapper; + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/VOSavedToDBExtend.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/VOSavedToDBExtend.java new file mode 100644 index 0000000000000000000000000000000000000000..39820942691138f0a8ab2edc4e94036a45396840 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/VOSavedToDBExtend.java @@ -0,0 +1,105 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.service; + +import com.inspur.edp.bff.engine.core.cache.BffEngineCacheService; +import com.inspur.edp.cef.entity.config.CefConfig; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.extendinfo.entity.GspVoExtendInfo; +import com.inspur.edp.formserver.viewmodel.extendinfo.entity.VoConfigCollectionInfo; +import com.inspur.edp.formserver.voextendinfo.server.api.GspVoExtendInfoRpcService; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.entity.ProcessMode; +import com.inspur.edp.metadata.rtcustomization.spi.MetadataSavedToDBExtend; +import io.iec.edp.caf.boot.context.CAFContext; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class VOSavedToDBExtend implements MetadataSavedToDBExtend { + + private static final Logger logger = LoggerFactory.getLogger(VOSavedToDBExtend.class); + @Override + public void execute(GspMetadata gspMetadata, ProcessMode processMode) { + logger.info("执行元数据扩展,ID:"+gspMetadata.getHeader().getId()+"....name:"+gspMetadata.getHeader().getName()); + GspVoExtendInfoRpcService service = SpringBeanUtils.getBean(GspVoExtendInfoRpcService.class); + + if(!"GSPViewModel".equals(gspMetadata.getHeader().getType())) { + if(gspMetadata.getHeader().getType()==null||"".equals(gspMetadata.getHeader().getType())){ + logger.error("元数据Type为空,更新config信息失败!ID:"+gspMetadata.getHeader().getId()+"....name:"+gspMetadata.getHeader().getName()); + } + return; + } + if(gspMetadata.getContent() == null){ + logger.error("参数元数据content为null!!!ID:"+gspMetadata.getHeader().getId()+"....name:"+gspMetadata.getHeader().getName()); + } + GspVoExtendInfo existed = service.getVoExtendInfo(((GspViewModel)gspMetadata.getContent()).getId()); + if(existed != null) { + logger.info("更新configInfo前删除重复,ID:"+gspMetadata.getHeader().getId()+"....name:"+gspMetadata.getHeader().getName()); + service.deleteVoExtendInfo(((GspViewModel)gspMetadata.getContent()).getId()); + } + BffEngineCacheService.remove(gspMetadata.getHeader().getId()); + + try { + List infos = new ArrayList(); + GspViewModel vo = (GspViewModel) gspMetadata.getContent(); + GspVoExtendInfo info = buildVoExtendInfo(processMode, vo, existed); + if (vo.getGeneratedConfigID()!=null) { + infos.add(info); + logger.info("开始更新VO元数据configInfo,ID:"+gspMetadata.getHeader().getId()+"....configid:"+info.getConfigId()); + service.saveGspVoExtendInfos(infos); + }else{ + logger.error("ConfigId生成为null,更新config信息失败!!!!ID:"+gspMetadata.getHeader().getId()+"....name:"+gspMetadata.getHeader().getName()+"....code:"+vo.getCode()); + } + } catch (Exception e) { + logger.error("部署VO元数据失败!!!!ID:"+gspMetadata.getHeader().getId()+"....name:"+gspMetadata.getHeader().getName()+"...异常信息:"+e); + throw new RuntimeException("部署解析VO元数据出错:", e); + } + } + + private GspVoExtendInfo buildVoExtendInfo(ProcessMode processMode, GspViewModel vo, GspVoExtendInfo existing) { + GspVoExtendInfo info = new GspVoExtendInfo(); + VoConfigCollectionInfo voConfigCollectionInfo = getBffConfigCollectionInfo(vo); + voConfigCollectionInfo.setProjectType(processMode); + info.setVoConfigCollectionInfo(voConfigCollectionInfo); + info.setId(vo.getID()); + info.setConfigId(vo.getGeneratedConfigID());; + info.setCreatedOn(Date.from(CAFContext.current.getCurrentDateTime().toInstant())); + info.setLastChangedOn(Date.from(CAFContext.current.getCurrentDateTime().toInstant())); + if (!vo.getIsVirtual()) { + info.setBeSourceId(vo.getMapping().getTargetMetadataId()); + } + if (existing != null) { + info.setLastChangedOn(Date.from(CAFContext.current.getCurrentDateTime().toInstant())); + } + return info; + } + + private VoConfigCollectionInfo getBffConfigCollectionInfo(GspViewModel vo) { + CefConfig cefConfig = new CefConfig(); + cefConfig.setID(vo.getGeneratedConfigID()); + cefConfig.setDefaultNamespace(vo.getCoreAssemblyInfo().getDefaultNamespace().toLowerCase()); + VoConfigCollectionInfo voConfigCollectionInfo = new VoConfigCollectionInfo(); + voConfigCollectionInfo.setConfig(cefConfig); + return voConfigCollectionInfo; + } + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/VmManagerService.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/VmManagerService.java new file mode 100644 index 0000000000000000000000000000000000000000..fdd41178a70d4370a2f1355cd25cc6a27fa2d1ff --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/VmManagerService.java @@ -0,0 +1,172 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.service; + +import com.inspur.edp.bef.component.detailcmpentity.udtdetermination.UDTDtmComponent; +import com.inspur.edp.bef.component.detailcmpentity.vm.VMComponent; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.util.ViewModelUtils; +import com.inspur.edp.formserver.vmmanager.createvmmetadata.ComponentGenerator; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.JavaCodeFileGenerator; +import com.inspur.edp.formserver.vmmanager.generatacmpcode.genutils.VoCommonUtilsGenerator; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.service.MetadataService; +import com.inspur.edp.lcm.metadata.api.service.RefCommonService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +import java.util.ArrayList; + +public class VmManagerService { + public static void saveMetadata(GspMetadata metadata, String metadataPath) + { + SpringBeanUtils.getBean(MetadataService.class).saveMetadata(metadata, ViewModelUtils.getCombinePath(metadataPath, metadata.getHeader().getFileName())); + } + + + +//ORIGINAL LINE: public static ArrayList generateComponent(GspMetadata metadata, string metadataPath, bool isSave = true) + public static ArrayList generateComponent(GspMetadata metadata, String metadataPath, boolean isSave) + { + GspViewModel vm = (GspViewModel)((metadata.getContent() instanceof GspViewModel) ? metadata.getContent() : null); + String bizObjectID = metadata.getHeader().getBizobjectID(); + return ComponentGenerator.getInstance().GenerateComponent(vm, metadataPath, bizObjectID); + //if (isSave) + // saveMetadata(metadata, metadataPath); + } + + public static String getComponentJavaClassName(String componentEntityId) + { + RefCommonService lcmDtService = SpringBeanUtils.getBean(RefCommonService.class); + GspMetadata metadata = lcmDtService.getRefMetadata(componentEntityId); + String javaClassName = null; + if (metadata.getContent() instanceof VMComponent) + { + javaClassName = ((VMComponent)metadata.getContent()).getVmMethod().getClassName(); + } + if (metadata.getContent() instanceof UDTDtmComponent) + { + javaClassName = ((UDTDtmComponent)metadata.getContent()).getUdtDtmMethod().getClassName(); + } + if (javaClassName == null || !javaClassName.contains(".")) + { + throw new RuntimeException("没有找到构件,构件ID为:" + componentEntityId); + } + return javaClassName; + } + + //public static bool IsMetaProjJava(string metadataPath) + //{ + // string ProjectPath = metadataPath; + // ProjectPath = + // ProjectPath.Remove(ProjectPath.LastIndexOf("/"), ProjectPath.Length - (ProjectPath.LastIndexOf("/"))); + + // var service = ServiceManager.GetService(); + // var projInfo = service.GetGspProjectInfo(ProjectPath); + + // if ((projInfo.ProjectExtendItem != null) && (projInfo.ProjectExtendItem.Count > 0)) + // { + // if (projInfo.ProjectExtendItem[0].TryGetValue("codelanguage", out var result) && result.Equals("java")) + // { + // return true; + // } + // } + + // return false; + + // } +// * +// * actionList 生成构件的动作编号集合(初次生成构件才生成构件代码) +// + public static void generateComponentCode(GspMetadata metadata, String metadataPath, ArrayList actionList) + { + + String ProjectPath = metadata.getRelativePath(); + + new JavaCodeFileGenerator(metadata).generate(actionList); + new VoCommonUtilsGenerator((GspViewModel) metadata.getContent(),metadata).generateCommonUtils(); + } + + + /** + 判断当前是否创建Java模板,创建返回值为true,不能创建返回flase; + + @param ProjectPath + @return + */ + public static boolean creatJavaModule(String ProjectPath) + { + boolean moduleCreated = true; +// +// MetadataService service =SpringBeanUtils.getBean(MetadataService.class); +// GspProject projInfo = service.getGspProjectInfo(ProjectPath); +// +// +// if ((projInfo.getProjectExtendItem() != null) && (projInfo.getProjectExtendItem().size() > 0)) +// { +// if ((projInfo.getProjectExtendItem().get(0).containsKey("codelanguage")) && (result.Contains("java"))) +// { +// moduleCreated = true; +// } +// } + return moduleCreated; + } + + + /** + 判断当前是否创建donet模板,创建返回值为true,不能创建返回flase; + + @param + @return + */ +// public static boolean CreatDotnetModule(String ProjectPath) +// { +// boolean moduleCreated = false; +// +// // ProjectPath = ProjectPath.Remove(ProjectPath.LastIndexOf("/"), ProjectPath.Length - (ProjectPath.LastIndexOf("/"))); +// var service = ServiceManager.GetService(); +// var projInfo = service.GetGspProjectInfo(ProjectPath); +// +// if ((projInfo.ProjectExtendItem != null) && (projInfo.ProjectExtendItem.size() > 0)) +// { +// if ((projInfo.ProjectExtendItem[0].TryGetValue("codelanguage", out var result)) && (!result.Contains("java"))) +// { +// //如果键值对存在并且不存在java字符串(java模版没有生成) +// moduleCreated = true; +// } +// else +// { +// //如果java模版生成,并且检测字符串中有donet +// if (result.Contains("dotnet")) +// { +// moduleCreated = true; +// } +// } +// +// } //如果存储键值list对为空或者键值对不存在) +// else +// { +// moduleCreated = true; +// } +// return moduleCreated; +// } + +// public static void PreBuild(GspMetadata metadata, String metadataPath) +// { +// //VmGeneratorService.PreGenerate(metadataPath, metadata); +// ServiceManager.GetService().GenerateApi(metadataPath); +// } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/WebControllerService.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/WebControllerService.java new file mode 100644 index 0000000000000000000000000000000000000000..ff569780fc489f9248988b0cc3285da0c85a47a7 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/service/WebControllerService.java @@ -0,0 +1,427 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.service; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.deser.std.StringDeserializer; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.databind.node.JsonNodeType; +import com.inspur.edp.bef.bizentity.GspBizEntityElement; +import com.inspur.edp.bef.bizentity.GspBizEntityObject; +import com.inspur.edp.bef.bizentity.GspBusinessEntity; +import com.inspur.edp.bef.bizentity.json.object.BizObjectSerializer; +import com.inspur.edp.cef.designtime.api.IGspCommonDataType; +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.cef.designtime.api.collection.GspAssociationKeyCollection; +import com.inspur.edp.cef.designtime.api.element.GspAssociation; +import com.inspur.edp.cef.designtime.api.element.GspAssociationKey; +import com.inspur.edp.cef.designtime.api.json.element.GspAssoKeyDeserializer; +import com.inspur.edp.das.commonmodel.IGspCommonElement; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.das.commonmodel.collection.GspElementCollection; +import com.inspur.edp.das.commonmodel.entity.element.GspCommonAssociation; +import com.inspur.edp.das.commonmodel.json.element.CmElementDeserializer; +import com.inspur.edp.das.commonmodel.json.element.GspCommonAssociationDeserializer; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.formserver.viewmodel.common.ConvertUtils; +import com.inspur.edp.formserver.viewmodel.common.ViewModelMapping; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementMapping; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementSourceType; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoObjectSourceType; +import com.inspur.edp.formserver.viewmodel.json.element.ViewElementDeserializer; +import com.inspur.edp.formserver.viewmodel.json.element.ViewElementSerializer; +import com.inspur.edp.formserver.viewmodel.json.mapping.GspVoElementMappingDeserializer; +import com.inspur.edp.formserver.viewmodel.json.mapping.GspVoElementMappingSerializer; +import com.inspur.edp.formserver.viewmodel.json.object.ViewObjectDeserializer; +import com.inspur.edp.formserver.viewmodel.json.object.ViewObjectSerializer; +import com.inspur.edp.formserver.viewmodel.util.ViewModelUtils; +import com.inspur.edp.formserver.vmmanager.exception.VmManagerException; +import com.inspur.edp.formserver.vmmanager.util.CheckInfoUtil; +import com.inspur.edp.formserver.vmmanager.validate.model.ViewModelChecker; +import io.iec.edp.caf.commons.exception.ExceptionLevel; +import lombok.var; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static com.inspur.edp.formserver.viewmodel.common.ConvertUtils.toElement; + +public class WebControllerService { + private String EXCEPTIONCODE = "WebControllerService"; + public static WebControllerService getInstance() { + return new WebControllerService(); + } + + public String getBizObject(GspBusinessEntity be, String objid) { + IGspCommonObject bebject = be.getAllObjectList().stream().filter((item)-> item.getID().equals(objid)).findFirst().orElse(null); + + ObjectMapper mapper=new ObjectMapper(); + SimpleModule module =new SimpleModule(); + module.addSerializer(IGspCommonDataType.class,new BizObjectSerializer()); + mapper.registerModule(module); + try { + + String objJson =mapper.writeValueAsString(bebject); + return objJson; + } catch (JsonProcessingException e) { + throw new RuntimeException("GspBizEntityObject序列化失败"+e); + } + } + + /** + * 检查关键字 + * @param jsonObject + */ + public void checkKeywords(String jsonObject) { + if (jsonObject == null || jsonObject.isEmpty()) { + throw new RuntimeException("请传入有效Json对象."); + } + ObjectMapper mapper = new ObjectMapper(); + GspViewModel viewModel = null; + try { + viewModel = mapper.readValue(jsonObject, GspViewModel.class); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + ViewModelChecker.getInstance().check(viewModel); + } + + /** + * 获取虚拟vo关联 + * @param info + * @return + */ + public String getVirtualVoAsso(String info, EntityFunction func) { + ObjectMapper mapper=new ObjectMapper(); + try { + JsonNode node=mapper.readTree(info); + String path = node.get("path").textValue(); + String refModelPkgName=null; + if(!CheckInfoUtil.checkNull(node.get("refModelPkgName"))){ + refModelPkgName=node.get("refModelPkgName").textValue(); + } + String refModelId = node.get("refModelId").textValue(); + String voAssoJson = node.get("voAsso").textValue(); + String refElementIdsJson = node.get("refElementIds").textValue(); + String voElementLabelId = node.get("voElementLabelId").textValue(); + + String errorMessage=checkElementLabelId(voElementLabelId); + if (ViewModelUtils.checkNull(errorMessage)) + { + throw new VmManagerException("",EXCEPTIONCODE, errorMessage,null, ExceptionLevel.Error,false); + } + + var originVoAsso = readAsso(voAssoJson, new ViewElementDeserializer()); + var refElementIds=readIdList(refElementIdsJson); + + if (refElementIds.size() == 0) + { + throw new VmManagerException("",EXCEPTIONCODE, "当前未选中关联带出字段。",null,ExceptionLevel.Error,false); + } + + var originVoRefElements = originVoAsso.getRefElementCollection(); + ArrayList bizRefElements = func.getBizEntity(path,refModelPkgName,refModelId).getAllElementList(true); + GspElementCollection refElements = new GspElementCollection(null); + + for (var refElementId : refElementIds) + { + IGspCommonElement voRefElement= (IGspCommonElement) originVoRefElements.stream().filter(item->item.getRefElementId().equals(refElementId)).findFirst().orElse(null); + if (!(voRefElement instanceof GspViewModelElement)) + { + IGspCommonElement beRefElement=bizRefElements.stream().filter(item-> item + .getID().equals(refElementId)).findFirst().orElse(null); + if (!(beRefElement instanceof GspBizEntityElement)) + { + throw new VmManagerException("",EXCEPTIONCODE, "be中无Id='{"+refElementId+"}'的关联带出字段。",null,ExceptionLevel.Error,false); + } + // 虚拟字段的关联带出字段也是虚拟字段 + var newVoRefElement = getVirtualRefElement((GspBizEntityElement) beRefElement, voElementLabelId); + refElements.add(newVoRefElement); + } + else + { + refElements.add(voRefElement); + } + } + return writeViewElementsJson(refElements); + } catch (JsonProcessingException e) { + throw new RuntimeException("VirtualAssociation序列化失败"+e); + } + } + + + private String checkElementLabelId(String voElementLabelId) { + + String message = ""; + if (ViewModelUtils.checkNull(voElementLabelId) || ViewModelUtils.checkNull(voElementLabelId.trim())) + { + message = "当前字段的 [标签] 属性不允许为空! "; + + } + else + { + // LabelID在表单和报表中用作XML的标签,要限制非法字符 + String regex="\"^[A-Za-z_][A-Za-z_\\d-.]*$\""; + Pattern pattern=Pattern.compile(regex); + Matcher matcher=pattern.matcher(voElementLabelId.trim()); + boolean isMatch=matcher.matches(); + if (!isMatch) + { + message = "当前字段的 [标签] 属性\n必须以英文字母或下划线开头, 并且只能由英文字母、数字、下划线(_)、连线(-)和点(.)组成! "; + } + } + return message; + } + + public GspCommonAssociation readAsso(String beAssoJson, CmElementDeserializer cmElementDeserializer) { + ObjectMapper mapper=new ObjectMapper(); + SimpleModule module=new SimpleModule(); + GspCommonAssociationDeserializer associationDeserializer=new GspCommonAssociationDeserializer(cmElementDeserializer); + module.addDeserializer(GspAssociation.class,associationDeserializer); + mapper.registerModule(module); + try { + GspCommonAssociation association= (GspCommonAssociation) mapper.readValue(beAssoJson,GspAssociation.class); + return association; + } catch (JsonProcessingException e) { + throw new RuntimeException("GspCommonAssociation反序列化失败"+e); + } + } + + public List readIdList(String beEleIds) { + ObjectMapper mapper = new ObjectMapper(); + SimpleModule module=new SimpleModule(); + module.addDeserializer(String.class,new StringDeserializer()); + mapper.registerModule(module); + JavaType type = mapper.getTypeFactory(). + constructCollectionType(List.class, String.class); + List ids=null; + try { + ids=mapper.readValue(beEleIds,type); + } catch (JsonProcessingException e) { + throw new RuntimeException("id列表反序列化失败"+e); + } + return ids; + } + + public GspViewModelElement getVirtualRefElement(GspBizEntityElement beElement,String voElementLabelId) + { + GspViewModelElement ele = ConvertUtils.toElement(beElement, null, null, GspVoElementSourceType.BeElement); + ele.setID(UUID.randomUUID().toString()); + ele.setIsVirtual(true); + ele.setIsVirtualViewElement(true); + ele.setMapping(null); + ele.setLabelID(voElementLabelId+"_"+beElement.getLabelID()); + ele.setIsRefElement(true); + ele.setRefElementId(beElement.getID()); + // 20200319-关联带出字段必填应为false + // Bug 305714: 字段非必填,关联出的字段必填,生成表单时显示关联出的字段不应该为必填 + ele.setIsRequire(false); + if (ele.getHasAssociation()) + { + for (IGspCommonField item : ele.getChildAssociations().get(0).getRefElementCollection()) + { + ((GspViewModelElement)item).setIsVirtual(true); + ((GspViewModelElement)item).setIsVirtualViewElement(true); + ((GspViewModelElement) item).setMapping(null); + } + } + return ele; + } + + public String writeViewElementsJson(GspElementCollection voElements) { + ObjectMapper mapper=new ObjectMapper(); + SimpleModule module =new SimpleModule(); + module.addSerializer(IGspCommonField.class,new ViewElementSerializer()); + module.addDeserializer(IGspCommonField.class,new ViewElementDeserializer()); + mapper.registerModule(module); + try { + String vmJson=mapper.writeValueAsString(voElements); + return vmJson; + } catch (JsonProcessingException e) { + throw new RuntimeException("vo字段序列化异常"+e); + } + } + + public String convertBeElementIdsToVmElements(String convertEleInfo, EntityFunction func) { + ObjectMapper mapper=new ObjectMapper(); + try { + JsonNode node= mapper.readTree(convertEleInfo); + String beEleIds = node.get("beEleIds").textValue(); + String bePkgName=null; + if(!CheckInfoUtil.checkNull(node.get("bePkgName"))){ + bePkgName=node.get("bePkgName").textValue(); + } + + String beId = node.get("beId").textValue(); + String objId =node.get("objId").textValue(); + List beEleIdList = readIdList(beEleIds); + + GspBusinessEntity be= func.getBizEntity(null, bePkgName, beId); + GspBizEntityObject obj = (GspBizEntityObject) be.findObjectById(objId); + GspElementCollection voElements = convertPartialElementsToVoElements(obj,beEleIdList, bePkgName,beId, + GspVoElementSourceType.BeElement); + return writeViewElementsJson(voElements); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + public String addBizObject(String addObjInfo, EntityFunction func) { + ObjectMapper mapper=getViewObjectMapper(); + try { + JsonNode node= mapper.readTree(addObjInfo); + String keysJson = node.get("keysJson").textValue(); + String beId = node.get("beId").textValue(); + String bePkgName=null; + if(!CheckInfoUtil.checkNull(node.get("bePkgName"))){ + bePkgName=node.get("bePkgName").textValue(); + } + String parentObjIDElementId = node.get("parentObjIDElementId").textValue(); + String bizObjCode = node.get("bizObjCode").textValue(); + + + // ①获取新增对象; + GspBusinessEntity be = func.getBizEntity(null, null, beId); + GspBizEntityObject bizObject = (GspBizEntityObject) be.findObjectByCode(bizObjCode); + if (bizObject == null) + { + throw new VmManagerException("",EXCEPTIONCODE, "业务实体{"+be.getName()+"}中没有编号为{"+bizObjCode+"}的对象。",null,ExceptionLevel.Error,false); + } + bizObject.getKeys().clear(); + bizObject.getContainChildObjects().clear(); + var keys = readGspGspAssociationKeyCollection(keysJson); + if (keys != null && keys.getCount()> 0) + { + for (GspAssociationKey key : keys) + { + bizObject.getKeys().add(key); + } + } + + // ②转换为voObject + GspViewObject newViewObject = ConvertUtils.toObject(bizObject, bePkgName, beId, parentObjIDElementId, + GspVoObjectSourceType.BeObject); + + return mapper.writeValueAsString(newViewObject); + } catch (JsonProcessingException e) { + throw new RuntimeException("GspAssociation序列化失败"+e); + } + } + + private ObjectMapper getViewObjectMapper(){ + ObjectMapper mapper=new ObjectMapper(); + SimpleModule module =new SimpleModule(); + module.addSerializer(IGspCommonDataType.class,new ViewObjectSerializer()); + module.addDeserializer(IGspCommonDataType.class,new ViewObjectDeserializer()); + mapper.registerModule(module); + return mapper; + } + + //TODO 此处需要确认 + private GspAssociationKeyCollection readGspGspAssociationKeyCollection(String keysJson) { + + GspAssociationKeyCollection keys = new GspAssociationKeyCollection(); + + ObjectMapper mapper=new ObjectMapper(); + SimpleModule module=new SimpleModule(); + module.addDeserializer(GspAssociationKey.class,new GspAssoKeyDeserializer()); + mapper.registerModule(module); + try { + JsonNode nodeList=mapper.readTree(keysJson); + if(nodeList.getNodeType()== JsonNodeType.ARRAY) + for(JsonNode item:nodeList){ + keys.add(mapper.readValue(item.toString(),GspAssociationKey.class)); + } + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + +// if (JToken.Parse(keysJson) is JArray jArray) +// { +// for (int i = 0; i < jArray.Count; i++) +// { +// JToken o = jArray[i]; +// GspAssociationKey con = SerializerUtils.ReadObject(o.CreateReader()); +// keys.Add(con); +// } +// } + return keys; + } + + private GspElementCollection convertPartialElementsToVoElements(IGspCommonObject co, List eleIdList, String pkgName, String metaId, GspVoElementSourceType sourceType ) + { + GspElementCollection voElements = new GspElementCollection(null); + if (eleIdList != null && eleIdList.size() > 0) + { + for (String eleId : eleIdList) + { + GspBizEntityElement bizElement = (GspBizEntityElement) co.findElement(eleId); + GspViewModelElement voElement = toElement(bizElement, pkgName, metaId, sourceType); + voElement.getMapping().setTargetObjectId(co.getID()); + voElements.add(voElement); + } + } + return voElements; + } + + public GspVoElementMapping readVoEleMapping(String voEleMappingJson) { + ObjectMapper mapper=new ObjectMapper(); + SimpleModule module =new SimpleModule(); + module.addSerializer(ViewModelMapping.class,new GspVoElementMappingSerializer()); + module.addDeserializer(ViewModelMapping.class,new GspVoElementMappingDeserializer()); + mapper.registerModule(module); + try { + GspVoElementMapping voElemapping= (GspVoElementMapping) mapper.readValue(voEleMappingJson,ViewModelMapping.class); + if(voElemapping==null){ + throw new VmManagerException("",EXCEPTIONCODE, "找不到当前vo字段映射的映射关系。",null,ExceptionLevel.Error,false); + } + return voElemapping; + } catch (JsonProcessingException e) { + throw new RuntimeException("VoElementMapping反序列化失败"+e); + } + } + + public GspCommonAssociation getBizAsso(String path, GspVoElementMapping voEleMapping, + String assoId, EntityFunction func) { + GspBusinessEntity be = func.getBizEntity(path, voEleMapping.getTargetMetadataPkgName(), voEleMapping.getTargetMetadataId()); + String bizEleId = voEleMapping.getTargetElementId(); + GspBizEntityElement bizEle = (GspBizEntityElement) be.findElementById(bizEleId); + if (bizEle == null) + { + throw new VmManagerException("",EXCEPTIONCODE, "找不到当前vo字段映射的be字段, 字段id={bizEleId}",null,ExceptionLevel.Error,false); + } + if (bizEle.getChildAssociations().getCount() == 0) + { + throw new VmManagerException("",EXCEPTIONCODE, "当前vo字段映射的be字段, 不是关联字段。",null,ExceptionLevel.Error,false); + + } + GspAssociation association= bizEle.getChildAssociations().stream().filter(item->item.getId().equals(assoId)).findFirst().orElse(null); + if (!(association instanceof GspCommonAssociation)) + { + throw new VmManagerException("",EXCEPTIONCODE, "找不到当前vo关联映射的be关联, 关联id={assoId}。",null,ExceptionLevel.Error,false); + } + return (GspCommonAssociation) association; + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/CheckComUtil.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/CheckComUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..b5b8bf22347806f1f5cfe647edeeff4a781a0ac2 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/CheckComUtil.java @@ -0,0 +1,28 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.util; + +import lombok.Data; + +@Data +public class CheckComUtil { + + private String actionName = ""; + private String type = ""; + private String action = ""; + private String checkInfo = ""; +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/CheckInfoUtil.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/CheckInfoUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..6894ac2bb372c1511d46476bbed1e826a3a6a739 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/CheckInfoUtil.java @@ -0,0 +1,64 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.util; + +import java.io.File; +import java.nio.file.Paths; + +public class CheckInfoUtil { + + /** + * 检查必填项是否为空 + * + * @param propName + * @param propValue + */ + public static void checkNessaceryInfo(String propName, Object propValue) { + if (checkNull(propValue)) { + throw new RuntimeException(propName + "不可为空"); + } + } + + + /** + * 检查空对象,空字符串 + * + * @param propValue + * @return + */ + public static boolean checkNull(Object propValue) { + if (propValue == null) { + return true; + } + if (propValue.getClass().isAssignableFrom(String.class)) { + String stringValue = (String) propValue; + if (stringValue == null || stringValue.isEmpty()) { + return true; + } + } + return false; + } + + public static String getCombinePath(String path1, String path2) { + String path = Paths.get(path1).resolve(path2).toString(); + return handlePath(path); + } + + public static String handlePath(String path) { + return path.replace("\\", File.separator); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/ExpressionVariableCheckUtil.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/ExpressionVariableCheckUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..c58538d480a0feaeb5baf5e79cee2c8d9ffd3eea --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/ExpressionVariableCheckUtil.java @@ -0,0 +1,140 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.util; + +import com.google.common.collect.Lists; + +import java.util.List; + +/** + * 用于校验表达式默认值的工具类 + */ +public class ExpressionVariableCheckUtil { + /** + * 上一年 + */ + private static final String LAST_YEAR = "GetSessionValue(\\\"LastYear\\\")"; + + /** + * 上一月 + */ + private static final String LAST_MONTH = "GetSessionValue(\\\"LastMonth\\\")"; + + /** + * 当前年 + */ + private static final String CURRENT_YEAR = "GetSessionValue(\\\"CurrentYear\\\")"; + + /** + * 当前月 + */ + private static final String CURRENT_MONTH = "GetSessionValue(\\\"CurrentMonth\\\")"; + + /** + * 当前时间 + */ + private static final String CURRENT_DATE_TIME = "GetSessionValue(\\\"CurrentDateTime\\\")"; + + /** + * 登陆时间 + */ + private static final String LOGIN_TIME = "GetSessionValue(\\\"LoginTime\\\")"; + + /** + * 登录用户ID + */ + private static final String USER_ID = "GetSessionValue(\\\"UserId\\\")"; + + /** + * 登陆用户编号 + */ + private static final String USER_CODE = "GetSessionValue(\\\"UserCode\\\")"; + + /** + * 登陆用户名称 + */ + private static final String USER_NAME = "GetSessionValue(\\\"UserName\\\")"; + + /** + * 系统组织标识 + */ + private static final String SYS_ORG_ID = "GetSessionValue(\\\"SysOrgId\\\")"; + + /** + * 系统组织编号 + */ + private static final String SYS_ORG_CODE = "GetSessionValue(\\\"SysOrgCode\\\")"; + + /** + * 系统组织名称 + */ + private static final String SYS_ORG_NAME = "GetSessionValue(\\\"SysOrgName\\\")"; + + /** + * 当前语言 + */ + private static final String LANGUAGE = "GetSessionValue(\\\"Language\\\")"; + + /** + * 日期型表达式集合 + */ + private static final List dateList = + Lists.newArrayList(LOGIN_TIME, CURRENT_DATE_TIME); + + /** + * 文本类型表达式集合 + */ + private static final List textList = + Lists.newArrayList(USER_ID, USER_CODE, USER_NAME, SYS_ORG_ID, SYS_ORG_CODE, SYS_ORG_NAME, LANGUAGE, + CURRENT_MONTH, CURRENT_YEAR, LAST_MONTH, LAST_YEAR); + + /** + * 判断表达式是否是日期类型x + * + * @param expression 表达式 + * @return 是否日期类型 + */ + public static boolean isDateType(String expression) { + if (CheckInfoUtil.checkNull(expression)) { + return false; + } + for (String dateString : dateList) { + if (expression.contains(dateString)) { + return true; + } + } + return false; + } + + /** + * 判断表达式是否是文本类型 + * + * @param expression 表达式 + * @return 是否文本类型 + */ + public static boolean isTextType(String expression) { + if (CheckInfoUtil.checkNull(expression)) { + return false; + } + for (String dateString : textList) { + if (expression.contains(dateString)) { + return true; + } + } + return false; + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/PushActionChangeSet.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/PushActionChangeSet.java new file mode 100644 index 0000000000000000000000000000000000000000..5d0859ded69af7027b018310d61ef28e97841fdc --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/PushActionChangeSet.java @@ -0,0 +1,218 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.util; + +import com.inspur.edp.bef.bizentity.common.BizEntityJsonConst; +import com.inspur.edp.bef.bizentity.pushchangesetargs.ActionChangeDetail; +import com.inspur.edp.bef.bizentity.util.StringUtil; +import com.inspur.edp.das.commonmodel.json.CommonModelNames; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.IViewModelParameter; +import com.inspur.edp.formserver.viewmodel.action.IViewModelParameterCollection; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelParameter; +import com.inspur.edp.formserver.viewmodel.collection.VMActionCollection; +import com.inspur.edp.formserver.viewmodel.common.VMCollectionParameterType; +import com.inspur.edp.formserver.viewmodel.common.VMParameterType; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +public class PushActionChangeSet { + + public PushActionChangeSet() { + } + + /** + * 根据动作ID获取自定义动作 + * @param metadata + * @param id + * @return + */ + public ViewModelAction getMgrActionByID(GspMetadata metadata,String id) { + GspViewModel entity = (GspViewModel)metadata.getContent(); + if(entity.getActions() == null | entity.getActions().size() == 0) { + return null; + } + List result = entity.getActions().stream().filter(action -> + action.getMapping() != null && + !StringUtil.checkNull(action.getMapping().getTargetObjId()) && + action.getMapping().getTargetObjId().equals(id)).collect( + Collectors.toList()); + + if(result.size() < 1) + return null; + return result.get(0); + } + + /** + * 新增自定义动作 + * @param metadata + * @param action + */ + public void AddMgrAction(GspMetadata metadata, ViewModelAction action) { + VMActionCollection vmActions = ((GspViewModel)metadata.getContent()).getActions(); + if (vmActions.stream().anyMatch(item -> item.getCode().equals(action.getCode()))) { + return; + } + vmActions.add(action); + } + + /** + * 新增动作参数 + * @param orgAction + * @param refAction + */ + public void addMgrActionParam(ViewModelAction orgAction, ViewModelAction refAction, String parameterCode) { + if(refAction.getParameterCollection() == null || refAction.getParameterCollection().size() == 0) { + return; + } + IViewModelParameterCollection orgParams = orgAction.getParameterCollection(); + + if(orgParams.stream().anyMatch(item -> ((ViewModelParameter) item).getParamCode().equals(parameterCode))) { + return; + } + + refAction.getParameterCollection().forEach(item -> { + if(((ViewModelParameter) item).getParamCode().equals(parameterCode)) { + orgAction.getParameterCollection().add(item); + } + }); + } + + + /** + * 修改自定义动作 + * @param destAction + * @param refAction + * @param changeDetail + */ + public void ModifyAction(ViewModelAction destAction, ViewModelAction refAction, ActionChangeDetail changeDetail) { + Map changeInfo = changeDetail.getChangeInfo(); +// String parameterCode = changeDetail.getParameterCode(); + if(destAction == null) { + return; + } + changeInfo.forEach((key,val) -> { + modifyActionPropertyValue(key, val, destAction, refAction, changeDetail); + }); + } + + private void modifyActionPropertyValue(String propertyName, Object propertyValue, ViewModelAction destAction, ViewModelAction refAction, ActionChangeDetail changeDetail) { + if(destAction == null) { + return; + } + String parameterCode = changeDetail.getParameterCode(); + switch (propertyName){ + case CommonModelNames.Code: + destAction.setCode((String) propertyValue); + break; + case BizEntityJsonConst.ReturnValue: + if(refAction == null) { + return; + } + destAction.setReturnValue(refAction.getReturnValue()); + break; + case BizEntityJsonConst.CollectionParameterType: + modifyCollectionParameterType((Integer)propertyValue,destAction,parameterCode); + break; + case BizEntityJsonConst.ParamCode: + modifyParamCode((String)propertyValue,destAction, parameterCode); + changeDetail.setParameterCode((String)propertyValue); + break; + + case BizEntityJsonConst.JavaClassName: + modifyJavaClassName((String)propertyValue,destAction, parameterCode); + break; + + case BizEntityJsonConst.ParameterType: + modifyParameterType((Integer)propertyValue,destAction,parameterCode); + break; + default: + throw new RuntimeException(String.format("BE推送自定义动作属性不存在,推送属性为[%1$s],当前动作编号为[%2$s],动作名称为[%3$s]",propertyName, destAction.getCode(),destAction.getName())); + } + + } + + /** + * 修改动作参数 + * @param newCode + * @param action + * @param parameterCode + */ + private void modifyParamCode(String newCode, ViewModelAction action, String parameterCode){ + for(Object item : action.getParameterCollection()){ + if(((ViewModelParameter)item).getParamCode().equals(parameterCode)) { + ((IViewModelParameter)item).setParamCode(newCode); + break; + } + } + } + + /** + * 修改动作ClassName + * @param newClassName + * @param action + * @param parameterCode + */ + private void modifyJavaClassName(String newClassName, ViewModelAction action, String parameterCode) { + for(Object item : action.getParameterCollection()){ + if(((ViewModelParameter)item).getParamCode().equals(parameterCode)) { + ((IViewModelParameter)item).setClassName(newClassName); + break; + } + } + } + + /** + * 修改动作参数类型 + * @param newType + * @param action + * @param parameterCode + */ + private void modifyParameterType(int newType, ViewModelAction action, String parameterCode) { + for(Object item : action.getParameterCollection()){ + if(((ViewModelParameter)item).getParamCode().equals(parameterCode)) { + ((IViewModelParameter)item).setParameterType(VMParameterType.forValue(newType)); + break; + } + } + } + + private void modifyCollectionParameterType(int newType, ViewModelAction action, String parameterCode) { + for(Object item : action.getParameterCollection()) { + if(((ViewModelParameter)item).getParamCode().equals(parameterCode)) { + ((IViewModelParameter)item).setCollectionParameterType(VMCollectionParameterType.forValue(newType)); + } + } + } + + public void deleteMgrAction(GspMetadata metadata, String actionCode) { + ((GspViewModel)metadata.getContent()).getActions().removeIf(act -> + act.getCode().equals(actionCode)); + } + + public void deleteMgrActionPara(ViewModelAction action, String parameterCode) { + if (action == null || StringUtil.checkNull(parameterCode)) { + return; + } + action.getParameterCollection().removeIf(param -> ((ViewModelParameter)param).getParamCode().equals(parameterCode)); + } + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/PushChangeSets.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/PushChangeSets.java new file mode 100644 index 0000000000000000000000000000000000000000..abf6c0bfd70309288d8d452eeb62c313e2742688 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/PushChangeSets.java @@ -0,0 +1,230 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.util; + +import com.inspur.edp.bef.bizentity.pushchangesetargs.*; +import com.inspur.edp.bef.bizentity.util.StringUtil; +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.common.ConvertUtils; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementSourceType; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoObjectSourceType; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.service.MetadataService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +import java.util.List; + +public class PushChangeSets { + + /** + * + * @param metadata 元数据 + * @param changeSet 推送变更集 + */ + public PushChangeSets(GspMetadata metadata, PushChangeSet changeSet) { + this.metadata = metadata; + this.actionChangeSets = changeSet.getActionChangeSets(); + this.objectChangeSets = changeSet.getObjectChangeSets(); + this.elementChangeSets = changeSet.getElementChangeSets(); + } + + private GspMetadata metadata; + private List actionChangeSets; + private List objectChangeSets; + private List elementChangeSets; + + /** + * 推送元数据 + */ + public void pushChangeSetToMetadata() { + pushActionChangeSets(); + pushObjectChangeSets(); + pushElementChangeSets(); + saveMetadata(); + } + + /** + * 推送MgrAction + */ + private void pushActionChangeSets() { + if(this.actionChangeSets == null | this.actionChangeSets.size() == 0) { + return; + } + this.actionChangeSets.forEach(set -> { + pushAction(set); + }); + } + + /** + * 保存元数据 + */ + private void saveMetadata() { + MetadataService metadataService = SpringBeanUtils.getBean(MetadataService.class); + metadataService.saveMetadata(metadata, CheckInfoUtil.getCombinePath(metadata.getRelativePath(), metadata.getHeader().getFileName())); + } + + private void pushAction(ActionChangeSet set) { + ActionChangeDetail detail = set.getChangeDetail(); + PushActionChangeSet pushAction = new PushActionChangeSet(); + + ViewModelAction orgAction = pushAction.getMgrActionByID(this.metadata,detail.getActionId()); + ViewModelAction newAction = null; + if(set.getChangeDetail().getMgrAction() != null) { + newAction = ConvertUtils.toMappedAction(set.getChangeDetail().getMgrAction(),((GspViewModel)metadata.getContent()).getID(),""); + } + + // 新增 动作 + if(set.getChangeType().equals(ChangeType.Add) && orgAction == null && newAction != null) { + pushAction.AddMgrAction(metadata,newAction); + return; + } + + // 新增参数 + + if(set.getChangeType().equals(ChangeType.Add) && orgAction != null && newAction != null) { + if(StringUtil.checkNull(set.getChangeDetail().getParameterId())) { + return; + } + pushAction.addMgrActionParam(orgAction, newAction,detail.getParameterCode()); + } + // 修改 + if(set.getChangeType().equals(ChangeType.Modify) && orgAction != null) { + pushAction.ModifyAction(orgAction,newAction,detail); + return; + } + + if(set.getChangeType().equals(ChangeType.Delete) && StringUtil.checkNull(detail.getParameterCode())) { + pushAction.deleteMgrAction(metadata,detail.getActionCode()); + return; + } + if(set.getChangeType().equals(ChangeType.Delete) && !StringUtil.checkNull(detail.getParameterCode())) { + pushAction.deleteMgrActionPara(orgAction, detail.getParameterCode()); + return; + } + } + + private void pushObjectChangeSets() { + if(this.objectChangeSets == null || this.objectChangeSets.size() == 0) { + return; + } + this.objectChangeSets.forEach(set -> { + pushObject(set); + }); + + } + + private void pushObject(ObjectChangeSet set) { + ObjectChangeDetail detail = set.getChangeDetail(); + PushObjectChangeSet pushObject = new PushObjectChangeSet(); + GspViewObject orgObject = pushObject.getObjectByID(this.metadata,detail.getBizObjectId()); + GspViewObject newObject = null; + if(set.getChangeDetail().getBizObject() != null){ + newObject = ConvertUtils.toObject(set.getChangeDetail().getBizObject(), + ((GspViewModel)metadata.getContent()).getMapping().getTargetMetadataPkgName(), + ((GspViewModel)metadata.getContent()).getMapping().getTargetMetadataId(), + detail.getParentObjIDElementId(), GspVoObjectSourceType.BeObject); + }; + String parentObjID = set.getChangeDetail().getParentObjIDElementId(); + + // 新增节点 + if(set.getChangeType().equals(ChangeType.Add) && newObject != null && !parentObjectHasBeenAdded(parentObjID)) { + + pushObject.addObject(metadata, newObject,parentObjID); + return; + } + // 修改节点 + if(set.getChangeType().equals(ChangeType.Modify) && orgObject != null) { + pushObject.modifyObject(orgObject,set.getChangeDetail()); + return; + } + //删除节点 + if(set.getChangeType().equals(ChangeType.Delete)) { + pushObject.deleteObject(metadata,detail.getBizObjectId()); + } + + } + + private boolean parentObjectHasBeenAdded(String parentObjId) { + for(ObjectChangeSet set:this.objectChangeSets) { + if(set.getChangeType().equals(ChangeType.Add) && set.getChangeDetail().getBizObjectId().contains(parentObjId)){ + return true; + } + } + return false; + } + + private void pushElementChangeSets(){ + if(this.elementChangeSets == null || this.elementChangeSets.size() == 0) { + return; + } + this.elementChangeSets.forEach(set -> { + pushElement(set); + }); + } + + private void pushElement(ElementChangeSet set) { + ElementChangeDetail detail = set.getChangeDetail(); + PushElementChangeSet pushElement = new PushElementChangeSet(); + GspViewObject orgObject = pushElement.getObjectByID(metadata,detail.getBizObjectId()); + if(orgObject == null) { + return; + } + GspViewModelElement orgElement = pushElement.getElementById(orgObject,detail.getBizElementId()); + GspViewModelElement newElement = null; + if(set.getChangeDetail().getBizElement() != null) { + newElement = ConvertUtils.toElement( + set.getChangeDetail().getBizElement(), + ((GspViewModel) metadata.getContent()).getMapping().getTargetMetadataPkgName(), + ((GspViewModel) metadata.getContent()).getMapping().getTargetMetadataId(), + GspVoElementSourceType.BeElement); + + //TODO:目前不支持一个字段关联多个be上的字段,因此未考虑ChildAssociation数组含有多个关联的情况,支持一对多的关联后需修改 + if (set.getType().equals(ChangeType.Modify) && orgElement != null) { + if (newElement.getChildAssociations() != null && orgElement.getChildAssociations() != null && newElement.getChildAssociations().size() > 0 && orgElement.getChildAssociations().size() > 0) { + for (IGspCommonField newField : newElement.getChildAssociations().get(0).getRefElementCollection()) { + for (IGspCommonField orgField : orgElement.getChildAssociations().get(0).getRefElementCollection()) { + if (newField.getCode() != null && newField.getCode().equals(orgField.getCode())) { + newField.setID(orgField.getID()); + } + } + } + } + } + + } + + // 新增 + if(set.getType().equals(ChangeType.Add)&& orgElement == null && newElement != null) { + pushElement.addElement(orgObject, newElement); + return; + } + // 修改 + if(set.getType().equals(ChangeType.Modify) && orgElement != null) { + pushElement.modifyElement(orgElement, newElement, detail); + } + // 删除 + if(set.getType().equals(ChangeType.Delete)) { + pushElement.deleteElement(orgObject,detail.getBizElementId()); + } + + } + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/PushElementChangeSet.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/PushElementChangeSet.java new file mode 100644 index 0000000000000000000000000000000000000000..427433b0da8bb404609de284e75d147faf531b11 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/PushElementChangeSet.java @@ -0,0 +1,143 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.util; + +import com.inspur.edp.bef.bizentity.pushchangesetargs.ElementChangeDetail; +import com.inspur.edp.bef.bizentity.util.StringUtil; +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.cef.designtime.api.json.CefNames; +import com.inspur.edp.das.commonmodel.json.CommonModelNames; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.formserver.viewmodel.GspViewObject; + +import java.util.Iterator; +import java.util.Map; + +public class PushElementChangeSet extends PushObjectChangeSet { + + public PushElementChangeSet() { + } + + public GspViewModelElement getElementById(GspViewObject object, String refElementId) { + for (IGspCommonField ele : object.getContainElements()) { + if (compareRefElementId((GspViewModelElement) ele, refElementId)) { + return ((GspViewModelElement) ele); + } + } + return null; + } + + public void addElement(GspViewObject object, GspViewModelElement element) { + if(object != null && element != null + && object.getContainElements().getByLabelId(element.getLabelID()) == null) { + object.getContainElements().add(element); + } + } + + public void modifyElement(GspViewModelElement destElement, GspViewModelElement refElement, ElementChangeDetail changeDetail) { + Map changeInfo = changeDetail.getChangeInfo(); + if(destElement == null) { + return; + } + changeInfo.forEach((key,val) -> { + modifyElementPropertyValue(key, val, destElement, refElement); + }); + } + + private void modifyElementPropertyValue(String propertyName, Object propertyValue, GspViewModelElement destElement, GspViewModelElement refElement) { + switch (propertyName) { + case CommonModelNames.Code: + case CommonModelNames.LabelID: + destElement.setCode((String)propertyValue); + destElement.setLabelID((String)propertyValue); + break; + case CefNames.MDataType: + setMDataType(destElement,refElement); + break; + case CefNames.Length: + destElement.setLength((Integer)propertyValue); + break; + case CefNames.Precision: + destElement.setPrecision((Integer)propertyValue); + break; + case CefNames.ObjectType: + setObjectType(destElement, refElement); + break; + case CefNames.IsMultiLanguage: + destElement.setIsMultiLanguage((Boolean)propertyValue); + break; + case CefNames.IsRequire: + destElement.setIsRequire((Boolean)propertyValue); + break; + case CefNames.EnableRtrim: + destElement.setEnableRtrim((Boolean)propertyValue); + break; + case CefNames.IsUdt: + setUdt(destElement, refElement); + break; + default: + throw new RuntimeException(String.format("BE推送字段属性不存在,推送属性为[%1$s],当前字段编号为[%2$s],字段名称为[%3$s]", propertyName, destElement.getCode(),destElement.getName())); + } + + } + + private void setObjectType(GspViewModelElement destElement, GspViewModelElement refElement) { + destElement.setObjectType(refElement.getObjectType()); + destElement.setChildAssociations(refElement.getChildAssociations()); + destElement.setContainEnumValues(refElement.getContainEnumValues()); + destElement.setDynamicPropSetInfo(refElement.getDynamicPropSetInfo()); + } + private void setMDataType(GspViewModelElement destElement, GspViewModelElement refElement) { + if(refElement == null) { + return; + } + // 数据类型会同步修改长度精度 + destElement.setMDataType(refElement.getMDataType()); + destElement.setLength(refElement.getLength()); + destElement.setPrecision(refElement.getPrecision()); + //数据类型从udt类型修改回普通类型 + setUdt(destElement,refElement); + } + private void setUdt(GspViewModelElement destElement, GspViewModelElement refElement){ + if(refElement == null) + return; + destElement.setIsUdt(refElement.getIsUdt()); + destElement.setUdtID(refElement.getUdtID()); + destElement.setUdtName(refElement.getUdtName()); + destElement.setMapping(refElement.getMapping()); + } + + public void deleteElement(GspViewObject orgObject, String refElementId) { + if(orgObject == null || StringUtil.checkNull(refElementId)) { + return; + } + Iterator iterator = orgObject.getContainElements().iterator(); + while(iterator.hasNext()) { + if (compareRefElementId((GspViewModelElement)iterator.next(), refElementId)){ + iterator.remove(); + } + } + } + private boolean compareRefElementId(GspViewModelElement vmElement, String refId) { + if(vmElement.getMapping() != null && + !StringUtil.checkNull(vmElement.getMapping().getTargetElementId()) && + vmElement.getMapping().getTargetElementId().equals(refId)) { + return true; + } + return false; + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/PushObjectChangeSet.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/PushObjectChangeSet.java new file mode 100644 index 0000000000000000000000000000000000000000..0b8dcdb4b06b467614bddbbfae37719fad1ee108 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/PushObjectChangeSet.java @@ -0,0 +1,133 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.util; + +import com.inspur.edp.bef.bizentity.pushchangesetargs.ObjectChangeDetail; +import com.inspur.edp.bef.bizentity.util.StringUtil; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.das.commonmodel.json.CommonModelNames; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; + +import java.util.Map; + +public class PushObjectChangeSet { + + public PushObjectChangeSet() { + } + + public GspViewObject getObjectByID(GspMetadata metadata, String id) { + GspViewModel entity = (GspViewModel)metadata.getContent(); + return findObjectById(entity.getMainObject(), id); + + } + + private GspViewObject findObjectById(GspViewObject object, String beId) { + if(object == null && StringUtil.checkNull(beId)) { + return null; + } + if(getObjectByRefId(object, beId)) { + return object; + } + for(IGspCommonObject child: object.getContainChildObjects()) { + if (getObjectByRefId((GspViewObject)child, beId)){ + return (GspViewObject) child; + } + GspViewObject target = findObjectById((GspViewObject) child, beId); + if(target != null) { + return target; + } + } + return null; + } + + private GspViewObject findParentObjectById(GspViewObject object, String beId) { + if(object == null && StringUtil.checkNull(beId)) { + return null; + } + for(IGspCommonObject child: object.getContainChildObjects()) { + if(getObjectByRefId((GspViewObject)child, beId)){ + return object; + } + GspViewObject target = findParentObjectById((GspViewObject) child, beId); + if(target != null) { + return target; + } + } + return null; + } + + /** + * 新增节点 + * @param metadata + * @param object + * @param parentId + */ + public void addObject(GspMetadata metadata, GspViewObject object, String parentId) { + if(object == null && StringUtil.checkNull(parentId)) { + return; + } + GspViewObject parentObject = getObjectByID(metadata, parentId); + for (IGspCommonObject child : parentObject.getContainChildObjects()) { + if(child.getCode() != null && child.getCode().equalsIgnoreCase(object.getCode())) { + return; + } + } + parentObject.getContainChildObjects().add(object); + + } + + /** + * 修改节点信息 + * @param destObject + * @param changeDetail + */ + public void modifyObject(GspViewObject destObject, ObjectChangeDetail changeDetail) { + Map changeInfo = changeDetail.getChangeInfo(); + + if(destObject == null) { + return; + } + changeInfo.forEach((key,val) -> { + modifyObjectPropertyValue(key, val, destObject); + }); + } + + private void modifyObjectPropertyValue(String propertyName, Object propertyValue, GspViewObject destObject) { + if(propertyName.equals(CommonModelNames.Code)) { + destObject.setCode((String)propertyValue); + } + } + + public void deleteObject(GspMetadata metadata,String refObjectId) { + GspViewObject parentObject = findParentObjectById(((GspViewModel)metadata.getContent()).getMainObject(), refObjectId); + if (parentObject != null) { + parentObject.getContainChildObjects().removeIf(obj -> + getObjectByRefId((GspViewObject)obj, refObjectId)); + } + } + private boolean getObjectByRefId(GspViewObject viewObject, String refId) { + if (viewObject.getMapping() != null && + !StringUtil.checkNull(viewObject.getMapping().getTargetObjId()) && + viewObject.getMapping().getTargetObjId().equals(refId)) { + return true; + } + return false; + } + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/SimplifyMetadataUtil.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/SimplifyMetadataUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..8ef2791ddae3214041af1a29e540aa7061e90af7 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/util/SimplifyMetadataUtil.java @@ -0,0 +1,57 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.util; + +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.entity.Metadata4Ref; +import com.inspur.edp.metadata.rtcustomization.api.CustomizationRtService; +import com.inspur.edp.metadata.rtcustomization.api.entity.MetadataFilter; +import com.inspur.edp.metadata.rtcustomization.api.entity.SourceTypeEnum; +import com.inspur.edp.metadata.rtcustomization.serverapi.CustomizationRtServerService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.List; + +public class SimplifyMetadataUtil { + + private static final Logger logger = LoggerFactory.getLogger(SimplifyMetadataUtil.class); + + public void Simplify() { + + CustomizationRtService customizationRtService = SpringBeanUtils.getBean(CustomizationRtService.class); + CustomizationRtServerService customizationRtServerService = SpringBeanUtils.getBean(CustomizationRtServerService.class); + List metadataTypes = new ArrayList<>(); + metadataTypes.add("GSPBusinessEntity"); + metadataTypes.add("GSPViewModel"); + metadataTypes.add("UnifiedDataType"); + + List metadataListByFilter = customizationRtService.getMetadataListByFilter(new MetadataFilter(SourceTypeEnum.MDPKG, metadataTypes)); + metadataListByFilter.forEach(metadata4Ref -> { + try{ + GspMetadata metadata = customizationRtService.getMetadata(metadata4Ref.getMetadata().getHeader().getId(), false); + customizationRtServerService.updateMetadata(metadata); + }catch (Exception e) { + //ignore + logger.info("元数据ID为 "+metadata4Ref.getMetadata().getHeader().getId()+" 的元数据精简失败",e); + } + }); + logger.info("批量精简元数据完成"); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/validate/MultiSourceValidate.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/validate/MultiSourceValidate.java new file mode 100644 index 0000000000000000000000000000000000000000..ed2410c9d5fd01be17350815343e240e0d07a540 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/validate/MultiSourceValidate.java @@ -0,0 +1,211 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.validate; + +import com.inspur.edp.bef.bizentity.GspBizEntityObject; +import com.inspur.edp.bef.bizentity.GspBusinessEntity; +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelActionType; +import com.inspur.edp.formserver.viewmodel.collection.VMActionCollection; +import com.inspur.edp.formserver.viewmodel.common.ViewModelMapping; +import com.inspur.edp.formserver.vmmanager.exception.VmManagerException; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.service.RefCommonService; +import io.iec.edp.caf.commons.exception.ExceptionLevel; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +public class MultiSourceValidate +{ + private String errorCode = "vo多源检查"; + private java.util.HashMap sourceDic = new java.util.HashMap(); + + /** + 临时兼容-仅单源vo可编译 + + @param vm + @return + */ + public final boolean validate(GspViewModel vm) + { + if (vm==null) + { + return false; + } + return validateFromMultiSource(vm) && validateImportMoreThanOneTime(vm); + } + + /** + 多be源 + + @param vm + @return + */ + private boolean validateFromMultiSource(GspViewModel vm) + { + String beId = vm.getMapping().getTargetMetadataId(); + // 节点 + validateObject(vm.getMainObject(), beId); + // 操作 + validateActions(vm.getActions(), beId); + return true; + } + + private void validateActions(VMActionCollection vmActions, String beID) + { + if (vmActions != null && vmActions.size() > 0) + { + for (ViewModelAction action : vmActions) + { + if (action.getType() == ViewModelActionType.BEAction) + { + if (!action.getMapping().getTargetMetadataId().equals(beID)) + { + throw new VmManagerException("",errorCode, "操作"+action.getName()+"来源自其它业务实体,暂不支持[保存并同步]及[编译]。",null, + ExceptionLevel.Error,false); + } + } + } + } + } + + private void validateObject(GspViewObject vo, String beID) + { + // 当前对象 + if (!vo.getMapping().getTargetMetadataId().equals(beID)) + { + throw new VmManagerException("",errorCode, "对象'"+vo.getName()+"'来源自其它业务实体,暂不支持[保存并同步]及[编译]。",null,ExceptionLevel.Error,false); + } + + // 字段 + if (vo.getContainElements() != null && vo.getContainElements().size() > 0) + { + for (IGspCommonField ele : vo.getContainElements()) + { + if (!((GspViewModelElement)ele).getMapping().getTargetMetadataId().equals(beID)) + { + if (((GspViewModelElement)ele).getIsVirtualViewElement()) + { + continue; + } + throw new VmManagerException("",errorCode, "对象"+vo.getName()+"中的字段"+ele.getName()+"来源自其它业务实体,暂不支持[保存并同步]及[编译]。",null,ExceptionLevel.Error,false); + } + } + } + + // 子节点 + if (vo.getContainChildObjects() != null && vo.getContainChildObjects().size() > 0) + { + for (IGspCommonObject childObject : vo.getContainChildObjects()) + { + validateObject((GspViewObject) childObject, beID); + } + } + } + + /** + 单be源引入多次 + + @param vm + @return + */ + private boolean validateImportMoreThanOneTime(GspViewModel vm) + { + sourceDic.clear(); + GspMetadata metadata = SpringBeanUtils.getBean(RefCommonService.class).getRefMetadata(vm.getMapping().getTargetMetadataId()); + if (metadata == null || !(metadata.getContent() instanceof GspBusinessEntity)) + { + throw new VmManagerException("",errorCode, "无法加载当前vo映射的业务实体,metadataID='{vm.Mapping.TargetMetadataId}'",null,ExceptionLevel.Error,false); + } + + checkMapping(vm.getMapping(), "当前视图对象"); + + // 对象 + validateImportObjectOneTime(vm.getMainObject(), (GspBusinessEntity) metadata.getContent()); + + return true; + } + + private void validateImportObjectOneTime(GspViewObject vo, GspBusinessEntity be) + { + // 当前对象 + checkMapping(vo.getMapping(), "对象{vo.Name}"); + + + + GspBizEntityObject currentBizObj = (GspBizEntityObject) be.getAllObjectList().stream().filter(item->item.getID().equals(vo.getMapping().getTargetObjId())).findFirst().orElse(null);//.FirstOrDefault(item => String.equals(item.ID, vo.getMapping().getTargetObjId())); + if (currentBizObj == null) + { + throw new VmManagerException("",errorCode, "对象{vo.Name}在业务实体中无对应节点,暂不支持[保存并同步]及[编译]。。",null,ExceptionLevel.Error,false); + } + + IGspCommonObject tempVar = vo.getParentObject(); + + GspViewObject parentObj = (GspViewObject)((tempVar instanceof GspViewObject) ? tempVar : null); + if (parentObj != null) + { + if (currentBizObj.getParentObject().getID() != parentObj.getMapping().getTargetObjId()) + { + throw new VmManagerException("",errorCode, "对象{vo.Name}结构与业务实体不一致,暂不支持[保存并同步]及[编译]。",null,ExceptionLevel.Error,false); + } + } + + // 字段 + if (vo.getContainElements() != null && vo.getContainElements().size() > 0) + { + for (IGspCommonField ele : vo.getContainElements()) + { + if (((GspViewModelElement)ele).getIsVirtualViewElement()) + { + continue; + } + checkMapping(((GspViewModelElement)ele).getMapping(), "对象'{vo.Name}'中的字段'{ele.Name}'"); + + if (currentBizObj.findElement(((GspViewModelElement)ele).getMapping().getTargetObjId())==null) + { + throw new VmManagerException("",errorCode, "对象'{vo.Name}'中的字段'{ele.Name}'在业务实体中无对应节点,暂不支持[保存并同步]及[编译]。。",null,ExceptionLevel.Error,false); + } + } + } + + // 子节点 + if (vo.getContainChildObjects() != null && vo.getContainChildObjects().size() > 0) + { + for (IGspCommonObject childObject : vo.getContainChildObjects()) + { + validateImportObjectOneTime((GspViewObject) childObject, be); + } + } + } + + private void checkMapping(ViewModelMapping mapping, String errorMessage) + { + String targetObjId = mapping.getTargetObjId(); + if (sourceDic.containsKey(targetObjId)) + { + throw new VmManagerException("",errorCode, String.format(errorMessage + "由业务实体引入的次数多于1次,暂不支持[保存并同步]及[编译]。"),null,ExceptionLevel.Error,false); + } + else + { + sourceDic.put(targetObjId, null); + } + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/validate/ViewModelValidator.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/validate/ViewModelValidator.java new file mode 100644 index 0000000000000000000000000000000000000000..463816d7ff696cc85c28b3b16cc499a2bc1d0b37 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/validate/ViewModelValidator.java @@ -0,0 +1,1214 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.validate; + + +import com.alibaba.druid.util.StringUtils; +import com.inspur.edp.bef.bizentity.GspBizEntityElement; +import com.inspur.edp.bef.bizentity.GspBusinessEntity; +import com.inspur.edp.bef.bizentity.operation.BizMgrAction; +import com.inspur.edp.bef.bizentity.operation.collection.BizMgrActionCollection; +import com.inspur.edp.bef.component.ICompParameter; +import com.inspur.edp.bef.component.ICompParameterCollection; +import com.inspur.edp.bef.component.base.ReturnValue; +import com.inspur.edp.bef.component.detailcmpentity.vm.VMComponent; +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.cef.designtime.api.collection.CommonDtmCollection; +import com.inspur.edp.cef.designtime.api.element.ElementDefaultVauleType; +import com.inspur.edp.cef.designtime.api.element.GspElementDataType; +import com.inspur.edp.cef.designtime.api.element.GspElementObjectType; +import com.inspur.edp.cef.designtime.api.element.GspEnumValue; +import com.inspur.edp.cef.designtime.api.operation.CommonOperation; +import com.inspur.edp.cef.designtime.api.variable.CommonVariableCollection; +import com.inspur.edp.das.commonmodel.IGspCommonElement; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.das.commonmodel.entity.GspCommonModel; +import com.inspur.edp.das.commonmodel.entity.object.GspCommonObjectType; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.formserver.viewmodel.action.*; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelReturnValue; +import com.inspur.edp.formserver.viewmodel.collection.VMActionCollection; +import com.inspur.edp.formserver.viewmodel.collection.ValueHelpConfigCollection; +import com.inspur.edp.formserver.viewmodel.common.VMParameterType; +import com.inspur.edp.formserver.viewmodel.common.ValueHelpConfig; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementSourceType; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoObjectSourceType; +import com.inspur.edp.formserver.vmmanager.exception.VmManagerException; +import com.inspur.edp.formserver.vmmanager.service.VmManagerService; +import com.inspur.edp.formserver.vmmanager.util.CheckInfoUtil; +import com.inspur.edp.formserver.vmmanager.util.ExpressionVariableCheckUtil; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.service.RefCommonService; +import io.iec.edp.caf.commons.exception.ExceptionLevel; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +public class ViewModelValidator { + + private String errorCode = "ViewModelValidate"; + private GspViewModel vm; + private String metaPath; + private GspBusinessEntity be; + private static final String OPT_CDPACTION = "视图对象操作"; + private static final String FIELD = "对象 '%1$s' 的字段 '%2$s' "; + private static final String VARIABLE = "模型%1$s'变量集合' 的字段 '{%2$s}' "; + private static final String VARIABLE_DTM = "'变量集合' 的联动计算 "; + private static final String VALUEHELPCONFIG = "'帮助集合' 的帮助信息"; + private static final String VALUEHELPACTION = "'帮助集合' 的帮助 '{%1$s}'中的帮助前事件操作 "; + private static final String EXPRESSION = "'{%1$s}' 的字段 '{%2$s}' "; + + private void throwValidateException(String message) { + throw new VmManagerException("", errorCode, message, null, ExceptionLevel.Error, false); + } + + public final boolean validate(String path, GspViewModel vm) { + this.vm = vm; + this.metaPath = path; + if (!vm.getIsVirtual() + && vm.getMainObject().getMapping().getSourceType() == GspVoObjectSourceType.BeObject) { + + GspMetadata dto = SpringBeanUtils.getBean(RefCommonService.class) + .getRefMetadata(vm.getMapping().getTargetMetadataId()); + if (dto == null || dto.getContent() == null) { + throwValidateException("获取映射的业务实体失败,id=" + vm.getMapping().getTargetMetadataId()); + } + be = (GspBusinessEntity) ((dto.getContent() instanceof GspBusinessEntity) ? dto.getContent() + : null); + } + return validateModel() && validateObject() && validateElement() && validateVmActions() + && validateDataExtendInfo() && validateHelpActions(); + } + + + ///#region 模型 + private boolean validateModel() { + boolean validateRez = true; + //检查父子关联字段 + + String valRes = validateModelBasicInfo(vm); + if(!StringUtils.isEmpty(valRes)){ + throwValidateException(valRes); + } + ArrayList objList = vm.getAllObjectList(); + StringBuilder sb = new StringBuilder(); + + for (IGspCommonObject item : objList) { + if (item.getObjectType() == GspCommonObjectType.MainObject) //不检查主对象 + { + continue; + } + if (item.getKeys().size() == 0 || CheckInfoUtil + .checkNull(item.getKeys().get(0).getSourceElement()) || CheckInfoUtil + .checkNull(item.getKeys().get(0).getTargetElement())) { + sb.append(item.getName()).append(","); + } + } + if (sb.length() > 0) { + sb.setLength(sb.length() - 1); + throwValidateException( + String.format("以下子对象的关联信息不完整,请修改后再保存:%1$s%2$s", "\r\n", sb.toString())); + validateRez = false; + } + + // 变量实体 + String message = validateVarableEntity(vm); + if (message.length() > 0) { + throwValidateException(message); + validateRez = false; + } + + // 帮助前事件 + message = validateValueHelpConfigs(vm); + if (message.length() > 0) { + throwValidateException(message); + validateRez = false; + } + return validateRez; + } + + private String validateModelBasicInfo(GspViewModel model) { + StringBuilder sb = new StringBuilder(); + if (CheckInfoUtil.checkNull(model.getCode())) { + sb.append(String.format("视图对象[%1$s]的编号不能为空! ", model.getName())); + } else { + // 模型Code限制非法字符 + if (!ConformToNaminGspecification(model.getCode())) { + sb.append(String.format("视图对象[%1$s]的 [编号] 属性必须以英文字母或下划线开头, 并且只能由英文字母、数字、下划线(_)组成! ", model.getName())); + sb.append("\n"); + } + } + if (CheckInfoUtil.checkNull(model.getName())) { + sb.append(String.format("视图对象[%1$s]的名称不能为空! ", model.getCode())); + } + return sb.toString(); + } + + /** + * 是否符合命名规范 + * 字母数字下划线组成,字母下划线开头 + * + * @param text + * @return + */ + private boolean ConformToNaminGspecification(String text) { + String regex = "^[A-Za-z_][A-Za-z_0-9]*$"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(text); + boolean ismatch = matcher.matches(); + return ismatch; + } + + private String validateVarableEntity(GspCommonModel model) { + StringBuilder sb = new StringBuilder(); + //validateObjectBasicInfo(model.Variables,sb,model.Name); + sb.append(validateVariables(model)); + return sb.toString(); + } + + private String validateVariables(GspCommonModel model) { + + CommonVariableCollection vars = model.getVariables().getContainElements(); + StringBuilder sb = new StringBuilder(); + if (vars != null && vars.size() > 0) { + + for (IGspCommonField variable : vars) { + // 检查元素的基本信息 + validateElementBasicInfo(variable, sb, model.getVariables().getName(), VARIABLE); + } + + // 编号不可重复 + for (int i = 0; i < vars.size() - 1; i++) { + IGspCommonField firstElement = vars.getItem(i); + for (int j = i + 1; j < vars.size(); j++) { + IGspCommonField secondElement = vars.getItem(j); + if (firstElement.getCode().equals(secondElement.getCode()) + && firstElement.getBelongObject().getID().equals(secondElement.getBelongObject() + .getID())) { + String message = String + .format("模型 '%1$s' 的'变量集合' 中字段 '%2$s' 和字段 '%3$s' 的 [编号] 属性不允许重复! ", model.getName(), + firstElement.getName(), secondElement.getName()); + return message; + } + } + } + } + + //联动计算 + CommonDtmCollection dtms = new CommonDtmCollection(); + dtms.addAll(model.getVariables().getDtmAfterCreate()); + dtms.addAll(model.getVariables().getDtmAfterModify()); + dtms.addAll(model.getVariables().getDtmBeforeSave()); + sb.append(validateVarDtms(dtms, model.getName())); + + return sb.toString(); + } + + private String validateVarDtms(CommonDtmCollection collection, String modelName) { + //联动计算 + ArrayList dtms = (ArrayList) collection.stream() + .map(item -> (CommonOperation) item).collect( + Collectors.toList()); +// CommonDetermination[] dtms = (CommonDetermination[]) collection.toArray(); + //①必填项 + StringBuilder sb = new StringBuilder(); + sb.append(String.format(validateCommonOperationBasicInfo(VARIABLE_DTM, dtms))); + if (sb.length() > 0) { + return sb.toString(); + } + //②编号重复 + sb.append(String.format(validateCommonOperationCodeRepeat(VARIABLE_DTM, dtms))); + return sb.toString(); + } + + ///#endregion + + ///#region 对象 + + /** + * 校验对象基本信息 + */ + private boolean validateObject() { + boolean validateRez = true; + StringBuilder sb = new StringBuilder(); + + ArrayList aObjectList = vm.getAllObjectList(); + + //编号名称不允许为空 + for (IGspCommonObject aObject : aObjectList) { + if (CheckInfoUtil.checkNull(aObject.getCode())) { + sb.append(String.format("对象 '%1$s' 的编号不能为空! ", aObject.getName())); + sb.append("\n"); + } else { + // 对象Code限制非法字符 + if (!conformToNaminGspecification(aObject.getCode())) { + sb.append(String.format("对象 '%1$s' 的 [编号] 属性必须以英文字母或下划线开头, 并且只能由英文字母、数字、下划线(_)组成! ", + aObject.getName())); + sb.append("\n"); + } + } + if (CheckInfoUtil.checkNull(aObject.getName())) { + sb.append(String.format("对象 '%1$s' 的名称不能为空! ", aObject.getCode())); + sb.append("\n"); + } + if (aObject.getCode().length() > 30) { + sb.append(String.format("对象 '%1$s' 的编号的长度不能超过30! ", aObject.getName())); + sb.append("\n"); + } + } + + //编号不允许重复 + for (int i = 0; i < aObjectList.size() - 1; i++) { + IGspCommonObject firstObj = aObjectList.get(i); + for (int j = i + 1; j < aObjectList.size(); j++) { + IGspCommonObject secondObj = aObjectList.get(j); + if (firstObj.getCode().compareToIgnoreCase(secondObj.getCode()) == 0) { + sb.append(String + .format("对象 '%1$s' 和对象'%2$s'的编号相同,请修改。", firstObj.getName(), secondObj.getName())); + sb.append("\n"); + } + } + } + + if (sb.length() > 0) { + sb.setLength(sb.length() - 1); + throwValidateException(sb.toString()); + validateRez = false; + } + + return validateRez; + } + + ///#endregion + + ///#region 字段 + + /** + * 检验所有字段[编号][名称][标签]不允许为空,同一对象上所有字段的[编号][名称][标签]不允许重复 + */ + private boolean validateElement() { + boolean validateRez = true; + StringBuilder sb = new StringBuilder(); + + ArrayList aObjectList = vm.getAllObjectList(); + for (IGspCommonObject aObject : aObjectList) { + ArrayList allElementList = aObject.getAllElementList(false); + + if (allElementList != null && allElementList.size() > 0) { + //字段[编号][名称][标签]不允许为空 + for (IGspCommonElement element : allElementList) { + validateElementBasicInfo(element, sb, aObject.getName(), FIELD); + } + + //同一对象上所有字段的[编号][名称][标签]不允许重复 + for (int i = 0; i < allElementList.size() - 1; i++) { + IGspCommonElement firstElement = allElementList.get(i); + for (int j = i + 1; j < allElementList.size(); j++) { + IGspCommonElement secondElement = allElementList.get(j); + if (firstElement.getCode().equals(secondElement.getCode()) && firstElement + .getBelongObject().getID().equals(secondElement.getBelongObject().getID())) { + sb.append(String.format("对象 '%1$s' 中字段 '%2$s' 和字段 '%3$s' 的 [编号] 属性不允许重复! ", + firstElement.getBelongObject().getName(), firstElement.getName(), + secondElement.getName())); + sb.append("\n"); + } + //TODO: qm开发临时删除名称重复校验 +// if (firstElement.getName().equals(secondElement.getName()) && firstElement +// .getBelongObject().getID().equals(secondElement.getBelongObject().getID())) { +// sb.append(String.format("对象 '%1$s' 中字段 '%2$s' 和字段 '%3$s' 的 [名称] 属性不允许重复! ", +// firstElement.getBelongObject().getName(), firstElement.getName(), +// secondElement.getName())); +// sb.append("\n"); +// } + if (firstElement.getLabelID().equals(secondElement.getLabelID()) && firstElement + .getBelongObject().getID().equals(secondElement.getBelongObject().getID())) { + sb.append(String.format("对象 '%1$s' 中字段 '%2$s' 和字段 '%3$s' 的 [标签] 属性不允许重复! ", + firstElement.getBelongObject().getName(), firstElement.getName(), + secondElement.getName())); + sb.append("\n"); + } + } + } + + // 结合beObject检查 + checkWithBeObject((GspViewObject) ((aObject instanceof GspViewObject) ? aObject : null), + allElementList); + + } + } + if (sb.length() > 0) { + sb.setLength(sb.length() - 1); + throwValidateException(sb.toString()); + validateRez = false; + } + return validateRez; + } + + public String getFormat(String formatStr) { + return null; + } + + private void validateElementBasicInfo(IGspCommonField element, StringBuilder sb, String objName, + String errorMessage) { + if (CheckInfoUtil.checkNull(element.getCode())) { + sb.append(String.format(errorMessage + " 的 [编号] 属性不允许为空! ", objName, element.getName())); + sb.append("\n"); + } else { + // 字段Code限制非法字符 + if (!conformToNaminGspecification(element.getCode())) { + sb.append(String + .format(errorMessage + " 的 [编号] 属性必须以英文字母或下划线开头, 并且只能由英文字母、数字、下划线(_)组成! ", objName, + element.getName())); + sb.append("\n"); + } + } + if (CheckInfoUtil.checkNull(element.getName())) { + sb.append(String.format(errorMessage + " 的 [名称] 属性不允许为空! ", objName, element.getCode())); + sb.append("\n"); + } + + if (CheckInfoUtil.checkNull(element.getLabelID()) || CheckInfoUtil + .checkNull(element.getLabelID().trim())) { + sb.append(String.format(errorMessage + " 的 [标签] 属性不允许为空! ", objName, element.getName())); + sb.append("\n"); + } else { + // LabelID在表单和报表中用作XML的标签,要限制非法字符 + String re = "^[A-Za-z_][A-Za-z_\\d-.]*$"; + Pattern pattern = Pattern.compile(re); + Matcher matcher = pattern.matcher(element.getLabelID().trim()); + if (!getRegx(re, element.getLabelID().trim())) { + sb.append(String + .format(errorMessage + " 的 [标签] 属性\n必须以英文字母或下划线开头, 并且只能由英文字母、数字、下划线(_)、连线(-)和点(.)组成! ", + objName, element.getName())); + sb.append("\n"); + } + } + + if (element.getObjectType() == GspElementObjectType.Enum) { + if (element.getContainEnumValues().size() == 0) { + sb.append(String + .format(errorMessage + "的 [对象类型] 属性为枚举, [枚举] 属性不允许为空! ", objName, element.getName())); + sb.append("\n"); + } + + // 枚举类型字段,校验默认值为枚举编号 + if (!CheckInfoUtil.checkNull(element.getDefaultValue())) { + String defaultValue = element.getDefaultValue(); + boolean isEnumKey = false; + for (GspEnumValue enumValue : element.getContainEnumValues()) { + if (defaultValue.equals(enumValue.getValue())) { + isEnumKey = true; + } + } + if (!isEnumKey) { + sb.append(String + .format(errorMessage + "的 [对象类型] 属性为枚举, [默认值] 应为枚举编号。 ", objName, element.getName())); + } + } + // 枚举类型字段,非必填 + if (element.getIsRequire()) { + sb.append(String + .format(errorMessage + "的 [对象类型] 属性为枚举, [是否必填] 属性应为否。 ", objName, element.getName())); + sb.append("\n"); + } + } + + if (element.getMDataType() == GspElementDataType.Decimal) { + if (element.getLength() == 0) { + sb.append(String.format(errorMessage + "的[数据类型] 为[浮点数字],其 [长度] 不可为0. ", objName, element.getName())); + sb.append("\n"); + } + + if (element.getPrecision() == 0) { + sb.append(String.format(errorMessage + "的[数据类型] 为[浮点数字],其 [精度] 不可为0. ", objName, element.getName())); + sb.append("\n"); + } + } + + if (element.getMDataType() == GspElementDataType.String) { + if (element.getLength() == 0) { + sb.append(String.format(errorMessage + "的[数据类型] 为[文本],其 [长度] 不可为0. ", objName, element.getName())); + sb.append("\n"); + } + } + // 默认值类型校验 + String message = validateElementDefaultValue(element, objName, errorMessage); + if (message.length() > 0) { + sb.append(String.format(message)); + sb.append("\n"); + } + } + + /** + * 正则化判断证书小数 + */ + private boolean getRegx(String regex, String regexStr) { + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(regexStr); + boolean isRegex = matcher.matches(); + return isRegex; + } + + private String validateElementDefaultValue(IGspCommonField ele, String objName, + String errorMessage) { + StringBuilder sb = new StringBuilder(); + String reInt = "^-?\\d+$"; //判断整数,负值也是整数 + String reDecimalString = String + .format("^(([0-9]+\\.[0-9]{0,%1$s})|([0-9]*\\.[0-9]{0,%1$s})|([1-9][0-9]+)|([0-9]))$", + ele.getPrecision()); + + // 20190523-整型枚举可设置枚举编号为默认值;关联/udt默认值暂不支持; + if (ele.getObjectType() != GspElementObjectType.None) { + return sb.toString(); + } + + boolean isValidate = true; + GspElementDataType type = ele.getMDataType(); + String value = ele.getDefaultValue(); + if(ele.getDefaultValueType()== ElementDefaultVauleType.Expression) { + validateElementExpression(ele, sb, objName); + return sb.toString(); + } + if (!CheckInfoUtil.checkNull(value)) { + switch (type) { + case String: + case Text: + break; + case Integer: + if (getRegx(reInt, value)) { + isValidate = true; + } else { + isValidate = false; + } + break; + case Decimal: + if (getRegx(reDecimalString, value)) { + isValidate = true; + } else { + //isValidate = false; + sb.append(String + .format(errorMessage + "的[默认值] 与[数据类型] 不匹配,请检查是否为[浮点数字],请检查[精度]是否匹配! ", objName, + ele.getName())); + sb.append("\n"); + return sb.toString(); + } + break; + case Date: + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date date=sdf.parse(value); + isValidate = true; + } catch (Exception e) { + isValidate = false; + } + break; + case DateTime: + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date=sdf.parse(value); + isValidate = true; + } catch (Exception e) { + isValidate = false; + } + break; + case Boolean: + if (value.toUpperCase().equals((new String("True")).toUpperCase()) || value.toUpperCase() + .equals((new String("False")).toUpperCase())) { + isValidate = true; + } else { + isValidate = false; + } + break; + case Binary: + if (value.trim().equals("")) { + isValidate = true; + } else { + isValidate = false; + } + break; + default: + break; + } + } + if (!isValidate) { + sb.append(String.format(errorMessage + "的 [默认值] 与 [数据类型] 不匹配! ", objName, ele.getName())); + sb.append("\n"); + } + return sb.toString(); + } + + /** + * 校验be字段表达式类型默认值校验 + * + * @param ele be字段 + * @param sb 错误提示 + * @param aObjectName be名称 + */ + private void validateElementExpression(IGspCommonField ele, StringBuilder sb, String aObjectName) { + String expression = ele.getDefaultValue(); + if (ExpressionVariableCheckUtil.isDateType(expression)) { + if (ele.getMDataType() == GspElementDataType.Date || ele.getMDataType() == GspElementDataType.DateTime) { + return; + } + sb.append(String.format(EXPRESSION + "的数据类型与表达式类型不相符,请选择文本类型的表达式。", aObjectName, ele.getName())); + sb.append("\n"); + } + if (ExpressionVariableCheckUtil.isTextType(expression)) { + if (ele.getMDataType() == GspElementDataType.String || ele.getMDataType() == GspElementDataType.Text) { + return; + } + sb.append(String.format(EXPRESSION + "的数据类型与表达式类型不相符,请选择日期类型的表达式。", aObjectName, ele.getName())); + sb.append("\n"); + } + } + + /** + * 结合bizObject检查 + */ + private void checkWithBeObject(GspViewObject aObject, + ArrayList allElementList) { + // 虚拟对象无映射bizObj + if (aObject.getIsVirtual() + || aObject.getMapping().getSourceType() != GspVoObjectSourceType.BeObject) { + return; + } + + // 其他be源暂不检查 + if (!aObject.getMapping().getTargetMetadataId().equals(be.getID())) { + return; + } + + IGspCommonObject beObject = be.getAllObjectList().stream().filter( + item -> item.getID().equals(((GspViewObject) aObject).getMapping().getTargetObjId())) + .findFirst().orElse( + null);//.FirstOrDefault(item => String.equals(item.ID, ((GspViewObject)aObject).getMapping().TargetObjId)); + if (beObject == null) { + throwValidateException( + "对象" + aObject.getName() + "在业务实体上无映射对象,业务实体对象的id=" + aObject.getMapping() + .getTargetObjId() + ",请检查是否已删除。"); + } + ArrayList beElementList = beObject.getAllElementList(false); + + // vm字段长度不得大于映射的be字段长度 + for (IGspCommonElement element : allElementList) { + + GspViewModelElement vmEle = (GspViewModelElement) element; + if (vmEle.getIsVirtualViewElement() + || vmEle.getMapping().getSourceType() != GspVoElementSourceType.BeElement + || !vmEle.getMapping().getTargetMetadataId().equals( be.getID())) { + continue; + } + + GspBizEntityElement beEle = (GspBizEntityElement) beElementList.stream().filter( + item -> item.getID() + .equals(((GspViewModelElement) element).getMapping().getTargetObjId())).findFirst() + .orElse(null); + if (beEle == null) { + + GspBizEntityElement beEle2 = (GspBizEntityElement) be + .findElementById(((GspViewModelElement) element).getMapping().getTargetObjId()); + // 当前字段不是当前bizObj引入,不抛异常 + if (beEle2 != null) { + continue; + } + throwValidateException( + "对象" + aObject.getName() + "上的字段" + element.getName() + "在业务实体上无映射字段,业务实体字段的id=" + + ((GspViewModelElement) element).getMapping().getTargetObjectId() + ",请检查是否已删除。"); + } else { + if (element.getLength() > beEle.getLength()) { + throwValidateException( + "对象" + aObject.getName() + "上的字段" + element.getName() + "的[长度]不能大于业务实体上字段长度" + beEle + .getLength() + "。"); + } + if (element.getPrecision() > beEle.getPrecision()) { + throwValidateException( + "对象" + aObject.getName() + "上的字段" + element.getName() + "的[精度]不能大于业务实体上字段精度" + beEle + .getPrecision() + "。"); + } + } + } + } + + ///#endregion + + ///#region 操作 + + /** + * [操作]视图对象操作 + */ + private boolean validateVmActions() { + ArrayList actions = vm.getActions(); + String errorMessage = String.format(OPT_CDPACTION); + boolean validateRez = true; + StringBuilder sb = new StringBuilder(); + validateRez = validateActionsBasicInfo(actions, errorMessage, sb); + + if (!vm.getIsVirtual() + && vm.getMainObject().getMapping().getSourceType() == GspVoObjectSourceType.BeObject) { + + BizMgrActionCollection mgrActions = be.getBizMgrActions(); + //④检查be带出操作是否已删除 + if (actions.size() > 0) { + for (int i = 0; i < actions.size(); i++) { + + ViewModelAction vmAction = actions.get(i); + if (vmAction.getType() == ViewModelActionType.BEAction) { + + BizMgrAction mgrAction = (BizMgrAction) mgrActions.stream() + .filter(item -> item.getID().equals(vmAction.getMapping().getTargetObjId())) + .findFirst().orElse(null);//Find(item => item.ID == vmAction.Mapping.TargetObjId); + if (mgrAction == null) { + throwValidateException( + "操作'" + vmAction.getName() + "在业务实体上无映射操作,业务实体自定义操作的id=" + vmAction.getMapping() + .getTargetObjId() + ",请检查是否已删除。"); + validateRez = false; + } + } + else { + String errorMsg = validComp(vmAction); + if(!StringUtils.isEmpty(errorMsg)){ + throwValidateException(errorMsg); + } + } + } + } + } + + if (sb.length() > 0) { + throwValidateException(sb.toString()); + validateRez = false; + } + return validateRez; + } + + private String validComp(ViewModelAction vmAction){ + StringBuilder sb = new StringBuilder(); + + if(!(vmAction instanceof MappedCdpActionBase)){ + return ""; + } + MappedCdpActionBase mappedCdpActionBase = (MappedCdpActionBase)vmAction; + if(mappedCdpActionBase.getIsGenerateComponent() || StringUtils.isEmpty(mappedCdpActionBase.getComponentEntityId())){ + return ""; + } + //如果是引用已有构件,需要做参数校验 + RefCommonService metadataService=SpringBeanUtils.getBean(RefCommonService.class); + GspMetadata metadata = metadataService.getRefMetadata(((MappedCdpActionBase) vmAction).getComponentEntityId()); + if(metadata == null){ + sb.append(String.format("动作'%1$s'对应的构件元数据不存在!", vmAction.getName())); + sb.append("\n"); + return sb.toString(); + } + ICompParameterCollection compParameterCollection = null; + if(metadata.getContent() instanceof VMComponent) { + VMComponent component = (VMComponent) metadata.getContent(); + compParameterCollection = component.getMethod().getCompParameters(); + int oprParSize = vmAction.getParameterCollection() == null ? 0 : vmAction.getParameterCollection().getCount(); + int compParSize = compParameterCollection == null ? 0 :compParameterCollection.getCount(); + if(oprParSize != compParSize){ + sb.append(String.format("动作'%1$s'的参数个数为:%2$s,对应构件上参数个数为%3$s,请确认!", vmAction.getName(), oprParSize, compParSize)); + sb.append("\n"); + return sb.toString(); + } + } + if(!mappedCdpActionBase.getIsGenerateComponent()){ + for(int i=0; i< vmAction.getParameterCollection().getCount(); i++){ + IViewModelParameter viewModelParameter = vmAction.getParameterCollection().getItem(i); + ICompParameter compParameter = compParameterCollection.getItem(i); + //引用构件的才校验 + sb.append(validVMCompParameter(viewModelParameter, compParameter, vmAction)); + } + sb.append(validReturnValue(vmAction, (VMComponent) metadata.getContent())); + } + return sb.toString(); + } + + private String validReturnValue(ViewModelAction vmAction, VMComponent vmComponent){ + StringBuilder sb = new StringBuilder(); + ViewModelReturnValue vmReturnValue = vmAction.getReturnValue(); + ReturnValue returnValue = vmComponent.getVmMethod().getReturnValue(); + //返回值为空 不校验 + if("void".equalsIgnoreCase(vmReturnValue.getDotnetClassName()) && "void".equalsIgnoreCase(returnValue.getDotnetClassName())) + return ""; + + if(!StringUtils.equalsIgnoreCase(vmReturnValue.getClassName(), returnValue.getClassName())){ + sb.append(String.format("动作'%1$s'中返回类型和构件不一致", vmAction.getName())); + } + if(vmReturnValue.getCollectionParameterType().getValue() != returnValue.getParameterCollectionType().getValue()){ + sb.append(String.format("动作'%1$s'中返回值集合类型和构件不一致", vmAction.getName())); + } + return sb.toString(); + } + private String validVMCompParameter(IViewModelParameter viewModelParameter, ICompParameter compParameter, ViewModelAction vmActionBase){ + StringBuilder sb = new StringBuilder(); + if(!StringUtils.equalsIgnoreCase(viewModelParameter.getParamCode(), compParameter.getParamCode())){ + sb.append(String.format("动作'%1$s'中的参数'%2$s'和构件参数'%3$s'的[编号] 属性不一致", vmActionBase.getName(), viewModelParameter.getParamCode(), compParameter.getParamCode())); + } + if(!StringUtils.equalsIgnoreCase(viewModelParameter.getClassName(), compParameter.getClassName())){ + sb.append(String.format("动作'%1$s'中的参数'%2$s'和构件参数的[类型] 属性不一致,类型分别为'%3$s','%4$s'", vmActionBase.getName(), viewModelParameter.getParamCode(),viewModelParameter.getClassName(), compParameter.getClassName())); + } + return sb.toString(); + } + + private boolean validateActionsBasicInfo(ArrayList actions, + String errorMessage, StringBuilder sb) { + boolean validateRez = true; + + //①必填项 + sb.append(String.format(validateOperationBasicInfo(errorMessage, actions))); + if (sb.length() > 0) { + throwValidateException(sb.toString()); + validateRez = false; + } + //②编号重复 + sb.append(String.format(validateOperationCodeRepeat(errorMessage, actions))); + if (sb.length() > 0) { + throwValidateException(sb.toString()); + validateRez = false; + } + //③参数及返回值校验 + sb.append(String.format(validateActionParas(errorMessage, actions))); + if (sb.length() > 0) { + throwValidateException(sb.toString()); + validateRez = false; + } + return validateRez; + } + + private boolean validateHelpActions() { + boolean validateRez = true; + StringBuilder sb = new StringBuilder(); + ArrayList actions = new ArrayList(); + + ArrayList elementList = vm.getAllElementList(true); + + for (IGspCommonElement item : elementList) { + GspViewModelElement element = (GspViewModelElement) item; + if (element.getHelpActions() != null) { + + for (ViewModelAction action : element.getHelpActions()) { + actions.add(action); + } + } + + } + String errorMessage = String.format(OPT_CDPACTION); + //①必填项 + sb.append(String.format(validateOperationBasicInfo(errorMessage, actions))); + if (sb.length() > 0) { + throwValidateException(sb.toString()); + validateRez = false; + } + //②编号重复 + sb.append(String.format(validateOperationCodeRepeat(errorMessage, actions))); + if (sb.length() > 0) { + throwValidateException(sb.toString()); + validateRez = false; + } + + return validateRez; + } + + /** + * [操作]编号重复 + */ + private String validateOperationCodeRepeat(String errorMessage, + ArrayList operations) { + StringBuilder sb = new StringBuilder(); + if (operations != null && operations.size() > 0) { + for (int i = 0; i < operations.size() - 1; i++) { + ViewModelAction firstOperation = operations.get(i); + for (int j = i + 1; j < operations.size(); j++) { + ViewModelAction secondOperation = operations.get(j); + if (firstOperation.getCode().equals(secondOperation.getCode())) { + String message = String + .format(errorMessage + "'%1$s'与'%2$s'的编号重复。", firstOperation.getName(), + secondOperation.getName()); + sb.append("\n"); + return message; + } + } + } + } + return sb.toString(); + } + + /** + * [操作]编号名称为空 + */ + private String validateOperationBasicInfo(String errorMessage, + ArrayList oprs) { + if (oprs == null || oprs.isEmpty()) { + return ""; + } + StringBuilder sb = new StringBuilder(); + + for (ViewModelAction opr : oprs) { + if (CheckInfoUtil.checkNull(opr.getCode())) { + sb.append( + String.format(errorMessage + String.format("'%1$s'的 [编号] 属性不允许为空! ", opr.getName()))); + sb.append("\n"); + } else { + // 操作Code限制非法字符 + if (!conformToNaminGspecification(opr.getCode())) { + sb.append(String.format(errorMessage + String + .format("'%1$s'的 [编号] 属性必须以英文字母或下划线开头, 并且只能由英文字母、数字、下划线(_)组成! ", opr.getName()))); + sb.append("\n"); + } + } + if (CheckInfoUtil.checkNull(opr.getName())) { + sb.append( + String.format(errorMessage + String.format("'%1$s'的 [名称] 属性不允许为空! ", opr.getCode()))); + sb.append("\n"); + } + } + return sb.toString(); + } + + /** + * [操作]编号重复 + */ + private String validateCommonOperationCodeRepeat(String errorMessage, + ArrayList operations) { + StringBuilder sb = new StringBuilder(); + if (operations != null && operations.size() > 0) { + for (int i = 0; i < operations.size() - 1; i++) { + CommonOperation firstOperation = operations.get(i); + for (int j = i + 1; j < operations.size(); j++) { + CommonOperation secondOperation = operations.get(j); + if (firstOperation.getCode().equals(secondOperation.getCode())) { + String message = String + .format(errorMessage + "'%1$s'与'%2$s'的编号重复。", firstOperation.getName(), + secondOperation.getName()); + sb.append("\n"); + return message; + } + } + } + } + return sb.toString(); + } + + /** + * [操作]编号名称为空 + */ + private String validateCommonOperationBasicInfo(String errorMessage, + ArrayList oprs) { + if (oprs == null || oprs.size() == 0) { + return ""; + } + StringBuilder sb = new StringBuilder(); + + for (CommonOperation opr : oprs) { + if (CheckInfoUtil.checkNull(opr.getCode())) { + sb.append( + String.format(errorMessage + String.format("'%1$s'的 [编号] 属性不允许为空! ", opr.getName()))); + sb.append("\n"); + } else { + // 操作Code限制非法字符 + if (!conformToNaminGspecification(opr.getCode())) { + sb.append(String.format(errorMessage + String + .format("'%1$s'的 [编号] 属性必须以英文字母或下划线开头, 并且只能由英文字母、数字、下划线(_)组成! ", opr.getName()))); + sb.append("\n"); + } + } + if (CheckInfoUtil.checkNull(opr.getName())) { + sb.append( + String.format(errorMessage + String.format("'%1$s'的 [名称] 属性不允许为空! ", opr.getCode()))); + sb.append("\n"); + } + } + return sb.toString(); + } + + /** + * [操作]-action-参数 + */ + private String validateActionReturnValue(ViewModelAction opr, String errorMessage) { + StringBuilder sb = new StringBuilder(); + ViewModelReturnValue returnValue = opr.getReturnValue(); + if (returnValue != null && returnValue.getParameterType() == VMParameterType.Custom) { +// if (VmManagerService.CreatDotnetModule(metaPath)) +// { +// if (CheckInfoUtil.checkNull(returnValue.getClassName()) || CheckInfoUtil.checkNull(returnValue.getAssembly())) +// { +// sb.append(String.format("N版元数据工程," + errorMessage + "'%1$s'中的返回值的 [类型] 为自定义类型,请完善其程序集名、类名。", opr.getName())); +// sb.append("\n"); +// } +// } + if (VmManagerService.creatJavaModule(metaPath)) { + if (opr instanceof MappedCdpActionBase && !((MappedCdpActionBase) opr) + .getIsGenerateComponent()) { + + } else { + if (CheckInfoUtil.checkNull(returnValue.getClassName())) { + sb.append(String + .format("J版元数据工程," + errorMessage + "'%1$s'中的返回值的 [类型] 为自定义类型,请完善其Java类名。", + opr.getName())); + sb.append("\n"); + } + } + } + } + return sb.toString(); + } + + + /** + * 校验动作参数及返回值 + */ + private String validateActionParas(String errorMessage, + ArrayList actions) { + StringBuilder sb = new StringBuilder(); + if (actions != null && actions.size() > 0) { + + for (ViewModelAction action : actions) { + sb.append(String.format(validateActionParas((ViewModelAction) action, errorMessage))); + sb.append(String.format(validateActionReturnValue((ViewModelAction) action, errorMessage))); + sb.append(String.format(validateActionComponent((ViewModelAction) action, errorMessage))); + } + } + return sb.toString(); + } + + + private String validateActionComponent(ViewModelAction action,String errorMessage) { + StringBuilder sb = new StringBuilder(); + if(action instanceof MappedCdpAction){ + MappedCdpAction mappedCdpAction = (MappedCdpAction)action; + if(mappedCdpAction.getIsGenerateComponent() || StringUtils.isEmpty(mappedCdpAction.getComponentEntityId())) + return ""; + RefCommonService metadataService=SpringBeanUtils.getBean(RefCommonService.class); + GspMetadata metadata = metadataService.getRefMetadata(((MappedCdpActionBase) action).getComponentEntityId()); + if(metadata == null){ + sb.append(String.format("动作'%1$s'对应的构件元数据不存在!", action.getName())); + sb.append("\n"); + return sb.toString(); + } + } + return sb.toString(); + } + + private String validateActionParas(ViewModelAction opr, String message) { + StringBuilder sb = new StringBuilder(); + //参数编号名称不可为空 + + for (Object para : opr.getParameterCollection()) { + if (CheckInfoUtil.checkNull(((IViewModelParameter) para).getParamCode())) { + sb.append(String.format(message + String + .format("'%1$s'中的参数'%2$s'的 [编号] 属性不允许为空! ", opr.getName(), + ((IViewModelParameter) para).getParamName()))); + sb.append("\n"); + } else { + // 参数编号Code限制非法字符 + if (!conformToNaminGspecification(((IViewModelParameter) para).getParamCode())) { + sb.append(String.format(message + String + .format("'%1$s'中的参数'%2$s'的[编号] 属性必须以英文字母或下划线开头, 并且只能由英文字母、数字、下划线(_)组成! ", + opr.getName(), ((IViewModelParameter) para).getParamName()))); + sb.append("\n"); + } + } + if (CheckInfoUtil.checkNull(((IViewModelParameter) para).getParamName())) { + sb.append(String.format(message + String + .format("'%1$s'中的参数'%2$s'的 [名称] 属性不允许为空! ", opr.getName(), + ((IViewModelParameter) para).getParamCode()))); + sb.append("\n"); + } + if (((IViewModelParameter) para).getParameterType() == VMParameterType.Custom) { +// if (VmManagerService.CreatDotnetModule(metaPath)) +// { +// if (CheckInfoUtil.checkNull(para.ClassName) || CheckInfoUtil.checkNull(para.Assembly)) +// { +// sb.append(String.format("N版元数据工程," + message + "'%1$s'中的参数'%2$s' [参数类型] 为自定义类型,请完善其程序集名、类名。", opr.getName(), para.ParamName)); +// sb.append("\n"); +// } +// } + if (VmManagerService.creatJavaModule(metaPath)) { + if (opr instanceof MappedCdpActionBase && !((MappedCdpActionBase) opr) + .getIsGenerateComponent()) { + + } else { + if (CheckInfoUtil.checkNull(((IViewModelParameter) para).getClassName())) { + sb.append(String + .format("J版元数据工程," + message + "'%1$s'中的参数'%2$s' [参数类型] 为自定义类型,请完善其Java类名。", + opr.getName(), ((IViewModelParameter) para).getParamName())); + sb.append("\n"); + } + } + } + } + } + if (sb.length() > 0) { + return sb.toString(); + } + + //参数编号不可重复 + if (opr.getParameterCollection() != null && opr.getParameterCollection().getCount() > 0) { + for (int i = 0; i < opr.getParameterCollection().getCount() - 1; i++) { + IViewModelParameter firstPara = opr.getParameterCollection().getItem(i); + for (int j = i + 1; j < opr.getParameterCollection().getCount(); j++) { + IViewModelParameter secondPara = opr.getParameterCollection().getItem(j); + if (firstPara.getParamCode().equals(secondPara.getParamCode())) { + sb.append(String + .format(message + "'%1$s'中的参数'%2$s'和参数'%3$s'的[编号] 属性不允许重复", opr.getName(), + firstPara.getParamName(), secondPara.getParamName())); + sb.append("\n"); + } + } + } + } + return sb.toString(); + } + + ///#endregion + + ///#region 扩展操作 + + /** + * 校验扩展操作 + */ + private boolean validateDataExtendInfo() { + StringBuilder sb = new StringBuilder(); + + boolean validateRez = + validateExtendActionsBasicInfo(vm.getDataExtendInfo().getDataMappingActions(), "数据Mapping", + sb) + && validateExtendActionsBasicInfo(vm.getDataExtendInfo().getBeforeQueryActions(), + "查询数据前", sb) + && validateExtendActionsBasicInfo(vm.getDataExtendInfo().getQueryActions(), "查询数据", sb) + && validateExtendActionsBasicInfo(vm.getDataExtendInfo().getAfterQueryActions(), + "查询数据后", sb) + && validateExtendActionsBasicInfo(vm.getDataExtendInfo().getBeforeRetrieveActions(), + "检索数据前", sb) + && validateExtendActionsBasicInfo(vm.getDataExtendInfo().getRetrieveActions(), "检索数据", + sb) + && validateExtendActionsBasicInfo(vm.getDataExtendInfo().getAfterRetrieveActions(), + "检索数据后", sb) + && validateExtendActionsBasicInfo(vm.getDataExtendInfo().getBeforeModifyActions(), + "修改数据前", sb) + && validateExtendActionsBasicInfo(vm.getDataExtendInfo().getModifyActions(), "修改数据", sb) + && validateExtendActionsBasicInfo(vm.getDataExtendInfo().getAfterModifyActions(), + "修改数据后", sb) + && validateExtendActionsBasicInfo(vm.getDataExtendInfo().getChangesetMappingActions(), + "变更集Mapping", sb) + && validateExtendActionsBasicInfo(vm.getDataExtendInfo().getBeforeCreateActions(), + "新增数据前", sb) + && validateExtendActionsBasicInfo(vm.getDataExtendInfo().getCreateActions(), "新增数据", sb) + && validateExtendActionsBasicInfo(vm.getDataExtendInfo().getAfterCreateActions(), + "新增数据后", sb) + && validateExtendActionsBasicInfo(vm.getDataExtendInfo().getBeforeDeleteActions(), + "删除数据前", sb) + && validateExtendActionsBasicInfo(vm.getDataExtendInfo().getDeleteActions(), "删除数据", sb) + && validateExtendActionsBasicInfo(vm.getDataExtendInfo().getAfterDeleteActions(), + "删除数据后", sb) + && validateExtendActionsBasicInfo(vm.getDataExtendInfo().getBeforeSaveActions(), + "保存数据前", sb) + && validateExtendActionsBasicInfo( + vm.getDataExtendInfo().getDataReversalMappingActions(), "数据反向Mapping", sb) + && validateExtendActionsBasicInfo(vm.getDataExtendInfo().getAfterSaveActions(), "保存数据后", + sb) + && validateExtendActionsBasicInfo( + vm.getDataExtendInfo().getChangesetReversalMappingActions(), "变更集反向Mapping", sb) + && validateExtendActionsBasicInfo(vm.getDataExtendInfo().getBeforeMultiDeleteActions(), + "批量删除数据前", sb) + && validateExtendActionsBasicInfo(vm.getDataExtendInfo().getMultiDeleteActions(), + "批量删除数据", sb) + && validateExtendActionsBasicInfo(vm.getDataExtendInfo().getAfterMultiDeleteActions(), + "批量删除数据后", sb); + + return validateRez; + } + + private boolean validateExtendActionsBasicInfo(ArrayList actions, + String currentActionType, StringBuilder sb) { + if (actions.isEmpty()) { + return true; + } + String errorMessage = String.format("扩展操作 [%1$s] 中的", currentActionType); + return validateActionsBasicInfo(actions, errorMessage, sb); + } + + ///#endregion + + ///#region 帮助前事件 + + private String validateValueHelpConfigs(GspViewModel model) { + StringBuilder sb = new StringBuilder(); + ValueHelpConfigCollection configs = model.getValueHelpConfigs(); + if (configs != null && configs.size() > 0) { + for (int i = 0; i < configs.size() - 1; i++) { + ValueHelpConfig firstOperation = configs.getItem(i); + for (int j = i + 1; j < configs.size(); j++) { + ValueHelpConfig secondOperation = configs.getItem(j); + if (firstOperation.getElementId().equals(secondOperation.getElementId())) { + String message = String.format(VALUEHELPCONFIG + "'%1$s'与'%2$s'的[ElementId]属性重复。", + firstOperation.getElementId(), secondOperation.getElementId()); + sb.append("\n"); + return message; + } + } + } + + for (ValueHelpConfig config : configs) { + if (CheckInfoUtil.checkNull(config.getElementId())) { + sb.append(String.format(VALUEHELPCONFIG + "'%1$s' 的 [ElementId] 属性不允许为空,请检查! ", + config.getElementId())); + sb.append("\n"); + } + if (CheckInfoUtil.checkNull(config.getHelperId())) { + sb.append(String.format(VALUEHELPCONFIG + "'%1$s' 的 [HelperId] 属性不允许为空,请检查! ", + config.getElementId())); + sb.append("\n"); + } + if (config.getHelpExtend() != null && config.getHelpExtend().getBeforeHelp() != null + && config.getHelpExtend().getBeforeHelp().size() > 0) { + + VMActionCollection actions = config.getHelpExtend().getBeforeHelp(); + + String errorMessage = String.format(VALUEHELPACTION, config.getElementId()); + validateActionsBasicInfo(actions, errorMessage, sb); + } + } + } + sb.append(validateVariables(model)); + return sb.toString(); + } + + ///#endregion + + ///#region 通用工具 + + /** + * 是否符合命名规范 字母数字下划线组成,字母下划线开头 + */ + private boolean conformToNaminGspecification(String text) { + String re = "^[A-Za-z_][A-Za-z_0-9]*$"; + + Pattern pattern = Pattern.compile(re); + Matcher matcher = pattern.matcher(text); + return matcher.matches(); + } + + ///#endregion +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/validate/element/ViewModelFieldChecker.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/validate/element/ViewModelFieldChecker.java new file mode 100644 index 0000000000000000000000000000000000000000..ee35e137f01120a4d29818239d3533a93cb97261 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/validate/element/ViewModelFieldChecker.java @@ -0,0 +1,29 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.validate.element; + +import com.inspur.edp.das.commonmodel.validate.element.CMFieldChecker; + +public class ViewModelFieldChecker extends CMFieldChecker { + private static ViewModelFieldChecker viewModelField; + public static ViewModelFieldChecker getInstance(){ + if (viewModelField==null){ + viewModelField=new ViewModelFieldChecker(); + } + return viewModelField; + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/validate/model/ViewModelChecker.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/validate/model/ViewModelChecker.java new file mode 100644 index 0000000000000000000000000000000000000000..7cbaac54bb9ad94c44d3732878d5fb5ef9a7cfd9 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/validate/model/ViewModelChecker.java @@ -0,0 +1,49 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.validate.model; + +import com.inspur.edp.das.commonmodel.entity.GspCommonModel; +import com.inspur.edp.das.commonmodel.validate.model.CommonModelChecker; +import com.inspur.edp.das.commonmodel.validate.object.CMObjectChecker; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.vmmanager.validate.object.ViewObjInspaction; +import com.inspur.edp.formserver.vmmanager.validate.operation.ActionChecker; + +public class ViewModelChecker extends CommonModelChecker { + private static ViewModelChecker viewModelChecker; + + public static ViewModelChecker getInstance() { + if (viewModelChecker == null) { + viewModelChecker = new ViewModelChecker(); + } + return viewModelChecker; + } + + public final void check(GspViewModel viewModel) { + checkCM(viewModel); + } + + @Override + protected void checkExtension(GspCommonModel viewModel) { + ActionChecker.getInstance().checkVMAction((GspViewModel) viewModel); + } + + @Override + protected CMObjectChecker getCMObjectChecker() { + return ViewObjInspaction.getInstance(); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/validate/object/ViewObjInspaction.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/validate/object/ViewObjInspaction.java new file mode 100644 index 0000000000000000000000000000000000000000..b021938b5fa6a419f7728a8ec2830f4581934ba2 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/validate/object/ViewObjInspaction.java @@ -0,0 +1,36 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.validate.object; + +import com.inspur.edp.cef.designtime.api.validate.element.FieldChecker; +import com.inspur.edp.das.commonmodel.validate.object.CMObjectChecker; +import com.inspur.edp.formserver.vmmanager.validate.element.ViewModelFieldChecker; + +public class ViewObjInspaction extends CMObjectChecker { + private static ViewObjInspaction viewObj; + + public static ViewObjInspaction getInstance() { + if (viewObj == null) { + viewObj = new ViewObjInspaction(); + } + return viewObj; + } + @Override + protected FieldChecker getFieldChecker() { + return ViewModelFieldChecker.getInstance(); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/validate/operation/ActionChecker.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/validate/operation/ActionChecker.java new file mode 100644 index 0000000000000000000000000000000000000000..70b9f934cef4ca626500f238d9c1130f17e8371d --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/validate/operation/ActionChecker.java @@ -0,0 +1,74 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.validate.operation; + +import com.alibaba.druid.util.StringUtils; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.action.mappedcdp.MappedCdpActionParameter; + +import static com.inspur.edp.cef.designtime.api.validate.common.CheckUtil.exception; +import static com.inspur.edp.cef.designtime.api.validate.common.CheckUtil.isLegality; + +public class ActionChecker { + private static ActionChecker actionChecker; + + public static ActionChecker getInstance() { + if (actionChecker == null) { + actionChecker = new ActionChecker(); + } + return actionChecker; + } + + protected final void opException(String code) { + if (code == null || code.isEmpty()) + return; + exception(code); + } + + public void checkVMAction(GspViewModel vm) { + for (ViewModelAction vmAction : vm.getActions()) { + actionCodeInspaction(vmAction); + parametersInspaction(vmAction); + } + } + + private void actionCodeInspaction(ViewModelAction vmAction) { + if (vmAction == null) + return; + if(StringUtils.isEmpty(vmAction.getCode())){ + opException("视图操作对象[" + vmAction.getName() + "]的编号不能为空,请修改!"); + } + if (isLegality(vmAction.getCode())) + return; + opException("视图操作对象编号[" + vmAction.getCode() + "]是Java关键字,请修改!"); + } + + private void parametersInspaction(ViewModelAction action) { + for (Object par : action.getParameterCollection()) { + par = par instanceof MappedCdpActionParameter ? (MappedCdpActionParameter) par : null; + if (par == null) + continue; + if(StringUtils.isEmpty(((MappedCdpActionParameter) par).getParamCode())){ + opException("视图对象["+action.getCode()+"]的动作参数["+((MappedCdpActionParameter) par).getParamCode()+"]不能为空,请修改!"); + } + if (isLegality(((MappedCdpActionParameter) par).getParamCode())) + continue; + opException("视图对象["+action.getCode()+"]的动作参数["+((MappedCdpActionParameter) par).getParamCode()+"]是Java关键字,请修改!"); + } + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/vmdtconsistencycheckevent/VmDtConsistencyCheckConf.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/vmdtconsistencycheckevent/VmDtConsistencyCheckConf.java new file mode 100644 index 0000000000000000000000000000000000000000..8f7a215e843587a3a091a6b7e01e2cb3fd592f9e --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/vmdtconsistencycheckevent/VmDtConsistencyCheckConf.java @@ -0,0 +1,34 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.vmdtconsistencycheckevent; + +import io.iec.edp.caf.commons.event.config.EventListenerSettings; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration("com.inspur.edp.formserver.vmmanager.vmdtconsistencycheckevent") +public class VmDtConsistencyCheckConf { + @Bean(name = "VmDtConsistencyCheckEventBroker") + public VmDtConsistencyCheckEventBroker setEventBroker(EventListenerSettings settings) { + return new VmDtConsistencyCheckEventBroker(settings); + } + + @Bean(name = "VmDtConsistencyCheckEventManager") + public VmDtConsistencyCheckEventManager setEventManager(){ + return new VmDtConsistencyCheckEventManager(); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/vmdtconsistencycheckevent/VmDtConsistencyCheckEventBroker.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/vmdtconsistencycheckevent/VmDtConsistencyCheckEventBroker.java new file mode 100644 index 0000000000000000000000000000000000000000..b5abe6094048b95592a52e61da36f76728f1d8c9 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/vmdtconsistencycheckevent/VmDtConsistencyCheckEventBroker.java @@ -0,0 +1,87 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.vmdtconsistencycheckevent; + +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs.*; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.entityeventargs.ChangingViewObjectCodeEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.entityeventargs.RemovingViewObjectEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs.ChangingVoFieldDataTypeEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs.ChangingVoFieldLabelIdEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs.ChangingVoFieldObjectTypeEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs.RemovingVoFieldEventArgs; +import io.iec.edp.caf.commons.event.EventBroker; +import io.iec.edp.caf.commons.event.config.EventListenerSettings; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +public class VmDtConsistencyCheckEventBroker extends EventBroker { + + private VmDtConsistencyCheckEventManager eventManager = SpringBeanUtils.getBean( + VmDtConsistencyCheckEventManager.class); + + public VmDtConsistencyCheckEventBroker(EventListenerSettings settings) { + super(settings); + this.init(); + } + + @Override + protected void onInit() { + this.getEventManagerCollection().add(eventManager); + } + + public void fireChangingViewObjectCode(ChangingViewObjectCodeEventArgs args) { + eventManager.fireChangingViewObjectCode(args); + } + + public void fireRemovingViewObject(RemovingViewObjectEventArgs args) { + eventManager.fireRemovingViewObject(args); + } + + public void fireRemovingVoField(RemovingVoFieldEventArgs args) { + eventManager.fireRemovingVoField(args); + } + + public void fireChangingVoFieldDataType(ChangingVoFieldDataTypeEventArgs args) { + eventManager.fireChangingVoFieldDataType(args); + } + + public void fireChangingVoFieldObjectType(ChangingVoFieldObjectTypeEventArgs args) { + eventManager.fireChangingVoFieldObjectType(args); + } + + public void fireChangingVoFieldLabelId(ChangingVoFieldLabelIdEventArgs args) { + eventManager.fireChangingVoFieldLabelId(args); + } + + public void fireChangingVoActionCode(ChangingVoActionCodeEventArgs args) { + eventManager.fireChangingVoActionCode(args); + } + + public void fireChangingVoActionParams(ChangingVoActionParamsEventArgs args) { + eventManager.fireChangingVoActionParams(args); + } + + public void fireChangingVoActionReturn(ChangingVoActionReturnEventArgs args) { + eventManager.fireChangingVoActionReturn(args); + } + + public void fireDeletingVoAction(DeletingVoActionEventArgs args) { + eventManager.fireDeletingVoAction(args); + } + public void fireChangingVoActionCollectType(ChangingVoActionCollectTypeEventArgs args){ + eventManager.fireChangingVoActionCollectType(args); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/vmdtconsistencycheckevent/VmDtConsistencyCheckEventManager.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/vmdtconsistencycheckevent/VmDtConsistencyCheckEventManager.java new file mode 100644 index 0000000000000000000000000000000000000000..55924883dc5fefd8461b7db6184cba0ee1c4e93b --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/vmdtconsistencycheckevent/VmDtConsistencyCheckEventManager.java @@ -0,0 +1,158 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.vmdtconsistencycheckevent; + +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs.*; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.entityeventargs.ChangingViewObjectCodeEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.entityeventargs.RemovingViewObjectEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs.ChangingVoFieldDataTypeEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs.ChangingVoFieldLabelIdEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs.ChangingVoFieldObjectTypeEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs.RemovingVoFieldEventArgs; +import com.inspur.edp.formserver.viewmodel.viewmodeldtevent.IVoActionDTEventListener; +import com.inspur.edp.formserver.viewmodel.viewmodeldtevent.IVoEntityDTEventListener; +import com.inspur.edp.formserver.viewmodel.viewmodeldtevent.IVoFieldDTEventListener; +import io.iec.edp.caf.commons.event.EventManager; +import io.iec.edp.caf.commons.event.IEventListener; + +public class VmDtConsistencyCheckEventManager extends EventManager { + + @Override + public String getEventManagerName() { + return "VmDtConsistencyCheckEventManager"; + } + + @Override + public boolean isHandlerListener(IEventListener listener) { + return (listener instanceof IVoFieldDTEventListener + || listener instanceof IVoEntityDTEventListener + || listener instanceof IVoActionDTEventListener); + } + + @Override + public void addListener(IEventListener listener) { + if (!((listener instanceof IVoFieldDTEventListener + || listener instanceof IVoEntityDTEventListener + || listener instanceof IVoActionDTEventListener))) { + throw new RuntimeException( + "指定的监听者没有实现IVoFieldDTEventListener接口、IVoEntityDTEventListener接口或IVoActionDTEventListener接口!"); + } + if (listener instanceof IVoEntityDTEventListener) { + IVoEntityDTEventListener voEntityDTEventListener = (IVoEntityDTEventListener) listener; + this.addEventHandler(VmDtConsistencyCheckType.changingViewObjectCode, voEntityDTEventListener, + "changingViewObjectCode"); + this.addEventHandler(VmDtConsistencyCheckType.removingViewObject, voEntityDTEventListener, + "removingViewObject"); + } + if (listener instanceof IVoFieldDTEventListener) { + IVoFieldDTEventListener voFieldDTEventListener = (IVoFieldDTEventListener) listener; + this.addEventHandler(VmDtConsistencyCheckType.removingVoField, + voFieldDTEventListener, "removingVoField"); + this.addEventHandler(VmDtConsistencyCheckType.changingVoFieldDataType, + voFieldDTEventListener, + "changingVoFieldDataType"); + this.addEventHandler(VmDtConsistencyCheckType.changingVoFieldObjectType, + voFieldDTEventListener, "changingVoFieldObjectType"); + this.addEventHandler(VmDtConsistencyCheckType.changingVoFieldLabelId, + voFieldDTEventListener, "changingVoFieldLabelId"); + } + if(listener instanceof IVoActionDTEventListener){ + IVoActionDTEventListener voActionDTEventListener = (IVoActionDTEventListener) listener; + this.addEventHandler(VmDtConsistencyCheckType.changingVoActionCode,voActionDTEventListener,"changingVoActionCode"); + this.addEventHandler(VmDtConsistencyCheckType.changingVoActionParams,voActionDTEventListener,"changingVoActionParams"); + this.addEventHandler(VmDtConsistencyCheckType.changingViewObjectCode,voActionDTEventListener,"changingViewObjectCode"); + this.addEventHandler(VmDtConsistencyCheckType.deletingVoAction,voActionDTEventListener,"deletingVoAction"); + this.addEventHandler(VmDtConsistencyCheckType.changingVoActionCollectType,voActionDTEventListener,"ChangingVoActionCollectType"); + } + } + + @Override + public void removeListener(IEventListener listener) { + if (!((listener instanceof IVoFieldDTEventListener + || listener instanceof IVoEntityDTEventListener + || listener instanceof IVoActionDTEventListener))) { + throw new RuntimeException( + "指定的监听者没有实现IVoFieldDTEventListener接口、IVoEntityDTEventListener接口或IVoActionDTEventListener接口!"); + } + if (listener instanceof IVoEntityDTEventListener) { + IVoEntityDTEventListener voEntityDTEventListener = (IVoEntityDTEventListener) listener; + this.removeEventHandler(VmDtConsistencyCheckType.changingViewObjectCode, + voEntityDTEventListener, "changingViewObjectCode"); + this.removeEventHandler(VmDtConsistencyCheckType.removingViewObject, voEntityDTEventListener, + "removingViewObject"); + } + if (listener instanceof IVoFieldDTEventListener) { + IVoFieldDTEventListener voFieldDTEventListener = (IVoFieldDTEventListener) listener; + this.removeEventHandler(VmDtConsistencyCheckType.removingVoField, + voFieldDTEventListener, "removingVoField"); + this.removeEventHandler(VmDtConsistencyCheckType.changingVoFieldDataType, + voFieldDTEventListener, + "changingVoFieldDataType"); + this.removeEventHandler(VmDtConsistencyCheckType.changingVoFieldObjectType, + voFieldDTEventListener, "ChangingVoFieldObjectType"); + this.removeEventHandler(VmDtConsistencyCheckType.changingVoFieldLabelId, + voFieldDTEventListener, "ChangingVoFieldLabelId"); + } + if(listener instanceof IVoActionDTEventListener){ + IVoActionDTEventListener voActionDTEventListener = (IVoActionDTEventListener) listener; + this.removeEventHandler(VmDtConsistencyCheckType.changingVoActionCode,voActionDTEventListener,"changingVoActionCode"); + this.removeEventHandler(VmDtConsistencyCheckType.changingVoActionParams,voActionDTEventListener,"changingVoActionParams"); + this.removeEventHandler(VmDtConsistencyCheckType.changingViewObjectCode,voActionDTEventListener,"changingViewObjectCode"); + this.removeEventHandler(VmDtConsistencyCheckType.deletingVoAction,voActionDTEventListener,"deletingVoAction"); + this.removeEventHandler(VmDtConsistencyCheckType.changingVoActionCollectType,voActionDTEventListener,"changingVoActionCollectType"); + } + } + + //ViewModel + public final void fireChangingViewObjectCode(ChangingViewObjectCodeEventArgs args) { + this.fire(VmDtConsistencyCheckType.changingViewObjectCode, args); + } + + public final void fireRemovingViewObject(RemovingViewObjectEventArgs args) { + this.fire(VmDtConsistencyCheckType.removingViewObject, args); + } + + public final void fireRemovingVoField(RemovingVoFieldEventArgs args){ + this.fire(VmDtConsistencyCheckType.removingVoField,args); + } + public final void fireChangingVoFieldDataType(ChangingVoFieldDataTypeEventArgs args){ + this.fire(VmDtConsistencyCheckType.changingVoFieldDataType,args); + } + public final void fireChangingVoFieldObjectType(ChangingVoFieldObjectTypeEventArgs args){ + this.fire(VmDtConsistencyCheckType.changingVoFieldObjectType,args); + } + public final void fireChangingVoFieldLabelId(ChangingVoFieldLabelIdEventArgs args){ + this.fire(VmDtConsistencyCheckType.changingVoFieldLabelId,args); + } + + public final void fireChangingVoActionCode(ChangingVoActionCodeEventArgs args){ + this.fire(VmDtConsistencyCheckType.changingVoActionCode,args); + } + public final void fireChangingVoActionParams(ChangingVoActionParamsEventArgs args){ + this.fire(VmDtConsistencyCheckType.changingVoActionParams,args); + } + public final void fireChangingVoActionReturn(ChangingVoActionReturnEventArgs args){ + this.fire(VmDtConsistencyCheckType.changingVoActionReturn,args); + } + public final void fireDeletingVoAction(DeletingVoActionEventArgs args){ + this.fire(VmDtConsistencyCheckType.deletingVoAction,args); + } + public final void fireChangingVoActionCollectType(ChangingVoActionCollectTypeEventArgs args){ + this.fire(VmDtConsistencyCheckType.changingVoActionCollectType,args); + } + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/vmdtconsistencycheckevent/VmDtConsistencyCheckType.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/vmdtconsistencycheckevent/VmDtConsistencyCheckType.java new file mode 100644 index 0000000000000000000000000000000000000000..0250f5d4d9a806e79d9b30ba9decb744f88f17bb --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/vmdtconsistencycheckevent/VmDtConsistencyCheckType.java @@ -0,0 +1,31 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.vmdtconsistencycheckevent; + +public enum VmDtConsistencyCheckType { + changingViewObjectCode, + removingViewObject, + removingVoField, + changingVoFieldDataType, + changingVoFieldObjectType, + changingVoFieldLabelId, + changingVoActionCode, + deletingVoAction, + changingVoActionReturn, + changingVoActionParams, + changingVoActionCollectType; +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/vodtconsistencychecklistener/BizEntityActionDTConsistencyCheckListener.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/vodtconsistencychecklistener/BizEntityActionDTConsistencyCheckListener.java new file mode 100644 index 0000000000000000000000000000000000000000..bb71e894d60d3fe70880e698aa156f9871ce8dc2 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/vodtconsistencychecklistener/BizEntityActionDTConsistencyCheckListener.java @@ -0,0 +1,102 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.vodtconsistencychecklistener; + + +import com.inspur.edp.bef.bizentity.bizentitydtevent.BizEntityActionDTEventListener; +import com.inspur.edp.bef.bizentity.dtconsistencycheck.actioneventargs.AbstractMgrActionEventArgs; +import com.inspur.edp.bef.bizentity.dtconsistencycheck.actioneventargs.DeletingActionEventArgs; +import com.inspur.edp.cef.designtime.api.dtconsistencycheck.ConsistencyCheckEventMessage; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.service.MetadataProjectService; +import com.inspur.edp.lcm.metadata.api.service.MetadataService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +import java.util.List; + +public class BizEntityActionDTConsistencyCheckListener extends BizEntityActionDTEventListener { + + @Override + public DeletingActionEventArgs deletingAction(DeletingActionEventArgs args) { + return (DeletingActionEventArgs)bizEntityConsistencyCheck(args); + } + /** + * 对关联信息进行检查 + * + * @param args + * @return + */ + protected AbstractMgrActionEventArgs bizEntityConsistencyCheck(AbstractMgrActionEventArgs args) { + String returnMessage = getDependentInfos(args.getMetadataPath(), args.getBeId(), args.getActionId()); + if (returnMessage == null || returnMessage.length() == 0) { + return args; + } + ConsistencyCheckEventMessage message = new ConsistencyCheckEventMessage(false, returnMessage); + args.addEventMessage(message); + return args; + } + /** + * 获取的关联信息 + * + * @param metadataPath 元数据路径 + * @param beId 元数据ID + * @param actionId 自定义动作Id + * @return 关联当前BE的关联信息 + */ + protected String getDependentInfos(String metadataPath, String beId, String actionId) { + MetadataService metadataService = SpringBeanUtils.getBean(com.inspur.edp.lcm.metadata.api.service.MetadataService.class); + List gspMetadataList = metadataService.getMetadataListByRefedMetadataId(metadataPath, beId); + StringBuilder strBuilder = new StringBuilder(); + gspMetadataList.forEach(gspMetadata -> { + if (!gspMetadata.getHeader().getType().equals("GSPViewModel")) + return; + GspViewModel viewModel = (GspViewModel) metadataService + .loadMetadata(gspMetadata.getHeader().getFileName(), gspMetadata.getRelativePath()) + .getContent(); + viewModel.getActions().forEach(vmAction ->{ + + if(vmAction.getMapping() == null || !vmAction.getMapping().getTargetObjId().equals(actionId)) + return; + strBuilder.append(returnMessage(getProjectName(gspMetadata.getRelativePath()),viewModel.getCode(),vmAction.getCode())); + }); + }); + return strBuilder.toString(); + } + + protected String returnMessage(String projectName, String viewModelCode, String actionCode){ + StringBuilder strBuilder = new StringBuilder("工程【"); + strBuilder.append(projectName) + .append("】下的VO【") + .append(viewModelCode) + .append("】中自定义动作【") + .append(actionCode) + .append("】依赖了该动作。"); + return strBuilder.toString(); + } + /** + * 获取元数据包名 + * + * @param metadataPath 元数据路径 + * @return 元数据包名 + */ + protected String getProjectName(String metadataPath) { + MetadataProjectService projectService = SpringBeanUtils + .getBean(com.inspur.edp.lcm.metadata.api.service.MetadataProjectService.class); + return projectService.getMetadataProjInfo(metadataPath).getName(); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/vodtconsistencychecklistener/VoDTConsistencyCheckListener.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/vodtconsistencychecklistener/VoDTConsistencyCheckListener.java new file mode 100644 index 0000000000000000000000000000000000000000..0641f797c28f7aa9d802016de3cd089c4b103592 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/vodtconsistencychecklistener/VoDTConsistencyCheckListener.java @@ -0,0 +1,177 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.vodtconsistencychecklistener; + + +import com.inspur.edp.bef.bizentity.bizentitydtevent.BizEntityDTEventListener; +import com.inspur.edp.bef.bizentity.dtconsistencycheck.entityeventargs.AbstractBeEntityArgs; +import com.inspur.edp.bef.bizentity.dtconsistencycheck.entityeventargs.RemovingEntityEventArgs; +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.cef.designtime.api.collection.GspFieldCollection; +import com.inspur.edp.cef.designtime.api.dtconsistencycheck.ConsistencyCheckEventMessage; +import com.inspur.edp.cef.designtime.api.element.GspElementObjectType; +import com.inspur.edp.das.commonmodel.IGspCommonElement; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.service.MetadataProjectService; +import com.inspur.edp.lcm.metadata.api.service.MetadataService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +import java.util.ArrayList; +import java.util.List; + +public class VoDTConsistencyCheckListener extends BizEntityDTEventListener { + + /** + * 删除节点检查当前BE节点的VO关联和依赖信息 + * + * @param args + * @return + */ + @Override + public RemovingEntityEventArgs removingEntity(RemovingEntityEventArgs args) { + return (RemovingEntityEventArgs) voConsistencyCheck(args); + } + + /** + * 对关联和依赖信息进行检查 + * + * @param args + * @return + */ + protected AbstractBeEntityArgs voConsistencyCheck(AbstractBeEntityArgs args) { + String returnMessage = getAssoAndDependencyInfos(args.getMetadataPath(), args.getBeId(), + args.getBeEntityId()); + if (returnMessage == null || returnMessage.length() == 0) { + return args; + } + ConsistencyCheckEventMessage message = new ConsistencyCheckEventMessage(true, returnMessage); + args.addEventMessage(message); + return args; + } + + /** + * 获取的关联信息 + * + * @param metadataPath 元数据路径 + * @param beId 元数据ID + * @param beNodeId be节点ID + * @return 关联当前BE的关联信息 + */ + protected String getAssoAndDependencyInfos(String metadataPath, String beId, String beNodeId) { + MetadataService metadataService = SpringBeanUtils + .getBean(com.inspur.edp.lcm.metadata.api.service.MetadataService.class); + List gspMetadataList = metadataService + .getMetadataListByRefedMetadataId(metadataPath, beId); + StringBuilder strBuilder = new StringBuilder(); + for (GspMetadata gspMetadata : gspMetadataList) { + if (!gspMetadata.getHeader().getType().equals("GSPViewModel")) { + continue; + } + String packageName = null; + GspViewModel viewModel = (GspViewModel) metadataService + .loadMetadata(gspMetadata.getHeader().getFileName(), gspMetadata.getRelativePath()) + .getContent(); + ArrayList commonObjects = viewModel.getAllObjectList(); + for (IGspCommonObject viewObject : commonObjects) { + //检查是否依赖的节点 + if (((GspViewObject) viewObject).getMapping() != null && ((GspViewObject) viewObject).getMapping().getTargetObjId().equals(beNodeId)) { + if (packageName == null) { + packageName = getProjectName(gspMetadata.getRelativePath()); + } + strBuilder + .append(returnMessage(packageName, viewModel.getCode(), viewObject.getCode(), null)); + } else { + //检查是否是虚拟字段(关联) + ArrayList commonElements = viewObject.getAllElementList(false); + for (IGspCommonElement commonElement : commonElements) { + if (!getIsDependence((GspViewModelElement)commonElement,beNodeId)) { + continue; + } + if (packageName == null) { + packageName = getProjectName(gspMetadata.getRelativePath()); + } + strBuilder.append( + returnMessage(packageName, gspMetadata.getHeader().getCode(), viewObject.getCode(), + commonElement.getCode())); + } + } + } + } + if (strBuilder.toString() == null || strBuilder.toString().length() == 0) { + return null; + } + return strBuilder.toString(); + } + + /** + * 获取元数据包名 + * + * @param metadataPath 元数据路径 + * @return 元数据包名 + */ + protected String getProjectName(String metadataPath) { + MetadataProjectService projectService = SpringBeanUtils + .getBean(com.inspur.edp.lcm.metadata.api.service.MetadataProjectService.class); + return projectService.getMetadataProjInfo(metadataPath).getName(); + } + + protected boolean getIsDependence(GspViewModelElement vmElement, String beElementId) { + //依赖 + if (vmElement.getMapping() != null && vmElement.getMapping().getTargetElementId().equals(beElementId)) { + return true; + } + //虚拟字段关联 + if (vmElement.getObjectType() != GspElementObjectType.Association || !vmElement + .getIsVirtual()) { + return false; + } + if (vmElement.getChildAssociations().size() == 0) { + return false; + } + GspFieldCollection fieldCollection = vmElement.getChildAssociations().get(0).getRefElementCollection(); + for(IGspCommonField field: fieldCollection){ + if(field.getRefElementId().equals(beElementId)) + return true; + } + return false; + } + + /** + * 拼接返回值信息 + */ + protected String returnMessage(String packageName, String voCode, String nodeCode, + String fieldCode) { + StringBuilder strBuilder = new StringBuilder("工程【"); + strBuilder.append(packageName) + .append("】中VO【") + .append(voCode) + .append("】中节点【") + .append(nodeCode); + if (fieldCode == null) { + strBuilder.append("】依赖了当前BE节点"); + } else { + strBuilder.append("】上字段") + .append(fieldCode) + .append("依赖了该BE节点。\n"); + } + return strBuilder.toString(); + } +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/vodtconsistencychecklistener/VoFieldDTConsistencyCheckListener.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/vodtconsistencychecklistener/VoFieldDTConsistencyCheckListener.java new file mode 100644 index 0000000000000000000000000000000000000000..5002b9748451ae2d61ff4b5183dc87918891d009 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/vodtconsistencychecklistener/VoFieldDTConsistencyCheckListener.java @@ -0,0 +1,168 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.vodtconsistencychecklistener; + +import com.inspur.edp.bef.bizentity.bizentitydtevent.BizEntityFieldDTEventListener; +import com.inspur.edp.bef.bizentity.dtconsistencycheck.fieldeventargs.AbstractBeFieldEventArgs; +import com.inspur.edp.bef.bizentity.dtconsistencycheck.fieldeventargs.RemovingFieldEventArgs; +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.cef.designtime.api.collection.GspFieldCollection; +import com.inspur.edp.cef.designtime.api.dtconsistencycheck.ConsistencyCheckEventMessage; +import com.inspur.edp.cef.designtime.api.element.GspElementObjectType; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.formserver.viewmodel.collection.VMElementCollection; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.service.MetadataProjectService; +import com.inspur.edp.lcm.metadata.api.service.MetadataService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +import java.util.ArrayList; +import java.util.List; + +public class VoFieldDTConsistencyCheckListener extends BizEntityFieldDTEventListener { + + /** + * 删除节点监听事件 + * + * @param args + * @return + */ + @Override + public RemovingFieldEventArgs removingField(RemovingFieldEventArgs args) { + return (RemovingFieldEventArgs) fieldConsistencyCheck(args); + } + + + /** + * 进行依赖性检查 + * + * @param args + * @return + */ + protected AbstractBeFieldEventArgs fieldConsistencyCheck(AbstractBeFieldEventArgs args) { + String returnMessage = getFieldAssoAndDependencyInfos(args.getMetadataPath(), + args.getBeId(), args.getFieldId()); + if (returnMessage == null || returnMessage.length() == 0) { + return args; + } + ConsistencyCheckEventMessage message = new ConsistencyCheckEventMessage(true, returnMessage); + args.addEventMessage(message); + return args; + } + + /** + * 获取关联信息 + * + * @param + * @return + */ + + protected String getFieldAssoAndDependencyInfos(String metadataPath, + String beId, String fieldId) { + MetadataService metadataService = SpringBeanUtils + .getBean(com.inspur.edp.lcm.metadata.api.service.MetadataService.class); + List gspMetadataList = metadataService + .getMetadataListByRefedMetadataId(metadataPath, beId); + StringBuilder strBuilder = new StringBuilder(); + for (GspMetadata gspMetadata : gspMetadataList) { + if (!gspMetadata.getHeader().getType().equals("GSPViewModel")) { + continue; + } + String projectName = null; + GspViewModel viewModel = (GspViewModel) metadataService + .loadMetadata(gspMetadata.getHeader().getFileName(), gspMetadata.getRelativePath()) + .getContent(); + ArrayList commonObjects = viewModel.getAllObjectList(); + for (IGspCommonObject viewObject : commonObjects) { + //检查是否依赖的节点 + VMElementCollection vmElements = ((GspViewObject) viewObject).getContainElements(); + for (IGspCommonField vmElement : vmElements) { + //检查VO上的字段是依赖的 + if (getIsDependence((GspViewModelElement) vmElement, fieldId)) { + if (projectName == null) { + projectName = getProjectName(gspMetadata.getRelativePath()); + } + strBuilder.append( + returnMessage(projectName, gspMetadata.getHeader().getCode(), viewObject.getCode(), + vmElement.getCode())); + } + } + } + } + if (strBuilder.toString() == null || strBuilder.toString().length() == 0) { + return null; + } + return strBuilder.toString(); + } + + /** + * 获取工程名称 + * + * @param metadataPath 元数据路径 + * @return 元数据包名 + */ + protected String getProjectName(String metadataPath) { + MetadataProjectService projectService = SpringBeanUtils + .getBean(com.inspur.edp.lcm.metadata.api.service.MetadataProjectService.class); + return projectService.getMetadataProjInfo(metadataPath).getName(); + } + + /** + * 拼接返回值信息 + */ + protected String returnMessage(String projectName, String voCode, String nodeCode, + String fieldCode) { + StringBuilder strBuilder = new StringBuilder("工程【"); + strBuilder.append(projectName) + .append("】下的VO【") + .append(voCode) + .append("】中节点【") + .append(nodeCode) + .append("】上字段") + .append(fieldCode) + .append("依赖了该BE字段。\n"); + return strBuilder.toString(); + } + + /** + * 判断当前字段是否是关联或依赖 + */ + protected boolean getIsDependence(GspViewModelElement vmElement, String beElementId) { + //依赖 + if (vmElement.getMapping() != null && vmElement.getMapping().getTargetElementId().equals(beElementId)) { + return true; + } + //虚拟字段关联 + if (vmElement.getObjectType() != GspElementObjectType.Association || !vmElement + .getIsVirtual()) { + return false; + } + if (vmElement.getChildAssociations().size() == 0) { + return false; + } + GspFieldCollection fieldCollection = vmElement.getChildAssociations().get(0).getRefElementCollection(); + for(IGspCommonField field: fieldCollection){ + if(field.getRefElementId().equals(beElementId)) + return true; + } + return false; + } +} + diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/voguide/VoGuideUtil.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/voguide/VoGuideUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..bc2f85176b242632ea12b3f0a383614c87cf2c40 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/vmmanager/voguide/VoGuideUtil.java @@ -0,0 +1,246 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.vmmanager.voguide; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.inspur.edp.bef.bizentity.GspBusinessEntity; +import com.inspur.edp.cef.designtime.api.util.MetadataUtil; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.accessory.AccessoryService; +import com.inspur.edp.formserver.viewmodel.common.ConvertUtils; +import com.inspur.edp.formserver.viewmodel.extendinfo.api.GspVoExtendInfoService; +import com.inspur.edp.formserver.viewmodel.extendinfo.entity.GspVoExtendInfo; +import com.inspur.edp.formserver.vmmanager.accessory.ApprovalLogType; +import com.inspur.edp.formserver.vmmanager.util.CheckInfoUtil; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.entity.MetadataHeader; +import com.inspur.edp.metadata.rtcustomization.api.CustomizationService; +import io.iec.edp.caf.boot.context.CAFContext; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +public class VoGuideUtil { + + private VoGuideUtil() { + } + + public static VoGuideUtil instance; + + public static VoGuideUtil getInstance() { + if (instance == null) { + return new VoGuideUtil(); + } + return instance; + } + + private String VOGUIDE_VO_METADATATYPE = "GSPViewModel"; + private String VOGUIDE_EXTEND_CONFIG_APPROVAL = "APPROVAL_LOG"; + + // region 服务工具 + private AccessoryService accessoryService; + + private AccessoryService getAccessoryService() { + if (accessoryService == null) { + accessoryService = SpringBeanUtils.getBean(AccessoryService.class); + } + return accessoryService; + } + + private CustomizationService customizationService; + + private CustomizationService getCustomizationService() { + if (customizationService == null) { + customizationService = SpringBeanUtils.getBean(CustomizationService.class); + } + return customizationService; + } + + private GspVoExtendInfoService gspVoExtendInfoService; + + private GspVoExtendInfoService getGspVoExtendInfoService() { + if (gspVoExtendInfoService == null) { + gspVoExtendInfoService = SpringBeanUtils.getBean(GspVoExtendInfoService.class); + } + return gspVoExtendInfoService; + } + + private ObjectMapper objectMapper; + + private ObjectMapper getObjectMapper() { + if (objectMapper == null) { + objectMapper = new ObjectMapper(); + } + return objectMapper; + } + + // endregion + + /** + * 转换为Vo实体 + */ + public GspViewModel createVo(GspBusinessEntity be, HashMap configs, + String bePkgName, String voGenerattingAssembly) { + GspViewModel vo = ConvertUtils + .convertToViewModel(be, bePkgName, be.getID(), voGenerattingAssembly).clone(); + handleApprovalConfig(vo, configs); + return vo; + } + + /** + * 保存Vo实体 + */ + public String saveVoRt(GspViewModel vo, String bizObjectId, String nameSpace) { + checkBeforeSave(vo.getGeneratedConfigID(), vo.getId()); + GspMetadata metadata = new GspMetadata(); + metadata.setContent(vo); + MetadataHeader header = createMetadataHeader(vo, bizObjectId, nameSpace); + metadata.setHeader(header); + getCustomizationService().save(metadata); + // todo:LCM提供保存后扩展前,自行调用 + this.saveGspVoExtendInfo(metadata); + return vo.getID(); + } + + /** + * 根据BEMeta获取VOGeneratingAssembly属性 + */ + public String getVoMetaGeneratingAssembly(GspMetadata beMetadata) { + String beNameSpace = beMetadata.getHeader().getNameSpace(); + return beNameSpace; + } + + /** + * 保存前校验 todo:临时仅校验运行时表中的Vo元数据,不全,不包含部署在server目录的 + */ + public void checkBeforeSave(String configId, String id) { + GspVoExtendInfo info = this.getGspVoExtendInfoService().getVoExtendInfoByConfigId(configId); + Boolean checkResult = info == null || info.getId().equals(id); + if (!checkResult) { + throw new RuntimeException("已存在ConfigId为'" + configId + "'的VO元数据,请修改VO编号"); + } + } + + /** + * 加载运行时元数据 + */ + public GspMetadata getRtMetadata(String metadataId) { + CheckInfoUtil.checkNessaceryInfo("metadataId", metadataId); + GspMetadata meta = MetadataUtil.getCustomMetadata(metadataId); + if (meta == null || meta.getContent() == null) { + throw new RuntimeException("调用CustomizationService加载运行时元数据失败,元数据Id=" + metadataId); + } + return meta; + } + + // region 私有方法 + private void handleApprovalConfig(GspViewModel vo, HashMap configs) { + String config = getConfig(configs, VOGUIDE_EXTEND_CONFIG_APPROVAL); + if (CheckInfoUtil.checkNull(config)) { + return; + } + try { + JsonNode node = getObjectMapper().readTree(config); + JsonNode enableNode = node.get("enable"); + if (enableNode == null) { + return; + } + Boolean enable = enableNode.booleanValue(); + if (!enable) { + return; + } + // + ApprovalLogType approvalLogType=getObjectMapper().readValue(node.get("approveType").asText(),ApprovalLogType.class); + String entityCode = node.get("entity").get("code").textValue(); + String fieldLabelId = node.get("field").get("code").textValue(); + boolean includeBacklog; + if(node.get("includeBacklog")==null){ + includeBacklog=false; + }else { + includeBacklog = node.get("includeBacklog").booleanValue(); + } + addApprovalLog(vo, approvalLogType,entityCode, fieldLabelId,includeBacklog); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + private void addApprovalLog(GspViewModel vo,ApprovalLogType approvalLogType,String entityCode ,String fieldLabelId,boolean includeBacklog){ + switch (approvalLogType){ + case ProcessInstant: + getAccessoryService().addApprovalComments(vo,entityCode,fieldLabelId,includeBacklog); + break; + case BIllCode: + getAccessoryService().addApprovalWorkItenLogs(vo,entityCode,fieldLabelId,includeBacklog); + break; + default: + throw new RuntimeException("请选择有效的获取审批日志的类型"); + } + } + private String getConfig(HashMap configs, String key) { + if (!configs.containsKey(key)) { + return ""; + } + String config = configs.get(key); + return config; + } + + private MetadataHeader createMetadataHeader(GspViewModel vo, String bizObjectId, + String nameSpace) { + MetadataHeader header = new MetadataHeader(); + header.setId(vo.getId()); + header.setCode(vo.getCode()); + header.setName(vo.getName()); + header.setBizobjectID(bizObjectId); + header.setNameSpace(nameSpace); + header.setType(VOGUIDE_VO_METADATATYPE); + return header; + } + + private void saveGspVoExtendInfo(GspMetadata voMeta) { + List list = new ArrayList<>(); + list.add(getVoDataExtendInfo(voMeta)); + getGspVoExtendInfoService().saveGspVoExtendInfos(list); + } + private GspVoExtendInfo getVoDataExtendInfo(GspMetadata voMeta) { + GspVoExtendInfo info = new GspVoExtendInfo(); + GspViewModel vo = (GspViewModel) voMeta.getContent(); + GspVoExtendInfo infoTemp = getGspVoExtendInfoService().getVoExtendInfo(vo.getId()); + if(infoTemp==null||!vo.getGeneratedConfigID().equals(info.getConfigId())){ + info.setId(vo.getId()); + info.setConfigId(vo.getGeneratedConfigID()); + info.setBeSourceId(vo.getMapping().getTargetMetadataId()); + info.setCreatedOn(Date.from(CAFContext.current.getCurrentDateTime().toInstant())); + info.setLastChangedOn(Date.from(CAFContext.current.getCurrentDateTime().toInstant())); + return info; +// info.setCreatedBy(CAFContext.current.getCurrentSession().getUserName()); +// info.setLastChangedBy(CAFContext.current.getCurrentSession().getUserName()); + } else{ +// infoTemp.setLastChangedBy(CAFContext.current.getCurrentSession().getUserName()); + infoTemp.setLastChangedOn(Date.from(CAFContext.current.getCurrentDateTime().toInstant())); + return infoTemp; + + } + + } + // endregion +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/voextendinfo/server/core/config/GspVoExtendInfoRpcConfig.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/voextendinfo/server/core/config/GspVoExtendInfoRpcConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..d5a90c83a82ff9db6d7f3026dd84855a04d1dfe6 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/voextendinfo/server/core/config/GspVoExtendInfoRpcConfig.java @@ -0,0 +1,35 @@ +/* + * Copyright OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package com.inspur.edp.formserver.voextendinfo.server.core.config; + + +import com.inspur.edp.formserver.vmmanager.extendinfo.repository.GspVoExtendInfoRepository; +import com.inspur.edp.formserver.voextendinfo.server.api.GspVoExtendInfoRpcService; +import com.inspur.edp.formserver.voextendinfo.server.core.rpcserviceimp.GspVoExtendInfoRpcServiceImp; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class GspVoExtendInfoRpcConfig { + @Bean + public GspVoExtendInfoRpcService getVoExtendInfoRpcService( + GspVoExtendInfoRepository voExtendInfoRepository) { + return new GspVoExtendInfoRpcServiceImp(voExtendInfoRepository); + } + +} diff --git a/view-object-manager/src/main/java/com/inspur/edp/formserver/voextendinfo/server/core/rpcserviceimp/GspVoExtendInfoRpcServiceImp.java b/view-object-manager/src/main/java/com/inspur/edp/formserver/voextendinfo/server/core/rpcserviceimp/GspVoExtendInfoRpcServiceImp.java new file mode 100644 index 0000000000000000000000000000000000000000..94438f150515bbf7ba8f16f3dcd648c01ecfbf55 --- /dev/null +++ b/view-object-manager/src/main/java/com/inspur/edp/formserver/voextendinfo/server/core/rpcserviceimp/GspVoExtendInfoRpcServiceImp.java @@ -0,0 +1,100 @@ +/* + * Copyright OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package com.inspur.edp.formserver.voextendinfo.server.core.rpcserviceimp; + +import com.inspur.edp.formserver.viewmodel.extendinfo.entity.GspVoExtendInfo; +import com.inspur.edp.formserver.vmmanager.extendinfo.repository.GspVoExtendInfoRepository; +import com.inspur.edp.formserver.voextendinfo.server.api.GspVoExtendInfoRpcService; +import io.iec.edp.caf.commons.exception.CAFRuntimeException; +import io.iec.edp.caf.commons.exception.ExceptionLevel; + +import java.util.List; +import java.util.concurrent.ConcurrentHashMap; + +public class GspVoExtendInfoRpcServiceImp implements GspVoExtendInfoRpcService { + private static ConcurrentHashMap gspVOExtendInfos = new ConcurrentHashMap<>(); + private GspVoExtendInfoRepository voExtendInfoRepository; + + public GspVoExtendInfoRpcServiceImp(GspVoExtendInfoRepository voExtendInfoRepository){ + this.voExtendInfoRepository=voExtendInfoRepository; + } + + @Override + public GspVoExtendInfo getVoExtendInfo(String id) { + if(id == null || id.length() == 0){ + return null; + } + if(!gspVOExtendInfos.containsKey(id)) { + GspVoExtendInfo voExtendInfo = voExtendInfoRepository.findById(id).orElse(null); + if(voExtendInfo == null) + return null; + gspVOExtendInfos.put(id,voExtendInfo); + } + return gspVOExtendInfos.get(id); + } + + @Override + public GspVoExtendInfo getVoExtendInfoByConfigId(String configId) { + if (configId == null || configId.length() == 0) { + return null; + } + if (!gspVOExtendInfos.containsKey(configId)) { + List infos = voExtendInfoRepository.getVoExtendInfosByConfigId(configId); + if (infos.size() > 1) { + StringBuilder exceptionInfo = new StringBuilder("存在重复configID: [" + configId + "],请处理数据库中的异常重复数据。"); + int index = 1; + for (GspVoExtendInfo info : infos) { + exceptionInfo.append("\n重复元数据[").append(index).append("]的Id为:[").append(info.getId()).append("]"); + index++; + } + throw new CAFRuntimeException("", "", exceptionInfo.toString(), null, ExceptionLevel.Error); + } else if (infos.size() == 0) { + return null; + } else + gspVOExtendInfos.put(configId, infos.get(0)); + } + return gspVOExtendInfos.get(configId); + } + + @Override + public List getVoExtendInfos() { + return voExtendInfoRepository.findAll(); + } + + @Override + public List getVoId(String beId) { + return voExtendInfoRepository.getVoExtendInfoByBeSourceId(beId); + } + + + public void saveGspVoExtendInfos(List infos){ + voExtendInfoRepository.saveAll(infos); + } + + public void deleteVoExtendInfo(String id){ + GspVoExtendInfo voExtendInfo = voExtendInfoRepository.findById(id).orElse(null); + if(id != null && gspVOExtendInfos.containsKey(id)){ + gspVOExtendInfos.remove(id); + }else if(voExtendInfo!=null && voExtendInfo.getConfigId()!=null && gspVOExtendInfos.containsKey(voExtendInfo.getConfigId())){ + gspVOExtendInfos.remove(voExtendInfo.getConfigId()); + } + if(voExtendInfo != null) { + voExtendInfoRepository.deleteById(id); + } + } +} diff --git a/view-object-manager/src/main/resources/META-INF/spring.factories b/view-object-manager/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000000000000000000000000000000000000..f5570a83cf8a8ff754f69e297fb59c6210443f19 --- /dev/null +++ b/view-object-manager/src/main/resources/META-INF/spring.factories @@ -0,0 +1 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.inspur.edp.formserver.vmmanager.extendinfo.config.GspVoExtendInfoConfig,com.inspur.edp.formserver.vmmanager.vmdtconsistencycheckevent.VmDtConsistencyCheckConf,com.inspur.edp.formserver.vmmanager.accessory.Configuration,com.inspur.edp.formserver.vmmanager.commonstructure.VMEntitySchemaConfiguration,com.inspur.edp.formserver.vmmanager.config.VMManagerConfig,com.inspur.edp.formserver.vmmanager.pushchangesetevent.PushVmChangeSetConf,com.inspur.edp.formserver.vmmanager.config.MdPkgDeployConfig,com.inspur.edp.formserver.voextendinfo.server.core.config.GspVoExtendInfoRpcConfig diff --git a/view-object-model/pom.xml b/view-object-model/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..57fe058e579c065ce6c72877ed4edf75d970a0d6 --- /dev/null +++ b/view-object-model/pom.xml @@ -0,0 +1,106 @@ + + + + + 4.0.0 + + + com.inspur.edp + viewObject-model + 0.1.1 + + + view-object-model + 0.1.1 + + + + io.iec.edp + caf-rpc-api + 0.3.4 + + + com.inspur.edp + caf-cef-schema + + + com.inspur.edp + caf-cef-schema-base + + + com.fasterxml.jackson.core + jackson-databind + compile + + + com.inspur.edp + bef-bizentity + + + com.inspur.edp + das-commonmodel + + + io.iec.edp + caf-boot-commons-event + + + com.inspur.edp + cef-designtime-api + + + com.inspur.edp + metadata-rtcustomization-spi + 0.1.9 + + + com.inspur.edp + lcm-metadata-spi + 0.1.9 + + + io.iec.edp + caf-rpc-api + 0.3.4 + + + com.inspur.edp + lcm-metadata-api + 0.1.19 + + + com.inspur.edp + metadata-rtcustomization-api + 0.1.28 + + + com.inspur.edp + udt-designtime-api + 0.1.7 + + + com.inspur.edp + bef-component + 0.1.0 + compile + + + + + diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/Context.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/Context.java new file mode 100644 index 0000000000000000000000000000000000000000..31a4ba0b5a3a2a4ee9b06db0cf412b0fb22a122e --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/Context.java @@ -0,0 +1,15 @@ + + +package com.inspur.edp.formserver.viewmodel; + +public class Context { + private boolean full = true; + + public boolean getfull() { + return full; + } + + public void setfull(boolean full){ + this.full = full; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/DotNetToJavaStringHelper.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/DotNetToJavaStringHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..3be06545c09740f2f66604f723c9835c7088a331 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/DotNetToJavaStringHelper.java @@ -0,0 +1,153 @@ + + +package com.inspur.edp.formserver.viewmodel; + +/** + * The Help Tool Of Dotnet To Java,Mapping Dotnet Method To Java Implements + * + * @ClassName: DotNetToJavaStringHelper + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public final class DotNetToJavaStringHelper +{ + //------------------------------------------------------------------------------------ + // This method replaces the .NET static string method 'IsNullOrEmpty'. + //------------------------------------------------------------------------------------ + public static boolean isNullOrEmpty(String string) + { + return string == null || string.equals(""); + } + + //------------------------------------------------------------------------------------ + // This method replaces the .NET static string method 'Join' (2 parameter version). + //------------------------------------------------------------------------------------ + public static String join(String separator, String[] stringarray) + { + if (stringarray == null) + return null; + else + return join(separator, stringarray, 0, stringarray.length); + } + + //------------------------------------------------------------------------------------ + // This method replaces the .NET static string method 'Join' (4 parameter version). + //------------------------------------------------------------------------------------ + public static String join(String separator, String[] stringarray, int startindex, int count) + { + String result = ""; + + if (stringarray == null) + return null; + + for (int index = startindex; index < stringarray.length && index - startindex < count; index++) + { + if (separator != null && index > startindex) + result += separator; + + if (stringarray[index] != null) + result += stringarray[index]; + } + + return result; + } + + //------------------------------------------------------------------------------------ + // This method replaces the .NET static string method 'TrimEnd'. + //------------------------------------------------------------------------------------ + public static String trimEnd(String string, Character... charsToTrim) + { + if (string == null || charsToTrim == null) + return string; + + int lengthToKeep = string.length(); + for (int index = string.length() - 1; index >= 0; index--) + { + boolean removeChar = false; + if (charsToTrim.length == 0) + { + if (Character.isWhitespace(string.charAt(index))) + { + lengthToKeep = index; + removeChar = true; + } + } + else + { + for (int trimCharIndex = 0; trimCharIndex < charsToTrim.length; trimCharIndex++) + { + if (string.charAt(index) == charsToTrim[trimCharIndex]) + { + lengthToKeep = index; + removeChar = true; + break; + } + } + } + if ( ! removeChar) + break; + } + return string.substring(0, lengthToKeep); + } + + //------------------------------------------------------------------------------------ + // This method replaces the .NET static string method 'TrimStart'. + //------------------------------------------------------------------------------------ + public static String trimStart(String string, Character... charsToTrim) + { + if (string == null || charsToTrim == null) + return string; + + int startingIndex = 0; + for (int index = 0; index < string.length(); index++) + { + boolean removeChar = false; + if (charsToTrim.length == 0) + { + if (Character.isWhitespace(string.charAt(index))) + { + startingIndex = index + 1; + removeChar = true; + } + } + else + { + for (int trimCharIndex = 0; trimCharIndex < charsToTrim.length; trimCharIndex++) + { + if (string.charAt(index) == charsToTrim[trimCharIndex]) + { + startingIndex = index + 1; + removeChar = true; + break; + } + } + } + if ( ! removeChar) + break; + } + return string.substring(startingIndex); + } + + //------------------------------------------------------------------------------------ + // This method replaces the .NET static string method 'Trim' when arguments are used. + //------------------------------------------------------------------------------------ + public static String trim(String string, Character... charsToTrim) + { + return trimEnd(trimStart(string, charsToTrim), charsToTrim); + } + + //------------------------------------------------------------------------------------ + // This method is used for string equality comparisons when the option + // 'Use helper 'stringsEqual' method to handle null strings' is selected + // (The Java String 'equals' method can't be called on a null instance). + //------------------------------------------------------------------------------------ + public static boolean stringsEqual(String s1, String s2) + { + if (s1 == null && s2 == null) + return true; + else + return s1 != null && s1.equals(s2); + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/GspViewModel.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/GspViewModel.java new file mode 100644 index 0000000000000000000000000000000000000000..3055068b274980020ed9f510275d6598eb5d389a --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/GspViewModel.java @@ -0,0 +1,891 @@ + + +package com.inspur.edp.formserver.viewmodel; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.inspur.edp.bef.bizentity.commonstructure.BeCommonStructureUtil; +import com.inspur.edp.caf.cef.schema.structure.CommonStructure; +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.das.commonmodel.entity.GspCommonModel; +import com.inspur.edp.formserver.viewmodel.collection.VMActionCollection; +import com.inspur.edp.formserver.viewmodel.collection.ValueHelpConfigCollection; +import com.inspur.edp.formserver.viewmodel.common.TemplateVoInfo; +import com.inspur.edp.formserver.viewmodel.common.ViewModelMapping; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementMapping; +import com.inspur.edp.formserver.viewmodel.dataextendinfo.VoDataExtendInfo; +import com.inspur.edp.formserver.viewmodel.json.model.ViewModelDeserializer; +import com.inspur.edp.formserver.viewmodel.json.model.ViewModelSerializer; +import com.inspur.edp.lcm.metadata.api.IMetadataContent; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.function.Predicate; + +/** + * The Definition Of View Model Metamodel + * + * @ClassName: GspViewModel + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +@JsonDeserialize(using = ViewModelDeserializer.class) +@JsonSerialize(using = ViewModelSerializer.class) +public class GspViewModel extends GspCommonModel implements IMetadataContent, Cloneable { + ///#region 属性 + + /** + * 启用标准日期时间格式 + * + */ + private Boolean enableStdTimeFormat = true; + + public Boolean getEnableStdTimeFormat() { + return enableStdTimeFormat; + } + + public void setEnableStdTimeFormat(Boolean enableStdTimeFormat) { + this.enableStdTimeFormat = enableStdTimeFormat; + } + + /** + * 描述 + * + */ + private String privateDescription; + + public final String getDescription() { + return privateDescription; + } + + public final void setDescription(String value) { + privateDescription = value; + } + + /** + * 模型映射:VM可以通过映射规则映射到BE或者其他数据源上 + * + */ + private ViewModelMapping privateMapping; + + public final ViewModelMapping getMapping() { + + return privateMapping; + } + + public final void setMapping(ViewModelMapping value) { + privateMapping = value; + } + + /** + * 根节点 + * + */ + public GspViewObject getMainObject() { + return (GspViewObject) super.getMainObject(); + } + + void setMainObject(GspViewObject value) { + super.setMainObject(value); + } + + /** + * 获取扩展类型,总是返回为"视图对象"类型 + * + */ + @Override + public String getExtendType() { + return "GspViewModel"; + } + + + /** + * 值帮助配置集合 + */ + private ValueHelpConfigCollection valueHelpConfigs = new ValueHelpConfigCollection(); + + /** + * 值帮助配置集合 + * + */ + public ValueHelpConfigCollection getValueHelpConfigs() { + return this.valueHelpConfigs; + } + + public void setValueHelpConfigs(ValueHelpConfigCollection value) { + this.valueHelpConfigs = value; + } + + /** + * 操作集合 + */ + private VMActionCollection actions; + + /** + * 操作集合 + * + */ + public final VMActionCollection getActions() { + if (actions == null) { + actions = new VMActionCollection(); + } + + return actions; + } + + public void setActions(VMActionCollection value) { + this.actions = value; + } + + private java.util.HashMap extendProperties; + + /** + * 表单拓展节点 + */ + public final java.util.HashMap getExtendProperties() { + if (extendProperties == null) { + extendProperties = new java.util.HashMap(); + } + return extendProperties; + } + + public void setExtendProperties(java.util.HashMap value) { + this.extendProperties = value; + } + + private VoDataExtendInfo dataExtendInfo; + + /** + * 数据逻辑扩展 + */ + public final VoDataExtendInfo getDataExtendInfo() { + if (dataExtendInfo == null) { + dataExtendInfo = new VoDataExtendInfo(); + } + return dataExtendInfo; + } + + public void setDataExtendInfo(VoDataExtendInfo value) { + this.dataExtendInfo = value; + } + + private TemplateVoInfo templateVoInfo; + + /** + * 模板VO信息 + */ + public final TemplateVoInfo getTemplateVoInfo() { + if (templateVoInfo == null) { + templateVoInfo = new TemplateVoInfo(); + } + return templateVoInfo; + } + + public void setTemplateVoInfo(TemplateVoInfo value) { + this.templateVoInfo = value; + } + + private boolean autoConvertMessage; + public boolean getAutoConvertMessage(){ + return autoConvertMessage; + } + + public void setAutoConvertMessage(boolean value){ + autoConvertMessage = value; + } + ///#endregion + + private String source; + + public String getSource() { + return source; + } + + public void setSource(String value) { + this.source = value; + } + + + private boolean isGenFilterConvertor = true; + public boolean getIsGenFilterConvertor(){ + return this.isGenFilterConvertor; + } + public void setIsGenFilterConvertor(boolean value){ + this.isGenFilterConvertor=value; + } + /** + * 重载Equals方法 + * + * @param obj 要比较的对象 + * @return + * 如果当前对象等于 other 参数,则为 true;否则为 false。 + */ + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + if (obj.equals(this)) { + return true; + } + if (obj.getClass() != getClass()) { + return false; + } + + return equals((GspViewModel) obj); + } + + /** + * 当前对象是否等于同一类型的另一个对象。 + * + * @param vo 与此对象进行比较的对象。 + * @return 如果当前对象等于 other 参数,则为 true;否则为 false。 + */ + protected boolean equals(GspViewModel vo) { + if (vo.equals(null)) { + return false; + } + //&& this.DevLevelCode == other.DevLevelCode + //&& this.ForwardMappingID == other.ForwardMappingID + if (getID() == vo.getID() && getCode() == vo.getCode() && getName() == vo.getName() && getDescription().equals(vo.getDescription()) && getActions().equals(vo.getActions()) && vo.getMapping().equals(getMapping()) && getMainObject().equals(vo.getMainObject())) + //&& this.SrcDevLevelCode == other.SrcDevLevelCode) + { + return true; + } + + + return false; + } + + /** + * Serves as a hash function for a particular type. + * + * @return A hash code for the current . + * 2 + */ + @Override + public int hashCode() { + { + int hashCode = (getMainObject() != null ? getMainObject().hashCode() : 0); + hashCode = (hashCode * 397) ^ (getValueHelpConfigs() != null ? getValueHelpConfigs().hashCode() : 0); + hashCode = (hashCode * 397) ^ (getDescription() != null ? getDescription().hashCode() : 0); + hashCode = (hashCode * 397) ^ (getMapping() != null ? getMapping().hashCode() : 0); + hashCode = (hashCode * 397) ^ (actions != null ? actions.hashCode() : 0); + hashCode = (hashCode * 397) ^ (getMainObject() != null ? getMainObject().hashCode() : 0); + return hashCode; + } + } + + /** + * 克隆 + * + * @return + */ +//ORIGINAL LINE: public new object Clone() + public final GspViewModel clone() { + Object tempVar = null; + tempVar = super.clone(); + + GspViewModel vo = (GspViewModel) ((tempVar instanceof GspViewModel) ? tempVar : null); + if (vo == null) { + throw new RuntimeException("克隆GSPViewObject失败"); + } + if (getMainObject() != null) { + Object tempVar2 = getMainObject().clone(); + vo.setMainObject((GspViewObject) ((tempVar2 instanceof GspViewObject) ? tempVar2 : null)); + ArrayList objList = vo.getAllObjectList(); + if (objList != null && objList.size() > 0) { + for (IGspCommonObject obj : objList) { + obj.setBelongModel(vo); + obj.setBelongModelID(vo.getID()); + } + } + } + if (getMapping() != null) { + Object tempVar2 = getMapping().clone(); + vo.setMapping((ViewModelMapping) ((tempVar2 instanceof ViewModelMapping) ? tempVar2 : null)); + } + if (getValueHelpConfigs() != null) { + Object valueHelpConfigs = getValueHelpConfigs().clone(); + vo.setValueHelpConfigs((ValueHelpConfigCollection)((valueHelpConfigs instanceof ValueHelpConfigCollection) ? valueHelpConfigs : null)); + } + return vo; + } + + + /** + * 重载ToString方法 + * + * @return + */ + @Override + public String toString() { + return String.format("ID:%1$s,Code:%2$s,Name:%3$s,RootNode:%4$s", getID(), getCode(), getName(), getMainObject().getCode()); + } + + ///#endregion + + ///#region 获取节点 + + /** + * 查找指定的VM节点 + *

+ * // @param viewObjectCode 节点编号 + * + * @return + */ + public final GspViewObject getNode(String nodeCode) { + return getNode(pre -> pre.getCode().equals(nodeCode)); + } + + public final GspViewObject getNode(Predicate predicate) { + ArrayList result = getAllNodes(predicate); + if (result.size() > 0) { + return result.get(0); + } + return null; + } +// return GetNodes(node => node.Code.equals(viewObjectCode, StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); +//GetNodes(); +// ArrayList bizObjs = getAllNodes(); +// ArrayList result = new ArrayList(); +// for (GspBizEntityObject item : bizObjs) { +// if (predicate.test(item)) { +// result.add(item); +// } +// } +// return result; +// for(GspViewObject node:){ +// if(node.getCode().equals(viewObjectCode)){ +// return node; +// } + + +// return GetNodes(node => node.Code.equals(viewObjectCode, StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); + + + /** + * 查询符合条件的节点 + *

+ * // @param predict + * + * @return + * + */ + +// public final ArrayList getAllNodes(Predicate predicate) { +// +// ArrayList bizObjs = getAllNodes(); +// ArrayList result = new ArrayList(); +// for (GspBizEntityObject item : bizObjs) { +// if (predicate.test(item)) { +// result.add(item); +// } +// } +// return result; +// } + public ArrayList getAllNodes(Predicate predicate) { + ArrayList bizObjs = getAllNodes(null); + ArrayList result = new ArrayList(); + for (GspViewObject item : bizObjs) { + if (predicate.test(item)) { + result.add(item); + } + } + return result; + } + +// public final java.util.List GetNodes(HashMap predict) +// { +// if (predict != null)解决方式和gspviewmodel中的一样 +// { +// return GetAllObjectList().Select(item => (GspViewObject)((item instanceof GspViewObject) ? item : null)).Where(predict).ToList(); +// } +// return GetAllObjectList().Select(item => (GspViewObject)((item instanceof GspViewObject) ? item : null)).ToList(); +// } + + /** + * 查询当前VM所有节点的字典 + * 其中Key是节点Code + * + * @return + * + * + */ + public final java.util.HashMap getNodesDic() { +// return GetNodes(null).ToDictionary(item => item.Code, item => item); + HashMap toDic = new HashMap(); + for (IGspCommonObject item : getAllObjectList()) { + toDic.put(item.getCode(), item); + + } +// return GetNodes(null).ToDictionary(item => item.Code, item => item); + return toDic; + + } + + ///#endregion + + ///#region 联动-弃用 + /** + * 与业务实体建立连接 + *

+ * // @param bizEntity + * + * @return + */ +// public final GspViewModel LinkWithBizEntity(GspBusinessEntity bizEntity) +// { +//// java.util.HashMap viewElements = GetAllElementList(true).ToDictionary(item => item.getID(), item => (GspViewModelElement)((item instanceof GspViewModelElement) ? item : null)); +// java.util.HashMap viewElements = getAllElementList(true).ToDictionary(item => item.getID(), +// item => (GspViewModelElement)((item instanceof GspViewModelElement) ? item : null)); +// java.util.HashMap elementMappings = new java.util.HashMap(); +//// java.util.ArrayList elementList = GetAllElementList(true); +// java.util.ArrayList elementList = getAllElementList(true); +// for (IGspCommonElement item : elementList) +// { +//// if (item instanceof GspViewModelElement && ((GspViewModelElement)item)?.Mapping != null) +// if (item instanceof GspViewModelElement && ((GspViewModelElement)item).getMapping() != null) +// { +//// var key = ((GspViewModelElement)((item instanceof GspViewModelElement) ? item : null)).getMapping().TargetObjId; +// String key = +// ((GspViewModelElement)((item instanceof GspViewModelElement) ? item : null)).getMapping().getTargetObjectId(); +// String value = item.getID(); +// elementMappings.put(key, value); +// } +// } +// //Dictionary elementMappings = +// //this.GetAllElementList(true) +// // .ToDictionary(item => (item as GspViewModelElement).Mapping.TargetObjId, item => item.ID); +//// java.util.HashMap bizEntityObjects = bizEntity.GetAllObjectList().ToDictionary(item => item.ID, item => (GSPBizEntityObject)((item instanceof GSPBizEntityObject) ? item : null)); +// java.util.HashMap bizEntityObjects = +// bizEntity.getAllObjectList().todictory(item.getID(), +// (GspBizEntityObject)((item instanceof GspBizEntityObject) ? item : null)); +//// item => (GSPBizEntityObject)((item instanceof GSPBizEntityObject) ? item : null)); +//// java.util.HashMap bizEntityElements = bizEntity.GetAllElementList(true).ToDictionary(item => item.ID, item => (GSPBizEntityElement)((item instanceof GSPBizEntityElement) ? item : null)); +// java.util.HashMap bizEntityElements = +// bizEntity.getAllElementList(true).todictionary(item => item.ID, item => (GspBizEntityElement)((item instanceof GspBizEntityElement) ? item : null)); +// +// //BizEntitySerializer serializer = new BizEntitySerializer(); +// //string xmlBizContent = serializer.Serialize(bizEntity); +// //ViewModelParser parser = new ViewModelParser(); +// //GspViewModel transViewModel = parser.Parse(xmlBizContent) as GspViewModel; +//// GspViewModel transViewModel = ConvertUtils.ConvertToViewModel(bizEntity, null, null); +// GspViewModel transViewModel = ConvertUtils.ConvertToViewModel(bizEntity, null, null); +// +// ///#region 联动对象上的属性 +// +// java.util.List tempVar = GetNodes(null); +// java.util.ArrayList viewObjects = (java.util.ArrayList)((tempVar instanceof java.util.ArrayList) ? tempVar : null); +// if (viewObjects == null) +// { +// throw new RuntimeException("#GSPBefError#实体上没有对象,请联系管理员检查数据#GSPBefError#"); +// } +// for (GspViewObject objectItem : viewObjects) +// { +// if (objectItem.getMapping() == null || !bizEntityObjects.containsKey(objectItem.getMapping().getTargetObjId())) +// { +// continue; +// } +//// GSPBizEntityObject beObject = bizEntityObjects.get(objectItem.getMapping().getTargetObjId()); +// GspBizEntityObject beObject = bizEntityObjects.get(objectItem.getMapping().getTargetObjId()); +// +// ///#region 分级信息 +//// if (beObject.HirarchyInfo != null) +//// { +//// objectItem.HirarchyInfo = beObject.HirarchyInfo; +//// if (beObject.HirarchyInfo.IsDetailElement != null) +//// { +//// if (elementMappings.containsKey(beObject.HirarchyInfo.IsDetailElement.ID)) +//// { +//// String detailElementId = elementMappings.get(beObject.HirarchyInfo.IsDetailElement.ID); +//// objectItem.HirarchyInfo.IsDetailElement = viewElements.get(detailElementId); +//// } +//// else +//// { +//// GspViewModelElement transElement = getTransElement(transViewModel, beObject.HirarchyInfo.IsDetailElement, bizEntity.ID); +//// objectItem.getContainElements().Add(transElement); +//// objectItem.HirarchyInfo.IsDetailElement = transElement; +//// } +//// +//// } +//// if (beObject.HirarchyInfo.LayerElement != null) +//// { +//// if (elementMappings.containsKey(beObject.HirarchyInfo.LayerElement.ID)) +//// { +//// String layerElementId = elementMappings.get(beObject.HirarchyInfo.LayerElement.ID); +//// objectItem.HirarchyInfo.LayerElement = viewElements.get(layerElementId); +//// } +//// else +//// { +//// GspViewModelElement transElement = getTransElement(transViewModel, beObject.HirarchyInfo.LayerElement, bizEntity.ID); +//// objectItem.getContainElements().Add(transElement); +//// objectItem.HirarchyInfo.LayerElement = transElement; +//// } +//// +//// } +//// if (beObject.HirarchyInfo.PathElement != null) +//// { +//// if (elementMappings.containsKey(beObject.HirarchyInfo.PathElement.ID)) +//// { +//// String pathElementId = elementMappings.get(beObject.HirarchyInfo.PathElement.ID); +//// objectItem.HirarchyInfo.PathElement = viewElements.get(pathElementId); +//// } +//// else +//// { +//// GspViewModelElement transElement = getTransElement(transViewModel, beObject.HirarchyInfo.PathElement, bizEntity.ID); +//// objectItem.getContainElements().Add(transElement); +//// objectItem.HirarchyInfo.PathElement = transElement; +//// } +//// } +//// +//// objectItem.HirarchyInfo.PathLength = beObject.HirarchyInfo.PathLength; +//// +//// if (beObject.HirarchyInfo.ParentElement != null) +//// { +//// if (elementMappings.containsKey(beObject.HirarchyInfo.ParentElement.ID)) +//// { +//// String parentElementId = elementMappings.get(beObject.HirarchyInfo.ParentElement.ID); +//// objectItem.HirarchyInfo.ParentElement = viewElements.get(parentElementId); +//// } +//// else +//// { +//// GspViewModelElement transElement = getTransElement(transViewModel, beObject.HirarchyInfo.ParentElement, bizEntity.ID); +//// objectItem.getContainElements().add(transElement); +//// objectItem.HirarchyInfo.ParentElement = transElement; +//// } +//// } +//// +//// if (beObject.HirarchyInfo.ParentRefElement != null) +//// { +//// if (elementMappings.containsKey(beObject.HirarchyInfo.ParentRefElement.ID)) +//// { +//// String pathElementId = elementMappings.get(beObject.HirarchyInfo.ParentRefElement.ID); +//// objectItem.HirarchyInfo.ParentRefElement = viewElements.get(pathElementId); +//// } +//// else +//// { +//// GspViewModelElement transElement = getTransElement(transViewModel, beObject.HirarchyInfo.ParentRefElement, bizEntity.ID); +//// objectItem.getContainElements().add(transElement); +//// objectItem.HirarchyInfo.ParentRefElement = transElement; +//// } +//// } +//// } +// +// ///#endregion +// +// ///#region 创建人等信息 +//// if (elementMappings.containsKey(beObject.CreatorElementID)) +//// if (elementMappings.containsKey(beObject.getCreateID())) +//// { +//// objectItem.CreatorElementID = elementMappings.get(beObject.CreatorElementID); +//// } +//// if (elementMappings.containsKey(beObject.CreatedDateElementID)) +//// { +//// objectItem.CreatedDateElementID = elementMappings.get(beObject.CreatedDateElementID); +//// } +//// if (elementMappings.containsKey(beObject.ModifierElementID)) +//// { +//// objectItem.ModifierElementID = elementMappings.get(beObject.ModifierElementID); +//// } +//// if (elementMappings.containsKey(beObject.ModifiedDateElementID)) +//// { +//// objectItem.ModifiedDateElementID = elementMappings.get(beObject.ModifiedDateElementID); +//// } +// ///#endregion +//// objectItem.Code = beObject.Code; +// objectItem.setCode(beObject.getCode()); +// objectItem.setIsVirtual(false); //be带出,IsVirtual=false +// objectItem.setIsReadOnly(beObject.getIsReadOnly()); +// +// ///#region ID生成规则 +//// if (elementMappings.containsKey(beObject.ColumnGenerateID.ElementID)) +// if (elementMappings.containsKey(beObject.getColumnGenerateID().getElementID())) +// { +// objectItem.ColumnGenerateID.ElementID = elementMappings.get(beObject.ColumnGenerateID.ElementID); +// } +// objectItem.ColumnGenerateID.GernerateType = beObject.ColumnGenerateID.GernerateType; +// ///#endregion +// +// ///#region 唯一性约束 +// //objectItem.ContainConstraints = beObject.ContainConstraints; +// if (objectItem.ContainConstraints != null && objectItem.ContainConstraints.size() > 0) +// { +// objectItem.ContainConstraints.Clear(); +// } +// for (GspUniqueConstraint beConstraint : beObject.ContainConstraints) +// { +// Object tempVar2 = beConstraint.clone(); +// GspUniqueConstraint viewModelConstraint = (GspUniqueConstraint)((tempVar2 instanceof GspUniqueConstraint) ? tempVar2 : null); +// viewModelConstraint.ElementList.Clear(); +// for (IGSPCommonElement element : beConstraint.ElementList) +// { +// if (!elementMappings.containsKey(element.ID)) +// { +// continue; +// } +// String vmElementId = elementMappings.get(element.ID); +// if (DotNetToJavaStringHelper.isNullOrEmpty(vmElementId)) +// { +// continue; +// } +// if (!viewElements.containsKey(vmElementId)) +// { +// throw new RuntimeException("#GSPBefError#没有找到ID为【" + vmElementId + "】的字段#GSPBefError#"); +// } +// viewModelConstraint.ElementList.Add(viewElements.get(vmElementId)); +// } +// objectItem.ContainConstraints.Add(viewModelConstraint); +// } +// ///#endregion +// +// ///#region 关联信息 +// if (objectItem.getParent() != null) +// { +// objectItem.keySet().Clear(); +// for (GSPAssociationKey ass : beObject.keySet()) +// { +// GSPAssociationKey associationKey = new GSPAssociationKey(); +// associationKey.RefDataModelName = Name; +// if (elementMappings.containsKey(ass.SourceElement)) +// { +// associationKey.SourceElement = elementMappings.get(ass.SourceElement); +// } +// if (elementMappings.containsKey(ass.SourceElementDisplay)) +// { +// associationKey.SourceElementDisplay = elementMappings.get(ass.SourceElementDisplay); +// } +// if (elementMappings.containsKey(ass.TargetElement)) +// { +// associationKey.TargetElement = elementMappings.get(ass.TargetElement); +// } +// if (elementMappings.containsKey(ass.TargetElementDisplay)) +// { +// associationKey.TargetElementDisplay = elementMappings.get(ass.TargetElementDisplay); +// } +// objectItem.keySet().Add(associationKey); +// } +// } +// ///#endregion +// } +// ///#endregion +// +// ///#region 联动字段上的属性 +// +// for (java.util.Map.Entry item : viewElements.entrySet()) +// { +// GspViewModelElement ele = item.getValue(); +// if (ele.getMapping() == null || !bizEntityElements.containsKey(ele.getMapping().getTargetObjId())) +// { +// continue; +// } +// GSPBizEntityElement bizElement = bizEntityElements.get(ele.getMapping().getTargetObjId()); +// ele.BillCodeConfig.CanBillCode = bizElement.BillCodeConfig.CanBillCode; +// ele.BillCodeConfig.BillCodeID = bizElement.BillCodeConfig.BillCodeID; +// ele.BillCodeConfig.BillCodeName = bizElement.BillCodeConfig.BillCodeName; +// ele.BillCodeConfig.CodeGenerateType = bizElement.BillCodeConfig.CodeGenerateType; +// ele.BillCodeConfig.CodeGenerateOccasion = bizElement.BillCodeConfig.CodeGenerateOccasion; +// ele.LabelID = bizElement.LabelID; +// ele.MDataType = bizElement.MDataType; +// ele.ObjectType = bizElement.ObjectType; +// if (ele.ObjectType == GSPElementObjectType.Association) +// { +// //GspViewModelElement transElement = transViewModel.FindElementById(bizElement.ID) as GspViewModelElement;// transElements[bizElement.ID]; +// GspViewModelElement transElement = transViewModel.GetMappedElementByBizElementId(bizElement.ID); +// for (GSPAssociation associationItem : ele.ChildAssociations) +// { +// GSPAssociation transAssociation = getAssociation(transElement.ChildAssociations, associationItem.Id); +// if (transAssociation == null) +// { +// throw new RuntimeException("#GSPBefError#关联未找到,请联系管理员#GSPBefError#"); +// } +// associationItem.AssSendMessage = transAssociation.AssSendMessage; +// associationItem.ForeignKeyConstraintType = transAssociation.ForeignKeyConstraintType; +// associationItem.RefModel = transAssociation.RefModel; +// associationItem.RefModelID = transAssociation.RefModelID; +// associationItem.RefModelCode = transAssociation.RefModelCode; +// associationItem.RefModelName = transAssociation.RefModelName; +// associationItem.KeyCollection.Clear(); +// for (GSPAssociationKey associationKey : transAssociation.KeyCollection) +// { +// //associationKey.SourceElement = elementMappings[associationKey.SourceElement]; +// //associationKey.SourceElementDisplay = viewElements[associationKey.SourceElement].Name; +// //associationKey.TargetElement = elementMappings[associationKey.TargetElement]; +// //associationKey.TargetElementDisplay = viewElements[associationKey.TargetElement].Name; +// +// associationItem.KeyCollection.Add(associationKey); +// } +// +// for (var refElement : associationItem.RefElementCollection) +// { +// GspViewModelElement transRefElement = getElement(transAssociation.RefElementCollection, refElement.LabelID); +// if (transRefElement == null) +// { +// throw new RuntimeException("#GSPBefError#实体中没有找到引用字段【" + refElement.LabelID + "】,请联系管理员#GSPBefError#"); +// } +// //refElement.DefaultVauleType = transRefElement.DefaultVauleType; +// //refElement.DefaultValue = transRefElement.DefaultValue; +// refElement.LabelID = transRefElement.LabelID; +// ((GspViewModelElement) refElement).getMapping().TargetObjId = transRefElement.getMapping().getTargetObjId(); +// } +// +// } +// } +// else if (ele.ObjectType == GSPElementObjectType.Enum) +// { +// ele.ContainEnumValues.Clear(); +// for (GSPEnumValue enumItem : bizElement.ContainEnumValues) +// { +// Object tempVar3 = enumItem.clone(); +// GSPEnumValue enumValue = (GSPEnumValue)((tempVar3 instanceof GSPEnumValue) ? tempVar3 : null); +// ele.ContainEnumValues.Add(enumValue); +// } +// } +// else +// { +// ele.ChildAssociations.Clear(); +// ele.ContainEnumValues.Clear(); +// } +// +// ele.IsVirtual = false; //be带出,IsVirtual=false +// //ele.CustomExpression = bizElement.CustomExpression; +// ele.IsMultiLanguage = bizElement.IsMultiLanguage; +// if (bizElement.IsRequire) +// { +// ele.IsRequire = bizElement.IsRequire; +// } +// if (bizElement.Readonly) +// { +// ele.Readonly = bizElement.Readonly; +// } +// } +// +// ///#endregion +// +// ///#region 联动be带出操作 +// +// var mappedBeActions = getActions().Where(item=>item.Type==ViewModel.Action.ViewModelActionType.BEAction).ToList(); +// VMActionCollection tranVmActions = transViewModel.getActions(); +// if (mappedBeActions.size()>0) +// { +// for (ViewModelAction action : mappedBeActions) +// { +// var tranAction = tranVmActions.Find(item=>action.getMapping().getTargetObjId().equals(item.Mapping.TargetObjId)); +// if (tranAction==null) +// { +// throw new RuntimeException(String.format("#GSPBefError#无与id='%1$s'的vm操作对应的。#GSPBefError#", tranAction.ID)); +// } +// GetMappedBizAction((MappedBizAction)((action instanceof MappedBizAction) ? action : null), (MappedBizAction)((tranAction instanceof MappedBizAction) ? tranAction : null)); +// } +// } +// +// ///#endregion +// return this; +// } +// +// private void GetMappedBizAction(MappedBizAction targetAction, MappedBizAction sourceAction) +// { +// targetAction.setCode(sourceAction.getCode()); +// targetAction.setName(sourceAction.getCode()); +// targetAction.ParameterCollection.clear(); +// if (sourceAction.ParameterCollection.getCount()>0) +// { +//// for (var item : sourceAction.ParameterCollection) +// IViewModelParameterCollection list = sourceAction.getParameterCollection(); +// list[0]; +// for (IViewModelParameter item : sourceAction.getParameterCollection()) +// { +// targetAction.ParameterCollection.add(item); +// } +// } +// targetAction.setReturnValue(sourceAction.getReturnValue()); +// } + +// private GspViewModelElement GetMappedElementByBizElementId(String bizEleId) +// { +//// var elements = GetAllElementList(true); +// ArrayList elements = getAllElementList(true); +//// if (!(elements.Find(ele=>bizEleId.equals(((GspViewModelElement) ele).getMapping().TargetObjId)) instanceof GspViewModelElement vmElement)) +// for(GspViewModelElement ele;){ +// if(ele.getMapping().getTargetObjectId().equals(bizEleId)){ +// +// } +// } +// { +// throw new RuntimeException(String.format("#GSPBefError#无与id='%1$s'的be字段对应的vm字段。#GSPBefError#", bizEleId)); +// } +// return vmElement; +// } +// +// private GspViewModelElement getTransElement(GspViewModel transViewModel, IGspCommonElement bizElement, String bizId) +// { +// Object tempVar = transViewModel.findElementById(bizElement.getID()); +// GspViewModelElement transElement = (GspViewModelElement)((tempVar instanceof GspViewModelElement) ? tempVar : null); +// if (transElement != null) +// { +// GspVoElementMapping tempVar2 = new GspVoElementMapping(); +// tempVar2.setMapType(MappingType.Element); +// tempVar2.setTargetObjId(bizElement.getID()); +// tempVar2.setTargetMetadataId(bizId); +// tempVar2.setTargetMetadataPkgName(transViewModel.getMapping().getTargetMetadataPkgName()); +// transElement.setMapping(tempVar2); +// } +// return transElement; +// } +// +// private GspAssociation getAssociation(GspAssociationCollection collection, String associationId) +// { +//// return (GspAssociation)collection.FirstOrDefault(item => associationId.equals(item.Id)); +// for(GspAssociation item:collection){ +// if(item.getId().equals(associationId)){ +// return item; +// } +// } +// return null; +// } +// +// private GspViewModelElement getElement(GspFieldCollection collection, String labelId) +// { +// for (IGspCommonField item : collection) +// { +// if (labelId.equals(item.getLabelID())) +// { +// return (GspViewModelElement)((item instanceof GspViewModelElement) ? item : null); +// } +// } +// return null; +// } + ///#endregion + + ///#region manager + private static final String ItemNameTemplate = "I%1$sManager"; + + public final String getMgrInterfaceName() { + return String.format(ItemNameTemplate, getCode()); + } + + public final String getChangesetClassName() { + return String.format("%1$s%2$s", getCode(), "ViewModelChange"); + } + + + public final String getDefaultValueClassName() { + return String.format("%1$s%2$s", getCode(), "DefaultValue"); + } + ///#endregion + ///#endregion + + // region EntityObject.GetRefStructures + @Override + protected List getCommonModelRefStructures(){ + List fields = new ArrayList<>(); + for (IGspCommonField field : getAllElementList(false)) { + fields.add(field); + } + return BeCommonStructureUtil.getInstance().getElementsRefStructures(fields); + } + // endregion +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/GspViewModelElement.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/GspViewModelElement.java new file mode 100644 index 0000000000000000000000000000000000000000..04a20de4e416754a2ee37f90cbe7b7caf4a59653 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/GspViewModelElement.java @@ -0,0 +1,346 @@ + + +package com.inspur.edp.formserver.viewmodel; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.inspur.edp.bef.bizentity.commonstructure.BeCommonStructureUtil; +import com.inspur.edp.cef.designtime.api.entity.commonstructure.CefCommonStructureUtil; +import com.inspur.edp.das.commonmodel.entity.GspCommonElement; +import com.inspur.edp.formserver.viewmodel.collection.VMActionCollection; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementMapping; +import com.inspur.edp.formserver.viewmodel.common.VMHelpConfig; +import com.inspur.edp.formserver.viewmodel.json.element.ViewElementDeserializer; + +import com.inspur.edp.formserver.viewmodel.json.element.ViewElementSerializer; +import java.io.Serializable; + +/** + * The Definition Of View Model Element + * + * @ClassName: GspViewModelElement + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +@JsonDeserialize(using = ViewElementDeserializer.class) +@JsonSerialize(using = ViewElementSerializer.class) +public class GspViewModelElement extends GspCommonElement implements Serializable { + public GspViewModelElement() { + } + + ///#region 属性 + + /** + * 是否启用多语输入 + * + */ + private boolean enableMultiLanguageInput; + + public boolean isEnableMultiLanguageInput() { + return enableMultiLanguageInput; + } + + public void setEnableMultiLanguageInput(boolean enableMultiLanguageInput) { + this.enableMultiLanguageInput = enableMultiLanguageInput; + } + + /** + * 是否vm新增的虚拟字段 + * + */ + private boolean privateIsVirtualViewElement; + + public final boolean getIsVirtualViewElement() { + return privateIsVirtualViewElement; + } + + public final void setIsVirtualViewElement(boolean value) { + privateIsVirtualViewElement = value; + } + + /** + 是否只读属性 + + + //public bool IsReadOnly { get; set; } + */ + + /** + * 是否只用于服务端 + * + */ + private boolean privateIsBeckendOnly; + + public final boolean getIsBeckendOnly() { + return privateIsBeckendOnly; + } + + public final void setIsBeckendOnly(boolean value) { + privateIsBeckendOnly = value; + } + + /** + * 隶属的VO节点 + * + */ + //[Newtonsoft.Json.JsonIgnore()] + GspViewObject getOwner() { + return (GspViewObject) getBelongObject(); + + } + + void setOwner(GspViewObject value) { + setBelongObject(value); + } + + /** + * 属性映射,VMElement可以映射到BE,或者DM Element上 + * + */ +// private GspVoElementMapping privateMapping; + GspVoElementMapping mapping; + + public final GspVoElementMapping getMapping() { + return mapping; + } + + public final void setMapping(GspVoElementMapping value) { + mapping = value; + } + + /** + * 是否立即提交 + * + *

+ * 表单上设置了立即提交控制的属性发生变更后,会自动执行Modfiy将累积变更提交到应用服务器 + */ + private boolean privateImmediateSubmission; + + public final boolean getImmediateSubmission() { + return privateImmediateSubmission; + } + + public final void setImmediateSubmission(boolean value) { + privateImmediateSubmission = value; + } + + private boolean showInFilter = true; + + /** + * 是否在过滤中显示 + * + */ + public boolean getShowInFilter() { + return this.showInFilter; + } + + public void setShowInFilter(boolean value) { + this.showInFilter = value; + } + + private boolean showInSort = true; + + /** + * 是否在排序中显示 + * + */ + public boolean getShowInSort() { + return this.showInSort; + } + + public void setShowInSort(boolean value) { + this.showInSort = value; + } + + // + private VMHelpConfig privateVMHelpConfig; + + // @Deprecated + public final VMHelpConfig getVMHelpConfig() { + return privateVMHelpConfig; + } + + // @Deprecated + public final void setVMHelpConfig(VMHelpConfig value) { + privateVMHelpConfig = value; + } + + // + private VMActionCollection privateHelpActions; + + // @Deprecated + public final VMActionCollection getHelpActions() { + return privateHelpActions; + } + + // @Deprecated + public final void setHelpActions(VMActionCollection value) { + privateHelpActions = value; + } + + private java.util.HashMap extendProperties; + + /** + * 表单拓展节点 + */ + public final java.util.HashMap getExtendProperties() { + if (extendProperties == null) { + extendProperties = new java.util.HashMap(); + } + return extendProperties; + } + + public void setExtendProperties(java.util.HashMap value) { + extendProperties = value; + } + + ///#region 帮助信息 + //private ElementHelpType helpType = ElementHelpType.None; + /////

+ ///// 帮助类型 + ///// + //public ElementHelpType HelpType + //{ + // get { return helpType; } + // set { helpType = value; } + //} + + //private BaseDictInfo helpDefine; + ///// + ///// 帮助定义 + ///// + //public BaseDictInfo HelpDefine + //{ + // get { return helpDefine; } + // set { helpDefine = value; } + //} + ///#endregion 帮助信息 + + ///#endregion + + ///#region 方法 + + /** + * 重载Equals方法 + * + * @param obj 要比较的对象 + * @return + * 如果当前对象等于 other 参数,则为 true;否则为 false。 + */ + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + if (((GspViewModelElement)obj).equals(this)) { + return true; + } + if (obj.getClass() != getClass()) { + return false; + } + + return equals((GspViewModelElement) obj); + } + + /** + * 当前对象是否等于同一类型的另一个对象。 + * + * @param other 与此对象进行比较的对象。 + * @return + * 如果当前对象等于 other 参数,则为 true;否则为 false。 + */ + protected boolean equals(GspViewModelElement other) { + //&& IsReadOnly == other.IsReadOnly + if (getID() == other.getID() && getCode() == other.getCode() && getName() == other.getName() && getObjectType() == other.getObjectType() && getIsRequire() == other.getIsRequire() && getLabelID() == other.getLabelID() && getLength() == other.getLength() && getPrecision() == other.getPrecision() && getShowInFilter() == other.getShowInFilter() && getShowInSort() == other.getShowInSort()) { + if ((getOwner() == null && other.getOwner() == null) || (getOwner() != null && other.getOwner() != null && getOwner().getID() == other.getOwner().getID())) { + return true; + } + } + + return false; + } + + /** + * Serves as a hash function for a particular type. + * + * @return . + * A hash code for the current + * 2 + */ + @Override + public int hashCode() { +// unchecked + { + //var hashCode = IsReadOnly.GetHashCode(); + int hashCode = (new Boolean(getIsBeckendOnly())).hashCode(); + hashCode = (hashCode * 397) ^ (getOwner() != null ? getOwner().hashCode() : 0); + hashCode = (hashCode * 397) ^ (getMapping() != null ? getMapping().hashCode() : 0); + return hashCode; + } + } + + /** + * 克隆 + * + * @return + */ + public final GspViewModelElement clone() { +// Object tempVar = MemberwiseClone(); + Object tempVar = null; + try { + tempVar = super.clone(); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } +// var element = (GspViewModelElement)((tempVar instanceof GspViewModelElement) ? tempVar : null); + GspViewModelElement element = (GspViewModelElement) ((tempVar instanceof GspViewModelElement) ? tempVar : null); + if (element == null) { + throw new RuntimeException("克隆Element失败"); + } + + if (getMapping() != null) { + Object tempVar2 = getMapping().clone(); + element.setMapping((GspVoElementMapping) ((tempVar2 instanceof GspVoElementMapping) ? tempVar2 : null)); + } + if (getVMHelpConfig() != null) + try { + Object tempVar3 = super.clone(); + element.setVMHelpConfig((VMHelpConfig) ((tempVar3 instanceof VMHelpConfig) ? tempVar3 : null)); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + + if (getHelpActions() != null) + try { + Object tempVar4 = super.clone(); + element.setHelpActions((VMActionCollection) ((tempVar4 instanceof VMActionCollection) ? tempVar4 : + null)); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + + + return element; + } + + /** + * 重载ToString方法 + * + * @return + */ + @Override + public String toString() { + return String.format("ID:%1$s,Code:%2$s,Name:%3$s", getID(), getCode(), getName()); + } + + ///#endregion + + // region Property + @Override + protected CefCommonStructureUtil getCefCommonStructureUtil() { + + return BeCommonStructureUtil.getInstance(); + } + // endregion +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/GspViewObject.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/GspViewObject.java new file mode 100644 index 0000000000000000000000000000000000000000..976f7d3b0ec96938f2fe1a8684feba0df797be0f --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/GspViewObject.java @@ -0,0 +1,371 @@ + + +package com.inspur.edp.formserver.viewmodel; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.cef.designtime.api.entity.ClassInfo; +import com.inspur.edp.das.commonmodel.IGspCommonElement; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.das.commonmodel.entity.GspCommonObject; +import com.inspur.edp.formserver.viewmodel.collection.VMElementCollection; +import com.inspur.edp.formserver.viewmodel.collection.ViewObjectCollection; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoObjectMapping; +import com.inspur.edp.formserver.viewmodel.json.object.ViewObjectDeserializer; +import lombok.var; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.function.Predicate; + +/** + * The Definition Of View Model Object + * + * @ClassName: GspViewObject + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +@JsonDeserialize(using = ViewObjectDeserializer.class) +public class GspViewObject extends GspCommonObject implements Serializable { + + /** + * 构造函数,初始化父类的集合类型 + */ + public GspViewObject() { + if (super.getContainElements() == null || !(super.getContainElements() instanceof VMElementCollection)) { + super.setContainElements(new VMElementCollection(this)); + } + if (super.getContainChildObjects() == null || !(super.getContainChildObjects() instanceof ViewObjectCollection)) { + super.setContainChildObjects(new ViewObjectCollection(this)); + } + } + + ///#region 属性 + + /** + * 服务器使用 + * + */ + private boolean privateIsBeckendOnly; + + public final boolean getIsBeckendOnly() { + return privateIsBeckendOnly; + } + + public final void setIsBeckendOnly(boolean value) { + privateIsBeckendOnly = value; + } + + /** + * 是否根节点 + * + */ + public boolean isRootNode() { + return getParent() == null; + } + + /** + * 主键Element + * + */ + private String privatePrimaryKey; + + public final String getPrimaryKey() { + return privatePrimaryKey; + } + + public final void setPrimaryKey(String value) { + privatePrimaryKey = value; + } + + /** + * 父节点对象 + * + */ + @Override + public IGspCommonObject getParentObject() { + return getParent(); + } + + // @Override + public void setParentObject(IGspCommonObject value) { + if (value != null && !(value instanceof GspViewObject)) { + throw new RuntimeException("类型不兼容异常"); + } + setParent((GspViewObject) value); + } + + /** + * 父节点对象 + * + */ + private GspViewObject privateParent; + + public final GspViewObject getParent() { + return privateParent; + } + + public final void setParent(GspViewObject value) { + privateParent = value; + } + + /** + * 节点映射,VMObject可以映射到BENode,或者DM上 + * + */ + private GspVoObjectMapping mapping; + + public final GspVoObjectMapping getMapping() { + return mapping; + } + + public final void setMapping(GspVoObjectMapping value) { + mapping = value; + } + + /** + * 是否包含子节点 + * + */ +// public boolean hasChildNode => getContainChildObjects().size() > 0; + public boolean hasChildNode() { + return getContainChildObjects().size() > 0; + } + + /** + * 元素集合 + * + */ + public VMElementCollection getContainElements() { + return (VMElementCollection) super.getContainElements(); + } + + private void setContainElements(VMElementCollection value) { + super.setContainElements(value); + } + + /** + * 子节点集合 + * + */ + public ViewObjectCollection getContainChildObjects() { + return (ViewObjectCollection) super.getContainChildObjects(); + } + + private void setContainChildObjects(ViewObjectCollection value) { + super.setContainChildObjects(value); + + } + + /** + * 默认页面大小,默认值为0,表示不分页 + * + */ + private int privateDefaultPageSize; + + public final int getDefaultPageSize() { + return privateDefaultPageSize; + } + + public final void setDefaultPageSize(int value) { + privateDefaultPageSize = value; + } + + private java.util.HashMap extendProperties; + + /** + * 表单拓展节点 + */ + public final java.util.HashMap getExtendProperties() { + if (extendProperties == null) { + extendProperties = new java.util.HashMap(); + } + return extendProperties; + } + + public void setExtendProperties(java.util.HashMap value) { + extendProperties = value; + } + ///#endregion + + ///#region 重载方法 + + /** + * 重载Equals方法 + * + * @param obj 要比较的对象 + * @return + * 如果当前对象等于 other 参数,则为 true;否则为 false。 + */ + @Override + public boolean equals(Object obj) { +// if (obj == null) { +// return false; +// } +// if (obj.equals(this)) { +// return true; +// } +// if (obj.getClass() != getClass()) { +// return false; +// } + + return equals((GspViewObject) obj); + } + + /** + * 当前对象是否等于同一类型的另一个对象。 + * + * @param other 与此对象进行比较的对象。 + * @return + * 如果当前对象等于 other 参数,则为 true;否则为 false。 + */ + protected boolean equals(GspViewObject other) { + //&& this.HasAssociation == other.HasAssociation + //&& Object.Equals(this.Mapping, other.Mapping) + //&& Object.Equals(Association, other.Association) + if (getID() == other.getID() && getCode() == other.getCode() && getName() == other.getName() && getIsReadOnly() == other.getIsReadOnly() && isRootNode() == other.isRootNode() && getPrimaryKey().equals(other.getPrimaryKey()) && hasChildNode() == other.hasChildNode() && getContainElements().equals(other.getContainElements()) && getContainChildObjects().equals(other.getContainChildObjects())) { + if ((getParent() == null && other.getParent() == null) || (getParent() != null && other.getParent() != null && getParent().getID() == other.getParent().getID())) { + return true; + } + } + + return false; + } + + /** + * Serves as a hash function for a particular type. + * + * @return . + * A hash code for the current + * 2 + */ + @Override + public int hashCode() { +// unchecked + { + int hashCode = (getContainElements() != null ? getContainElements().hashCode() : 0); + hashCode = (hashCode * 397) ^ (getContainChildObjects() != null ? getContainChildObjects().hashCode() : 0); + + hashCode = (hashCode * 397) ^ (new Boolean(getIsBeckendOnly())).hashCode(); + hashCode = (hashCode * 397) ^ (getPrimaryKey() != null ? getPrimaryKey().hashCode() : 0); + hashCode = (hashCode * 397) ^ (getParent() != null ? getParent().hashCode() : 0); + hashCode = (hashCode * 397) ^ (getMapping() != null ? getMapping().hashCode() : 0); + return hashCode; + } + } + + /** + * 克隆 + * + * @return VO节点对象 + */ + @Override + public GspViewObject clone() { + Object tempVar = super.clone(); + GspViewObject node = (GspViewObject) ((tempVar instanceof GspViewObject) ? tempVar : null); + if (node == null) { + throw new RuntimeException("克隆GSPViewObject失败"); + } + //if (Parent != null) + // node.Parent = Parent.Clone() as GspViewObject; + if (getContainChildObjects() != null) { + Object tempVar2 = getContainChildObjects().clone(); + node.setContainChildObjects((ViewObjectCollection) ((tempVar2 instanceof ViewObjectCollection) ? tempVar2 : null)); + + for (IGspCommonObject ChildObj : node.getContainChildObjects()) { + ChildObj.setParentObject(node); + } + } + + if (getContainElements() != null && getContainElements().size() > 0) { + Object tempVar3 = getContainElements().clone(); + node.setContainElements((VMElementCollection) ((tempVar3 instanceof VMElementCollection) ? tempVar3 : null)); + for (IGspCommonField BelongObj : node.getContainElements()) { + BelongObj.setBelongObject(node); + } + } + + //if (Association != null) + //{ + // node.Association = Association.Clone() as IVOAssociation; + //} + if (mapping != null){ + var map = mapping.clone() ; + node.setMapping((GspVoObjectMapping) ((map instanceof GspVoObjectMapping) ? map : null)); + + } + + return node; + } + + /** + * 重载ToString方法 + * + * @return 描述 + */ + @Override + public String toString() { + return String.format("ID:%1$s,Code:%2$s,Name:%3$s", getID(), getCode(), getName()); + } + + ///#endregion + + /** + * 获取符合条件的属性列表 + * + * @param predicate + * @return + * + */ + public final java.util.List getElements(Predicate predicate) { + ArrayList temp = getAllElementList(true); + java.util.List toList = new ArrayList(); + if (predicate != null) { + for (IGspCommonElement item : temp) { + if (predicate.test((GspViewModelElement) item)) { + toList.add((GspViewModelElement) item); + } + } + return toList; + } + for (IGspCommonElement item2 : temp) { + GspViewModelElement tempVar2 = ((item2 instanceof GspViewModelElement) ? (GspViewModelElement) item2 : null); + if (tempVar2 != null) { + toList.add(tempVar2); + } + } + return toList; + } + + @Override + public ClassInfo getGeneratedEntityClassInfo() { + final String suffix = "View"; + ClassInfo baseClassInfo = super.getGeneratedEntityClassInfo(); + return new ClassInfo(baseClassInfo.getAssemblyInfo(), baseClassInfo.getClassName() + suffix, + baseClassInfo.getClassNamespace()); + } + + /** + * 排序条件` + */ + private String orderbyCondition; + public String getOrderbyCondition() { + return orderbyCondition; + } + + public void setOrderbyCondition(String value) { + orderbyCondition=value; + } + /** + * 过滤条件 + */ + private String filterCondition; + public String getFilterCondition(){ + return filterCondition; + } + public void setFilterCondition(String value){ + filterCondition=value; + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/VoThreadLoacl.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/VoThreadLoacl.java new file mode 100644 index 0000000000000000000000000000000000000000..a6adfda3c2d117a76f6998c9c9402d80c950db19 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/VoThreadLoacl.java @@ -0,0 +1,17 @@ + + +package com.inspur.edp.formserver.viewmodel; + +public class VoThreadLoacl { + public static final ThreadLocal voThreadLocal = new ThreadLocal(); + + public static void set(Context user) { voThreadLocal.set(user); + } + public static void unset() { + voThreadLocal.remove(); + } + + public static Context get() { + return (Context)voThreadLocal.get(); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/accessory/AccessoryService.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/accessory/AccessoryService.java new file mode 100644 index 0000000000000000000000000000000000000000..576bacbe9cb0f2edfeeab091a1a61fe03662c3c4 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/accessory/AccessoryService.java @@ -0,0 +1,31 @@ + + +package com.inspur.edp.formserver.viewmodel.accessory; + +import com.inspur.edp.formserver.viewmodel.GspViewModel; + +/** + * The Approval Log Services,Using By VO Creating Wizard + * + * @ClassName: AccessoryService + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public interface AccessoryService { + + /* + nodeCode : 父节点编号 + processInstLabelId: 父节点上流程实例字段标签 + */ + void addApprovalComments(GspViewModel model, String nodeCode, String processInstLabelId, boolean includeBacklog); + + /** + * @param model + * @param nodeCode + * @param processInstLabelId + * @param includeBacklog + */ + void addApprovalWorkItenLogs(GspViewModel model, String nodeCode, String processInstLabelId, boolean includeBacklog); + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/ActionFormatParameter.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/ActionFormatParameter.java new file mode 100644 index 0000000000000000000000000000000000000000..d32316e1cdfdda07dfd912af98c3d6bc47322b42 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/ActionFormatParameter.java @@ -0,0 +1,86 @@ + + +package com.inspur.edp.formserver.viewmodel.action; + +import java.io.Serializable; + +/** + * The Definition Of Action Format Parameter + * + * @ClassName: ActionFormatParameter + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ActionFormatParameter implements Cloneable, Serializable +{ + ///#region 属性 + + /** + ID + + */ + private String privateID; + public final String getID() + { + + return privateID; + } + public final void setID(String value) + { + + privateID = value; + } + + /** + Code + + */ + private String privateCode; + public final String getCode() + { + return privateCode; + } + public final void setCode(String value) + { + privateCode = value; + } + + /** + Name + + */ + private String privateName; + public final String getName() + { + return privateName; + } + public final void setName(String value) + { + privateName = value; + } + + ///#endregion + + ///#region 方法 + + /** + 克隆 + + @return Action执行参数 + */ + public final ActionFormatParameter clone() + { + Object tempVar = null; + try { + tempVar = super.clone(); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + ActionFormatParameter obj = (ActionFormatParameter)((tempVar instanceof ActionFormatParameter) ? tempVar : null); + + return obj; + } + + ///#endregion +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/IViewModelParameter.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/IViewModelParameter.java new file mode 100644 index 0000000000000000000000000000000000000000..7fd0681a076a8f9d5cb875eba2b9b2a2a1493db5 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/IViewModelParameter.java @@ -0,0 +1,121 @@ + + +//package com.inspur.edp.formserver.viewmodel.Interface; +package com.inspur.edp.formserver.viewmodel.action; + +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelParActualValue; +import com.inspur.edp.formserver.viewmodel.common.VMCollectionParameterType; +import com.inspur.edp.formserver.viewmodel.common.VMParameterMode; +import com.inspur.edp.formserver.viewmodel.common.VMParameterType; + +/** + * The Definition Of View Model Parameter + * + * @ClassName: IViewModelParameter + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public interface IViewModelParameter +{ + + /** + * @return The Id Of The Parameter + */ + String getID(); + + /** + * @param value The Id Of The Parameter + */ + void setID(String value); + + /** + * @return The Code Of The Parameter + */ + String getParamCode(); + + /** + * @param value The Code Of The Parameter + */ + void setParamCode(String value); + + /** + * @return The Name Of The Parameter + */ + String getParamName(); + + /** + * @param value The Name Of The Parameter + */ + void setParamName(String value); + + /** + * @return The Type Of The Parameter + */ + VMParameterType getParameterType(); + + /** + * @param value The Type Of The Parameter + */ + void setParameterType(VMParameterType value); + + /** + * @return The Assembly Of The Parameter,It`s Useful For Dotnet + */ + String getAssembly(); + + /** + * @param value The Assembly Of The Parameter,It`s Useful For Dotnet + */ + void setAssembly(String value); + + /** + * @return The Class Name Of The Parameter Type + */ + String getClassName(); + + /** + * @param value The Class Name Of The Parameter Type + */ + void setClassName(String value); + + /** + * @return The Parameter Mode Of The Parameter,The Default Value Is In + */ + VMParameterMode getMode(); + + /** + * @param value The Parameter Mode Of The Parameter,The Default Value Is In + */ + void setMode(VMParameterMode value); + + /** + * @return The Description Of The Parameter + */ + String getParamDescription(); + + /** + * @param value The Description Of The Parameter + */ + void setParamDescription(String value); + + /** + * @return The Collection Type Of The Parameter + */ + VMCollectionParameterType getCollectionParameterType(); + + /** + * @param value The Collection Type Of The Parameter + */ + void setCollectionParameterType(VMCollectionParameterType value); + + /** + * @return The Actual Value Of The Parameter,It`s Not Required + */ + ViewModelParActualValue getActualValue(); + + /** + * @param value The Actual Value Of The Parameter,It`s Not Required + */ + void setActualValue(ViewModelParActualValue value); +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/IViewModelParameterCollection.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/IViewModelParameterCollection.java new file mode 100644 index 0000000000000000000000000000000000000000..3f95659ae61849016cbb3bcd70bad37ac792e19c --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/IViewModelParameterCollection.java @@ -0,0 +1,29 @@ + + +//package com.inspur.edp.formserver.viewmodel.Interface; +package com.inspur.edp.formserver.viewmodel.action; + +import java.util.List; + +/** + * The Collection Of The Parameter + * + * @ClassName: IViewModelParameterCollection + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public interface IViewModelParameterCollection extends List { + + /** + * @return The Parameters Count In The Collection + */ + int getCount(); + + /** + * Get A Parameter With The Input Index + * @param index The Parameter To Get + * @return The Got Parameter + */ + T getItem(int index); +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/MappedBizAction.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/MappedBizAction.java new file mode 100644 index 0000000000000000000000000000000000000000..5ef9c3f16114274297fc3a32803aad18ff379132 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/MappedBizAction.java @@ -0,0 +1,61 @@ + + +package com.inspur.edp.formserver.viewmodel.action; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.inspur.edp.formserver.viewmodel.action.mappedbiz.MappedBizActionParameterCollection; +import com.inspur.edp.formserver.viewmodel.json.operation.MappedBizActionDeserializer; +import com.inspur.edp.formserver.viewmodel.json.operation.MappedBizActionSerializer; +import java.io.Serializable; + +/** + * The Definition Of The Mapped Biz Action + * + * @ClassName: MappedBizAction + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +@JsonSerialize(using = MappedBizActionSerializer.class) +@JsonDeserialize(using = MappedBizActionDeserializer.class) +public class MappedBizAction extends ViewModelAction implements Cloneable, Serializable { + + ///#region 属性 + private MappedBizActionParameterCollection mappedBizActionParams; + /** + * 类型 + */ + //@Override + public ViewModelActionType Type = ViewModelActionType.BEAction; +// public ViewModelActionType Type => ViewModelActionType.BEAction; + + ///#endregion + public MappedBizAction() { + mappedBizActionParams = new MappedBizActionParameterCollection(); + } + ///#region 方法 + + /** + * 克隆 + * + * @return VM节点映射 + */ + @Override + public final MappedBizAction clone() { + ObjectMapper objectMapper = new ObjectMapper(); + try { + return objectMapper.readValue(objectMapper.writeValueAsString(this), MappedBizAction.class); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + @Override + protected IViewModelParameterCollection getParameters() { + return mappedBizActionParams; + } + ///#endregion +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/MappedCdpAction.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/MappedCdpAction.java new file mode 100644 index 0000000000000000000000000000000000000000..bd2591d05d174d2410890c960a1fa3d78893dfec --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/MappedCdpAction.java @@ -0,0 +1,63 @@ + + +package com.inspur.edp.formserver.viewmodel.action; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.inspur.edp.formserver.viewmodel.action.mappedcdp.MappedCdpActionParameterCollection; +import com.inspur.edp.formserver.viewmodel.json.operation.MappedCdpActionDeserializer; +import com.inspur.edp.formserver.viewmodel.json.operation.MappedCdpActionSerializer; +import java.io.Serializable; + +/** + * The Definition Of The Parameter With Component + * + * @ClassName: MappedCdpAction + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +@JsonSerialize(using = MappedCdpActionSerializer.class) +@JsonDeserialize(using = MappedCdpActionDeserializer.class) +public class MappedCdpAction extends MappedCdpActionBase implements Cloneable, Serializable { + ///#region 属性 + + private MappedCdpActionParameterCollection mappedCdpActionParams; + + /** + * 类型 + */ + @Override + public ViewModelActionType getType() { + return ViewModelActionType.VMAction; + } + + ///#endregion + public MappedCdpAction() { + mappedCdpActionParams = new MappedCdpActionParameterCollection(); + } + ///#region 方法 + + /** + * 克隆 + * + * @return VO节点映射 + */ + @Override + public MappedCdpAction clone() { + ObjectMapper objectMapper = new ObjectMapper(); + try { + return objectMapper.readValue(objectMapper.writeValueAsString(this), MappedCdpAction.class); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + @Override + protected IViewModelParameterCollection getParameters() { + return mappedCdpActionParams; + } + ///#endregion +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/MappedCdpActionBase.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/MappedCdpActionBase.java new file mode 100644 index 0000000000000000000000000000000000000000..d46fbff2f73cd87ed2772cd9edefa4f7d102c99b --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/MappedCdpActionBase.java @@ -0,0 +1,92 @@ + + +package com.inspur.edp.formserver.viewmodel.action; + +import java.io.Serializable; + +/** + * The Definition Of The Parameter With Component + * + * @ClassName: MappedCdpActionBase + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public abstract class MappedCdpActionBase extends ViewModelAction implements Serializable +{ + ///#region 属性 + private String componentEntityId = ""; + /** + 对应构件实体Id + + */ + public String getComponentEntityId(){ + return componentEntityId; + } + public void setComponentEntityId(String value){ + this.componentEntityId=value; + } + /** + 对应构件实体包名 + + */ + private String privateComponentPkgName; + public String getComponentPkgName() + { + return privateComponentPkgName; + } + public void setComponentPkgName(String value) + { + privateComponentPkgName = value; + } + + private boolean privateIsGenerateComponent; + public boolean getIsGenerateComponent() + { + return privateIsGenerateComponent; + } + public void setIsGenerateComponent(boolean value) + { + privateIsGenerateComponent = value; + } + + ///#endregion + + ///#region 方法 + + /** + 当前对象是否等于同一类型的另一个对象。 + + @param other 与此对象进行比较的对象。 + @return 如果当前对象等于 other 参数,则为 true;否则为 false。 + */ + @Override + public boolean equals(ViewModelAction other) + { + + MappedCdpActionBase cdpAction = (MappedCdpActionBase)((other instanceof MappedCdpActionBase) ? other : null); + if (cdpAction == null) + { + return false; + } + if (getID().equals(cdpAction.getComponentEntityId()) && getCode().equals(cdpAction.getCode()) && getName().equals(cdpAction.getName()) && getType() == cdpAction.getType() && getComponentPkgName().equals(cdpAction.getComponentPkgName()) && getComponentName().equals(cdpAction.getComponentName()) && getIsGenerateComponent() == cdpAction.getIsGenerateComponent() && getComponentEntityId().equals(cdpAction.getComponentEntityId())) + { + return true; + } + + return false; + } + + /** + 重载ToString方法 + + @return 描述 + */ + @Override + public String toString() + { + return String.format("[VM action] ID:%1$s, Code:%2$s, Name:%3$s", getID(), getCode(), getName()); + } + + ///#endregion +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/VMActionResult.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/VMActionResult.java new file mode 100644 index 0000000000000000000000000000000000000000..51d8d40da560846b259d0307b3e76e88d8430e3b --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/VMActionResult.java @@ -0,0 +1,57 @@ + + +package com.inspur.edp.formserver.viewmodel.action; + +import java.io.Serializable; + +/** + * The Definition Of The View Model Action Result + * + * @ClassName: VMActionResult + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class VMActionResult implements Cloneable, Serializable +{ + ///#region 属性 + + /** + 类型名称 + + */ + private String privateTypeName; + public final String getTypeName() + { + return privateTypeName; + } + public final void setTypeName(String value) + { + privateTypeName = value; + } + + ///#endregion + + ///#region 方法 + + /** + 克隆 + + @return Action执行结果 + */ + public final VMActionResult clone() + { +// return MemberwiseClone(); + Object tempVar = null; + try { + tempVar = super.clone(); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + VMActionResult obj = (VMActionResult) ((tempVar instanceof ActionFormatParameter) ? tempVar : null); + + return obj; + + ///#endregion +} +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/ViewModelAction.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/ViewModelAction.java new file mode 100644 index 0000000000000000000000000000000000000000..dd33f39a2bac84c6876186c03eb7ff982e77bf60 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/ViewModelAction.java @@ -0,0 +1,262 @@ + + +package com.inspur.edp.formserver.viewmodel.action; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.inspur.edp.cef.designtime.api.entity.CustomizationInfo; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelReturnValue; +import com.inspur.edp.formserver.viewmodel.common.ViewModelMapping; +import java.io.Serializable; + +/** + * The Definition Of The View Model Action + * + * @ClassName: ViewModelAction + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public abstract class ViewModelAction implements Cloneable, Serializable { + ///#region 属性 + + /** + * 标识 + */ + private String privateID; + + public String getID() { + return privateID; + } + + public void setID(String value) { + privateID = value; + } + + /** + * 编号 + */ + private String privateCode; + + public String getCode() { + return privateCode; + } + + public void setCode(String value) { + privateCode = value; + } + + /** + * 名称 + */ + private String privateName; + + public String getName() { + return privateName; + } + + public void setName(String value) { + privateName = value; + } + + ///// + ///// Action所在的节点 + ///// + //public virtual GspViewObject Owner { get; set; } + + /** + * 类型 + */ + private ViewModelActionType privateType = ViewModelActionType.forValue(0); + + public ViewModelActionType getType() { + return privateType; + } + + public void setType(ViewModelActionType value) { + privateType = value; + } + + /** + * 参数列表 + */ + public IViewModelParameterCollection getParameterCollection() { + return getParameters(); + } + + /** + * 返回值 + */ + private ViewModelReturnValue privateReturnValue; + + public final ViewModelReturnValue getReturnValue() { + return privateReturnValue; + } + + public final void setReturnValue(ViewModelReturnValue value) { + privateReturnValue = value; + } + + protected abstract IViewModelParameterCollection getParameters(); + + /** + * 操作映射 + */ + private ViewModelMapping privateMapping; + + public final ViewModelMapping getMapping() { + return privateMapping; + } + + public final void setMapping(ViewModelMapping value) { + privateMapping = value; + } + + /** + * 对应构件名 + */ + private String privateComponentName; + + public final String getComponentName() { + return privateComponentName; + } + + public final void setComponentName(String value) { + privateComponentName = value; + } + + private java.util.HashMap extendProperties; + + /** + * 表单拓展节点 + */ + public final java.util.HashMap getExtendProperties() { + if (extendProperties == null) { + extendProperties = new java.util.HashMap(); + } + return extendProperties; + } + + public void setExtendProperties(java.util.HashMap value) { + extendProperties = value; + } + + private boolean privateIsAutoSave; + + public final boolean getIsAutoSave() { + return privateIsAutoSave; + } + + public final void setIsAutoSave(boolean value) { + privateIsAutoSave = value; + } + + private CustomizationInfo customizationInfo = new CustomizationInfo(); + public CustomizationInfo getCustomizationInfo() { + return this.customizationInfo; + } + + public void setCustomizationInfo(CustomizationInfo customizationInfo) { + this.customizationInfo = customizationInfo; + } + ///#endregion + + ///#region 方法 + + /** + * 重写Clone + */ + public abstract ViewModelAction clone(); +// public ViewModelAction clone() { +// ObjectMapper objectMapper = new ObjectMapper(); +// try { +// return objectMapper.readValue(objectMapper.writeValueAsString(this), ViewModelAction.class); +// } catch (JsonProcessingException e) { +// throw new RuntimeException(e); +// } +// } + + /** + * 重写相等判断 + */ + @Override + public boolean equals(Object obj) { + if (obj.equals(null)) { + return false; + } + if (obj.equals(this)) { + return true; + } + if (obj.getClass() != getClass()) { + return false; + } + return equals((ViewModelAction) obj); + } +// @Override +// public boolean equals(Object obj) +// { +// if (ReferenceEquals(null, obj)) +// { +// return false; +// } +// if (ReferenceEquals(this, obj)) +// { +// return true; +// } +// if (obj.getClass() != getClass()) +// { +// return false; +// } +// return equals((ViewModelAction)obj); +// } + + /** + * 强类型相等判断 + */ + public boolean equals(ViewModelAction other) { + + if (other == null) { + return false; + } + + if (getID().equals(other.getID()) && getCode().equals(other.getCode()) && getName() + .equals(other.getName()) && getType() == other.getType() && getMapping() + .equals(other.getMapping()) && getComponentName().equals(other.getComponentName())) { + return true; + } + + return false; + } + + /** + * 重写HashCode + */ + @Override + public int hashCode() { +// unchecked + { + int hashCode = (getID() != null ? getID().hashCode() : 0); + hashCode = (hashCode * 397) ^ (getCode() != null ? getCode().hashCode() : 0); + hashCode = (hashCode * 397) ^ (getName() != null ? getName().hashCode() : 0); + hashCode = (hashCode * 397) ^ (getReturnValue() != null ? getReturnValue().hashCode() : 0); + hashCode = (hashCode * 397) ^ getType().getValue(); + hashCode = + (hashCode * 397) ^ (getComponentName() != null ? getComponentName().hashCode() : 0); + hashCode = (hashCode * 397) ^ (getMapping() != null ? getMapping().hashCode() : 0); + + return hashCode; + } + } + + /** + * 重载ToString方法 + * + * @return 描述 + */ + @Override + public String toString() { + return String + .format("[VM BizAction] ID:%1$s,Code:%2$s,Name:%3$s", getID(), getCode(), getName()); + } + ///#endregion +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/ViewModelActionType.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/ViewModelActionType.java new file mode 100644 index 0000000000000000000000000000000000000000..aa0f82eb0f5e5a324328c5e09ac2bf8cfbdeaf55 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/ViewModelActionType.java @@ -0,0 +1,42 @@ + + +package com.inspur.edp.formserver.viewmodel.action; + +/** + * The Definition Of The View Model Action Type + * + * @ClassName: ViewModelActionType + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public enum ViewModelActionType +{ + /** + BE 的业务操作 + + */ + BEAction, + + /** + VM 操作 + + */ + VMAction, + + /** + 自定义操作 + + */ + Custom; + + public int getValue() + { + return this.ordinal(); + } + + public static ViewModelActionType forValue(int value) + { + return values()[value]; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/ChangesetMappingAction.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/ChangesetMappingAction.java new file mode 100644 index 0000000000000000000000000000000000000000..168049b0e5a6ecc48c041cfe2925bb7e6b20fbe7 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/ChangesetMappingAction.java @@ -0,0 +1,26 @@ + + +package com.inspur.edp.formserver.viewmodel.action.internalexternalaction; + +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; + +/** + * The Definition Of Changeset Mapping Action + * + * @ClassName: ChangesetMappingAction + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ChangesetMappingAction extends MappedCdpAction implements IInternalExtendAction +{ + public static final String id = "5798f884-c222-47f4-8bbe-685c7013dee4"; + public static final String code = "ChangesetMapping"; + public static final String name = "内置变更集Mapping操作"; + public ChangesetMappingAction() + { + setID(id); + setCode(code); + setName(name); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/ChangesetReversalMappingAction.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/ChangesetReversalMappingAction.java new file mode 100644 index 0000000000000000000000000000000000000000..b72eef3933962f72a9ca8c969e6ee027856b85bc --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/ChangesetReversalMappingAction.java @@ -0,0 +1,25 @@ + +package com.inspur.edp.formserver.viewmodel.action.internalexternalaction; + +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; + +/** + * The Definition Of Changeset Reversal Mapping Action + * + * @ClassName: ChangesetReversalMappingAction + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ChangesetReversalMappingAction extends MappedCdpAction implements IInternalExtendAction +{ + public static final String id = "301c5991-a32d-4221-88bf-8c9d07bdd884"; + public static final String code = "ChangesetReversalMapping"; + public static final String name = "内置变更集反向Mapping操作"; + public ChangesetReversalMappingAction() + { + setID(id); + setCode(code); + setName(name); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/CreateAction.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/CreateAction.java new file mode 100644 index 0000000000000000000000000000000000000000..2d1117c58265447bde2b922b2b1d471c250dfb5d --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/CreateAction.java @@ -0,0 +1,26 @@ + + +package com.inspur.edp.formserver.viewmodel.action.internalexternalaction; + +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; + +/** + * The Definition Of Create Action + * + * @ClassName: CreateAction + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class CreateAction extends MappedCdpAction implements IInternalExtendAction +{ + public static final String id = "52479451-8e22-4751-8684-80489ce5786b"; + public static final String code = "Create"; + public static final String name = "内置新增数据操作"; + public CreateAction() + { + setID(id); + setCode(code); + setName(name); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/DataMappingAction.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/DataMappingAction.java new file mode 100644 index 0000000000000000000000000000000000000000..fd81d54f22250c7ca9130c9b039c849230ea11b1 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/DataMappingAction.java @@ -0,0 +1,25 @@ + + +package com.inspur.edp.formserver.viewmodel.action.internalexternalaction; + +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +/** + * The Definition Of Data Mapping Action + * + * @ClassName: DataMappingAction + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class DataMappingAction extends MappedCdpAction implements IInternalExtendAction +{ + public static final String id = "42221ca3-9ee4-40af-89d2-ff4c8b466ac3"; + public static final String code = "DataMapping"; + public static final String name = "内置数据Mapping操作"; + public DataMappingAction() + { + setID(id); + setCode(code); + setName(name); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/DataReversalMappingAction.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/DataReversalMappingAction.java new file mode 100644 index 0000000000000000000000000000000000000000..fdd765c3e6bf3c0d44bc47fa5d702c2b951c34e7 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/DataReversalMappingAction.java @@ -0,0 +1,25 @@ + + +package com.inspur.edp.formserver.viewmodel.action.internalexternalaction; + +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +/** + * The Definition Of Data Reversal Mapping Action + * + * @ClassName: DataReversalMappingAction + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class DataReversalMappingAction extends MappedCdpAction implements IInternalExtendAction +{ + public static final String id = "991bf216-f55b-40bf-bb42-1b831b6ef3e9"; + public static final String code = "DataReversalMapping"; + public static final String name = "内置数据反向Mapping操作"; + public DataReversalMappingAction() + { + setID(id); + setCode(code); + setName(name); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/DeleteAction.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/DeleteAction.java new file mode 100644 index 0000000000000000000000000000000000000000..3342eb203c9d7b87062f6de78de0d9112cf6e26f --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/DeleteAction.java @@ -0,0 +1,25 @@ + + +package com.inspur.edp.formserver.viewmodel.action.internalexternalaction; + +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +/** + * The Definition Of Delete Action + * + * @ClassName: DeleteAction + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class DeleteAction extends MappedCdpAction implements IInternalExtendAction +{ + public static final String id = "9a17e935-7366-489d-b110-0ae103e5648e"; + public static final String code= "Delete"; + public static final String name = "内置删除操作"; + public DeleteAction() + { + setID(id); + setCode(code); + setName(name); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/IInternalExtendAction.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/IInternalExtendAction.java new file mode 100644 index 0000000000000000000000000000000000000000..9fba2e5a9fcd549b1a1f9c286c164b3f33569777 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/IInternalExtendAction.java @@ -0,0 +1,15 @@ + + +package com.inspur.edp.formserver.viewmodel.action.internalexternalaction; + +/** + * The Definition Of Internal Extend Action + * + * @ClassName: IInternalExtendAction + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public interface IInternalExtendAction +{ +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/ModifyAction.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/ModifyAction.java new file mode 100644 index 0000000000000000000000000000000000000000..b9720a6347e66854654934f01d0d9592779da360 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/ModifyAction.java @@ -0,0 +1,26 @@ + + +package com.inspur.edp.formserver.viewmodel.action.internalexternalaction; + +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +/** + * The Definition Of Modify Action + * + * @ClassName: ModifyAction + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ModifyAction extends MappedCdpAction implements IInternalExtendAction +{ + public static final String id = "47dd3752-72a3-4c56-81c0-ae8ccfe5eb98"; + public static final String code = "Modify"; + public static final String name = "内置修改操作"; + public ModifyAction() + { + setID(id); + setCode(code); + setName(name); + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/MultiDeleteAction.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/MultiDeleteAction.java new file mode 100644 index 0000000000000000000000000000000000000000..dce4cf114a8230a51f0e50c90deff1df80e0d5d4 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/MultiDeleteAction.java @@ -0,0 +1,24 @@ + + +package com.inspur.edp.formserver.viewmodel.action.internalexternalaction; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; + +/** + * The Definition Of Mutly Delete Action + * + * @ClassName: MultiDeleteAction + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class MultiDeleteAction extends MappedCdpAction implements IInternalExtendAction{ + public static final String id = "7b1c3c4l-t1a4-4dyc-b75b-7695hcb3we7e"; + public static final String code= "MultiDelete"; + public static final String name = "内置批量删除操作"; + public MultiDeleteAction() + { + setID(id); + setCode(code); + setName(name); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/QueryAction.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/QueryAction.java new file mode 100644 index 0000000000000000000000000000000000000000..e1fe937de6c2c7d85a49c88bb9a03f34f8632f2e --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/QueryAction.java @@ -0,0 +1,26 @@ + +package com.inspur.edp.formserver.viewmodel.action.internalexternalaction; + +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; + +/** + * The Definition Of Query Action + * + * @ClassName: QueryAction + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class QueryAction extends MappedCdpAction implements IInternalExtendAction +{ + public static final String id = "6fe68bfa-7c1b-4d6b-a7ef-14654168ae75"; + public static final String code = "Query"; + public static final String name = "内置查询操作"; + public QueryAction() + { + setID(id); + setCode(code); + setName(name); + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/RetrieveAction.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/RetrieveAction.java new file mode 100644 index 0000000000000000000000000000000000000000..bf539f953a9d4ad9e4ec05b7717f07c3f3fce5bb --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/internalexternalaction/RetrieveAction.java @@ -0,0 +1,26 @@ + + +package com.inspur.edp.formserver.viewmodel.action.internalexternalaction; + +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; + +/** + * The Definition Of Retrieve Action + * + * @ClassName: RetrieveAction + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class RetrieveAction extends MappedCdpAction implements IInternalExtendAction +{ + public static final String id = "7a02f472-5bbd-424b-9d9e-f82e3f9f448e"; + public static final String code = "Retrieve"; + public static final String name = "内置检索操作"; + public RetrieveAction() + { + setID(id); + setCode(code); + setName(name); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/mappedbiz/MappedBizActionParameter.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/mappedbiz/MappedBizActionParameter.java new file mode 100644 index 0000000000000000000000000000000000000000..ee434d62bdb8bc82ea9703bd4805508cd1c905e0 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/mappedbiz/MappedBizActionParameter.java @@ -0,0 +1,21 @@ + + +package com.inspur.edp.formserver.viewmodel.action.mappedbiz; + +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelParameter; + +/** + * The Definition Of Mapped Be Action Parameter + * + * @ClassName: MappedBizActionParameter + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class MappedBizActionParameter extends ViewModelParameter +{ + public MappedBizActionParameter() + { + + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/mappedbiz/MappedBizActionParameterCollection.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/mappedbiz/MappedBizActionParameterCollection.java new file mode 100644 index 0000000000000000000000000000000000000000..8d0965f2e1bca6e96bbb6a7a8f99119662da7bdd --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/mappedbiz/MappedBizActionParameterCollection.java @@ -0,0 +1,21 @@ + + +package com.inspur.edp.formserver.viewmodel.action.mappedbiz; + +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelParameterCollection; + +/** + * The Definition Of Mapped Be Action Parameter Collection + * + * @ClassName: MappedBizActionParameterCollection + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class MappedBizActionParameterCollection extends ViewModelParameterCollection +{ + public MappedBizActionParameterCollection() + { + + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/mappedcdp/MappedCdpActionParameter.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/mappedcdp/MappedCdpActionParameter.java new file mode 100644 index 0000000000000000000000000000000000000000..3fd123389486d6e505124f4b57750a53bfadf05a --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/mappedcdp/MappedCdpActionParameter.java @@ -0,0 +1,20 @@ + + +package com.inspur.edp.formserver.viewmodel.action.mappedcdp; + +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelParameter; + +/** + * The Definition Of Mapped Component Action Parameter + * + * @ClassName: MappedCdpActionParameter + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class MappedCdpActionParameter extends ViewModelParameter +{ + public MappedCdpActionParameter() + { + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/mappedcdp/MappedCdpActionParameterCollection.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/mappedcdp/MappedCdpActionParameterCollection.java new file mode 100644 index 0000000000000000000000000000000000000000..75e2bd5c72a498092ccd6e2f8f43cb9cc2aa1c67 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/mappedcdp/MappedCdpActionParameterCollection.java @@ -0,0 +1,20 @@ + + +package com.inspur.edp.formserver.viewmodel.action.mappedcdp; + +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelParameterCollection; + +/** + * The Definition Of Mapped Component Action Parameter Collection + * + * @ClassName: MappedCdpActionParameterCollection + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class MappedCdpActionParameterCollection extends ViewModelParameterCollection +{ + public MappedCdpActionParameterCollection() + { + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/viewmodelbase/ViewModelParActualValue.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/viewmodelbase/ViewModelParActualValue.java new file mode 100644 index 0000000000000000000000000000000000000000..072ab819891ecce9309ee396367f8b4e3be8b33f --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/viewmodelbase/ViewModelParActualValue.java @@ -0,0 +1,69 @@ + + +package com.inspur.edp.formserver.viewmodel.action.viewmodelbase; + + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.inspur.edp.cef.spi.jsonser.base.StringUtils; + +/** + * The Definition Of View Model Parameter Action Value.In A View Model Action,The Parameter Value From The Component Can Be Transfer From Outer Invoke Or Fixed + * When The Value Is Fixed, The Actual Value Is Required. + * + * @ClassName: ViewModelParActualValue + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ViewModelParActualValue { + + private String value = ""; + + @JsonProperty("Value") + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + private boolean hasValue = false; + + @JsonProperty("HasValue") + @Deprecated + public boolean getHasValue() { + if(hasValue && "".equals(value)) + hasValue = false; + return hasValue; + } + + @Deprecated + public void setHasValue(boolean value) { + hasValue = value; + } + + private boolean enable = false; + + @JsonProperty("Enable") + public boolean isEnable() { + return enable; + } + + public void setEnable(boolean enable) { + this.enable = enable; + } + + private ViewModelParActualValueType valueType = ViewModelParActualValueType.Constant; + + @JsonProperty("ValueType") + public ViewModelParActualValueType getValueType() { + return valueType; + } + + public void setValueType(ViewModelParActualValueType value) { + this.valueType = value; + } + + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/viewmodelbase/ViewModelParActualValueType.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/viewmodelbase/ViewModelParActualValueType.java new file mode 100644 index 0000000000000000000000000000000000000000..e694f912f5e541e4955fd939dd4619e69ca55c0d --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/viewmodelbase/ViewModelParActualValueType.java @@ -0,0 +1,25 @@ + + +package com.inspur.edp.formserver.viewmodel.action.viewmodelbase; + +/** + * The Definition Of View Object Parameter Actual Value Type + * + * @ClassName: ViewModelParActualValueType + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public enum ViewModelParActualValueType { + Constant,//常量 + Expression, //表达式 + Variable;//vo变量 + + public int getValue() { + return this.ordinal(); + } + + public static ViewModelParActualValueType forValue(int value) { + return values()[value]; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/viewmodelbase/ViewModelParameter.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/viewmodelbase/ViewModelParameter.java new file mode 100644 index 0000000000000000000000000000000000000000..fa77494df52ea8a5e8a2c5173c1097aeb75a973d --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/viewmodelbase/ViewModelParameter.java @@ -0,0 +1,155 @@ + + +package com.inspur.edp.formserver.viewmodel.action.viewmodelbase; + + +import com.inspur.edp.formserver.viewmodel.action.IViewModelParameter; +import com.inspur.edp.formserver.viewmodel.common.VMCollectionParameterType; +import com.inspur.edp.formserver.viewmodel.common.VMParameterMode; +import com.inspur.edp.formserver.viewmodel.common.VMParameterType; + +/** + * The Definition Of View Model Parameter + * + * @ClassName: ViewModelParameter + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public abstract class ViewModelParameter implements IViewModelParameter { + private String privateID; + + public String getID() { + return privateID; + } + + public void setID(String value) { + privateID = value; + } + + /** + * 参数名 + */ + private String privateParamCode; + + public String getParamCode() { + return privateParamCode; + } + + public void setParamCode(String value) { + privateParamCode = value; + } + + /** + * 参数名 + */ + private String privateParamName; + + public String getParamName() { + return privateParamName; + } + + public void setParamName(String value) { + privateParamName = value; + } + + /** + * 参数类型,与Assembly和ClassName关联 + */ + private VMParameterType privateParameterType = VMParameterType.forValue(0); + + public VMParameterType getParameterType() { + return privateParameterType; + } + + public void setParameterType(VMParameterType value) { + privateParameterType = value; + } + + /** + * 参数类对应程序集类 + */ + private String privateAssembly; + + public String getAssembly() { + return privateAssembly; + } + + public void setAssembly(String value) { + privateAssembly = value; + } + + /** + * 参数类名 + */ + private String privateClassName; + + public String getClassName() { + return privateClassName; + } + + public void setClassName(String value) { + privateClassName = value; + } + + public String getDotnetClassName() { + return dotnetClassName; + } + + public void setDotnetClassName(String dotnetClassName) { + this.dotnetClassName = dotnetClassName; + } + + private String dotnetClassName; + + /** + * 参数模式 + */ + private VMParameterMode privateMode = VMParameterMode.forValue(0); + + public VMParameterMode getMode() { + return privateMode; + } + + public void setMode(VMParameterMode value) { + privateMode = value; + } + + /** + * 描述 + */ + private String privateParamDescription; + + public String getParamDescription() { + return privateParamDescription; + } + + public void setParamDescription(String value) { + privateParamDescription = value; + } + + /** + * 参数集合类型 + */ + private VMCollectionParameterType privateCollectionParameterType = VMCollectionParameterType.forValue(0); + + public VMCollectionParameterType getCollectionParameterType() { + return privateCollectionParameterType; + } + + public void setCollectionParameterType(VMCollectionParameterType value) { + privateCollectionParameterType = value; + } + + private ViewModelParActualValue actualValue; + public ViewModelParActualValue getActualValue(){ + if(actualValue == null){ + actualValue = new ViewModelParActualValue(); + } + return actualValue; + } + + public void setActualValue(ViewModelParActualValue value){ + actualValue = value; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/viewmodelbase/ViewModelParameterCollection.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/viewmodelbase/ViewModelParameterCollection.java new file mode 100644 index 0000000000000000000000000000000000000000..643f24036925354ac7d1c8007f1d50e9e5fa923f --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/viewmodelbase/ViewModelParameterCollection.java @@ -0,0 +1,22 @@ + + +package com.inspur.edp.formserver.viewmodel.action.viewmodelbase; + +import com.inspur.edp.cef.designtime.api.collection.BaseList; +import com.inspur.edp.formserver.viewmodel.action.IViewModelParameter; +import com.inspur.edp.formserver.viewmodel.action.IViewModelParameterCollection; + +/** + * The Collection Of View Model Parameter + * + * @ClassName: ViewModelParameterCollection + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ViewModelParameterCollection extends + BaseList implements IViewModelParameterCollection { + + public ViewModelParameterCollection() { + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/viewmodelbase/ViewModelReturnValue.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/viewmodelbase/ViewModelReturnValue.java new file mode 100644 index 0000000000000000000000000000000000000000..d120524d26b7aac1528190da111b897780b38da0 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/viewmodelbase/ViewModelReturnValue.java @@ -0,0 +1,45 @@ + + +package com.inspur.edp.formserver.viewmodel.action.viewmodelbase; + + + +import com.inspur.edp.formserver.viewmodel.common.VMParameterMode; + +/** + * The Definition Of View Model Return Value + * + * @ClassName: ViewModelReturnValue + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ViewModelReturnValue extends ViewModelParameter +{ + /** + 参数名 + + */ + @Override + public String getParamName(){ + return null; + } + @Override + public void setParamName(String value) + { + + } + + /** + 参数模式 + + */ + @Override + public VMParameterMode getMode(){ + return VMParameterMode.OUT; + } + @Override + public void setMode(VMParameterMode value) + { + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/viewmodelbase/ViewModelVoidReturnValue.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/viewmodelbase/ViewModelVoidReturnValue.java new file mode 100644 index 0000000000000000000000000000000000000000..917348c49ae0de380015d4c42ad614a064898067 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/action/viewmodelbase/ViewModelVoidReturnValue.java @@ -0,0 +1,64 @@ + + +package com.inspur.edp.formserver.viewmodel.action.viewmodelbase; + + + +import com.inspur.edp.formserver.viewmodel.common.VMParameterType; + +/** + * The Definition Of Void View Model Return Value + * + * @ClassName: ViewModelVoidReturnValue + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ViewModelVoidReturnValue extends ViewModelReturnValue +{ + public static final String assembly = "mscorlib.dll"; + public static final String className = "Void"; + + /** + 参数类对应程序集类 + + */ + @Override + public String getAssembly(){ + return assembly; + } + + @Override + public void setAssembly(String value) + { + } + + /** + 参数类名 + + */ + @Override + public String getClassName(){ + return className; + } + + @Override + public void setClassName(String value) + { + } + + /** + 参数类型,与Assembly和ClassName关联 + + */ + @Override + public VMParameterType getParameterType() + { + return VMParameterType.Custom; + + } + @Override + public void setParameterType(VMParameterType value) + { + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/collection/VMActionCollection.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/collection/VMActionCollection.java new file mode 100644 index 0000000000000000000000000000000000000000..a73ca89d25410c18d83e1ac5b7f39b169f233f22 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/collection/VMActionCollection.java @@ -0,0 +1,141 @@ + + +package com.inspur.edp.formserver.viewmodel.collection; + +import com.inspur.edp.cef.designtime.api.collection.BaseList; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; + +import java.io.Serializable; + +/** + * The Collection Of View Model Action + * + * @ClassName: VMActionCollection + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class VMActionCollection extends BaseList implements Cloneable, + Serializable { + ///#region 属性 + + /** + * 根据ID获取操作 + * + * @param id 操作ID + * @return 操作 + */ + public final ViewModelAction getItem(String id) { +// return this.FirstOrDefault(i => id.equals(i.ID)); + for (ViewModelAction item : this) { + if (item.getID().equals(id)) { + return item; + } + } + return null; + } + + ///#endregion + + ///#region 方法 + + /** + * 克隆 + * + * @return VO上的操作集合 + */ +// public final Object clone() + public final VMActionCollection clone() { + VMActionCollection collections = new VMActionCollection(); + for (ViewModelAction op : this) { + ViewModelAction tempVar = op.clone(); + collections.add((ViewModelAction) ((tempVar instanceof ViewModelAction) ? tempVar : null)); + } + + return collections; + } + + /** + * 重载Equals方法 + * + * @param obj 要比较的对象 + * @return 如果当前对象等于 other 参数,则为 true;否则为 false。 + */ + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + // if (obj.equals(this)) + //{ + //return true; + //} + if (obj.getClass() != getClass()) { + return false; + } + + return equals((VMActionCollection) obj); + } + + /** + * 当前对象是否等于同一类型的另一个对象。 + * + * @param other 与此对象进行比较的对象。 + * @return 如果当前对象等于 other 参数,则为 true;否则为 false。 + */ + protected boolean equals(VMActionCollection other) { +// if (Count != other.size()) + if (this.size() != other.size()) { + return false; + } + for (ViewModelAction item : this) { + ViewModelAction otherItem = other.getItem(item.getID()); + if (otherItem == null) { + return false; + } + if (!item.equals(otherItem)) { + return false; + } + } + + return true; + } + + @Override + public boolean remove(Object action) { + if (action == null) { + return false; + } + String id = ((ViewModelAction) action).getID(); + if (id == null) { + return false; + } + super.removeIf(item -> + id.equals(item.getID()) + ); + return true; + } + + public boolean removeById(String actionId) { + + if (actionId == null || "".equals(actionId)) { + return false; + } + super.removeIf(item -> + actionId.equals(item.getID()) + ); + return true; + } + ///// + ///// 设置Action集合所属的结点 + ///// + ///// + //public void SetOwner(GspViewObject node) + //{ + // foreach (var item in this) + // { + // item.Owner = node; + // } + //} + ///#endregion +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/collection/VMElementCollection.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/collection/VMElementCollection.java new file mode 100644 index 0000000000000000000000000000000000000000..3f8f83ec32a15251336a805137e8f9708f24d11c --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/collection/VMElementCollection.java @@ -0,0 +1,157 @@ + +package com.inspur.edp.formserver.viewmodel.collection; + +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.das.commonmodel.collection.GspElementCollection; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.formserver.viewmodel.GspViewObject; + +import java.io.Serializable; + +/** + * The Collection Of View Model Element + * + * @ClassName: VMElementCollection + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class VMElementCollection extends GspElementCollection implements Serializable +{ + ///#region 构造函数 + + /** + 字段集合构造函数 + + @param owner 所属视图对象结点 + */ +//ORIGINAL LINE: public VMElementCollection(GspViewObject owner = null) + public VMElementCollection(GspViewObject owner) + { + super(owner); + } + + ///#endregion + + ///#region 属性 + + /** + 根据ID获取节点元素 + + @param id 节点元素ID + @return 节点元素 + */ + @Override//不能override final的類 + public final GspViewModelElement getItem(String id) + { + for(IGspCommonField item:this){ + if(item instanceof GspViewModelElement){ + return (GspViewModelElement)item; + } + } + return null; +// Object tempVar = this.FirstOrDefault(i => id.equals(i.ID)); +// return (GspViewModelElement)((tempVar instanceof GspViewModelElement) ? tempVar : null); + } + + ///#endregion + + ///#region 方法 + + /** + 重载Equals方法 + + @param obj 要比较的对象 + @return 如果当前对象等于 other 参数,则为 true;否则为 false。 + */ + @Override + public boolean equals(Object obj) + { + if (obj == null) + { + return false; + } + // if (obj.equals(this)) + //{ + //return true; + //} + if (obj.getClass() != getClass()) + { + return false; + } + + return equals((VMElementCollection)obj); + } + + /** + 当前对象是否等于同一类型的另一个对象。 + + @param other 与此对象进行比较的对象。 + @return 如果当前对象等于 other 参数,则为 true;否则为 false。 + */ + protected boolean equals(VMElementCollection other) + { +// if (Count != other.size()) + if (this.size() != other.size()) + { + return false; + } + for (IGspCommonField item : this) + { + IGspCommonField otherItem = other.getItem(item.getID()); + if (otherItem == null) + { + return false; + } + if (!item.equals(otherItem)) + { + return false; + } + } + + return true; + } + + /** + 克隆 + + @return VO节点元素集合 + */ + public final VMElementCollection clone() + { + VMElementCollection collections; + collections = new VMElementCollection((GspViewObject) getParentObject()); + +// collections.addAll(this); +// (this.Select(element => (GspViewModelElement)((tempVar instanceof GspViewModelElement) ? +// tempVar : null))); + for(IGspCommonField item:this){ +// Object item; + GspViewModelElement obj = ((GspViewModelElement)item).clone(); + GspViewModelElement tempVar = ((obj instanceof GspViewModelElement) ? obj : null); + collections.add(tempVar); + } + return collections; + } + + ///#endregion +// public final VMElementCollection clone() +// { +// VMElementCollection collections; +// collections = new VMElementCollection((GspViewObject) getParentObject()); +// Object tempVar = ((GspViewModelElement)((element instanceof GspViewModelElement) ? element : null)).clone(); +// collections.addRange(this.Select(element => (GspViewModelElement)((tempVar instanceof GspViewModelElement) ? +// tempVar : null))); +// +// for(){ +// Object item; +// GspViewModelElement obj = ((GspViewModelElement)item).clone(); +// +// +// } +// +// return collections; +// } +// +// ///#endregion +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/collection/ValueHelpConfigCollection.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/collection/ValueHelpConfigCollection.java new file mode 100644 index 0000000000000000000000000000000000000000..300ebab331f88abfdd05940fe55a591fb74c260f --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/collection/ValueHelpConfigCollection.java @@ -0,0 +1,132 @@ + + +package com.inspur.edp.formserver.viewmodel.collection; + +import com.inspur.edp.cef.designtime.api.collection.BaseList; +import com.inspur.edp.formserver.viewmodel.common.ValueHelpConfig; + +import java.io.Serializable; + +/** + * The Collection Of The Help Config + * + * @ClassName: ValueHelpConfigCollection + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ValueHelpConfigCollection extends BaseList implements Cloneable, Serializable +{ + ///#region 构造函数 + + /** + 构造函数 + + */ + public ValueHelpConfigCollection() + { + super(); + } + + ///#endregion + + ///#region 属性 + + /** + 获取指定ID的值帮助配置 + + @param elementId Element标识 + @return 值帮助配置 + */ + public final ValueHelpConfig getItem(String elementId) + { + for(ValueHelpConfig item:this){ + if(item.getElementId().equals(elementId)){ + return item; + } + } + return null; +// return Items.firstOrDefault(i => elementId.equals(i.ElementId)); + } + + ///#endregion + + ///#region 方法 + + /** + 批量添加值帮助配置 + + @param items 值帮助配置集合 + */ + public final void addRange(ValueHelpConfig[] items) + { + for (ValueHelpConfig item : items) + { + add(item); + } + } + + /** + 批量添加值帮助配置 + + @param items 值帮助配置集合 + */ + public final void addRange(Iterable items) + { + for (ValueHelpConfig item : items) + { + add(item); + } + } + + /** + 克隆 + + @return 值帮助配置集合的副本 + */ +// public final Object clone() + @Override + public final ValueHelpConfigCollection clone() + { + ValueHelpConfigCollection newCollection = new ValueHelpConfigCollection(); + + for (ValueHelpConfig item : this) { + newCollection.add(item); + } + + return newCollection; + } + + ///#endregion + + @Override + public boolean remove(Object helpConfig) { + if (helpConfig == null) { + return false; + } + String id = ((ValueHelpConfig) helpConfig).getElementId(); + if (id == null) { + return false; + } + super.removeIf(item -> + id.equals(item.getElementId()) + ); + return true; + } + + @Override + public boolean contains(Object helpConfig){ + if(helpConfig==null) + return false; + String id = ((ValueHelpConfig) helpConfig).getElementId(); + if (id == null) { + return false; + } + for(ValueHelpConfig item:this){ + if(item.getElementId().equals(id)) + return true; + } + return false; + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/collection/ViewObjectCollection.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/collection/ViewObjectCollection.java new file mode 100644 index 0000000000000000000000000000000000000000..6ec7dc8000862754cce2ce73e9acff2868f2381a --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/collection/ViewObjectCollection.java @@ -0,0 +1,137 @@ + + +package com.inspur.edp.formserver.viewmodel.collection; + +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.das.commonmodel.collection.GspObjectCollection; +import com.inspur.edp.formserver.viewmodel.GspViewObject; + +import java.io.Serializable; + +/** + * The Collection Of View Model Object + * + * @ClassName: ViewObjectCollection + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ViewObjectCollection extends GspObjectCollection implements Serializable +{ + /** + 结点集合构造函数 + + @param parentObject 父节点 + */ +// public ViewObjectCollection(IGSPCommonObject parentObject) + public ViewObjectCollection(IGspCommonObject parentObject) + { + super(parentObject); + } + + /** + 根据ID获取节点 + + @param id 节点ID + @return 节点 + */ + public final GspViewObject getItem(String id) + { +// Object tempVar = this.FirstOrDefault(i => id.equals(i.ID)); + for ( IGspCommonObject item : this){ + if(item.getID().equals(id)){ + IGspCommonObject tempVar=item; + return (GspViewObject)((tempVar instanceof GspViewObject) ? tempVar : null); + } + } + return null; + + } + + /** + 重载Equals方法 + + @param obj 要比较的对象 + @return 如果当前对象等于 other 参数,则为 true;否则为 false。 + */ + @Override + public boolean equals(Object obj) + { + if ( obj.equals(null)) + { + return false; + } + if ( obj.equals(this)) + { + return true; + } + if (obj.getClass() != getClass()) + { + return false; + } + + return equals((ViewObjectCollection)obj); + } + + /** + 获取HashCode + + @return hashCode + */ + @Override + public int hashCode() + { + return super.hashCode(); + } + + /** + 当前对象是否等于同一类型的另一个对象。 + + @param other 与此对象进行比较的对象。 + @return 如果当前对象等于 other 参数,则为 true;否则为 false。 + */ + protected boolean equals(ViewObjectCollection other) + { +// if (Count != other.size()) + if (this.size() != other.size()) + { + return false; + } +// for (var item : this) + for (IGspCommonObject item : this) + { + IGspCommonObject otherItem = other.getItem(item.getID()); + if (otherItem == null) + { + return false; + } + if (!item.equals(otherItem)) + { + return false; + } + } + + return true; + } + + /** + 克隆 + + @return VO节点元素集合 + */ +// public final Object clone() + public final ViewObjectCollection clone() + { +// ViewObjectCollection collections = new ViewObjectCollection(ParentObject); + ViewObjectCollection collections = new ViewObjectCollection(getParentObject()); +// for (var node : this) + for (IGspCommonObject node : this) + { + Object tempVar = ((GspViewObject)((node instanceof GspViewObject) ? node : null)).clone(); + collections.add((GspViewObject)((tempVar instanceof GspViewObject) ? tempVar : null)); + } + + return collections; + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ConvertUtils.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ConvertUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..7e8db3d1924c50e5518336e743403be138ef04e0 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ConvertUtils.java @@ -0,0 +1,729 @@ + + +package com.inspur.edp.formserver.viewmodel.common; + +import com.inspur.edp.bef.bizentity.GspBusinessEntity; +import com.inspur.edp.bef.bizentity.beenum.BEOperationType; +import com.inspur.edp.bef.bizentity.operation.BizMgrAction; +import com.inspur.edp.bef.bizentity.operation.collection.BizMgrActionCollection; +import com.inspur.edp.bef.bizentity.operation.componentbase.BizParameter; +import com.inspur.edp.bef.bizentity.operation.componentbase.BizVoidReturnType; +import com.inspur.edp.bef.bizentity.operation.componentinterface.IBizParameter; +import com.inspur.edp.bef.bizentity.operation.internalmgraction.IInternalMgrAction; +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.cef.designtime.api.collection.GspAssociationCollection; +import com.inspur.edp.cef.designtime.api.collection.GspAssociationKeyCollection; +import com.inspur.edp.cef.designtime.api.collection.GspEnumValueCollection; +import com.inspur.edp.cef.designtime.api.element.GspAssociation; +import com.inspur.edp.cef.designtime.api.element.GspAssociationKey; +import com.inspur.edp.cef.designtime.api.element.GspElementObjectType; +import com.inspur.edp.cef.designtime.api.element.GspEnumValue; +import com.inspur.edp.cef.designtime.api.util.Guid; +import com.inspur.edp.das.commonmodel.IGspCommonElement; +import com.inspur.edp.das.commonmodel.IGspCommonModel; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.das.commonmodel.collection.GspUniqueConstraintCollection; +import com.inspur.edp.das.commonmodel.entity.GspCommonElement; +import com.inspur.edp.das.commonmodel.entity.element.ElementCodeRuleConfig; +import com.inspur.edp.das.commonmodel.entity.object.GspUniqueConstraint; +import com.inspur.edp.das.commonmodel.util.HandleAssemblyNameUtil; +import com.inspur.edp.formserver.viewmodel.DotNetToJavaStringHelper; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.formserver.viewmodel.action.MappedBizAction; +import com.inspur.edp.formserver.viewmodel.action.mappedbiz.MappedBizActionParameter; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelParameter; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelReturnValue; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelVoidReturnValue; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementMapping; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementSourceType; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoObjectMapping; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoObjectSourceType; +import lombok.var; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * The Tool Of Convert Between Busiess Entity And View Model + * + * @ClassName: ConvertUtils + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public final class ConvertUtils { + private static String AUTO_GEN_VM_PREFIX = "GenVo"; + private static String AUTO_GEN_VM_SUFFIX = "Service"; + private static String errorToken = "#GspBefError# "; + + public static GspViewModel convertToViewModel(GspBusinessEntity be, String pkgName, String metadataId) { + return convertToViewModel(be, pkgName, metadataId, ""); + } + + public static GspViewModel convertToViewModel(GspBusinessEntity be, String pkgName, String metadataId, String voGeneratingAssembly) { + //① CM结构构造 + GspViewModel vm = convertToGspViewModel(be, pkgName, metadataId, voGeneratingAssembly); + vm.getMapping().setMapType(MappingType.BizEntity); + //② BeMgrAction构造 + var beMgrActions = be.getCustomMgrActions(); //be.GetCustomMgrActions(); + buildVmActions(beMgrActions, vm, pkgName, metadataId); + + vm.setIsUseNamespaceConfig(true); + return vm; + } + + private static GspViewModel convertToGspViewModel(IGspCommonModel cm, String pkgName, String metadataId, String voGeneratingAssembly) { + GspViewModel vm = new GspViewModel(); + //① BasicInfo + convertBasicInfo(cm, vm, pkgName, metadataId, voGeneratingAssembly); + //② MainObject + vm.setMainObject(toObject(cm.getMainObject(), pkgName, metadataId, null, GspVoObjectSourceType.BeObject)); + //③ BelongModel递归赋值 + vm.getMainObject().setBelongModel(vm); + vm.getMainObject().setBelongModelID(vm.getID()); + setChildObjectBelongModel(vm.getMainObject(), vm); + return vm; + } + + + /** + * 设置子对象的所属模型属性 + * + * @param parentObject 父对象 + * @param cm 模型 + */ + private static void setChildObjectBelongModel(IGspCommonObject parentObject, IGspCommonModel cm) { + if (parentObject == null || parentObject.getContainChildObjects() == null || parentObject.getContainChildObjects().size() == 0) { + return; + } + for (IGspCommonObject childObject : parentObject.getContainChildObjects()) { + childObject.setBelongModel(cm); + childObject.setBelongModelID(cm.getID()); + // 递归 + setChildObjectBelongModel(childObject, cm); + } + } + + private static void convertBasicInfo(IGspCommonModel cm, GspViewModel vm, String pkgName, String metadataId, String voGeneratingAssembly) { + vm.setID(Guid.newGuid().toString()); + vm.setCode(String.format("%1$s%2$s", cm.getCode(), AUTO_GEN_VM_SUFFIX)); + vm.setName(String.format("%1$s_%2$s", AUTO_GEN_VM_PREFIX, cm.getName())); + vm.setSimplifyGen(true); + vm.setIsVirtual(false); + vm.setEntityType(cm.getEntityType()); + + if (DotNetToJavaStringHelper.isNullOrEmpty(voGeneratingAssembly)) { + vm.setDotnetGeneratingAssembly(cm.getDotnetGeneratingAssembly()+".Vo"); + vm.setGeneratingAssembly(HandleAssemblyNameUtil.convertToJavaPackageName(cm.getDotnetGeneratingAssembly()+".Vo")); + } else { + vm.setDotnetGeneratingAssembly(voGeneratingAssembly+ ".Vo"); + vm.setGeneratingAssembly(HandleAssemblyNameUtil.convertToJavaPackageName(voGeneratingAssembly+".Vo")); + } + ViewModelMapping tempVar = new ViewModelMapping(); + tempVar.setMapType(MappingType.BizEntity); + tempVar.setTargetMetadataPkgName(pkgName); + tempVar.setTargetMetadataId(metadataId); + tempVar.setTargetObjId(cm.getID()); + vm.setMapping(tempVar); + } + + + public static GspViewObject toObject(IGspCommonObject cmObject, String pkgName, String metadataId, String parentObjIDElementId, GspVoObjectSourceType sourceType) { + GspViewObject vmObject = new GspViewObject(); + + //① BasicInfo + convertObjectBasicInfo(cmObject, vmObject, pkgName, metadataId, sourceType); + //② Element + convertContainElements(cmObject, vmObject, pkgName, metadataId, sourceType); + //③ 更新字段相关的属性(分级信息、ID字段等) + // QO无相关属性,故不需要传入sourceType区分qo源 + convertObjectSelfInfo(cmObject, vmObject, parentObjIDElementId, sourceType); + //⑤ ChildObject + // QO无子节点 + convertChildObjects(cmObject, vmObject, pkgName, metadataId); + + return vmObject; + } + + // +// + private static void convertObjectBasicInfo(IGspCommonObject cmObject, GspViewObject vmObject, String pkgName, String metadataId, GspVoObjectSourceType sourceType) { + vmObject.setID(Guid.newGuid().toString()); + vmObject.setCode(cmObject.getCode()); + vmObject.setName(cmObject.getName()); + vmObject.setObjectType(cmObject.getObjectType()); + vmObject.setRefObjectName(cmObject.getRefObjectName()); + + vmObject.setOrderbyCondition(cmObject.getOrderbyCondition()); + vmObject.setFilterCondition(cmObject.getFilterCondition()); + vmObject.setIsReadOnly(cmObject.getIsReadOnly()); + if (cmObject.getKeys() != null && cmObject.getKeys().size() > 0) { + for (int i = 0; i < cmObject.getKeys().size(); i++) { + vmObject.getKeys().add(cmObject.getKeys().get(i).clone()); + } + } + vmObject.setIsRef(false); + GspVoObjectMapping tempVar = new GspVoObjectMapping(); + tempVar.setMapType(MappingType.BEObject); + tempVar.setTargetMetadataPkgName(pkgName); + tempVar.setTargetMetadataId(metadataId); + tempVar.setTargetObjId(cmObject.getID()); + tempVar.setSourceType(sourceType); + vmObject.setMapping(tempVar); + + // 源相关属性 + convertObjSourceTypeRelatedProp(cmObject, vmObject, sourceType); + } + + private static void convertObjSourceTypeRelatedProp(IGspCommonObject cmObj, GspViewObject vmObject, GspVoObjectSourceType sourceType) { + switch (sourceType) { + case BeObject: + case QoObject: + vmObject.setIsVirtual(false); //be带出,IsVirtual=false + break; + case VoObject: + vmObject.setIsVirtual(cmObj.getIsVirtual()); + + var originVo = (GspViewObject) cmObj; + vmObject.setIsBeckendOnly(originVo.getIsBeckendOnly()); + vmObject.setPrimaryKey(originVo.getPrimaryKey()); // 无用 + vmObject.setDefaultPageSize(originVo.getDefaultPageSize()); + vmObject.setExtendProperties(originVo.getExtendProperties()); + break; + default: + throw new RuntimeException(errorToken + "不存在的GspVoObjectSourceType"+ sourceType.toString() + errorToken); + } + } + + + + /** + * vo对象转换时,更新字段相关属性 + * + * @param cmObject + * @param vmObject + * @param parentObjIDElementId + */ + + private static void convertObjectSelfInfo(IGspCommonObject cmObject, GspViewObject vmObject, String parentObjIDElementId, GspVoObjectSourceType objSourceType) { + + List elementList = vmObject.getContainElements().stream().filter(item -> item.getIsVirtual() == false).collect(Collectors.toList()); + Map viewElements = elementList.stream().collect(Collectors.toMap(IGspCommonField::getID,item -> item)); + java.util.HashMap elementMappings = getElementMappingsDic(elementList); + + + updateIDElement(cmObject, vmObject); + updateViewObjectKeys(cmObject, vmObject, parentObjIDElementId); + updateColumnGenerateId(cmObject, vmObject, elementMappings); + updateContainConstraints(cmObject, vmObject, elementMappings, viewElements); + updateStateElementId(cmObject, vmObject, elementMappings); + + } + + /** + * 更新状态字段 + * + * @param beObject + * @param viewObj + * @param elementMappings + */ + public static void updateStateElementId(IGspCommonObject beObject, GspViewObject viewObj, java.util.HashMap elementMappings) { + if (!DotNetToJavaStringHelper.isNullOrEmpty(beObject.getStateElementID()) && elementMappings.containsKey(beObject.getStateElementID())) { + viewObj.setStateElementID(elementMappings.get(beObject.getStateElementID())); + } + } + + /** + * 更新创建人等信息 + * + * @param beObject + * @param viewObj + * @param elementMappings + */ + public static void updateTimeStampElements(IGspCommonObject beObject, GspViewObject viewObj, java.util.HashMap elementMappings) { + + } + + /** + * 更新唯一性约束 + * + * @param beObject + * @param viewObj + * @param viewElements + * @param elementMappings + */ + public static void updateContainConstraints(IGspCommonObject beObject, GspViewObject viewObj, java.util.HashMap elementMappings, Map viewElements) { + + GspUniqueConstraintCollection voUniqueCons = viewObj.getContainConstraints().clone(); + if (viewObj.getContainConstraints() != null && viewObj.getContainConstraints().size() > 0) { + viewObj.getContainConstraints().clear(); + } + if (beObject.getContainConstraints() == null || beObject.getContainConstraints().size() == 0) { + return; + } + for (GspUniqueConstraint beConstraint : beObject.getContainConstraints()) { + Object tempVar = beConstraint.clone(); + GspUniqueConstraint viewModelConstraint = (GspUniqueConstraint) ((tempVar instanceof GspUniqueConstraint) ? tempVar : null); + viewModelConstraint.getElementList().clear(); + for (String element : beConstraint.getElementList()) { + if (!elementMappings.containsKey(element)) { + continue; + } + String vmElementId = elementMappings.get(element); + if (DotNetToJavaStringHelper.isNullOrEmpty(vmElementId)) { + continue; + } + if (!viewElements.containsKey(vmElementId)) { + throw new RuntimeException("没有找到ID为【" + vmElementId + "】的字段#GspBefError#"); + } + viewModelConstraint.getElementList().add(vmElementId); + } + if (viewObj.getContainConstraints() == null) { + viewObj.setContainConstraints(new GspUniqueConstraintCollection()); + } + if (voUniqueCons != null && voUniqueCons.size() > 0) { + for (GspUniqueConstraint voCon : voUniqueCons) { + if (voCon.getCode().equals(viewModelConstraint.getCode())) { + viewModelConstraint.setI18nResourceInfoPrefix(voCon.getI18nResourceInfoPrefix()); + } + } + } + viewObj.getContainConstraints().add(viewModelConstraint); + } + } + + /** + * 更新ID生成规则 + * + * @param beObject + * @param viewObj + * @param elementMappings + */ + public static void updateColumnGenerateId(IGspCommonObject beObject, GspViewObject viewObj, java.util.HashMap elementMappings) { + if (elementMappings.containsKey(beObject.getColumnGenerateID().getElementID())) { + viewObj.getColumnGenerateID().setElementID(elementMappings.get(beObject.getColumnGenerateID().getElementID())); + } + viewObj.getColumnGenerateID().setGenerateType(beObject.getColumnGenerateID().getGenerateType()); + } + + + /** + * 字段Mapping字典 + * + * @param elementList + * @return + */ + public static java.util.HashMap getElementMappingsDic(List elementList) { + java.util.HashMap elementMappings = new java.util.HashMap(); + for (IGspCommonField item : elementList) { + GspViewModelElement viewModelElement = (GspViewModelElement) item; + if (viewModelElement != null && viewModelElement.getMapping() != null) { + String key = ((GspViewModelElement) ((item instanceof GspViewModelElement) ? item : null)).getMapping().getTargetObjId(); + String value = item.getID(); + elementMappings.put(key, value); + } + } + return elementMappings; + } + + + /** + * 更新ID字段及Keys + * + * @param cmObject + * @param vmObject + */ + private static void updateIDElement(IGspCommonObject cmObject, GspViewObject vmObject) { + // idEle + String idElementId = cmObject.getIDElement().getLabelID(); + var vmIdEle = vmObject.getElementByLabelId(idElementId); + vmObject.getColumnGenerateID().setElementID(vmIdEle.getID()); + } + + /** + * 更新Keys + * + * @param cmObject + * @param vmObject + */ + public static void updateViewObjectKeys(IGspCommonObject cmObject, GspViewObject vmObject, String parentObjIDElementId) { + var vmElements = vmObject.getAllElementList(true); + // keys + var keys = cmObject.getKeys(); + if (keys.size() > 0) { + if (vmObject.getKeys().size() == 0) { + throw new RuntimeException(String.format("对象%1$s的外键关联未映射到视图对象对象。", cmObject.getName())); + } + for (GspAssociationKey key : vmObject.getKeys()) { + String beSourceEleId = getAssociationKeyBySourceElementId(keys, key.getSourceElement()).getSourceElement(); + key.setSourceElement(getVmElementByMappedBizEleId(vmElements, beSourceEleId).getID()); + key.setTargetElement(parentObjIDElementId); + } + } + } + + private static GspCommonElement getVmElementByMappedBizEleId(ArrayList vmElements, String bizEleId) { + if (vmElements.isEmpty()) { + throw new RuntimeException("无映射字段id为'"+bizEleId+"'的字段。"); + } + for (var item : vmElements) { + if (bizEleId.equals(((GspViewModelElement) item).getMapping().getTargetObjId())) { + return (GspCommonElement)item; + } + } + throw new RuntimeException("无映射字段id为'"+bizEleId+"'的字段。"); + } + + private static GspAssociationKey getAssociationKeyBySourceElementId(GspAssociationKeyCollection keys, String sourceEleId) { + if (keys.size() == 0) { + throw new RuntimeException("无外键关联。"); + } + for (GspAssociationKey item : keys) { + if (sourceEleId.equals(item.getSourceElement())) { + return item; + } + } + throw new RuntimeException("无外键关联。"); + } + //#endregion + + /** + * 更新分级信息 + * + * @param cmObject + * @param vmObject + * @param viewElements + * @param elementMappings + */ + + public static void updateHirarchyInfo(IGspCommonObject cmObject, GspViewObject vmObject, java.util.HashMap elementMappings, java.util.HashMap viewElements, GspVoElementSourceType eleSourceType) { + + } + + private static void convertChildObjects(IGspCommonObject cmObject, GspViewObject vmObject, String pkgName, String metadataId) { + + for (var childObject : cmObject.getContainChildObjects()) { + GspViewObject cmChildObject = toObject(childObject, pkgName, metadataId, vmObject.getIDElement().getID(),GspVoObjectSourceType.BeObject); + cmChildObject.setParentObject(vmObject); + vmObject.getContainChildObjects().add(cmChildObject); + } + } + + private static void convertContainElements(IGspCommonObject cmObject, GspViewObject vmObject, String pkgName, String metadataId, GspVoObjectSourceType objSourceType) { + if (cmObject.getContainElements() == null || cmObject.getContainElements().size() < 1) { + return; + } + GspVoElementSourceType eleSourceType = getEleSourceType(objSourceType); + + for (var cmElement : cmObject.getContainElements()) { + GspViewModelElement element = toElement((GspCommonElement) cmElement, pkgName, metadataId, eleSourceType); + element.setBelongObject(vmObject); + vmObject.getContainElements().add(element); + } + } + + private static GspVoElementSourceType getEleSourceType(GspVoObjectSourceType objSourceType) { + switch (objSourceType) { + case BeObject: + return GspVoElementSourceType.BeElement; + case QoObject: + return GspVoElementSourceType.QoElement; + case VoObject: + return GspVoElementSourceType.VoElement; + default: + throw new RuntimeException("无效枚举值" + objSourceType); + } + } + + + + + public static GspViewModelElement toElement(IGspCommonElement element, String pkgName, String metadataId) { + return toElement(element, pkgName, metadataId); + } + + public static GspViewModelElement toElement(IGspCommonElement element, String pkgName, String metadataId, GspVoElementSourceType sourceType) { + GspViewModelElement vmElement = new GspViewModelElement(); + + //① 字段基础信息 + convertElementBasicInfo(element, vmElement, pkgName, metadataId, sourceType); + //② 关联 + if (vmElement.getObjectType() == GspElementObjectType.Association) { + convertAssociation(element, vmElement, pkgName, metadataId, sourceType); + } + //③ 枚举 + if (vmElement.getObjectType() == GspElementObjectType.Enum) { + convertEnumInfo(element, vmElement); + } + return vmElement; + } + + private static void convertElementBasicInfo(IGspCommonElement cmEle, GspViewModelElement vmEle, String pkgName, String metadataId, GspVoElementSourceType sourceType) { + vmEle.setID(Guid.newGuid().toString()); + vmEle.setCode(cmEle.getCode()); + vmEle.setName(cmEle.getName()); + vmEle.setLabelID(cmEle.getLabelID()); + vmEle.setMDataType(cmEle.getMDataType()); + vmEle.setLength(cmEle.getLength()); + vmEle.setPrecision(cmEle.getPrecision()); + vmEle.setObjectType(cmEle.getObjectType()); + vmEle.setBelongModelID(cmEle.getBelongModelID()); + vmEle.setIsMultiLanguage(cmEle.getIsMultiLanguage()); + vmEle.setRefElementId(cmEle.getRefElementId()); + vmEle.setIsCustomItem(cmEle.getIsCustomItem()); + vmEle.setIsRequire(cmEle.getIsRequire()); + vmEle.setIsRefElement(cmEle.getIsRefElement()); + vmEle.setReadonly(cmEle.getReadonly()); + vmEle.setIsFromAssoUdt(cmEle.getIsFromAssoUdt()); + vmEle.setEnumIndexType(cmEle.getEnumIndexType()); + vmEle.setIsUdt(cmEle.getIsUdt()); + vmEle.setRefBusinessFieldId(cmEle.getRefBusinessFieldId()); + //业务字段相关属性 + if (vmEle.getIsUdt()) { + convertUdtInfo(cmEle, vmEle); + } + + GspVoElementMapping tempVar = new GspVoElementMapping(); + tempVar.setMapType(MappingType.Element); + tempVar.setTargetMetadataId(metadataId); + tempVar.setTargetMetadataPkgName(pkgName); + tempVar.setTargetObjId(cmEle.getID()); + tempVar.setTargetElementId(cmEle.getID()); + tempVar.setTargetObjectId(cmEle.getBelongObject()==null?null:cmEle.getBelongObject().getID()); + tempVar.setSourceType(sourceType); + vmEle.setMapping(tempVar); + // 字段源不同,进行不同处理的属性 + convertEleSourceTypeRelatedProp(cmEle, vmEle, sourceType); + // 动态属性 + vmEle.setDynamicPropSetInfo(cmEle.getDynamicPropSetInfo()); + } + + private static void convertEleSourceTypeRelatedProp(IGspCommonElement cmEle, GspViewModelElement vmEle, GspVoElementSourceType sourceType) { + switch (sourceType) { + case BeElement: + case QoElement: + vmEle.setIsVirtualViewElement(false); + vmEle.setIsVirtual(false); //be带出,IsVirtual=false + vmEle.setIsRef(false); + break; + case VoElement: + vmEle.setColumnID(cmEle.getColumnID()); + vmEle.setDefaultValue(cmEle.getDefaultValue()); + convertBillCodeConfig(vmEle.getBillCodeConfig(), cmEle.getBillCodeConfig()); + vmEle.setDefaultValueType(cmEle.getDefaultValueType()); + + vmEle.setIsVirtual(cmEle.getIsVirtual()); + vmEle.setIsRef(cmEle.getIsRef()); + + + GspViewModelElement sourceVoEle = (GspViewModelElement) cmEle; + vmEle.setIsVirtualViewElement(sourceVoEle.getIsVirtualViewElement()); + vmEle.setIsBeckendOnly(sourceVoEle.getIsBeckendOnly()); + vmEle.setImmediateSubmission(sourceVoEle.getImmediateSubmission()); + vmEle.setShowInFilter(sourceVoEle.getShowInFilter()); + vmEle.setShowInSort(sourceVoEle.getShowInSort()); + vmEle.setVMHelpConfig(sourceVoEle.getVMHelpConfig()); + vmEle.setHelpActions(sourceVoEle.getHelpActions()); + vmEle.setExtendProperties(sourceVoEle.getExtendProperties()); + vmEle.setExtendProperties(sourceVoEle.getExtendProperties()); + break; + default: + throw new RuntimeException(errorToken + String.format("不存在的voEleMapping'%1$s'", sourceType.toString()) + errorToken); + } + } + + + private static void convertBillCodeConfig(ElementCodeRuleConfig config, ElementCodeRuleConfig sourceConfig) { + config.setCanBillCode(sourceConfig.getCanBillCode()); + config.setBillCodeID(sourceConfig.getBillCodeID()); + config.setBillCodeName(sourceConfig.getBillCodeID()); + config.setCodeGenerateType(sourceConfig.getCodeGenerateType()); + config.setCodeGenerateOccasion(sourceConfig.getCodeGenerateOccasion()); + } + + private static void convertEnumInfo(IGspCommonElement cmEle, GspViewModelElement vmEle) { + // 关联带出字段,无关联信息 + if (cmEle.getIsRefElement()) { + return; + } + if (cmEle.getContainEnumValues() == null || cmEle.getContainEnumValues().size() < 1) { + throw new RuntimeException("找不到枚举值"); + } + vmEle.setContainEnumValues(new GspEnumValueCollection()); + for (GspEnumValue enumValue : cmEle.getContainEnumValues()) { + vmEle.getContainEnumValues().add(enumValue.clone()); + } + } + + + private static void convertUdtInfo(IGspCommonElement cmEle, GspViewModelElement vmEle) { + vmEle.setUdtID(cmEle.getUdtID()); + vmEle.setUdtName(cmEle.getUdtName()); + vmEle.setUdtPkgName(cmEle.getUdtPkgName()); + //TODO 后续UDt中集成VM属性后,需要获取UDT后赋值 + } + + //#region 关联 + private static void convertAssociation(IGspCommonElement cmEle, GspViewModelElement vmEle, String pkgName, String metadataId, GspVoElementSourceType sourceType) { + // 关联带出字段,无关联信息 + if (cmEle.getIsRefElement()) { + return; + } + if (cmEle.getChildAssociations() == null || cmEle.getChildAssociations().size() < 1) { + throw new RuntimeException("找不到关联信息"); + } + vmEle.setChildAssociations(new GspAssociationCollection()); + for (GspAssociation cmAssociation : cmEle.getChildAssociations()) { + GspAssociation vmAssociation = getAssociation((GspAssociation) cmAssociation, pkgName, metadataId, vmEle.getID(), sourceType); + vmAssociation.setBelongElement(vmEle); + vmEle.getChildAssociations().add(vmAssociation); + } + } + + private static GspAssociation getAssociation(GspAssociation cmAssociation, String pkgName, String metadataId, String vmElementId, GspVoElementSourceType souceType) { + Object tempVar = cmAssociation.clone(); + GspAssociation vmAssociation = (GspAssociation) ((tempVar instanceof GspAssociation) ? tempVar : null); + + vmAssociation.getKeyCollection().clear(); + for (GspAssociationKey associationKey : cmAssociation.getKeyCollection()) { + GspAssociationKey voKey = associationKey.clone(); + voKey.setTargetElement(vmElementId); + vmAssociation.getKeyCollection().add(voKey); + } + vmAssociation.getRefElementCollection().clear(); + + for (IGspCommonField refElement : cmAssociation.getRefElementCollection()) { + GspViewModelElement vmRefElement = new GspViewModelElement(); + convertElementBasicInfo((IGspCommonElement) refElement, vmRefElement, pkgName, metadataId, souceType); + if (refElement.getObjectType() == GspElementObjectType.Enum) { + convertEnumInfo((IGspCommonElement) refElement, vmRefElement); + } + vmRefElement.setParentAssociation(vmAssociation); + vmAssociation.getRefElementCollection().add(vmRefElement); + } + + + return vmAssociation; + } + + + + private static void buildVmActions(BizMgrActionCollection beMgrActions, GspViewModel vm, String pkgName, String metadataId) { + if (beMgrActions == null) { + return; + } + + for (var bizMgrAction : beMgrActions) { + if (bizMgrAction.getOpType() == BEOperationType.BizMgrAction) { + MappedBizAction vmAction = toMappedAction((BizMgrAction)bizMgrAction, metadataId, pkgName); + vm.getActions().add(vmAction); + } + } + } + + public static MappedBizAction toMappedAction(BizMgrAction bizMgrAction, String metadataId, String pkgName) { + MappedBizAction tempVar = new MappedBizAction(); + tempVar.setID(Guid.newGuid().toString()); + tempVar.setCode(bizMgrAction.getCode()); + tempVar.setName(bizMgrAction.getName()); + tempVar.setReturnValue(getReturnValue(bizMgrAction)); + tempVar.setComponentName(bizMgrAction.getComponentName()); + ViewModelMapping mapping = new ViewModelMapping(); + mapping.setMapType(MappingType.BizOperation); + mapping.setTargetMetadataId(metadataId); + mapping.setTargetMetadataPkgName(pkgName); + mapping.setTargetObjId(bizMgrAction.getID()); + tempVar.setMapping(mapping); + MappedBizAction vmAction = tempVar; + initParameterCollection(vmAction, bizMgrAction); + return vmAction; + } + + private static void initParameterCollection(MappedBizAction vmAction, BizMgrAction action) { + if (action.getParameters() == null || action.getParameters().getCount() < 1) { + return; + } + for (int i = 0; i < action.getParameters().getCount(); i++) { + MappedBizActionParameter param = new MappedBizActionParameter(); + transViewModelParameter(param, action.getParameters().getItem(i)); + vmAction.getParameterCollection().add(param); + } + } + + + private static ViewModelReturnValue getReturnValue(BizMgrAction action) { + if (action.getReturnValue() == null || action.getReturnValue() instanceof BizVoidReturnType) { + return new ViewModelVoidReturnValue(); + } + ViewModelReturnValue returnValue = new ViewModelReturnValue(); + transViewModelParameter(returnValue, action.getReturnValue()); + return returnValue; + } + + private static void transViewModelParameter(ViewModelParameter vmParam, IBizParameter param) { + vmParam.setID(Guid.newGuid().toString()); + vmParam.setAssembly(param.getAssembly()); + vmParam.setClassName(param.getClassName()); + vmParam.setDotnetClassName(((BizParameter)param).getNetClassName()); + switch (param.getMode()) { + case IN: + vmParam.setMode(VMParameterMode.IN); + break; + case INOUT: + vmParam.setMode(VMParameterMode.INOUT); + break; + case OUT: + vmParam.setMode(VMParameterMode.OUT); + break; + } + switch (param.getCollectionParameterType()) { + case None: + vmParam.setCollectionParameterType(VMCollectionParameterType.None); + break; + case List: + vmParam.setCollectionParameterType(VMCollectionParameterType.List); + break; + case Array: + vmParam.setCollectionParameterType(VMCollectionParameterType.Array); + break; + } + vmParam.setParamCode(param.getParamCode()); + vmParam.setParamDescription(param.getParamDescription()); + vmParam.setParamName(param.getParamName()); + switch (param.getParameterType()) { + case Boolean: + vmParam.setParameterType(VMParameterType.Boolean); + break; + case Custom: + vmParam.setParameterType(VMParameterType.Custom); + break; + case DateTime: + vmParam.setParameterType(VMParameterType.DateTime); + break; + case Decimal: + vmParam.setParameterType(VMParameterType.Decimal); + break; + case Double: + vmParam.setParameterType(VMParameterType.Double); + break; + case Int32: + vmParam.setParameterType(VMParameterType.Int32); + break; + case Object: + vmParam.setParameterType(VMParameterType.Object); + break; + case String: + vmParam.setParameterType(VMParameterType.String); + break; + default: + throw new IllegalStateException("Unexpected value: " + param.getParameterType()); + } + + + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ConvertVoUtils.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ConvertVoUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..d9e5d2f73d772a0b1a669386da18ef9752a610af --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ConvertVoUtils.java @@ -0,0 +1,166 @@ + + +package com.inspur.edp.formserver.viewmodel.common; + +import com.inspur.edp.bef.bizentity.GspBizEntityObject; +import com.inspur.edp.bef.bizentity.GspBusinessEntity; +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.das.commonmodel.IGspCommonElement; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.das.commonmodel.collection.GspObjectCollection; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.formserver.viewmodel.collection.ViewObjectCollection; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementSourceType; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoObjectSourceType; +import com.inspur.edp.formserver.viewmodel.util.ViewModelUtils; +import java.util.ArrayList; +import java.util.Iterator; + +//be上新增加的对象,字段等,同步到vo上,IDP用 +public class ConvertVoUtils { + + public static GspViewModel dealViewModel(GspBusinessEntity be, GspViewModel viewModel) { + + GspBizEntityObject bizObject=be.getMainObject(); + GspViewObject viewObject=viewModel.getMainObject(); + dealObject( be,bizObject,viewObject); + dealActions( be, viewModel); + return viewModel; + } + + public static void dealBeRefElements(GspBusinessEntity be, GspViewModel model) { + LinkBeUtils utils=new LinkBeUtils(true); + utils.linkBeRefElements(model); + + } + + public static void dealActions(GspBusinessEntity be, GspViewModel model) { + LinkBeUtils utils=new LinkBeUtils(true); + utils.linkActions(model); + } + + public static void dealObject(GspBusinessEntity be,GspBizEntityObject bizObject, GspViewObject viewObject) { + dealObjectBasicInfo(bizObject,viewObject); + + dealElements(be,bizObject,viewObject); + + dealObjectSelfInfo(bizObject,viewObject); + //联动中处理 +// dealModifyChildObjects(be,bizObject,viewObject); + dealAddChildObjects(bizObject,viewObject); + + } + + public static void dealAddChildObjects(GspBizEntityObject bizObject, GspViewObject viewObject) { + if(bizObject==null || bizObject.getContainChildObjects()==null || bizObject.getContainChildObjects().size()==0) + return; + GspObjectCollection beObjectCollection=bizObject.getContainChildObjects(); + for (IGspCommonObject beObj:beObjectCollection){ + if(isExistBizChildObject(viewObject,beObj.getID())) + continue; + IGspCommonObject newViewObject= ConvertUtils.toObject(beObj,viewObject.getMapping().getTargetMetadataPkgName(),viewObject.getMapping().getTargetMetadataId(),viewObject.getIDElement().getID(), GspVoObjectSourceType.BeObject); + viewObject.getContainChildObjects().add(newViewObject); + } + + } + public static boolean isExistedBizObject(GspBusinessEntity be,String objId){ + GspBizEntityObject bizObj = (GspBizEntityObject) be.getNode(node -> node.getID().equals(objId)); + if (bizObj==null) + return false; + return true; + } + public static GspBizEntityObject getBizObject(GspBusinessEntity be,String objId){ + GspBizEntityObject bizObj = (GspBizEntityObject) be.getNode(node -> node.getID().equals(objId)); + return bizObj; + } + public static void dealModifyChildObjects(GspBusinessEntity be,GspBizEntityObject bizObject, GspViewObject viewObject) { + if(viewObject.getContainChildObjects()==null || viewObject.getContainChildObjects().size()==0) + return; + ViewObjectCollection childObjList = viewObject.getContainChildObjects(); + Iterator iterators=childObjList.iterator(); + while (iterators.hasNext()){ + GspViewObject childObj= (GspViewObject) iterators.next(); + if (childObj.getIsVirtual()) { + continue; + } + String beChildObjId=((GspViewObject)childObj).getMapping().getTargetObjId(); + + if (!isExistedBizObject(be,beChildObjId)) { + iterators.remove(); + continue; + } + GspBizEntityObject childBizObject=getBizObject(be,beChildObjId); + dealObject(be,childBizObject,(GspViewObject) childObj); + } +// for (IGspCommonObject childObj : childObjList) { +// if (childObj.getIsVirtual()) { +// continue; +// } +// String beChildObjId=((GspViewObject)childObj).getMapping().getTargetObjId(); +// +// if (!isExistedBizObject(be,beChildObjId)) { +// viewObject.getContainChildObjects().remove(childObj); +// continue; +// } +// GspBizEntityObject childBizObject=getBizObject(be,beChildObjId); +// dealObject(be,childBizObject,(GspViewObject) childObj); +// } + } + + public static void dealObjectSelfInfo(GspBizEntityObject bizObject, GspViewObject viewObject) { +// LinkBeUtils utils=new LinkBeUtils(true); +// utils.linkObjectSelfInfo(viewObject,bizObject,null); + } + public static void dealElements(GspBusinessEntity be,GspBizEntityObject bizObject, GspViewObject viewObject) { + //联动中处理 +// LinkBeUtils utils = new LinkBeUtils(true); +// utils.linkElements(viewObject, be); + //处理be上新增的字段 + dealBeAddElements(bizObject,viewObject); + } + + public static void dealBeAddElements(GspBizEntityObject bizObject, GspViewObject viewObject) { + ArrayList bizElemens = bizObject.getContainElements().getAllItems(item -> item.getIsVirtual() == false); + if(bizElemens==null ||bizElemens.size()==0) + return; + for (IGspCommonField beEle:bizElemens){ + if(isExistBizElement(viewObject,beEle.getID())) + continue; + IGspCommonElement newViewEle= ConvertUtils.toElement((IGspCommonElement) beEle,viewObject.getMapping().getTargetMetadataPkgName(),viewObject.getMapping().getTargetMetadataId(), GspVoElementSourceType.BeElement); + newViewEle.setBelongObject(viewObject); + viewObject.getContainElements().add(newViewEle); + } + + } + + public static boolean isExistBizElement(GspViewObject bizObject, String elementId) { + ArrayList list = bizObject.getAllElementList(false); + for (IGspCommonElement ele : list) { + String beIdInView=((GspViewModelElement)ele).getMapping().getTargetElementId(); + if (elementId.equals(beIdInView)) { + return true; + } + } + return false; + } + public static boolean isExistBizChildObject(GspViewObject bizObject, String objectId) { + ViewObjectCollection viewObjectCollection=bizObject.getContainChildObjects(); + for (IGspCommonObject ele : viewObjectCollection) { + String objectIdInView=((GspViewObject)ele).getMapping().getTargetObjId(); + if (objectId.equals(objectIdInView)) { + return true; + } + } + return false; + } + + public static void dealObjectBasicInfo(GspBizEntityObject bizObject, GspViewObject viewObject) { +// if (ViewModelUtils.checkNull(viewObject.getCode())) { +// viewObject.setCode(bizObject.getCode()); +// } +//// viewObject.setIsVirtual(false); +// viewObject.setIsReadOnly(bizObject.getIsReadOnly()); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ElementHelpType.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ElementHelpType.java new file mode 100644 index 0000000000000000000000000000000000000000..4e6f4932581ccde814fb7c19a12d41da48703ce0 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ElementHelpType.java @@ -0,0 +1,49 @@ + + +package com.inspur.edp.formserver.viewmodel.common; + +/** + * The Definition Of Element Help Type + * + * @ClassName: ElementHelpType + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public enum ElementHelpType +{ + /** 无 + */ + None(0), + + /** 数据表帮助 + */ + SmartHelp(1); + + private int intValue; + private static java.util.HashMap mappings; + private synchronized static java.util.HashMap getMappings() + { + if (mappings == null) + { + mappings = new java.util.HashMap(); + } + return mappings; + } + + ElementHelpType(int value) + { + intValue = value; + ElementHelpType.getMappings().put(value, this); + } + + public int getValue() + { + return intValue; + } + + public static ElementHelpType forValue(int value) + { + return getMappings().get(value); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/HelpExtendAction.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/HelpExtendAction.java new file mode 100644 index 0000000000000000000000000000000000000000..eb3cb522d267fdf14ee222e24e58a64b71400c5e --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/HelpExtendAction.java @@ -0,0 +1,35 @@ + + +package com.inspur.edp.formserver.viewmodel.common; + +import com.inspur.edp.formserver.viewmodel.collection.VMActionCollection; + +/** + * The Definition Of Help Extend Action + * + * @ClassName: HelpExtendAction + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class HelpExtendAction +{ + private VMActionCollection beforeHelp; + /** + 帮助前扩展 + + */ + public final VMActionCollection getBeforeHelp() + { + if (beforeHelp == null) + { + beforeHelp = new VMActionCollection(); + } + return beforeHelp; + } + public final void setBeforeHelp(VMActionCollection value) + { + beforeHelp = value; + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/InitVoUtil.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/InitVoUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..eeb811ef115e15b50afe047c93e1c728056fb08e --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/InitVoUtil.java @@ -0,0 +1,83 @@ + + +package com.inspur.edp.formserver.viewmodel.common; + +import com.inspur.edp.cef.designtime.api.element.GspElementDataType; +import com.inspur.edp.cef.designtime.api.element.GspElementObjectType; +import com.inspur.edp.cef.designtime.api.util.Guid; +import com.inspur.edp.das.commonmodel.entity.object.GspColumnGenerate; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +/** + * The Tool Of View Model Init + * + * @ClassName: InitVoUtil + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public final class InitVoUtil { + public static GspViewModel BuildVirtualVo(String metadataID, String metadataName, String metadataCode, String metadataAssembly) { + GspViewModel vo = InitVo(metadataID, metadataName, metadataCode, metadataAssembly, true); + return vo; + } + + private static GspViewModel InitVo(String metadataID, String metadataName, String metadataCode, String metadataAssembly, boolean isVirtual) { + GspViewModel vo = new GspViewModel(); + vo.setID(metadataID); + vo.setCode(metadataCode); + vo.setName(metadataName); + vo.setDotnetGeneratingAssembly(metadataAssembly); + vo.setIsUseNamespaceConfig(true); + vo.setSimplifyGen(true); + GspViewObject mainObject = InitMainObject(metadataName, metadataCode, isVirtual); + vo.setMainObject(mainObject); + // vo + if (isVirtual) { + vo.setIsVirtual(true); + vo.setMapping(null); + } + return vo; + } + + private static GspViewObject InitMainObject(String objName, String objCode, boolean isVirtual) { + GspViewObject mainObj = new GspViewObject(); + GspViewModelElement idElement = GetIDElement(isVirtual); + mainObj.setID(Guid.newGuid().toString()); + mainObj.setCode(objCode); + mainObj.setName(objName); + GspColumnGenerate columnGenerate=new GspColumnGenerate(); + columnGenerate.setElementID(idElement.getID()); + columnGenerate.setGenerateType("Guid"); + mainObj.setColumnGenerateID(columnGenerate); + mainObj.getContainElements().add(idElement); + // voObject + if (isVirtual) { + mainObj.setIsVirtual(true); + mainObj.setMapping(null); + } + return mainObj; + } + + private static GspViewModelElement GetIDElement(boolean isVirtual) { + GspViewModelElement idElement = new GspViewModelElement(); + idElement.setID(Guid.newGuid().toString()); + idElement.setCode("ID"); + idElement.setName("ID"); + idElement.setLabelID("ID"); + idElement.setMDataType(GspElementDataType.String); + idElement.setObjectType(GspElementObjectType.None); + idElement.setLength(36); + idElement.setPrecision(0); + idElement.setIsRequire(true); + // voElemet + if (isVirtual) { + idElement.setIsVirtual(true); + idElement.setIsVirtualViewElement(true); + idElement.setMapping(null); + } + return idElement; + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/InternalExtendActionUtil.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/InternalExtendActionUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..0e164c5c53037d7060be6df433606cf61575c80e --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/InternalExtendActionUtil.java @@ -0,0 +1,62 @@ + + +package com.inspur.edp.formserver.viewmodel.common; + +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.viewmodel.action.internalexternalaction.*; + +/** + * The Tool Of Internal Extend Action + * + * @ClassName: InternalExtendActionUtil + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class InternalExtendActionUtil { + //Internal ExtendActionIDs + public static final String DeleteActionId = "9a17e935-7366-489d-b110-0ae103e5648e"; + public static final String ModifyActionId = "47dd3752-72a3-4c56-81c0-ae8ccfe5eb98"; + public static final String QueryActionId = "6fe68bfa-7c1b-4d6b-a7ef-14654168ae75"; + public static final String CreateActionId = "52479451-8e22-4751-8684-80489ce5786b"; + public static final String RetrieveActionId = "7a02f472-5bbd-424b-9d9e-f82e3f9f448e"; + + public static final String DataReversalMappingActionId = "991bf216-f55b-40bf-bb42-1b831b6ef3e9"; + public static final String DataMappingActionId = "42221ca3-9ee4-40af-89d2-ff4c8b466ac3"; + public static final String ChangesetReversalMappingActionId = "301c5991-a32d-4221-88bf-8c9d07bdd884"; + public static final String ChangesetMappingActionId = "5798f884-c222-47f4-8bbe-685c7013dee4"; + public static final String MultiDeleteActionId="7b1c3c4l-t1a4-4dyc-b75b-7695hcb3we7e"; + + public java.util.ArrayList InternalActionIds = new java.util.ArrayList(java.util.Arrays.asList(new String[]{DeleteActionId, ModifyActionId, QueryActionId, CreateActionId, RetrieveActionId, DataReversalMappingActionId, DataMappingActionId, ChangesetReversalMappingActionId, ChangesetMappingActionId})); + + public final MappedCdpAction GetInternalExtendActionById(String actionId) { + if (!InternalActionIds.contains(actionId)) { + throw new RuntimeException(String.format("无id='%1$s'的内置扩展操作。", actionId)); + } + + switch (actionId) { + case DeleteActionId: + return new DeleteAction(); + case ModifyActionId: + return new ModifyAction(); + case QueryActionId: + return new QueryAction(); + case CreateActionId: + return new CreateAction(); + case RetrieveActionId: + return new RetrieveAction(); + case DataMappingActionId: + return new DataMappingAction(); + case DataReversalMappingActionId: + return new DataReversalMappingAction(); + case ChangesetReversalMappingActionId: + return new ChangesetReversalMappingAction(); + case ChangesetMappingActionId: + return new ChangesetMappingAction(); + case MultiDeleteActionId: + return new MultiDeleteAction(); + default: + throw new RuntimeException(String.format("无id='%1$s'的内置扩展操作。", actionId)); + } + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/LinkBeUtils.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/LinkBeUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..9d3c974fe59687714799c61410c75ec856f40825 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/LinkBeUtils.java @@ -0,0 +1,547 @@ + + +package com.inspur.edp.formserver.viewmodel.common; + +import com.inspur.edp.bef.bizentity.GspBizEntityElement; +import com.inspur.edp.bef.bizentity.GspBizEntityObject; +import com.inspur.edp.bef.bizentity.GspBusinessEntity; +import com.inspur.edp.bef.bizentity.operation.BizMgrAction; +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.cef.designtime.api.collection.GspAssociationCollection; +import com.inspur.edp.cef.designtime.api.collection.GspEnumValueCollection; +import com.inspur.edp.cef.designtime.api.collection.GspFieldCollection; +import com.inspur.edp.cef.designtime.api.element.GspAssociation; +import com.inspur.edp.cef.designtime.api.element.GspElementObjectType; +import com.inspur.edp.cef.designtime.api.element.GspEnumValue; +import com.inspur.edp.cef.designtime.api.entity.DynamicPropSetInfo; +import com.inspur.edp.cef.designtime.api.util.MetadataUtil; +import com.inspur.edp.das.commonmodel.IGspCommonElement; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.formserver.viewmodel.collection.VMActionCollection; +import com.inspur.edp.formserver.viewmodel.collection.ViewObjectCollection; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementMapping; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementSourceType; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoObjectSourceType; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.formserver.viewmodel.action.MappedBizAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelActionType; +import com.inspur.edp.formserver.viewmodel.DotNetToJavaStringHelper; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewObject; + +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.entity.MetadataCustomizationFilter; +import com.inspur.edp.lcm.metadata.api.service.MetadataRTService; +import com.inspur.edp.lcm.metadata.api.service.RefCommonService; +import com.inspur.edp.metadata.rtcustomization.api.CustomizationService; +import com.inspur.edp.udt.designtime.api.entity.ComplexDataTypeDef; +import com.inspur.edp.udt.designtime.api.entity.UnifiedDataTypeDef; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; + +import static com.inspur.edp.cef.designtime.api.element.GspElementObjectType.None; + +/** + * The Tool Of Link Business Entity By View Model + * + * @ClassName: LinkBeUtils + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class LinkBeUtils { + private boolean isRuntime; + public LinkBeUtils(){ + + } + public LinkBeUtils(boolean isRuntime){ + this.isRuntime=isRuntime; + } + private final java.util.HashMap bizEntitiesDic = new java.util.HashMap(); + private RefCommonService lcmDtService; + + public RefCommonService getLcmDtService(){ + if(lcmDtService==null) + lcmDtService= SpringBeanUtils.getBean(RefCommonService.class); + return lcmDtService; + } + + private CustomizationService customizationService; + + public CustomizationService getCustomizationService(){ + if(customizationService==null) + customizationService= SpringBeanUtils.getBean(CustomizationService.class); + return customizationService; + } + private String errorToken = "#GspBefError# "; + + public final void linkWithBe(GspViewModel vm) { + if (vm.getMainObject().getMapping() == null || vm.getMainObject().getMapping().getSourceType() != GspVoObjectSourceType.BeObject) { + return; + } + // 联动前清空缓存 + bizEntitiesDic.clear(); + // ① 对象 + linkMainObj(vm.getMainObject()); + // ② 操作 + linkActions(vm); + // 带出字段为枚举时,赋值枚举信息 + linkBeRefElements(vm); + } + + /** + * 关联带出字段联动 + * + * @param vm + */ + public final void linkBeRefElements(GspViewModel vm) { + ArrayList eles = vm.getAllElementList(true); + for (IGspCommonElement ele : eles) { + if (ele.getIsVirtual() || !ele.getIsRefElement()) { + continue; + } + GspViewModelElement viewEle = (GspViewModelElement) ele; + if (viewEle.getMapping() == null) { + throw new RuntimeException(String.format("字段Mapping为空,vo名称=%1$s,vo编号=%2$s,字段名称=%3$s", vm.getName(), vm.getCode() + , viewEle.getName())); + } + if (viewEle.getMapping().getSourceType() != GspVoElementSourceType.BeElement) { + continue; + } + if (viewEle.getParentAssociation() == null) { + throw new RuntimeException(String.format("字段所属关联为空,vo名称=%1$s,vo编号=%2$s,字段名称=%3$s", vm.getName(), vm.getCode() + , viewEle.getName())); + } + GspBizEntityElement bizEle = getRefBizElement(viewEle.getParentAssociation().getRefModelID(), viewEle.getRefElementId()); + if(bizEle == null) { + StringBuilder stringBuilder=new StringBuilder("未找到当前VO字段关联的的BE字段,当前VO名称为:"); + stringBuilder.append(vm.getName()).append(",VO模型id为:").append(vm.getID()). + append(",VO字段名称为:").append(viewEle.getName()).append(",字段编号为:").append(viewEle.getCode()).append(",字段ID为:").append(viewEle.getID()).append(",字段关联的BE字段ID为:").append(viewEle.getRefElementId()). + append(",被关联模型名称为:").append(viewEle.getParentAssociation().getRefModelName()).append(",关联模型编号为:"). + append(viewEle.getParentAssociation().getRefModelCode()).append(",关联模型ID为:"). + append(viewEle.getParentAssociation().getRefModelID()); + throw new RuntimeException(stringBuilder.toString()); + } + // udt + viewEle.setIsUdt(bizEle.getIsUdt()); + viewEle.setUdtID(bizEle.getUdtID()); + viewEle.setUdtName(bizEle.getUdtName()); + viewEle.setUdtPkgName(bizEle.getUdtPkgName()); + if (!ele.getIsRefElement() || ele.getObjectType() != GspElementObjectType.Enum) { + continue; + } + + if (bizEle.getObjectType() != GspElementObjectType.Enum) { + StringBuffer strBuffer = new StringBuffer(errorToken); + strBuffer.append("关联带出字段对象类型为枚举,其对应的关联模型上的该字段不是枚举类型, 当前字段名称为:") + .append(viewEle.getName()) + .append("字段名称为:") + .append(viewEle.getCode()) + .append(errorToken); + throw new RuntimeException(strBuffer.toString()); + } + // 赋值枚举信息 + viewEle.setContainEnumValues(bizEle.getContainEnumValues()); + + } + } + + + + public void linkMainObj(GspViewObject viewObj) { + // 虚拟对象无映射bizObj + if (viewObj == null || viewObj.getIsVirtual()) { + throw new RuntimeException(errorToken + "主对象不可为空或虚拟对象。" + errorToken); + } + GspBizEntityObject bizObject = getBizObject(viewObj.getMapping(), viewObj.getCode()); + if (bizObject == null) { + throw new RuntimeException(errorToken + "实体中无vo映射的主对象。" + errorToken); + } + + linkBizObject(viewObj, bizObject); + } + + + public void linkBizObject(GspViewObject viewObj, GspBizEntityObject bizObject) { + // ① 基本信息 + linkObjectBasicInfo(viewObj, bizObject); + // ② 字段集合 + linkElements(viewObj); + // ③ 字段相关属性 + linkObjectSelfInfo(viewObj, bizObject, viewObj.getParentObject()==null?null:viewObj.getParentObject().getIDElement().getID()); + // ④ 子对象集合 + if (viewObj.getContainChildObjects() != null && viewObj.getContainChildObjects().size() != 0) { + ViewObjectCollection childObjList = viewObj.getContainChildObjects(); + Iterator iterators=childObjList.iterator(); + while (iterators.hasNext()){ + GspViewObject childObj= (GspViewObject) iterators.next(); + if (childObj.getIsVirtual()) { + continue; + } + GspBizEntityObject childBizObject = getBizObject(((GspViewObject) childObj).getMapping(), childObj.getCode()); + if (childBizObject == null) { + iterators.remove(); + continue; + } + linkBizObject((GspViewObject) ((GspViewObject) childObj != null ? childObj : null), childBizObject); + } + } + } + + public void linkObjectBasicInfo(GspViewObject viewObj, GspBizEntityObject bizObject) { + // 若vo节点未修改,则联动be节点编号 + if (DotNetToJavaStringHelper.isNullOrEmpty(viewObj.getCode())) { + viewObj.setCode(bizObject.getCode()); + } + } + + public void linkObjectSelfInfo(GspViewObject viewObj, GspBizEntityObject bizObject, String parentObjectElementId) { + ArrayList elementList = viewObj.getContainElements().getAllItems(item -> item.getIsVirtual() == false); + HashMap viewElements = new HashMap(); + for (IGspCommonField item : elementList) { + viewElements.put(item.getID(), (GspViewModelElement) item); + } + // 字段mapping字典 + java.util.HashMap elementMappings = ConvertUtils.getElementMappingsDic(elementList); + + // ID生成规则 + ConvertUtils.updateColumnGenerateId(bizObject, viewObj, elementMappings); + } + + + public void linkElements(GspViewObject viewObj) { + ArrayList elementList = viewObj.getContainElements().getAllItems(item -> item.getIsVirtual() == false); + + // 字段mapping字典 + if (elementList.size() == 0) { + throw new RuntimeException(errorToken + String.format("当前对象无字段'%1$s'。", viewObj.getName()) + errorToken); + } + for (IGspCommonField ele : elementList) { + GspViewModelElement viewEle = (GspViewModelElement) ele; + if (viewEle != null) { + GspBizEntityElement bizElement = getBizElement(viewEle.getMapping(), viewEle.getLabelID()); + if (bizElement == null) { + viewObj.getContainElements().remove(ele); + continue; + } + linkBizElement(viewEle, bizElement); + // 兼容旧版mapping的be映射字段 + if (DotNetToJavaStringHelper.isNullOrEmpty(viewEle.getMapping().getTargetElementId())) { + viewEle.getMapping().setTargetElementId(bizElement.getID()); + } + if (DotNetToJavaStringHelper.isNullOrEmpty(viewEle.getMapping().getTargetObjectId()) || !viewEle.getMapping().getTargetObjectId() .equals(bizElement.getBelongObject().getID())) { + viewEle.getMapping().setTargetObjectId(bizElement.getBelongObject().getID()); + } + } + } + } + + public void linkBizElement(GspViewModelElement viewEle, GspBizEntityElement bizEle) { + linkElementBasicInfo(viewEle, bizEle); + linkElementObjectType(viewEle, bizEle); + } + + public void linkElementBasicInfo(GspViewModelElement ele, GspBizEntityElement bizElement) { + boolean canEditLengthAndPrecision = true; + if (ele.getMDataType() != bizElement.getMDataType()) { + ele.setMDataType(bizElement.getMDataType()); + canEditLengthAndPrecision = false; + } + ele.setIsMultiLanguage(bizElement.getIsMultiLanguage()); + + if (bizElement.getIsRequire()) { + ele.setIsRequire(bizElement.getIsRequire()); + } + if (bizElement.getReadonly()) { + ele.setReadonly(bizElement.getReadonly()); + } + + // udt相关 + ele.setIsUdt(bizElement.getIsUdt()); + ele.setUdtID(bizElement.getUdtID()); + ele.setUdtName(bizElement.getUdtName()); + ele.setUdtPkgName(bizElement.getUdtPkgName()); + + GspFieldCollection beChildEles = bizElement.getChildElements(); + GspFieldCollection voChildEles = ele.getChildElements(); + if(beChildEles.size() != voChildEles.size()){ + voChildEles.clear(); + for(IGspCommonField beChildEle : beChildEles){ + GspViewModelElement viewModelElement = ConvertUtils.toElement( + (IGspCommonElement)beChildEle, + ele.getMapping().getTargetMetadataPkgName(), + ele.getMapping().getTargetMetadataId(), + GspVoElementSourceType.BeElement); + voChildEles.add(viewModelElement); + } + } + + if (bizElement.getIsUdt()) { + canEditLengthAndPrecision = false; + } else { + canEditLengthAndPrecision = true; + } + + // 长度精度 + linkLengthAndPrecision(ele, bizElement, canEditLengthAndPrecision); + + + } + + /** + * 更新字段长度精度 + * + * @param ele + * @param bizElement + * @param canEdit + */ + public void linkLengthAndPrecision(GspViewModelElement ele, GspBizEntityElement bizElement, boolean canEdit) { + if (canEdit) { + // 长度精度不可大于be字段 + if (ele.getLength() > bizElement.getLength()) { + ele.setLength(bizElement.getLength()); + } + if (ele.getPrecision() > bizElement.getPrecision()) { + ele.setPrecision(bizElement.getPrecision()); + } + } else { + ele.setLength(bizElement.getLength()); + ele.setPrecision(bizElement.getPrecision()); + } + } + + public void linkElementObjectType(GspViewModelElement ele, GspBizEntityElement bizElement) { + GspViewModelElement transEle = ConvertUtils.toElement(bizElement, null, ele.getMapping().getTargetMetadataId(),GspVoElementSourceType.BeElement); + ele.setObjectType(bizElement.getObjectType()); + ele.setEnumIndexType(bizElement.getEnumIndexType()); + switch (bizElement.getObjectType()) { + case Association: + if(bizElement.getIsRefElement()) { + break; + } + linkElementAssos(ele, transEle); + break; + case Enum: + linkElementEnums(ele, transEle); + break; + case None: + break; + case DynamicProp: + ele.setDynamicPropSetInfo(bizElement.getDynamicPropSetInfo()); + break; + default: + throw new RuntimeException(errorToken + String.format("字段对象类型'{%1$s}'不存在。", bizElement.getObjectType()) + errorToken); + } + if (ele.getObjectType() != GspElementObjectType.Association) { + ele.getChildAssociations().clear(); + } + if (ele.getObjectType() != GspElementObjectType.Enum) { + ele.getContainEnumValues().clear(); + } + if (ele.getObjectType() != GspElementObjectType.DynamicProp) { + ele.setDynamicPropSetInfo(new DynamicPropSetInfo()); + } + + } + + public void linkElementEnums(GspViewModelElement ele, GspViewModelElement transElement) { + Object tempVar = ele.getContainEnumValues().clone(); + GspEnumValueCollection voEnumValues = (GspEnumValueCollection) ((GspEnumValueCollection) tempVar != null ? tempVar : null); + ele.getContainEnumValues().clear(); + + for (GspEnumValue enumItem : transElement.getContainEnumValues()) { + Object tempVar2 = enumItem.clone(); + GspEnumValue enumValue = (GspEnumValue) ((GspEnumValue) tempVar2 != null ? tempVar2 : null); + if (voEnumValues != null && voEnumValues.size() > 0) { + for (GspEnumValue voEnumValue : voEnumValues) { + if (voEnumValue.getValue() .equals( enumValue.getValue())) { + enumValue.setI18nResourceInfoPrefix(voEnumValue.getI18nResourceInfoPrefix()); + } + } + } + ele.getContainEnumValues().add(enumValue); + } + } + + public void linkElementAssos(GspViewModelElement ele, GspViewModelElement transElement) { + GspAssociationCollection currentAssos = ele.getChildAssociations().clone(ele); + if (ele.getChildAssociations() != null && ele.getChildAssociations().size() > 0) { + ele.getChildAssociations().clear(); + } + if (transElement.getChildAssociations() == null || transElement.getChildAssociations().size() == 0) { + throw new RuntimeException(errorToken + String.format("当前字段'%1$s',对象类型为关联,却无关联信息,请联系管理员。", ele.getName()) + errorToken); + } + + for (GspAssociation transAssociation : transElement.getChildAssociations()) { + transAssociation.setBelongElement(ele); + GspAssociation currentAsso = getAssociation(currentAssos, transAssociation.getId()); + if (currentAsso != null && currentAsso.getRefModelID().equals(transAssociation.getRefModelID())) { + handleRefElementCollection(transAssociation, currentAsso); + ele.getChildAssociations().add(currentAsso); + } else { + ele.getChildAssociations().add(transAssociation); + } + } + + } + + /** + * 处理已删掉的be关联带出字段 + * + * @param transAssociation + * @param currentAsso + */ + public void handleRefElementCollection(GspAssociation transAssociation, GspAssociation currentAsso) { + GspFieldCollection originVoRefElements = currentAsso.getRefElementCollection().clone(currentAsso.getRefElementCollection().getParentObject(), currentAsso); + currentAsso.getRefElementCollection().clear(); + GspFieldCollection transRefElements = transAssociation.getRefElementCollection(); + for (IGspCommonField refEle : originVoRefElements) { + GspViewModelElement transRefElement = (GspViewModelElement) transRefElements.getItem(ele -> ele.getRefElementId().equals(refEle.getRefElementId())); + if (transRefElement == null) { + continue; + } + // 兼容旧的带出字段mapping中无TargetElementID及TargetObjectID问题 + handleEleMapping(transRefElement.getMapping(), ((GspViewModelElement) refEle).getMapping()); + refEle.setIsFromAssoUdt(transRefElement.getIsFromAssoUdt()); + currentAsso.getRefElementCollection().add(refEle); + } + } + + public void handleEleMapping(GspVoElementMapping transMapping, GspVoElementMapping eleMapping) { + // 兼容旧的带出字段mapping中无TargetElementID及TargetObjectID问题 + if (DotNetToJavaStringHelper.isNullOrEmpty(eleMapping.getTargetObjectId())) { + eleMapping.setTargetObjectId(transMapping.getTargetObjectId()); + } + if (DotNetToJavaStringHelper.isNullOrEmpty(eleMapping.getTargetElementId())) { + eleMapping.setTargetElementId(transMapping.getTargetElementId()); + } + // 若关联带出字段ID已更新 + if (!eleMapping.getTargetElementId().equals(transMapping.getTargetElementId())) { + eleMapping.setTargetElementId(transMapping.getTargetElementId()); + eleMapping.setTargetObjId(transMapping.getTargetObjId()); + } + } + + public GspAssociation getAssociation(GspAssociationCollection collection, String associationId) { + return (GspAssociation) collection.getItem(item -> associationId.equals(item.getId())); + } + + public GspViewModelElement getElement(GspFieldCollection collection, String labelId) { + for (IGspCommonField item : collection) { + if (labelId.equals(item.getLabelID())) { + return (GspViewModelElement) ((GspViewModelElement) item != null ? item : null); + } + } + return null; + } + + + + + public void linkActions(GspViewModel vm) { + ArrayList list = vm.getActions().getAllItems(item -> item.getType() == ViewModelActionType.BEAction); + VMActionCollection mappedBeActions = new VMActionCollection(); + mappedBeActions.addAll(list); + GspBusinessEntity be = getBe(vm.getMapping().getTargetMetadataId()); + if (mappedBeActions.size() > 0) { + for (ViewModelAction action : mappedBeActions) { + ViewModelMapping mapping=action.getMapping(); + if(mapping==null||mapping.getTargetObjId()==null ||"".equals(mapping.getTargetObjId())) + continue; + String actionId=mapping.getTargetObjId(); + BizMgrAction mgrAction = (BizMgrAction) be.getBizMgrActions().getItem(item -> actionId.equals(item.getID())); + if (mgrAction == null) { + vm.getActions().remove(action); + continue; + } + MappedBizAction tranAction = ConvertUtils.toMappedAction(mgrAction, action.getMapping().getTargetMetadataId(), null); + linkWithMgrAction(action, tranAction); + } + } + } + + public void linkWithMgrAction(ViewModelAction targetAction, MappedBizAction sourceAction) { + targetAction.setCode(sourceAction.getCode()); + targetAction.setName(sourceAction.getName()); + targetAction.getParameterCollection().clear(); + if (sourceAction.getParameterCollection().getCount() > 0) + for (int i = 0; i < sourceAction.getParameterCollection().getCount(); i++) { + targetAction.getParameterCollection().add(sourceAction.getParameterCollection().getItem(i)); + } + + targetAction.setReturnValue(sourceAction.getReturnValue()); + } + + + public GspBusinessEntity getBe(String id) { + return getBizEntity(id); + } + + public GspBizEntityElement getRefBizElement(String refBeId, String refElementId) { + return getRefBizElement(refBeId, refElementId, true); + } + + public GspBizEntityElement getRefBizElement(String refBeId, String refElementId, boolean containRef) { + GspBusinessEntity be = getBizEntity(refBeId); + ArrayList list = be.getAllElementList(true); + for (IGspCommonElement ele : list) { + if (refElementId.equals(ele.getID())) { + return (GspBizEntityElement) ele; + } + } + return null; + } + + + public GspBizEntityElement getBizElement(ViewModelMapping mapping) { + return getBizElement(mapping, ""); + } + + public GspBizEntityElement getBizElement(ViewModelMapping mapping, String elementLabelId) { + if (mapping == null) { + throw new RuntimeException(errorToken + String.format("当前字段'%1$s'无mapping信息。", elementLabelId) + errorToken); + } + String metadataId = mapping.getTargetMetadataId(); + String objId = mapping.getTargetObjId(); + GspBizEntityElement ele = getRefBizElement(metadataId, objId, false); + return ele; + } + + public GspBizEntityObject getBizObject(ViewModelMapping mapping, String objCode) { + if (mapping == null) { + throw new RuntimeException(String.format("%1$s当前对象'%2$s'无mapping信息。%1$s", errorToken, objCode)); + } + String metadataId = mapping.getTargetMetadataId(); + String objId = mapping.getTargetObjId(); + GspBusinessEntity be = getBizEntity(metadataId); + GspBizEntityObject bizObj = (GspBizEntityObject) be.getNode(node -> node.getID().equals(objId)); + return bizObj; + } + + //todo:依赖lcm加载元数据服务 + public GspBusinessEntity getBizEntity(String id) { + if (bizEntitiesDic.containsKey(id)) { + return bizEntitiesDic.get(id); + } + GspMetadata metadata; + if(isRuntime){ + //运行时获取,元数据不带有i8n信息 + metadata= MetadataUtil.getCustomMetadataByI18n(id,false); + } + else { + //设计时获取 + metadata = getLcmDtService().getRefMetadata(id); + } + //todo 需要后续讨论,抛异常时提示出明确的元数据信息,不仅仅提示id + if(metadata==null) { + throw new RuntimeException(String.format("元数据id为%1$s的元数据未获取到,请检查元数据是否已经部署到环境中。",id)); + } + GspBusinessEntity entity= (GspBusinessEntity) metadata.getContent(); + bizEntitiesDic.put(id, entity); + return entity; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/MappingType.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/MappingType.java new file mode 100644 index 0000000000000000000000000000000000000000..184ad8ba9163993628af58f935c35a9daf7517a0 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/MappingType.java @@ -0,0 +1,85 @@ + + +package com.inspur.edp.formserver.viewmodel.common; + +/** + * The Definition Of View Model Mapping Type + * + * @ClassName: MappingType + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public enum MappingType +{ + /** + Vo + + */ + ViewObject, + + /** + BE + + */ + BizEntity, + + /** + DM + + */ + DataModel, + + /** + BE节点 + + */ + BEObject, + + /** + GspDataModel节点 + + */ + DMObject, + + /** + 节点元素 + + */ + Element, + + /** + BE 操作 + + */ + BizOperation, + + /** + 构件方法 + + */ + ComponentMethod, + + /** + 数据对象 + + */ + DataObject, + + /** + 数据对象列 + + */ + GSPColumn; + + + public int getValue() + { + return this.ordinal(); + } + + public static MappingType forValue(int value) + { + return values()[value]; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/MetadataType.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/MetadataType.java new file mode 100644 index 0000000000000000000000000000000000000000..873b617ba8d1677cd415bf7e274a09c45a59a912 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/MetadataType.java @@ -0,0 +1,36 @@ + + +package com.inspur.edp.formserver.viewmodel.common; + +/** + * The Definition Of View Model Source`s Metdata Type + * + * @ClassName: MetadataType + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public enum MetadataType +{ + /** + BE + + */ + BizEntity, + + /** + QO + + */ + QueryObject; + + public int getValue() + { + return this.ordinal(); + } + + public static MetadataType forValue(int value) + { + return values()[value]; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/TemplateVoInfo.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/TemplateVoInfo.java new file mode 100644 index 0000000000000000000000000000000000000000..2c1cda7d72bcc2141ea25d599101d2ecb345c3e7 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/TemplateVoInfo.java @@ -0,0 +1,59 @@ + + +package com.inspur.edp.formserver.viewmodel.common; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; + +/** + * The Definition Of View Model Template Info + * + * @ClassName: TemplateVoInfo + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class TemplateVoInfo { + + private String templateVoServiceUnit; + + /** + * 模板VO信息 + */ + @JsonProperty(ViewModelJsonConst.TemplateVoServiceUnit) + public final String getTemplateVoServiceUnit() { + return templateVoServiceUnit; + } + + public void setTemplateVoServiceUnit(String value) { + this.templateVoServiceUnit = value; + } + + private String templateVoPkgName; + + /** + * 模板VO信息 + */ + @JsonProperty(ViewModelJsonConst.TemplateVoPkgName) + public final String getTemplateVoPkgName() { + return templateVoPkgName; + } + + public void setTemplateVoPkgName(String value) { + this.templateVoPkgName = value; + } + + private String templateVoId; + + /** + * 模板VO信息 + */ + @JsonProperty(ViewModelJsonConst.TemplateVoId) + public final String getTemplateVoId() { + return templateVoId; + } + + public void setTemplateVoId(String value) { + this.templateVoId = value; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/VMCollectionParameterType.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/VMCollectionParameterType.java new file mode 100644 index 0000000000000000000000000000000000000000..c0e24d1f36f56283088d68ef804067cc24f9ec5e --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/VMCollectionParameterType.java @@ -0,0 +1,40 @@ + + +package com.inspur.edp.formserver.viewmodel.common; + +/** + * The Definition Of View Model Parameter Collection Type + * + * @ClassName: VMCollectionParameterType + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public enum VMCollectionParameterType +{ + /** + 未使用集合形式 + + */ + None, + /** + 列表 + + */ + List, + /** + 数组 + + */ + Array; + + public int getValue() + { + return this.ordinal(); + } + + public static VMCollectionParameterType forValue(int value) + { + return values()[value]; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/VMHelpConfig.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/VMHelpConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..5f2ee5604ccadb1a6d1fc1570407c35bbf2ebc58 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/VMHelpConfig.java @@ -0,0 +1,32 @@ + + +package com.inspur.edp.formserver.viewmodel.common; + +/** + * The Definition Of View Model Help Config + * + * @ClassName: VMHelpConfig + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class VMHelpConfig implements Cloneable +{ + private String helpId; + public final String getHelpId() + { + return helpId; + } + public final void setHelpId(String value) + { + helpId = value; + } + +// public final Object clone() + public Object clone() + { + VMHelpConfig config = new VMHelpConfig(); + config.helpId = helpId; + return config; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/VMParameterMode.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/VMParameterMode.java new file mode 100644 index 0000000000000000000000000000000000000000..4d0e9e9bc31ff7d2f6cfc4d46ccfc228ed4ab4cb --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/VMParameterMode.java @@ -0,0 +1,40 @@ + + +package com.inspur.edp.formserver.viewmodel.common; + +/** + * The Definition Of View Model Parametrer Mode + * + * @ClassName: VMParameterMode + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public enum VMParameterMode +{ + /** + 传入参数 + + */ + IN, + /** + 传出参数 + + */ + OUT, + /** + 传入传出参数 + + */ + INOUT; + + public int getValue() + { + return this.ordinal(); + } + + public static VMParameterMode forValue(int value) + { + return values()[value]; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/VMParameterType.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/VMParameterType.java new file mode 100644 index 0000000000000000000000000000000000000000..6f1959b023f2eae7ce5e2a2f02f84aab1ea9816d --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/VMParameterType.java @@ -0,0 +1,48 @@ + + +package com.inspur.edp.formserver.viewmodel.common; + +/** + * The Definition Of View MOdel Parameter Type + * + * @ClassName: VMParameterType + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public enum VMParameterType +{ + /**字符型 + */ + String, + /**布尔型 + */ + Boolean, + /**整数 + */ + Int32, + /**浮点数字 + */ + Decimal, + /**双浮点 + */ + Double, + /**时间 + */ + DateTime, + //对象类型 + Object, + /**自定义 + */ + Custom; + + public int getValue() + { + return this.ordinal(); + } + + public static VMParameterType forValue(int value) + { + return values()[value]; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ValueHelpConfig.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ValueHelpConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..2181915729c71a2e7c361eb662813c454080b42b --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ValueHelpConfig.java @@ -0,0 +1,153 @@ + + +package com.inspur.edp.formserver.viewmodel.common; + + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.inspur.edp.cef.designtime.api.entity.CustomizationInfo; + +import com.inspur.edp.formserver.viewmodel.json.model.ValueHelpConfigDeserizlizer; +import com.inspur.edp.formserver.viewmodel.json.model.ValueHelpConfigSerizlizer; +import java.io.Serializable; + +/** + * The Definition Of Value Help Config + * + * @ClassName: ValueHelpConfig + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +@JsonDeserialize(using = ValueHelpConfigDeserizlizer.class) +@JsonSerialize(using = ValueHelpConfigSerizlizer.class) +public class ValueHelpConfig implements Cloneable, Serializable { + + //region 字段 + /** + * VM元素ID + */ + private String elementId; + /** + * 允许自定义帮助权限 + */ + private boolean enableCustomHelpAuth; + /** + * HelperID + */ + private String helperId; + /** + * 帮助过滤条件表达式 + */ + private String filterExpression; + + /** + * 帮助扩展动作 + */ + private HelpExtendAction helpExtendAction; + + private CustomizationInfo customizationInfo; + + //endregion + + + ///#region 构造函数 + + public ValueHelpConfig() { + } + + /** + * 构造函数 + * + * @param elementId VO元素ID + * @param helperId 帮助元数据Id + * @param filterExpression 过滤表达式 + */ + public ValueHelpConfig(String elementId, String helperId, String filterExpression) { + this(); + setElementId(elementId); + setHelperId(helperId); + setFilterExpression(filterExpression); + } + + ///#endregion + + ///#region 属性 + + public final String getElementId() { + return elementId; + } + + public final void setElementId(String value) { + elementId = value; + } + + public final boolean getEnableCustomHelpAuth() { + return enableCustomHelpAuth; + } + + public final void setEnableCustomHelpAuth(boolean value) { + enableCustomHelpAuth = value; + } + + public final String getHelperId() { + return helperId; + } + + public final void setHelperId(String value) { + helperId = value; + } + + public final String getFilterExpression() { + return filterExpression; + } + + public final void setFilterExpression(String value) { + filterExpression = value; + } + + /** + * 帮助扩展动作 + */ + public final HelpExtendAction getHelpExtend() { + if (helpExtendAction == null) { + helpExtendAction = new HelpExtendAction(); + } + return helpExtendAction; + } + + public final void setHelpExtend(HelpExtendAction value) { + helpExtendAction = value; + } + + public CustomizationInfo getCustomizationInfo() { + return this.customizationInfo; + } + + public void setCustomizationInfo(CustomizationInfo customizationInfo) { + this.customizationInfo = customizationInfo; + } + + ///#endregion + + ///#region 方法 + + /** + * 克隆 + * + * @return 值帮助配置 + */ + public final ValueHelpConfig clone() { +// return MemberwiseClone(); + Object tempVar = null; + try { + tempVar = super.clone(); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + ValueHelpConfig obj = (ValueHelpConfig) ((tempVar instanceof ValueHelpConfig) ? tempVar : null); + return obj; + } + + ///#endregion +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ViewModelActionUtil.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ViewModelActionUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..330e9d55ff3562e5e5f5afe1ff8818d118b65644 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ViewModelActionUtil.java @@ -0,0 +1,249 @@ + + +package com.inspur.edp.formserver.viewmodel.common; + +import com.inspur.edp.bef.bizentity.GspBusinessEntity; +import com.inspur.edp.bef.bizentity.operation.BizOperation; +import com.inspur.edp.bef.bizentity.operation.Determination; +import com.inspur.edp.bef.component.detailcmpentity.vm.VMComponent; +import com.inspur.edp.bef.component.detailcmpentity.vm.VMMethodParameter; +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.cef.designtime.api.element.GspElementDataType; +import com.inspur.edp.cef.designtime.api.operation.CommonDetermination; +import com.inspur.edp.cef.designtime.api.operation.CommonOperation; +import com.inspur.edp.cef.designtime.api.util.MetadataUtil; +import com.inspur.edp.cef.designtime.api.variable.CommonVariable; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelActionType; +import com.inspur.edp.formserver.viewmodel.action.mappedcdp.MappedCdpActionParameter; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.metadata.rtcustomization.api.CustomizationService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; +import java.util.Iterator; +import java.util.UUID; + +/** + * 视图对象动作工具类 + * + * @author hanll02 + */ +public class ViewModelActionUtil { + private static final String BEID="beId"; + private static final String PROCESSCATEGORY="processCategory"; + private static final String BIZCAtEGORY="bizCategory"; + private static final String BEFORESAVE_COMPONENTID="be7a44fd-9a73-4595-8f28-9137ecb399aa"; + private static final String VARDTM_COMPONENTID="0315970a-488c-4454-8e64-c13cb3210c8c"; + private static final String SUMMARY="summary"; + + private static final String VOACTIONID="811993be-7e11-4e0f-92d6-81c7669d586f"; + private static final String VARDETERMINATIONID="e88fe87d-7855-40e2-b6bd-149618251d61"; + + private static final String BEFORESAVE_DETERMINATION_ID="6b3f4f6a-26f2-4199-8159-e36435c63245"; + private static final String DELETE_DETERMINATION_ID="0e7d3731-049b-49b9-9e46-2046ef957843"; + + public final static void addVoActions(GspViewModel vm,String beId,String processCategory,String bizCategory,String summary){ + addDataExtendInfo(vm,beId,processCategory,bizCategory,summary); + } + public final static void removeActions(GspViewModel vm, GspBusinessEntity be,boolean enableDraft){ + if(enableDraft) + return; + + if(vm.getDataExtendInfo().getBeforeSaveActions()!=null && vm.getDataExtendInfo().getBeforeSaveActions().size()!=0){ + Iterator iterators=vm.getDataExtendInfo().getBeforeSaveActions().iterator(); + while (iterators.hasNext()){ + MappedCdpAction mappedCdpAction= (MappedCdpAction) iterators.next(); + if(VOACTIONID.equals(mappedCdpAction.getID())){ + iterators.remove(); + break; + } + + } + } + + if(be.getMainObject().getDeterminations()!=null && be.getMainObject().getDeterminations().size()!=0){ + Iterator iterators=be.getMainObject().getDeterminations().iterator(); + while (iterators.hasNext()){ + Determination mappedCdpAction= (Determination) iterators.next(); + if(BEFORESAVE_DETERMINATION_ID.equals(mappedCdpAction.getID())) { + iterators.remove(); + break; + } + } + } + + if(be.getMainObject().getDeterminations()!=null && be.getMainObject().getDeterminations().size()!=0){ + Iterator iterators=be.getMainObject().getDeterminations().iterator(); + while (iterators.hasNext()){ + Determination mappedCdpAction= (Determination) iterators.next(); + if(DELETE_DETERMINATION_ID.equals(mappedCdpAction.getID())){ + iterators.remove(); + break; + } + } + } + } + public static MappedCdpAction getMappedCdpAction(String componentID){ + MappedCdpAction action=new MappedCdpAction(); + action.setID(VOACTIONID); + String code = "InitDraftVar"; + action.setCode(code); + action.setType(ViewModelActionType.VMAction); + action.setName(code); + action.setComponentEntityId(componentID); + action.setComponentName("DraftVarBeforeSave"); + return action; + } + + /** + * + * @param vm + * @param beId + * @param processCategory + * @param bizCategory + * @param summary + */ + public final static void addDataExtendInfo(GspViewModel vm,String beId,String processCategory,String bizCategory,String summary){ + boolean isExistedAction=isExistedVoAction(vm,VOACTIONID); + //是否已经添加 + if(isExistedAction) + return; + MappedCdpAction action=getMappedCdpAction(BEFORESAVE_COMPONENTID); + + GspMetadata metadata = MetadataUtil.getCustomMetadata(BEFORESAVE_COMPONENTID); + if(metadata==null){ + throw new RuntimeException(String.format("未获取到元数据id为%1$s的构件元数据,请确认该元数据是否已入库,当前元数据类型为:VMComponent。",BEFORESAVE_COMPONENTID)); + } + VMComponent vmComponent = (VMComponent) metadata.getContent(); + VMMethodParameter beIdPar = null; + VMMethodParameter processCategoryPar = null; + VMMethodParameter bizCategoryPar = null; + VMMethodParameter summaryPar = null; + for (VMMethodParameter param : vmComponent.getVmMethod().getParams()) { + if (param.getParamCode().equalsIgnoreCase(BEID)) { + beIdPar = param; + } else if (param.getParamCode().equalsIgnoreCase(PROCESSCATEGORY)) { + processCategoryPar = param; + } else if (param.getParamCode().equalsIgnoreCase(BIZCAtEGORY)) { + bizCategoryPar = param; + }else if(param.getParamCode().equalsIgnoreCase(SUMMARY)){ + summaryPar=param; + } + } + MappedCdpActionParameter parBeId = getMappedCdpActionParameter(beIdPar,beId); + action.getParameterCollection().add(parBeId); + + MappedCdpActionParameter parProcessCategory = getMappedCdpActionParameter(processCategoryPar,processCategory); + action.getParameterCollection().add(parProcessCategory); + + MappedCdpActionParameter parBizCategory = getMappedCdpActionParameter(bizCategoryPar,bizCategory); + action.getParameterCollection().add(parBizCategory); + + MappedCdpActionParameter parSummary = getMappedCdpActionParameter(summaryPar,summary); + action.getParameterCollection().add(parSummary); + vm.getDataExtendInfo().getBeforeSaveActions().add(action); + } + + private final static boolean isExistedVoAction(GspViewModel vm,String actionId){ + boolean isExist=false; + if(vm.getDataExtendInfo().getBeforeSaveActions()==null || vm.getDataExtendInfo().getBeforeSaveActions().size()==0) + isExist=false; + for(ViewModelAction action :vm.getDataExtendInfo().getBeforeSaveActions()){ + if(actionId.equals(action.getID())){ + isExist=true; + break; + } + } + return isExist; + } + public static MappedCdpActionParameter getMappedCdpActionParameter(VMMethodParameter beIdPar,String value){ + MappedCdpActionParameter parameter = new MappedCdpActionParameter(); + parameter.setID(beIdPar.getID()); + parameter.setParamName(beIdPar.getParamName()); + parameter.setParamCode(beIdPar.getParamCode()); + parameter.setParameterType(VMParameterType.String); + parameter.getActualValue().setHasValue(true); + parameter.getActualValue().setEnable(true); + parameter.getActualValue().setValue(value); + return parameter; + } + private static CommonVariable getCommonVariable(String varCode){ + CommonVariable variable = new CommonVariable(); + variable.setID(UUID.randomUUID().toString()); + variable.setCode(varCode); + variable.setName(varCode); + variable.setMDataType(GspElementDataType.String); + variable.setLabelID(varCode); + variable.setLength(36); + variable.setEnableRtrim(true); + return variable; + } + + /** + * + * @param vm + */ + public static void addVariables(GspViewModel vm){ + + addVariable(vm,"bffTaskDraftBeId"); + addVariable(vm,"bffTaskDraftProcessCategory"); + addVariable(vm,"bffTaskDraftBizCategory"); + addVariable(vm,"bffTaskDraftSummary"); + + } + + public static void addVariable(GspViewModel vm,String varCode){ + boolean isExistedVar=isExistedVariable(vm,varCode); + if (isExistedVar) + return; + CommonVariable var=getCommonVariable(varCode); + vm.getVariables().getContainElements().addField(var); + } + private static boolean isExistedVariable(GspViewModel vm,String varCode){ + boolean isExistedVariable=false; + if(vm.getVariables().getContainElements()==null || vm.getVariables().getContainElements().size()==0) + isExistedVariable=false; + for (IGspCommonField variable :vm.getVariables().getContainElements()){ + if(varCode.equals(variable.getCode())){ + isExistedVariable=true; + break; + } + } + return isExistedVariable; + } + public static CommonDetermination getCommonOperation(String code,String name,String componentName,String componentId){ + CommonDetermination determination=new CommonDetermination(); + determination.setID(VARDETERMINATIONID); + determination.setCode(code); + determination.setName(name); + determination.setComponentName(componentName); + determination.setComponentId(componentId); + return determination; + } + + /** + * + * @param vm + */ + public static void addVarDeterminations(GspViewModel vm){ + boolean isExistedVarDtm=isExistedVarDtm(vm,VARDETERMINATIONID); + if (isExistedVarDtm) + return; + CommonDetermination determination= getCommonOperation("DraftVariableDtm","DraftVariableDtm","DraftVarDeterminationAction",VARDTM_COMPONENTID); + vm.getVariables().getDtmAfterModify().add(determination); + + } + private static boolean isExistedVarDtm(GspViewModel vm,String actionId){ + boolean isExist=false; + if(vm.getVariables().getDtmAfterModify()==null || vm.getVariables().getDtmAfterModify().size()==0) + isExist=false; + for(CommonDetermination action :vm.getVariables().getDtmAfterModify()){ + if(actionId.equals(action.getID())){ + isExist=true; + break; + } + } + return isExist; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ViewModelMapping.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ViewModelMapping.java new file mode 100644 index 0000000000000000000000000000000000000000..75deb01d63ae353defd4a7b2fedc3eb553c97004 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ViewModelMapping.java @@ -0,0 +1,165 @@ + + +package com.inspur.edp.formserver.viewmodel.common; + +import java.io.Serializable; + +/** + * The Definition Of View Model Mapping + * + * @ClassName: ViewModelMapping + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ViewModelMapping implements Cloneable, Serializable +{ + /** + 映射类型 + + */ + private MappingType privateMapType = MappingType.forValue(0); + public final MappingType getMapType() + { + return privateMapType; + } + public final void setMapType(MappingType value) + { + privateMapType = value; + } + + /** + 映射的对方元数据ContentId,用于唯一确定元数据 + + */ + private String privateTargetMetadataId; + public final String getTargetMetadataId() + { + return privateTargetMetadataId; + } + public final void setTargetMetadataId(String value) + { + privateTargetMetadataId = value; + } + + ///// + ///// 映射的对方元数据类型,BE或QO + ///// + //public MetadataType TargetMetadataType { get; set; } + + /** + 映射的对方元数据包名,用于唯一确定元数据 + + */ + private String privateTargetMetadataPkgName; + public final String getTargetMetadataPkgName() + { + return privateTargetMetadataPkgName; + } + public final void setTargetMetadataPkgName(String value) + { + privateTargetMetadataPkgName = value; + } + + /** + 映射的元素ID,用于确定具体的元数据成员 + + */ + private String privateTargetObjId; + public final String getTargetObjId() + { + return privateTargetObjId; + } + public final void setTargetObjId(String value) + { + privateTargetObjId = value; + } + + /** + 重载的相等运算符 + + @param other + @return + */ + protected final boolean equals(ViewModelMapping other) + { + return getMapType() == other.getMapType() && other.getTargetMetadataId().equals(getTargetMetadataId()) &&other.getTargetMetadataPkgName().equals(getTargetMetadataPkgName()) && other.getTargetObjId().equals(getTargetObjId()); + } + + /** + 重写相等判断 + + @param obj + @return + */ + @Override + public boolean equals(Object obj) + { + if (obj == null) + { + return false; + } + // if (obj.equals(this)) + //{ + //return true; + //} + if (obj.getClass() != getClass()) + { + return false; + } + return equals((ViewModelMapping)obj); + } + + /** + 创建作为当前实例副本的新对象。 + + @return + 作为此实例副本的新对象。 + + 2 + */ + public Object clone() + { + try { + ViewModelMapping mapping = (ViewModelMapping)super.clone(); + return mapping; + } catch (CloneNotSupportedException e) { + return null; + } + } + + /** + 返回表示当前 。 + + @return + ,表示当前的 。 + + 2 + */ + @Override + public String toString() + { + return String.format("[MappingInfo]MapType: %1$s, TargetMetadataId: %2$s, TargetMetadataPkgName:%3$s, TargetObjId: %4$s", getMapType(), getTargetMetadataId(), getTargetMetadataPkgName(), getTargetObjId()); + } + + /** + 用作特定类型的哈希函数。 + + @return + 当前 的哈希代码。 + + 2 + */ + @Override + public int hashCode() + { +// unchecked + { + int hashCode = getMapType().getValue(); + hashCode = (hashCode * 397) ^ (getTargetMetadataId() != null ? getTargetMetadataId().hashCode() : 0); + hashCode = (hashCode * 397) ^ (getTargetMetadataPkgName() != null ? getTargetMetadataPkgName().hashCode() : 0); + hashCode = (hashCode * 397) ^ (getTargetObjId() != null ? getTargetObjId().hashCode() : 0); + return hashCode; + } + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/copy/CopyContext.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/copy/CopyContext.java new file mode 100644 index 0000000000000000000000000000000000000000..96700268bf1171db02676d3a7cceca3f91f9fbf5 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/copy/CopyContext.java @@ -0,0 +1,64 @@ + + +package com.inspur.edp.formserver.viewmodel.common.copy; + +import com.inspur.edp.formserver.viewmodel.GspViewModel; + +/** + * The Context While Copying + * + * @ClassName: CopyContext + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class CopyContext +{ + /** + 源Vo + + */ + private GspViewModel privateOriginVo; + public final GspViewModel getOriginVo() + { + return privateOriginVo; + } + public final void setOriginVo(GspViewModel value) + { + + privateOriginVo = value; + } + + /** + 新Vo的元数据头节点 + + */ +// private MetadataHeader privateMetadataHeader; + private CopyContext privateMetadataHeader; + public final CopyContext getMetadataHeader() + { + + return privateMetadataHeader; + } + public final void setMetadataHeader(CopyContext value) + { + privateMetadataHeader = value; + } + + private boolean includeVoActions = false; + /** + 是否拷贝Vo操作 + + */ + boolean getIncludeVoActions(){ + return this.includeVoActions; + } + public final void setIncludeVoActions(boolean value) + { + if (value) + { + throw new RuntimeException("vo元数据拷贝暂不支持拷贝操作。"); + } + includeVoActions = value; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/mapping/GspQoObjectMapping.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/mapping/GspQoObjectMapping.java new file mode 100644 index 0000000000000000000000000000000000000000..67d88f45fd29603afdc3c742a5668c00c69c1c36 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/mapping/GspQoObjectMapping.java @@ -0,0 +1,27 @@ + + +package com.inspur.edp.formserver.viewmodel.common.mapping; + +public class GspQoObjectMapping extends GspVoObjectMapping +{ + /** + * The Definition Of The Qo Object Mapping + * + * @ClassName: GspVoObjectSourceType + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ + public GspVoObjectSourceType SourceType = + GspVoObjectSourceType.QoObject; + + private String privateIndexVoId; + public final String getIndexVoId() + { + return privateIndexVoId; + } + public final void setIndexVoId(String value) + { + privateIndexVoId = value; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/mapping/GspVoElementMapping.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/mapping/GspVoElementMapping.java new file mode 100644 index 0000000000000000000000000000000000000000..1bb81d3b01441aaa8903d3b255315536271dc289 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/mapping/GspVoElementMapping.java @@ -0,0 +1,64 @@ + + +package com.inspur.edp.formserver.viewmodel.common.mapping; + +import com.inspur.edp.formserver.viewmodel.common.ViewModelMapping; + +/** + * The Definition Of View Model ELement Mapping + * + * @ClassName: GspVoElementMapping + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class GspVoElementMapping extends ViewModelMapping +{ + /** + 映射节点ID + + */ + private String targetObjectId; + public final String getTargetObjectId() + { + return targetObjectId; + } + public final void setTargetObjectId(String value) + { + targetObjectId = value; + } + + /** + 映射字段ID + + */ + private String targetElementId; + public final String getTargetElementId() + { + return targetElementId; + } + public final void setTargetElementId(String value) + { + targetElementId = value; + } + + /** + 数据源(be或qo) + + */ + private GspVoElementSourceType sourceType = + GspVoElementSourceType.forValue(0); + public final GspVoElementSourceType getSourceType() + { + return sourceType; + } + public final void setSourceType(GspVoElementSourceType value) + { + sourceType = value; + } + + public GspVoElementMapping clone() { + return (GspVoElementMapping)super.clone(); + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/mapping/GspVoElementSourceType.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/mapping/GspVoElementSourceType.java new file mode 100644 index 0000000000000000000000000000000000000000..82c1adab1b35b2b89740e3c045051fc485a1c4a9 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/mapping/GspVoElementSourceType.java @@ -0,0 +1,42 @@ + + +package com.inspur.edp.formserver.viewmodel.common.mapping; + +/** + * The Definition Of View Model Element Source Type + * + * @ClassName: GspVoElementSourceType + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public enum GspVoElementSourceType +{ + /** + BE + + */ + BeElement, + + /** + QO + + */ + QoElement, + + /** + VO + + */ + VoElement; + + public int getValue() + { + return this.ordinal(); + } + + public static GspVoElementSourceType forValue(int value) + { + return values()[value]; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/mapping/GspVoObjectMapping.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/mapping/GspVoObjectMapping.java new file mode 100644 index 0000000000000000000000000000000000000000..17e3a5135fa0e3db83ea4edec08825d8b4f2fa73 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/mapping/GspVoObjectMapping.java @@ -0,0 +1,36 @@ + + +package com.inspur.edp.formserver.viewmodel.common.mapping; + +import com.inspur.edp.formserver.viewmodel.common.ViewModelMapping; + +/** + * The Definition Of View Model Object Mapping + * + * @ClassName: GspVoObjectMapping + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class GspVoObjectMapping extends ViewModelMapping { + private GspVoObjectSourceType type = + GspVoObjectSourceType.forValue(0); + + /** + * 数据源(be或qo或vo) + */ + public GspVoObjectSourceType getSourceType() { + return type; + } + + public void setSourceType(GspVoObjectSourceType value) { + if (value == GspVoObjectSourceType.QoObject) { + throw new RuntimeException("Qo类型映射,请使用GspQoObjectMapping。"); + } + type = value; + } + + public GspVoObjectMapping clone() { + return (GspVoObjectMapping)super.clone(); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/mapping/GspVoObjectSourceType.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/mapping/GspVoObjectSourceType.java new file mode 100644 index 0000000000000000000000000000000000000000..cc449bbdb77c7805541b6687cfd08cbd09fbdae2 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/mapping/GspVoObjectSourceType.java @@ -0,0 +1,42 @@ + + +package com.inspur.edp.formserver.viewmodel.common.mapping; + +/** + * The Definition Of View Model Object Source Type + * + * @ClassName: GspVoObjectSourceType + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public enum GspVoObjectSourceType +{ + /** + BE + + */ + BeObject, + + /** + QO + + */ + QoObject, + + /** + VO + + */ + VoObject; + + public int getValue() + { + return this.ordinal(); + } + + public static GspVoObjectSourceType forValue(int value) + { + return values()[value]; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/VoControlRule.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/VoControlRule.java new file mode 100644 index 0000000000000000000000000000000000000000..db5d85258f472009dfbd3df6d3efc300c8067547 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/VoControlRule.java @@ -0,0 +1,36 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.rule; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.inspur.edp.cef.designtime.api.changecontrolrule.controlrule.basic.ControlRuleItem; +import com.inspur.edp.das.commonmodel.controlrule.CmControlRule; +import com.inspur.edp.das.commonmodel.controlrule.CmEntityControlRule; +import com.inspur.edp.formserver.viewmodel.controlrule.rule.parser.VoControlRuleParser; +import com.inspur.edp.formserver.viewmodel.controlrule.rule.serializer.VoRuleSerializer; +import com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.VoControlRuleDefNames; + +@JsonSerialize(using = VoRuleSerializer.class) +@JsonDeserialize(using = VoControlRuleParser.class) +public class VoControlRule extends CmControlRule { + protected final CmEntityControlRule createMainEntityControlRule() { + return new VoObjControlRule(); + } + + public ControlRuleItem getAddCustomActonControlRule() { + return super.getControlRule(VoControlRuleDefNames.AddCustomAction); + } + + public void setAddCustomActonControlRule(ControlRuleItem ruleItem) { + super.setControlRule(VoControlRuleDefNames.AddCustomAction, ruleItem); + } + + public ControlRuleItem getAddVariableControlRule() { + return super.getControlRule(VoControlRuleDefNames.AddVariableDtm); + } + + public void setAddVariableControlRule(ControlRuleItem ruleItem) { + super.setControlRule(VoControlRuleDefNames.AddVariableDtm, ruleItem); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/VoFeildControlRule.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/VoFeildControlRule.java new file mode 100644 index 0000000000000000000000000000000000000000..dbdca1204e5e3de23f1a8c0c21a22b108bcfbd91 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/VoFeildControlRule.java @@ -0,0 +1,14 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.rule; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.inspur.edp.das.commonmodel.controlrule.CmFieldControlRule; +import com.inspur.edp.formserver.viewmodel.controlrule.rule.parser.VoFieldRuleParser; +import com.inspur.edp.formserver.viewmodel.controlrule.rule.serializer.VoFieldControlRuleSerializer; + +@JsonSerialize(using = VoFieldControlRuleSerializer.class) +@JsonDeserialize(using = VoFieldRuleParser.class) +public class VoFeildControlRule extends CmFieldControlRule { +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/VoObjControlRule.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/VoObjControlRule.java new file mode 100644 index 0000000000000000000000000000000000000000..5391300aad5babd349fcfe9d92069870e14314b2 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/VoObjControlRule.java @@ -0,0 +1,14 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.rule; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.inspur.edp.das.commonmodel.controlrule.CmEntityControlRule; +import com.inspur.edp.formserver.viewmodel.controlrule.rule.parser.VoObjectControlRuleParser; +import com.inspur.edp.formserver.viewmodel.controlrule.rule.serializer.VoObjectControlRuleSerializer; + +@JsonSerialize(using = VoObjectControlRuleSerializer.class) +@JsonDeserialize(using = VoObjectControlRuleParser.class) +public class VoObjControlRule extends CmEntityControlRule { +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/convert/VoControlRuleConvertor.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/convert/VoControlRuleConvertor.java new file mode 100644 index 0000000000000000000000000000000000000000..96355ad817eb0ebb9999c8c02541784c6dcf562b --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/convert/VoControlRuleConvertor.java @@ -0,0 +1,69 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.rule.convert; + +import com.inspur.edp.bef.bizentity.GspBizEntityObject; +import com.inspur.edp.cef.designtime.api.changecontrolrule.controlrule.basic.convert.ControlRuleConvertor; +import com.inspur.edp.das.commonmodel.json.CommonModelNames; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.formserver.viewmodel.controlrule.rule.VoControlRule; +import com.inspur.edp.formserver.viewmodel.controlrule.rule.VoFeildControlRule; +import com.inspur.edp.formserver.viewmodel.controlrule.rule.VoObjControlRule; +import com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.VoControlRuleDef; +import com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.VoFieldControlRuleDef; +import com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.VoObjectControlRuleDef; +import lombok.var; + +import java.util.HashMap; + +public class VoControlRuleConvertor { + public static void convert2ControlRule(VoControlRuleDef ruleDef, VoControlRule rule, GspViewModel vo) { + + ControlRuleConvertor.convert2ControlRule(ruleDef, rule); + rule.setRuleId(vo.getId()); + + VoObjControlRule mainObjRule = convert2VoObjControlRule((VoObjectControlRuleDef) ruleDef.getChildControlRules().get(CommonModelNames.MainObject), vo.getMainObject()); + rule.setMainEntityControlRule(mainObjRule); + + } + + private static VoObjControlRule convert2VoObjControlRule(VoObjectControlRuleDef ruleDef, GspViewObject voObject) { + + VoObjControlRule objRule = new VoObjControlRule(); + ControlRuleConvertor.convert2ControlRule(ruleDef, objRule, voObject); + + dealChildObjs(ruleDef, objRule, voObject); + + VoFieldControlRuleDef elementRuleDef = (VoFieldControlRuleDef) ruleDef.getChildControlRules().get(CommonModelNames.Element); + dealElement(elementRuleDef, objRule, voObject); + + return objRule; + } + + private static void dealChildObjs(VoObjectControlRuleDef ruleDef, VoObjControlRule objRule, GspViewObject voObject) { + var childObjs = voObject.getContainChildObjects(); + if (childObjs == null || childObjs.size() < 1) + return; + objRule.getChildRules().put(CommonModelNames.ChildObject, new HashMap<>()); + + for (var childObj : childObjs) { + VoObjControlRule childRule = convert2VoObjControlRule(ruleDef, (GspViewObject) childObj); + objRule.getChildRules().get(CommonModelNames.ChildObject).put(childObj.getID(), childRule); + } + } + + private static void dealElement(VoFieldControlRuleDef ruleDef, VoObjControlRule objRule, GspViewObject voObject) { + var elements = voObject.getContainElements(); + if (elements == null || elements.size() < 1) + return; + objRule.getChildRules().put(CommonModelNames.Element, new HashMap<>()); + + for (var element : elements) { + VoFeildControlRule fieldRule = new VoFeildControlRule(); + ControlRuleConvertor.convert2ControlRule(ruleDef, fieldRule, element); + objRule.getChildRules().get(CommonModelNames.Element).put(element.getID(), fieldRule); + } + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/parser/VoControlRuleParser.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/parser/VoControlRuleParser.java new file mode 100644 index 0000000000000000000000000000000000000000..ef360e49e69f08e37bff3ec41703fc937fcd1f6a --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/parser/VoControlRuleParser.java @@ -0,0 +1,22 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.rule.parser; + +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.inspur.edp.das.commonmodel.controlrule.CmControlRule; +import com.inspur.edp.das.commonmodel.controlrule.parser.CmControlRuleParser; +import com.inspur.edp.formserver.viewmodel.controlrule.rule.VoControlRule; + +public class VoControlRuleParser extends CmControlRuleParser { + + @Override + protected JsonDeserializer getChildDeserializer(String childTypeName){ + return new VoObjectControlRuleParser(); + } + + @Override + protected CmControlRule createCmRule() { + return new VoControlRule(); + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/parser/VoFieldRuleParser.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/parser/VoFieldRuleParser.java new file mode 100644 index 0000000000000000000000000000000000000000..b40fc46926a3582cd61258cb093494232610e0d6 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/parser/VoFieldRuleParser.java @@ -0,0 +1,15 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.rule.parser; + +import com.inspur.edp.das.commonmodel.controlrule.CmFieldControlRule; +import com.inspur.edp.das.commonmodel.controlrule.parser.CmFieldRuleParser; +import com.inspur.edp.formserver.viewmodel.controlrule.rule.VoFeildControlRule; + +public class VoFieldRuleParser extends CmFieldRuleParser { + + protected CmFieldControlRule createCmFieldRuleDefinition() { + return new VoFeildControlRule(); + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/parser/VoObjectControlRuleParser.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/parser/VoObjectControlRuleParser.java new file mode 100644 index 0000000000000000000000000000000000000000..aaa18e441c85217e99e2b665f3ea41ce8ce56b40 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/parser/VoObjectControlRuleParser.java @@ -0,0 +1,28 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.rule.parser; + +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.inspur.edp.das.commonmodel.controlrule.CmEntityControlRule; +import com.inspur.edp.das.commonmodel.controlrule.parser.CmEntityControlRuleParser; +import com.inspur.edp.das.commonmodel.json.CommonModelNames; +import com.inspur.edp.formserver.viewmodel.controlrule.rule.VoObjControlRule; + +public class VoObjectControlRuleParser extends CmEntityControlRuleParser { + + protected JsonDeserializer getChildDeserializer(String childTypeName){ + switch (childTypeName){ + case CommonModelNames.ChildObject: + return new VoObjectControlRuleParser(); + case CommonModelNames.Element: + return new VoFieldRuleParser(); + } + return null; + } + + @Override + protected CmEntityControlRule createCmEntityRule() { + return new VoObjControlRule(); + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/serializer/VoFieldControlRuleSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/serializer/VoFieldControlRuleSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..4c866dd4476ff144d42a9f4261e6d3375c03e05d --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/serializer/VoFieldControlRuleSerializer.java @@ -0,0 +1,8 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.rule.serializer; + +import com.inspur.edp.das.commonmodel.controlrule.serializer.CmFieldControlRuleSerializer; + +public class VoFieldControlRuleSerializer extends CmFieldControlRuleSerializer { +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/serializer/VoObjectControlRuleSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/serializer/VoObjectControlRuleSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..2b05246b868d0debd85a093aacee5883649e51b5 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/serializer/VoObjectControlRuleSerializer.java @@ -0,0 +1,8 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.rule.serializer; + +import com.inspur.edp.das.commonmodel.controlrule.serializer.CmEntityControlRuleSerializer; + +public class VoObjectControlRuleSerializer extends CmEntityControlRuleSerializer { +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/serializer/VoRuleSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/serializer/VoRuleSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..dc4bb260f6f098c0d617bfb74a3f6479b5ca83d7 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/rule/serializer/VoRuleSerializer.java @@ -0,0 +1,8 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.rule.serializer; + +import com.inspur.edp.das.commonmodel.controlrule.serializer.CmRuleSerializer; + +public class VoRuleSerializer extends CmRuleSerializer { +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/VoControlRuleDef.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/VoControlRuleDef.java new file mode 100644 index 0000000000000000000000000000000000000000..e74112a19d31ad1370cf90158dcf7c3c08b142ab --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/VoControlRuleDef.java @@ -0,0 +1,114 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.ruledefine; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.inspur.edp.cef.designtime.api.changecontrolrule.controlruledef.basic.entity.ControlRuleDefItem; +import com.inspur.edp.cef.designtime.api.changecontrolrule.controlruledef.basic.entity.ControlRuleDefinition; +import com.inspur.edp.cef.designtime.api.changecontrolrule.controlruledef.basic.entity.ControlRuleValue; +import com.inspur.edp.das.commonmodel.controlruledef.entity.CmControlRuleDef; +import com.inspur.edp.das.commonmodel.controlruledef.entity.CmRuleNames; +import com.inspur.edp.das.commonmodel.json.CommonModelNames; +import com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.parser.VoControlRuleDefParser; +import com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.serializer.VoControlRuleDefSerializer; + +@JsonSerialize(using = VoControlRuleDefSerializer.class) +@JsonDeserialize(using = VoControlRuleDefParser.class) +public class VoControlRuleDef extends CmControlRuleDef { + public VoControlRuleDef() { + super(null, VoControlRuleDefNames.VoControlRuleObjectType); + init(); + } + + private void init() { + + ControlRuleDefItem nameRule = new ControlRuleDefItem() { + { + this.setRuleName(CmRuleNames.Name); + this.setRuleDisplayName("名称"); + this.setDescription("实体名称"); + this.setDefaultRuleValue(ControlRuleValue.Allow); + } + }; + setNameControlRule(nameRule); + +// setUsingTimeStampControlRule(); + + ControlRuleDefItem addActionRule = new ControlRuleDefItem(){ + { + this.setRuleName(VoControlRuleDefNames.AddCustomAction); + this.setRuleDisplayName("添加自定义动作"); + this.setDescription("添加自定义动作"); + this.setDefaultRuleValue(ControlRuleValue.Forbiddon); + } + }; + setAddCustomActonControlRule(addActionRule); + + ControlRuleDefItem modifyActionRule = new ControlRuleDefItem(){ + { + this.setRuleName(VoControlRuleDefNames.ModifyCustomActions); + this.setRuleDisplayName("修改自定义动作"); + this.setDescription("修改自定义动作"); + this.setDefaultRuleValue(ControlRuleValue.Forbiddon); + } + }; + setModifyCustomActonControlRule(modifyActionRule); + + ControlRuleDefItem addVarRule = new ControlRuleDefItem(){ + { + this.setRuleName(VoControlRuleDefNames.AddVariableDtm); + this.setRuleDisplayName("添加自定义变量"); + this.setDescription("添加自定义变量"); + this.setDefaultRuleValue(ControlRuleValue.Forbiddon); + } + }; + setAddVariableDtmControlRule(addVarRule); + + ControlRuleDefItem modifyVarRule = new ControlRuleDefItem(){ + { + this.setRuleName(VoControlRuleDefNames.ModifyVariableDtm); + this.setRuleDisplayName("修改自定义变量"); + this.setDescription("修改自定义变量"); + this.setDefaultRuleValue(ControlRuleValue.Forbiddon); + } + }; + setModifyVariableDtmControlRule(modifyVarRule); + + VoObjectControlRuleDef objectRuleDef = new VoObjectControlRuleDef(this); + getChildControlRules().put(CommonModelNames.MainObject, objectRuleDef); + + } + + public ControlRuleDefItem getAddCustomActonControlRule() { + return super.getControlRuleItem(VoControlRuleDefNames.AddCustomAction); + } + + public void setAddCustomActonControlRule(ControlRuleDefItem ruleItem) { + super.setControlRuleItem(VoControlRuleDefNames.AddCustomAction, ruleItem); + } + + public ControlRuleDefItem getModifyCustomActonControlRule() { + return super.getControlRuleItem(VoControlRuleDefNames.ModifyCustomActions); + } + + public void setModifyCustomActonControlRule(ControlRuleDefItem ruleItem) { + super.setControlRuleItem(VoControlRuleDefNames.ModifyCustomActions, ruleItem); + } + + public ControlRuleDefItem getAddVariableDtmControlRule() { + return super.getControlRuleItem(VoControlRuleDefNames.AddVariableDtm); + } + + public void setAddVariableDtmControlRule(ControlRuleDefItem ruleItem) { + super.setControlRuleItem(VoControlRuleDefNames.AddVariableDtm, ruleItem); + } + + public ControlRuleDefItem getModifyVariableDtmControlRule() { + return super.getControlRuleItem(VoControlRuleDefNames.ModifyVariableDtm); + } + + public void setModifyVariableDtmControlRule(ControlRuleDefItem ruleItem) { + super.setControlRuleItem(VoControlRuleDefNames.ModifyVariableDtm, ruleItem); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/VoControlRuleDefNames.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/VoControlRuleDefNames.java new file mode 100644 index 0000000000000000000000000000000000000000..7bbcd8a36b443043965138eb6302da271411e36b --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/VoControlRuleDefNames.java @@ -0,0 +1,12 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.ruledefine; + +public class VoControlRuleDefNames { + public static String VoControlRuleObjectType="GspViewModel"; + public static String AddCustomAction="AddCustomAction"; + public static String AddVariableDtm = "AddVariableDtm"; + public static String ModifyCustomActions="ModifyCustomActions"; + public static String ModifyVariableDtm = "ModifyVariableDtm"; + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/VoFieldControlRuleDef.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/VoFieldControlRuleDef.java new file mode 100644 index 0000000000000000000000000000000000000000..7a6091227ed2357b9da3693253c74cf8359d249f --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/VoFieldControlRuleDef.java @@ -0,0 +1,96 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.ruledefine; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.inspur.edp.cef.designtime.api.changecontrolrule.controlruledef.basic.entity.ControlRuleDefItem; +import com.inspur.edp.cef.designtime.api.changecontrolrule.controlruledef.basic.entity.ControlRuleDefinition; +import com.inspur.edp.cef.designtime.api.changecontrolrule.controlruledef.basic.entity.ControlRuleValue; +import com.inspur.edp.cef.designtime.api.changecontrolrule.controlruledef.cm.CommonFieldRuleNames; +import com.inspur.edp.das.commonmodel.controlruledef.entity.CmFieldControlRuleDef; +import com.inspur.edp.das.commonmodel.controlruledef.entity.CmRuleNames; +import com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.parser.VoFieldControlRuleDefParser; +import com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.serializer.VoFieldControlRuleDefSerializer; + +@JsonSerialize(using = VoFieldControlRuleDefSerializer.class) +@JsonDeserialize(using = VoFieldControlRuleDefParser.class) +public class VoFieldControlRuleDef extends CmFieldControlRuleDef { + public VoFieldControlRuleDef(ControlRuleDefinition parentRuleDefinition) { + super(parentRuleDefinition); + super.setRuleObjectType(VoFieldControlRuleNames.VoFieldRuleObjectType); + init(); + } + + private void init(){ + ControlRuleDefItem nameRule = new ControlRuleDefItem() { + { + this.setRuleName(CmRuleNames.Name); + this.setRuleDisplayName("名称"); + this.setDescription("字段名称"); + this.setDefaultRuleValue(ControlRuleValue.Allow); + } + }; + setNameControlRule(nameRule); + + ControlRuleDefItem lengthRule = new ControlRuleDefItem() { + { + this.setRuleName(CommonFieldRuleNames.Length); + this.setRuleDisplayName("长度"); + this.setDescription("字段长度"); + this.setDefaultRuleValue(ControlRuleValue.Forbiddon); + } + }; + setLengthControlRule(lengthRule); + + ControlRuleDefItem precisionRule = new ControlRuleDefItem() { + { + this.setRuleName(CommonFieldRuleNames.Precision); + this.setRuleDisplayName("精度"); + this.setDescription("字段精度"); + this.setDefaultRuleValue(ControlRuleValue.Forbiddon); + } + }; + setPrecisionControlRule(precisionRule); + + ControlRuleDefItem defaultValueRule = new ControlRuleDefItem() { + { + this.setRuleName(CommonFieldRuleNames.DefaultValue); + this.setRuleDisplayName("默认值"); + this.setDescription("字段默认值"); + this.setDefaultRuleValue(ControlRuleValue.Allow); + } + }; + setDefaultValueControlRule(defaultValueRule); + + ControlRuleDefItem multiLanRule = new ControlRuleDefItem() { + { + this.setRuleName(CommonFieldRuleNames.MultiLanField); + this.setRuleDisplayName("是否多语"); + this.setDescription("字段多语设置"); + this.setDefaultRuleValue(ControlRuleValue.Forbiddon); + } + }; + setMultiLanFieldControlRule(multiLanRule); + + ControlRuleDefItem readonlyRule = new ControlRuleDefItem() { + { + this.setRuleName(CommonFieldRuleNames.Readonly); + this.setRuleDisplayName("是否只读"); + this.setDescription("字段只读设置"); + this.setDefaultRuleValue(ControlRuleValue.Forbiddon); + } + }; + setReadonlyControlRule(readonlyRule); + + ControlRuleDefItem requiredRule = new ControlRuleDefItem() { + { + this.setRuleName(CommonFieldRuleNames.Required); + this.setRuleDisplayName("是否必填"); + this.setDescription("字段必填设置"); + this.setDefaultRuleValue(ControlRuleValue.Forbiddon); + } + }; + setRequiredControlRule(requiredRule); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/VoFieldControlRuleNames.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/VoFieldControlRuleNames.java new file mode 100644 index 0000000000000000000000000000000000000000..60d07e3c443045224a51428fa42e1eb015be0bd3 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/VoFieldControlRuleNames.java @@ -0,0 +1,8 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.ruledefine; + +public class VoFieldControlRuleNames { + public static String VoFieldRuleObjectType="GspViewElement"; + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/VoObjectControlRuleDef.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/VoObjectControlRuleDef.java new file mode 100644 index 0000000000000000000000000000000000000000..d5f5c277e242ca1ae70883d90bbd77ad7f248991 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/VoObjectControlRuleDef.java @@ -0,0 +1,84 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.ruledefine; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.inspur.edp.cef.designtime.api.changecontrolrule.controlruledef.basic.entity.ControlRuleDefItem; +import com.inspur.edp.cef.designtime.api.changecontrolrule.controlruledef.basic.entity.ControlRuleDefinition; +import com.inspur.edp.cef.designtime.api.changecontrolrule.controlruledef.basic.entity.ControlRuleValue; +import com.inspur.edp.cef.designtime.api.changecontrolrule.controlruledef.cm.CommonDataTypeRuleNames; +import com.inspur.edp.das.commonmodel.controlruledef.entity.CmEntityControlRuleDef; +import com.inspur.edp.das.commonmodel.controlruledef.entity.CmEntityRuleNames; +import com.inspur.edp.das.commonmodel.controlruledef.entity.CmRuleNames; +import com.inspur.edp.das.commonmodel.json.CommonModelNames; +import com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.parser.VoObjectControlRuleDefParser; +import com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.serializer.VoObjectControlRuleDefSerializer; + +@JsonSerialize(using = VoObjectControlRuleDefSerializer.class) +@JsonDeserialize(using = VoObjectControlRuleDefParser.class) +public class VoObjectControlRuleDef extends CmEntityControlRuleDef { + public VoObjectControlRuleDef(ControlRuleDefinition parentRuleDefinition) { + super(parentRuleDefinition); + super.setRuleObjectType(VoObjectRuleDefNames.VoObjectRuleObjectType); + init(); + } + + private void init(){ + + ControlRuleDefItem nameRule = new ControlRuleDefItem() { + { + this.setRuleName(CmRuleNames.Name); + this.setRuleDisplayName("名称"); + this.setDescription("节点名称"); + this.setDefaultRuleValue(ControlRuleValue.Allow); + } + }; + setNameControlRule(nameRule); + + ControlRuleDefItem addChildEntityRule = new ControlRuleDefItem() { + { + this.setRuleName(CmEntityRuleNames.AddChildEntity); + this.setRuleDisplayName("添加子节点"); + this.setDescription("添加子节点"); + this.setDefaultRuleValue(ControlRuleValue.Allow); + } + }; + setAddChildEntityControlRule(addChildEntityRule); + + ControlRuleDefItem modifyChildEntityRule = new ControlRuleDefItem() { + { + this.setRuleName(CmEntityRuleNames.ModifyChildEntities); + this.setRuleDisplayName("修改子节点信息"); + this.setDescription("修改子节点信息"); + this.setDefaultRuleValue(ControlRuleValue.Forbiddon); + } + }; + setModifyChildEntitiesControlRule(modifyChildEntityRule); + + ControlRuleDefItem addElementRule = new ControlRuleDefItem() { + { + this.setRuleName(CommonDataTypeRuleNames.AddField); + this.setRuleDisplayName("添加字段"); + this.setDescription("添加字段"); + this.setDefaultRuleValue(ControlRuleValue.Allow); + } + }; + setAddFieldControlRule(addElementRule); + + ControlRuleDefItem modifyElementRule = new ControlRuleDefItem() { + { + this.setRuleName(CommonDataTypeRuleNames.ModifyFields); + this.setRuleDisplayName("修改字段信息"); + this.setDescription("修改字段信息"); + this.setDefaultRuleValue(ControlRuleValue.Forbiddon); + } + }; + setModifyFieldsControlRule(modifyElementRule); + +// BeEntityControlRuleDef objectRuleDef = new BeEntityControlRuleDef(this); +// getChildControlRules().put(CommonModelNames.MainObject, objectRuleDef); + VoFieldControlRuleDef fieldRuleDef = new VoFieldControlRuleDef(this); + getChildControlRules().put(CommonModelNames.Element, fieldRuleDef); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/VoObjectRuleDefNames.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/VoObjectRuleDefNames.java new file mode 100644 index 0000000000000000000000000000000000000000..c811c1e2b16cce05f52e5e23271c20dd60e2f6ef --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/VoObjectRuleDefNames.java @@ -0,0 +1,7 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.ruledefine; + +public class VoObjectRuleDefNames { + public static String VoObjectRuleObjectType = "GspViewObject"; +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/parser/VoControlRuleDefParser.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/parser/VoControlRuleDefParser.java new file mode 100644 index 0000000000000000000000000000000000000000..224b88f142079105a9afb3e9d7f32613f20c6d37 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/parser/VoControlRuleDefParser.java @@ -0,0 +1,25 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.parser; + +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.inspur.edp.das.commonmodel.controlruledef.entity.CmControlRuleDef; +import com.inspur.edp.das.commonmodel.controlruledef.parser.CmRuleDefParser; +import com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.VoControlRuleDef; + +public class VoControlRuleDefParser extends CmRuleDefParser { + @Override + protected final CmControlRuleDef createCmRuleDef() { + return new VoControlRuleDef(); + } + +// protected Class getChildTypes(String childTypeName) { +// return BeEntityControlRuleDef.class; +// } + + @Override + protected JsonDeserializer getChildDeserializer(String childTypeName){ + return new VoObjectControlRuleDefParser(); + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/parser/VoFieldControlRuleDefParser.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/parser/VoFieldControlRuleDefParser.java new file mode 100644 index 0000000000000000000000000000000000000000..62bc8b83619f811d499674ffa0e882e2ae286fd1 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/parser/VoFieldControlRuleDefParser.java @@ -0,0 +1,15 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.parser; + +import com.inspur.edp.das.commonmodel.controlruledef.entity.CmFieldControlRuleDef; +import com.inspur.edp.das.commonmodel.controlruledef.parser.CmFieldRuleDefParser; +import com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.VoFieldControlRuleDef; + +public class VoFieldControlRuleDefParser extends CmFieldRuleDefParser { + @Override + protected final CmFieldControlRuleDef createCmFieldRuleDefinition() { + return new VoFieldControlRuleDef(null); + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/parser/VoObjectControlRuleDefParser.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/parser/VoObjectControlRuleDefParser.java new file mode 100644 index 0000000000000000000000000000000000000000..910ee53eaaa1d7c97261eeec15de98bb21328523 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/parser/VoObjectControlRuleDefParser.java @@ -0,0 +1,23 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.parser; + +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.inspur.edp.das.commonmodel.controlruledef.entity.CmEntityControlRuleDef; +import com.inspur.edp.das.commonmodel.controlruledef.parser.CmEntityControlRuleDefParser; +import com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.VoObjectControlRuleDef; + +public class VoObjectControlRuleDefParser extends CmEntityControlRuleDefParser { + + @Override + protected final CmEntityControlRuleDef createCmEntityRuleDef() { + return new VoObjectControlRuleDef(null); + } + + @Override + protected JsonDeserializer getChildDeserializer(String childTypeName){ + return new VoFieldControlRuleDefParser(); + } + +} + diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/serializer/VoControlRuleDefSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/serializer/VoControlRuleDefSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..03a046945facc9dcdaf0d5917069d41edb9101c1 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/serializer/VoControlRuleDefSerializer.java @@ -0,0 +1,17 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.serializer; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.inspur.edp.das.commonmodel.controlruledef.serializer.CmRuleDefSerializer; +import com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.VoControlRuleDef; + +public class VoControlRuleDefSerializer extends CmRuleDefSerializer { + + @Override + protected final void writeCmRuleExtendInfos(T controlRuleDefinition, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) { + super.writeCmRuleExtendInfos(controlRuleDefinition, jsonGenerator, serializerProvider); + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/serializer/VoFieldControlRuleDefSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/serializer/VoFieldControlRuleDefSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..e5b52c29a320ec10d131745a692a801e16453c9a --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/serializer/VoFieldControlRuleDefSerializer.java @@ -0,0 +1,16 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.serializer; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.inspur.edp.das.commonmodel.controlruledef.serializer.CmFieldControlRuleDefSerializer; +import com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.VoFieldControlRuleDef; + +public class VoFieldControlRuleDefSerializer extends CmFieldControlRuleDefSerializer { + + protected void writeCmFieldRuleExtendInfos(T controlRuleDefinition, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) { + + super.writeCmFieldRuleExtendInfos(controlRuleDefinition, jsonGenerator, serializerProvider); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/serializer/VoObjectControlRuleDefSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/serializer/VoObjectControlRuleDefSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..2e23d61181df0a09c221a2a55b4afe594ae7fa5c --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/controlrule/ruledefine/serializer/VoObjectControlRuleDefSerializer.java @@ -0,0 +1,17 @@ + + +package com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.serializer; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.inspur.edp.das.commonmodel.controlruledef.serializer.CmEntityControlRuleDefSerializer; +import com.inspur.edp.formserver.viewmodel.controlrule.ruledefine.VoObjectControlRuleDef; + +public class VoObjectControlRuleDefSerializer extends CmEntityControlRuleDefSerializer { + + @Override + protected final void writeCmEntityRuleExtendInfos(T controlRuleDefinition, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) { + super.writeCmEntityRuleExtendInfos(controlRuleDefinition, jsonGenerator, serializerProvider); + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dataextendinfo/VoDataExtendInfo.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dataextendinfo/VoDataExtendInfo.java new file mode 100644 index 0000000000000000000000000000000000000000..d01b35f50a540c0aa7e8bb601c82db252497dfcc --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dataextendinfo/VoDataExtendInfo.java @@ -0,0 +1,481 @@ + + +package com.inspur.edp.formserver.viewmodel.dataextendinfo; + +import com.inspur.edp.formserver.viewmodel.collection.VMActionCollection; + +/** + * The Definition Of View Object Data Exntend Info + * + * @ClassName: VoDataExtendInfo + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class VoDataExtendInfo { + ///#region 私有字段 + + private VMActionCollection dataMappingActions; + private VMActionCollection beforeQueryActions; + private VMActionCollection queryActions; + private VMActionCollection afterQueryActions; + private VMActionCollection retrieveActions; + private VMActionCollection beforeRetrieveActions; + private VMActionCollection afterRetrieveActions; + private VMActionCollection beforeModifyActions; + private VMActionCollection modifyActions; + private VMActionCollection afterModifyActions; + private VMActionCollection changesetMappingActions; + private VMActionCollection beforeCreateActions; + private VMActionCollection createActions; + private VMActionCollection beforeDeleteActions; + private VMActionCollection deleteActions; + private VMActionCollection afterSaveActions; + private VMActionCollection beforeSaveActions; + private VMActionCollection afterCreateActions; + private VMActionCollection dataReversalMappingActions; + private VMActionCollection changesetReversalMappingActions; + private VMActionCollection afterDeleteActions; + private VMActionCollection beforeMultiDeleteActions; + private VMActionCollection multiDeleteActions; + private VMActionCollection afterMultiDeleteActions; + + ///#endregion + public final VMActionCollection getBeforeMultiDeleteActions() { + if (beforeMultiDeleteActions == null) { + beforeMultiDeleteActions = new VMActionCollection(); + } + + return beforeMultiDeleteActions; + } + + public void setBeforeMultiDeleteActions(VMActionCollection value) { + this.beforeMultiDeleteActions = value; + } + + public final VMActionCollection getMultiDeleteActions() { + if (multiDeleteActions == null) { + multiDeleteActions = new VMActionCollection(); + } + + return multiDeleteActions; + } + + public void setMultiDeleteActions(VMActionCollection value) { + this.multiDeleteActions = value; + } + + public final VMActionCollection getAfterMultiDeleteActions() { + if (afterMultiDeleteActions == null) { + afterMultiDeleteActions = new VMActionCollection(); + } + + return afterMultiDeleteActions; + } + + public void setAfterMultiDeleteActions(VMActionCollection value) { + this.afterMultiDeleteActions = value; + } + + /** + * 数据Mapping + * + */ + public final VMActionCollection getDataMappingActions() { + if (dataMappingActions == null) { + dataMappingActions = new VMActionCollection(); + } + + return dataMappingActions; + } + + public void setDataMappingActions(VMActionCollection value) { + this.dataMappingActions = value; + } + + /** + * 查询数据前 + * + */ + public final VMActionCollection getBeforeQueryActions() { + if (beforeQueryActions == null) { + beforeQueryActions = new VMActionCollection(); + } + + return beforeQueryActions; + } + + public void setBeforeQueryActions(VMActionCollection value) { + this.beforeQueryActions = value; + } + + /** + * 查询数据 + * + */ + public final VMActionCollection getQueryActions() { + if (queryActions == null) { + queryActions = new VMActionCollection(); + } + + return queryActions; + } + + public void setQueryActions(VMActionCollection value) { + this.queryActions = value; + } + + /** + * 查询数据后 + * + */ + public final VMActionCollection getAfterQueryActions() { + if (afterQueryActions == null) { + afterQueryActions = new VMActionCollection(); + } + + return afterQueryActions; + } + + public void setAfterQueryActions(VMActionCollection value) { + this.afterQueryActions = value; + } + + /** + * 检索数据前 + * + */ + public final VMActionCollection getBeforeRetrieveActions() { + if (beforeRetrieveActions == null) { + beforeRetrieveActions = new VMActionCollection(); + } + + return beforeRetrieveActions; + } + + public void setBeforeRetrieveActions(VMActionCollection value) { + this.beforeRetrieveActions = value; + } + + /** + * 检索数据 + * + */ + public final VMActionCollection getRetrieveActions() { + if (retrieveActions == null) { + retrieveActions = new VMActionCollection(); + } + + return retrieveActions; + } + + // public void setRetrieveActions(VMActionCollection value) + public void setRetrieveActions(VMActionCollection value) { + this.retrieveActions = value; + } + + /** + * 检索数据后 + * + */ + public final VMActionCollection getAfterRetrieveActions() { + if (afterRetrieveActions == null) { + afterRetrieveActions = new VMActionCollection(); + } + + return afterRetrieveActions; + } + + public void setAfterRetrieveActions(VMActionCollection value) { + this.afterRetrieveActions = value; + } + + /** + * 修改数据前 + * + */ + public final VMActionCollection getBeforeModifyActions() { + if (beforeModifyActions == null) { + beforeModifyActions = new VMActionCollection(); + } + + return beforeModifyActions; + } + + public void setBeforeModifyActions(VMActionCollection value) { + this.beforeModifyActions = value; + } + + /** + * 修改数据 + * + */ + public final VMActionCollection getModifyActions() { + if (modifyActions == null) { + modifyActions = new VMActionCollection(); + } + + return modifyActions; + } + + public void setModifyActions(VMActionCollection value) { + this.modifyActions = value; + } + + /** + * 修改数据后 + * + */ + public final VMActionCollection getAfterModifyActions() { + if (afterModifyActions == null) { + afterModifyActions = new VMActionCollection(); + } + + return afterModifyActions; + } + + public void setAfterModifyActions(VMActionCollection value) { + this.afterModifyActions = value; + } + + /** + * 变更集Mapping + * + */ + public final VMActionCollection getChangesetMappingActions() { + if (changesetMappingActions == null) { + changesetMappingActions = new VMActionCollection(); + } + + return changesetMappingActions; + } + + // public void setChangesetMappingActions(VMActionCollection value) + public void setChangesetMappingActions(VMActionCollection value) { + this.changesetMappingActions = value; + } + + /** + * 新增数据前 + * + */ + public final VMActionCollection getBeforeCreateActions() { + if (beforeCreateActions == null) { + beforeCreateActions = new VMActionCollection(); + } + + return beforeCreateActions; + } + + public void setBeforeCreateActions(VMActionCollection value) { + this.beforeCreateActions = value; + } + + + /** + * 新增数据 + * + */ + public final VMActionCollection getCreateActions() { + if (createActions == null) { + createActions = new VMActionCollection(); + } + + return createActions; + } + + public void setCreateActions(VMActionCollection value) { + this.createActions = value; + } + + /** + * 新增数据后 + * + */ + public final VMActionCollection getAfterCreateActions() { + if (afterCreateActions == null) { + afterCreateActions = new VMActionCollection(); + } + + return afterCreateActions; + } + + // public void setAfterCreateActions(VMActionCollection value) + public void setAfterCreateActions(VMActionCollection value) { + this.afterCreateActions = value; + } + + /** + * 删除数据前 + * + */ + public final VMActionCollection getBeforeDeleteActions() { + if (beforeDeleteActions == null) { + beforeDeleteActions = new VMActionCollection(); + } + + return beforeDeleteActions; + } + + // public void setBeforeDeleteActions(VMActionCollection value) + public void setBeforeDeleteActions(VMActionCollection value) { + this.beforeDeleteActions = value; + } + + + /** + * 删除数据 + * + */ + public final VMActionCollection getDeleteActions() { + if (deleteActions == null) { + deleteActions = new VMActionCollection(); + } + + return deleteActions; + } + + public void setDeleteActions(VMActionCollection value) { + this.deleteActions = value; + } + + /** + * 删除数据后 + * + */ + public final VMActionCollection getAfterDeleteActions() { + if (afterDeleteActions == null) { + afterDeleteActions = new VMActionCollection(); + } + + return afterDeleteActions; + } + + public void setAfterDeleteActions(VMActionCollection value) { + this.afterDeleteActions = value; + } + + + /** + * 保存数据前 + * + */ + public final VMActionCollection getBeforeSaveActions() { + if (beforeSaveActions == null) { + beforeSaveActions = new VMActionCollection(); + } + + return beforeSaveActions; + } + + public void setBeforeSaveActions(VMActionCollection value) { + this.beforeSaveActions = value; + } + + /** + * 数据反向Mapping + * + */ + public final VMActionCollection getDataReversalMappingActions() { + if (dataReversalMappingActions == null) { + dataReversalMappingActions = new VMActionCollection(); + } + + return dataReversalMappingActions; + } + + public void setDataReversalMappingActions(VMActionCollection value) { + this.dataReversalMappingActions = value; + } + + /** + * 保存数据后 + * + */ + public final VMActionCollection getAfterSaveActions() { + if (afterSaveActions == null) { + afterSaveActions = new VMActionCollection(); + } + + return afterSaveActions; + } + + public void setAfterSaveActions(VMActionCollection value) { + this.afterSaveActions = value; + } + + + /** + * 变更集反向Mapping + * + */ + public final VMActionCollection getChangesetReversalMappingActions() { + if (changesetReversalMappingActions == null) { + changesetReversalMappingActions = new VMActionCollection(); + } + + return changesetReversalMappingActions; + } + + public void setChangesetReversalMappingActions(VMActionCollection value) { + this.changesetReversalMappingActions = value; + } + + public boolean isAllNull(){ + if(dataMappingActions==null||dataMappingActions.size()==0) + if(beforeQueryActions==null||beforeQueryActions.size()==0) + if(queryActions==null||queryActions.size()==0) + if(afterQueryActions==null||afterQueryActions.size()==0) + if(retrieveActions==null||retrieveActions.size()==0) + if(beforeRetrieveActions==null||beforeRetrieveActions.size()==0) + if(afterRetrieveActions==null||afterRetrieveActions.size()==0) + if(beforeModifyActions==null||beforeModifyActions.size()==0) + if(modifyActions==null||modifyActions.size()==0) + if(afterModifyActions==null||afterModifyActions.size()==0) + if(changesetMappingActions==null||changesetMappingActions.size()==0) + if(beforeCreateActions==null||beforeCreateActions.size()==0) + if(createActions==null||createActions.size()==0) + if(beforeDeleteActions==null||beforeDeleteActions.size()==0) + if(deleteActions==null|| deleteActions.size()==0) + if(afterSaveActions==null||afterSaveActions.size()==0) + if(beforeSaveActions==null||beforeSaveActions.size()==0) + if(afterCreateActions==null||afterCreateActions.size()==0) + if(dataReversalMappingActions==null||dataReversalMappingActions.size()==0) + if(changesetReversalMappingActions==null||changesetReversalMappingActions.size()==0) + if(afterDeleteActions==null||afterDeleteActions.size()==0) + if(beforeMultiDeleteActions==null||beforeMultiDeleteActions.size()==0) + if(multiDeleteActions==null||multiDeleteActions.size()==0) + if(afterMultiDeleteActions==null||afterMultiDeleteActions.size()==0) + return true; + + return false; + + } + public VoDataExtendInfo initVoDataExendInfo(VoDataExtendInfo voDataExtendInfo){ + voDataExtendInfo.dataMappingActions = new VMActionCollection(); + voDataExtendInfo.beforeQueryActions = new VMActionCollection(); + voDataExtendInfo.queryActions = new VMActionCollection(); + voDataExtendInfo.afterQueryActions = new VMActionCollection(); + voDataExtendInfo.retrieveActions = new VMActionCollection(); + voDataExtendInfo.beforeRetrieveActions = new VMActionCollection(); + voDataExtendInfo.afterRetrieveActions = new VMActionCollection(); + voDataExtendInfo.beforeModifyActions = new VMActionCollection(); + voDataExtendInfo.modifyActions = new VMActionCollection(); + voDataExtendInfo.afterModifyActions = new VMActionCollection(); + voDataExtendInfo.changesetMappingActions = new VMActionCollection(); + voDataExtendInfo.beforeCreateActions = new VMActionCollection(); + voDataExtendInfo.createActions = new VMActionCollection(); + voDataExtendInfo.beforeDeleteActions = new VMActionCollection(); + voDataExtendInfo.deleteActions = new VMActionCollection(); + voDataExtendInfo.afterSaveActions = new VMActionCollection(); + voDataExtendInfo.beforeSaveActions = new VMActionCollection(); + voDataExtendInfo.afterCreateActions = new VMActionCollection(); + voDataExtendInfo.dataReversalMappingActions = new VMActionCollection() ; + voDataExtendInfo.changesetReversalMappingActions = new VMActionCollection(); + voDataExtendInfo.afterDeleteActions = new VMActionCollection(); + voDataExtendInfo.beforeMultiDeleteActions = new VMActionCollection(); + voDataExtendInfo.multiDeleteActions = new VMActionCollection(); + voDataExtendInfo.afterMultiDeleteActions = new VMActionCollection(); + return voDataExtendInfo; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/actioneventargs/AbstractVoActionEventArgs.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/actioneventargs/AbstractVoActionEventArgs.java new file mode 100644 index 0000000000000000000000000000000000000000..2c17ebdb05f0bc2591c3bbe29ac11f5ae69cafb3 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/actioneventargs/AbstractVoActionEventArgs.java @@ -0,0 +1,48 @@ + + +package com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs; +import com.inspur.edp.cef.designtime.api.dtconsistencycheck.AbstractDtEventArgs; + + +public class AbstractVoActionEventArgs extends AbstractDtEventArgs { + public String viewModelId; + public String viewObjectId; + public String actionId; + public String metadataPath; + + public String getMetadataPath() { + return metadataPath; + } + + public void setMetadataPath(String metadataPath) { + this.metadataPath = metadataPath; + } + + public String getActionId() { + return actionId; + } + + public void setActionId(String actionId) { + this.actionId = actionId; + } + + public AbstractVoActionEventArgs() { + } + + public String getViewModelId() { + return viewModelId; + } + + public void setViewModelId(String viewModelId) { + this.viewModelId = viewModelId; + } + + public String getViewObjectId() { + return viewObjectId; + } + + public void setViewObjectId(String viewObjectId) { + this.viewObjectId = viewObjectId; + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/actioneventargs/ChangingVoActionCodeEventArgs.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/actioneventargs/ChangingVoActionCodeEventArgs.java new file mode 100644 index 0000000000000000000000000000000000000000..55eb79a9d55e535a6cb3e21a2f79041a0d66e1d5 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/actioneventargs/ChangingVoActionCodeEventArgs.java @@ -0,0 +1,34 @@ + + +package com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs; + +public class ChangingVoActionCodeEventArgs extends AbstractVoActionEventArgs { + + protected String newActionCode; + protected String originalActionCode; + + public ChangingVoActionCodeEventArgs() { + } + + public ChangingVoActionCodeEventArgs(String newActionCode, String originalActionCode) { + this.newActionCode = newActionCode; + this.originalActionCode = originalActionCode; + } + + public String getNewActionCode() { + return newActionCode; + } + + public void setNewActionCode(String newActionCode) { + this.newActionCode = newActionCode; + } + + public String getOriginalActionCode() { + return originalActionCode; + } + + public void setOriginalActionCode(String originalActionCode) { + this.originalActionCode = originalActionCode; + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/actioneventargs/ChangingVoActionCollectTypeEventArgs.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/actioneventargs/ChangingVoActionCollectTypeEventArgs.java new file mode 100644 index 0000000000000000000000000000000000000000..650fba26ee4be1fe89233c200bce3f6acf879402 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/actioneventargs/ChangingVoActionCollectTypeEventArgs.java @@ -0,0 +1,29 @@ + + +package com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs; + + +public class ChangingVoActionCollectTypeEventArgs extends AbstractVoActionEventArgs { + + protected String originalCollectionType; + protected String newCollectionType; + + public ChangingVoActionCollectTypeEventArgs() { + } + + public String getOriginalCollectionType() { + return originalCollectionType; + } + + public void setOriginalCollectionType(String originalCollectionType) { + this.originalCollectionType = originalCollectionType; + } + + public String getNewCollectionType() { + return newCollectionType; + } + + public void setNewCollectionType(String newCollectionType) { + this.newCollectionType = newCollectionType; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/actioneventargs/ChangingVoActionParamsEventArgs.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/actioneventargs/ChangingVoActionParamsEventArgs.java new file mode 100644 index 0000000000000000000000000000000000000000..9704eaf066311df6506e73450938d495d48031bd --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/actioneventargs/ChangingVoActionParamsEventArgs.java @@ -0,0 +1,37 @@ + + +package com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs; + + +public class ChangingVoActionParamsEventArgs extends AbstractVoActionEventArgs{ + protected String voActionParameterType; + protected String newVoActionParameter; + protected String originalVoActionParameter; + + public ChangingVoActionParamsEventArgs() { + } + + public String getVoActionParameterType() { + return voActionParameterType; + } + + public void setVoActionParameterType(String voActionParameterType) { + this.voActionParameterType = voActionParameterType; + } + + public String getNewVoActionParameter() { + return newVoActionParameter; + } + + public void setNewVoActionParameter(String newVoActionParameter) { + this.newVoActionParameter = newVoActionParameter; + } + + public String getOriginalVoActionParameter() { + return originalVoActionParameter; + } + + public void setOriginalVoActionParameter(String originalVoActionParameter) { + this.originalVoActionParameter = originalVoActionParameter; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/actioneventargs/ChangingVoActionReturnEventArgs.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/actioneventargs/ChangingVoActionReturnEventArgs.java new file mode 100644 index 0000000000000000000000000000000000000000..210b969b67c41d4eff5fe74ef2c189d81d783e79 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/actioneventargs/ChangingVoActionReturnEventArgs.java @@ -0,0 +1,28 @@ + + +package com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs; + + +public class ChangingVoActionReturnEventArgs extends AbstractVoActionEventArgs{ + protected String originalReturnType; + protected String newReturnType; + + public ChangingVoActionReturnEventArgs() { + } + + public String getOriginalReturnType() { + return originalReturnType; + } + + public void setOriginalReturnType(String originalReturnType) { + this.originalReturnType = originalReturnType; + } + + public String getNewReturnType() { + return newReturnType; + } + + public void setNewReturnType(String newReturnType) { + this.newReturnType = newReturnType; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/actioneventargs/DeletingVoActionEventArgs.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/actioneventargs/DeletingVoActionEventArgs.java new file mode 100644 index 0000000000000000000000000000000000000000..69e8d063f3a2ec309560529538977ab4c3fcf2d6 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/actioneventargs/DeletingVoActionEventArgs.java @@ -0,0 +1,9 @@ + + +package com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs; + +public class DeletingVoActionEventArgs extends AbstractVoActionEventArgs { + + public DeletingVoActionEventArgs() { + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/entityeventargs/AbstractVoEntityArgs.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/entityeventargs/AbstractVoEntityArgs.java new file mode 100644 index 0000000000000000000000000000000000000000..df82f86df4c95c4aeacd7ec36a94ae5fb2c7a1eb --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/entityeventargs/AbstractVoEntityArgs.java @@ -0,0 +1,35 @@ + + +package com.inspur.edp.formserver.viewmodel.dtconsistencycheck.entityeventargs; + +import com.inspur.edp.cef.designtime.api.dtconsistencycheck.AbstractDtEventArgs; + +public abstract class AbstractVoEntityArgs extends AbstractDtEventArgs { + + public String viewModelId; + public String viewObjectId; + + public AbstractVoEntityArgs() { + } + + public AbstractVoEntityArgs(String viewModelId, String viewObjectId) { + this.viewModelId = viewModelId; + this.viewObjectId = viewObjectId; + } + + public String getViewModelId() { + return viewModelId; + } + + public void setViewModelId(String viewModelId) { + this.viewModelId = viewModelId; + } + + public String getViewObjectId() { + return viewObjectId; + } + + public void setViewObjectId(String viewObjectId) { + this.viewObjectId = viewObjectId; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/entityeventargs/ChangingViewObjectCodeEventArgs.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/entityeventargs/ChangingViewObjectCodeEventArgs.java new file mode 100644 index 0000000000000000000000000000000000000000..9571744188c0bed86fc2ee6f999b2a21db162f6f --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/entityeventargs/ChangingViewObjectCodeEventArgs.java @@ -0,0 +1,28 @@ + + +package com.inspur.edp.formserver.viewmodel.dtconsistencycheck.entityeventargs; + +public class ChangingViewObjectCodeEventArgs extends AbstractVoEntityArgs { + + protected String newCode; + protected String originalCode; + + public ChangingViewObjectCodeEventArgs() { + } + + public String getNewCode() { + return newCode; + } + + public void setNewCode(String newCode) { + this.newCode = newCode; + } + + public String getOriginalCode() { + return originalCode; + } + + public void setOriginalCode(String originalCode) { + this.originalCode = originalCode; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/entityeventargs/RemovingViewObjectEventArgs.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/entityeventargs/RemovingViewObjectEventArgs.java new file mode 100644 index 0000000000000000000000000000000000000000..5c9ef549808553cae377eedf2e6ffedfead257e5 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/entityeventargs/RemovingViewObjectEventArgs.java @@ -0,0 +1,10 @@ + + +package com.inspur.edp.formserver.viewmodel.dtconsistencycheck.entityeventargs; + + +public class RemovingViewObjectEventArgs extends AbstractVoEntityArgs { + + public RemovingViewObjectEventArgs() { + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/fieldeventargs/AbstractVofieldEventArgs.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/fieldeventargs/AbstractVofieldEventArgs.java new file mode 100644 index 0000000000000000000000000000000000000000..174bfd7c054d32459fb94b4ce165a7c1c0fedcb7 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/fieldeventargs/AbstractVofieldEventArgs.java @@ -0,0 +1,39 @@ + + +package com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs; + +import com.inspur.edp.cef.designtime.api.dtconsistencycheck.AbstractDtEventArgs; + +public abstract class AbstractVofieldEventArgs extends AbstractDtEventArgs { + + public String viewModelId; + public String viewObjectId; + public String viewFieldId; + + public AbstractVofieldEventArgs() { + } + + public String getViewModelId() { + return viewModelId; + } + + public void setViewModelId(String viewModelId) { + this.viewModelId = viewModelId; + } + + public String getViewObjectId() { + return viewObjectId; + } + + public void setViewObjectId(String viewObjectId) { + this.viewObjectId = viewObjectId; + } + + public String getViewFieldId() { + return viewFieldId; + } + + public void setViewFieldId(String viewFieldId) { + this.viewFieldId = viewFieldId; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/fieldeventargs/ChangingVoFieldDataTypeEventArgs.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/fieldeventargs/ChangingVoFieldDataTypeEventArgs.java new file mode 100644 index 0000000000000000000000000000000000000000..77dde5a25ccef64aa8dcc5518f124821904d69fd --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/fieldeventargs/ChangingVoFieldDataTypeEventArgs.java @@ -0,0 +1,33 @@ + + +package com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs; + +public class ChangingVoFieldDataTypeEventArgs extends AbstractVofieldEventArgs { + + protected String newDateType; + protected String originalDataType; + + public ChangingVoFieldDataTypeEventArgs() { + } + + public ChangingVoFieldDataTypeEventArgs(String newDateType, String originalDataType) { + this.newDateType = newDateType; + this.originalDataType = originalDataType; + } + + public String getNewDateType() { + return newDateType; + } + + public void setNewDateType(String newDateType) { + this.newDateType = newDateType; + } + + public String getOriginalDataType() { + return originalDataType; + } + + public void setOriginalDataType(String originalDataType) { + this.originalDataType = originalDataType; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/fieldeventargs/ChangingVoFieldLabelIdEventArgs.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/fieldeventargs/ChangingVoFieldLabelIdEventArgs.java new file mode 100644 index 0000000000000000000000000000000000000000..b87ad9c380e8a5dcf41689a563972ec0fd04c0e5 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/fieldeventargs/ChangingVoFieldLabelIdEventArgs.java @@ -0,0 +1,32 @@ + + +package com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs; + +public class ChangingVoFieldLabelIdEventArgs extends AbstractVofieldEventArgs{ + protected String newLabelId; + protected String originalLabelId; + + public ChangingVoFieldLabelIdEventArgs() { + } + + public ChangingVoFieldLabelIdEventArgs(String newLabelId, String originalLabelId) { + this.newLabelId = newLabelId; + this.originalLabelId = originalLabelId; + } + + public String getNewLabelId() { + return newLabelId; + } + + public void setNewLabelId(String newLabelId) { + this.newLabelId = newLabelId; + } + + public String getOriginalLabelId() { + return originalLabelId; + } + + public void setOriginalLabelId(String originalLabelId) { + this.originalLabelId = originalLabelId; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/fieldeventargs/ChangingVoFieldObjectTypeEventArgs.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/fieldeventargs/ChangingVoFieldObjectTypeEventArgs.java new file mode 100644 index 0000000000000000000000000000000000000000..47c7d2b1e29bcfee4a8772fcc597e09fe93b07f2 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/fieldeventargs/ChangingVoFieldObjectTypeEventArgs.java @@ -0,0 +1,32 @@ + + +package com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs; + +public class ChangingVoFieldObjectTypeEventArgs extends AbstractVofieldEventArgs{ + protected String newObjectType; + protected String originalObjectType; + + public ChangingVoFieldObjectTypeEventArgs() { + } + + public ChangingVoFieldObjectTypeEventArgs(String newObjectType, String originalObjectType) { + this.newObjectType = newObjectType; + this.originalObjectType = originalObjectType; + } + + public String getNewObjectType() { + return newObjectType; + } + + public void setNewObjectType(String newObjectType) { + this.newObjectType = newObjectType; + } + + public String getOriginalObjectType() { + return originalObjectType; + } + + public void setOriginalObjectType(String originalObjectType) { + this.originalObjectType = originalObjectType; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/fieldeventargs/RemovingVoFieldEventArgs.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/fieldeventargs/RemovingVoFieldEventArgs.java new file mode 100644 index 0000000000000000000000000000000000000000..b9cca46783c505c15e42f9bc5195caf8a7b9bf6a --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/dtconsistencycheck/fieldeventargs/RemovingVoFieldEventArgs.java @@ -0,0 +1,9 @@ + + +package com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs; + +public class RemovingVoFieldEventArgs extends AbstractVofieldEventArgs { + + public RemovingVoFieldEventArgs() { + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/extendinfo/api/GspVoExtendInfoService.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/extendinfo/api/GspVoExtendInfoService.java new file mode 100644 index 0000000000000000000000000000000000000000..d66e7baabf00e1087ee3d39b27720b1941482ef6 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/extendinfo/api/GspVoExtendInfoService.java @@ -0,0 +1,52 @@ + + +package com.inspur.edp.formserver.viewmodel.extendinfo.api; +import com.inspur.edp.formserver.viewmodel.extendinfo.entity.GspVoExtendInfo; + +import java.util.List; + +/** + * The Josn Deserializer Of Biz Operation + * + * @ClassName: BizOperationDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public interface GspVoExtendInfoService { + /** + * 根据ID获取某条Vo扩展信息 + * @param id + * @return + */ + GspVoExtendInfo getVoExtendInfo(String id); + + /** + * 根据configId获取某条Vo扩展信息 + * @param configId + * @return + */ + GspVoExtendInfo getVoExtendInfoByConfigId(String configId); + + /** + * 获取所有BE扩展信息 + * @return + */ + List getVoExtendInfos(); + + /** + * 保存 + * @param infos + */ + void saveGspVoExtendInfos(List infos); + + void deleteVoExtendInfo(String id); + + /** + * 根据BEId获取某条VoID + * @param Id + * @return + */ + List getVoId(String Id); + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/extendinfo/entity/GspVoExtendInfo.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/extendinfo/entity/GspVoExtendInfo.java new file mode 100644 index 0000000000000000000000000000000000000000..133043bd6f2c4e530b119d80171003c8d526b5d2 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/extendinfo/entity/GspVoExtendInfo.java @@ -0,0 +1,73 @@ + + +package com.inspur.edp.formserver.viewmodel.extendinfo.entity; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import javax.persistence.Convert; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.util.Date; + +/** + * The Josn Deserializer Of Biz Operation + * + * @ClassName: BizOperationDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +@Entity +@Table(name = "GspViewModel") +@NoArgsConstructor +@JsonIgnoreProperties(ignoreUnknown = true) +@Data +public class GspVoExtendInfo { + + public GspVoExtendInfo(String id, String extendInfo, String configId, String createdBy, + Date createdOn, String lastChangedBy, Date lastChangedOn) { + this.id = id; + this.extendInfo = extendInfo; + this.configId = configId; + this.createdBy = createdBy; + this.createdOn = createdOn; + this.lastChangedBy = lastChangedBy; + this.lastChangedOn = lastChangedOn; + } + + public GspVoExtendInfo(String id, String extendInfo, String configId, String createdBy, + Date createdOn, String lastChangedBy, Date lastChangedOn, String beSourceId) { + this(id,extendInfo,configId,createdBy,createdOn,lastChangedBy,lastChangedOn); + this.beSourceId = beSourceId; + } + + public GspVoExtendInfo(String id, String extendInfo, String configId, String createdBy, + Date createdOn, String lastChangedBy, Date lastChangedOn, String beSourceId, + VoConfigCollectionInfo voConfigCollectionInfo) { + this(id, extendInfo, configId, createdBy, createdOn, lastChangedBy, lastChangedOn, beSourceId); + this.voConfigCollectionInfo = voConfigCollectionInfo; + } + + @Id + private String id; + private String extendInfo; + private String configId; + private String createdBy; + private Date createdOn; + private String lastChangedBy; + private Date lastChangedOn; + private String beSourceId; + @Convert(converter = VoConfigCollectionInfoConverter.class) + private VoConfigCollectionInfo voConfigCollectionInfo; + + public VoConfigCollectionInfo getVoConfigCollectionInfo() { + return voConfigCollectionInfo; + } + + public void setVoConfigCollectionInfo(VoConfigCollectionInfo voConfigCollectionInfo) { + this.voConfigCollectionInfo = voConfigCollectionInfo; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/extendinfo/entity/VoConfigCollectionInfo.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/extendinfo/entity/VoConfigCollectionInfo.java new file mode 100644 index 0000000000000000000000000000000000000000..685767d0c992898997876a92b21997bcb17649c3 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/extendinfo/entity/VoConfigCollectionInfo.java @@ -0,0 +1,31 @@ + + +package com.inspur.edp.formserver.viewmodel.extendinfo.entity; + +import com.inspur.edp.cef.entity.config.CefConfig; +import com.inspur.edp.lcm.metadata.api.entity.ProcessMode; + +/** + * 生成代码中configCollection的getConfigs中信息 + * @author haoxiaofei + */ +public class VoConfigCollectionInfo { + private CefConfig config = new CefConfig(); + private ProcessMode projectType; + + public CefConfig getConfig() { + return config; + } + + public void setConfig(CefConfig config) { + this.config = config; + } + + public ProcessMode getProjectType() { + return projectType; + } + + public void setProjectType(ProcessMode projectType) { + this.projectType = projectType; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/extendinfo/entity/VoConfigCollectionInfoConverter.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/extendinfo/entity/VoConfigCollectionInfoConverter.java new file mode 100644 index 0000000000000000000000000000000000000000..a72813dd104735af8f29def1901384cf9c871f7e --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/extendinfo/entity/VoConfigCollectionInfoConverter.java @@ -0,0 +1,33 @@ + + +package com.inspur.edp.formserver.viewmodel.extendinfo.entity; + +import com.inspur.edp.cdp.common.utils.json.JsonUtil; +import io.swagger.util.Json; +import javax.persistence.AttributeConverter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class VoConfigCollectionInfoConverter implements AttributeConverter { + private static Logger logger = LoggerFactory.getLogger(VoConfigCollectionInfo.class); + + @Override + public String convertToDatabaseColumn(VoConfigCollectionInfo attribute) { + return Json.pretty(attribute); + // return JsonSerializerUtils.writeValueAsString(attribute); + } + + @Override + public VoConfigCollectionInfo convertToEntityAttribute(String dbData) { + if (dbData == null || dbData.isEmpty()) { + return new VoConfigCollectionInfo(); + } + VoConfigCollectionInfo configCollectionInfo = null; + try { + configCollectionInfo = JsonUtil.toObject(dbData, VoConfigCollectionInfo.class); + } catch (JsonUtil.JsonParseException e) { + logger.error("反序列化出错:"+ dbData, e); + } + return configCollectionInfo; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/ViewAssoRefEleResourceExtractor.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/ViewAssoRefEleResourceExtractor.java new file mode 100644 index 0000000000000000000000000000000000000000..77ad38b3536342dcd4ed11f098f4d5c6880177cf --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/ViewAssoRefEleResourceExtractor.java @@ -0,0 +1,25 @@ + + +package com.inspur.edp.formserver.viewmodel.i18n; + +import com.inspur.edp.cef.designtime.api.element.GspAssociation; +import com.inspur.edp.cef.designtime.api.i18n.context.CefResourcePrefixInfo; +import com.inspur.edp.cef.designtime.api.i18n.context.ICefResourceExtractContext; +import com.inspur.edp.cef.designtime.api.i18n.extractor.AssoResourceExtractor; +import com.inspur.edp.das.commonmodel.i18n.GspAssoRefEleResourceExtractor; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; + +class ViewAssoRefEleResourceExtractor extends GspAssoRefEleResourceExtractor { + + public ViewAssoRefEleResourceExtractor(GspViewModelElement field, ICefResourceExtractContext context, CefResourcePrefixInfo parentResourceInfo) { + super(field, context, parentResourceInfo); + } + + @Override + protected final AssoResourceExtractor getAssoResourceExtractor( + ICefResourceExtractContext context, + CefResourcePrefixInfo fieldPrefixInfo, + GspAssociation asso) { + return new ViewAssoResourceExtractor(asso, getContext(), fieldPrefixInfo); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/ViewAssoResourceExtractor.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/ViewAssoResourceExtractor.java new file mode 100644 index 0000000000000000000000000000000000000000..af8ce28cdb6bd7bbcc2d3ecdd31927d130c3ef04 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/ViewAssoResourceExtractor.java @@ -0,0 +1,27 @@ + + +package com.inspur.edp.formserver.viewmodel.i18n; + +import com.inspur.edp.cef.designtime.api.element.GspAssociation; +import com.inspur.edp.cef.designtime.api.i18n.context.CefResourcePrefixInfo; +import com.inspur.edp.cef.designtime.api.i18n.context.ICefResourceExtractContext; +import com.inspur.edp.das.commonmodel.IGspCommonElement; +import com.inspur.edp.das.commonmodel.i18n.GspAssoRefEleResourceExtractor; +import com.inspur.edp.das.commonmodel.i18n.GspAssoResourceExtractor; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; + +class ViewAssoResourceExtractor extends GspAssoResourceExtractor { + + public ViewAssoResourceExtractor(GspAssociation asso, ICefResourceExtractContext context, CefResourcePrefixInfo parentResourceInfo) { + super(asso, context, parentResourceInfo); + } + + @Override + protected final GspAssoRefEleResourceExtractor getAssoRefElementResourceExtractor( + ICefResourceExtractContext context, + CefResourcePrefixInfo assoPrefixInfo, + IGspCommonElement field) { + return new ViewAssoRefEleResourceExtractor((GspViewModelElement) field, context, assoPrefixInfo); + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/ViewEleResourceExtractor.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/ViewEleResourceExtractor.java new file mode 100644 index 0000000000000000000000000000000000000000..df4c07eefa41e37f8785812f8f74fc19c048e086 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/ViewEleResourceExtractor.java @@ -0,0 +1,30 @@ + + +package com.inspur.edp.formserver.viewmodel.i18n; + +import com.inspur.edp.cef.designtime.api.element.GspAssociation; +import com.inspur.edp.cef.designtime.api.i18n.context.CefResourcePrefixInfo; +import com.inspur.edp.cef.designtime.api.i18n.context.ICefResourceExtractContext; +import com.inspur.edp.das.commonmodel.IGspCommonElement; +import com.inspur.edp.das.commonmodel.i18n.CommonElementResourceExtractor; +import com.inspur.edp.das.commonmodel.i18n.GspAssoResourceExtractor; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; + +class ViewEleResourceExtractor extends CommonElementResourceExtractor { + + public ViewEleResourceExtractor(GspViewModelElement field, ICefResourceExtractContext context, CefResourcePrefixInfo parentResourceInfo) { + super(field, context, parentResourceInfo); + } + + @Override + protected final void extractExtendElementProperties(IGspCommonElement commonField) { + } + + @Override + protected final GspAssoResourceExtractor getGSPAssoResourceExtractor( + ICefResourceExtractContext context, + CefResourcePrefixInfo fieldPrefixInfo, + GspAssociation asso) { + return new ViewAssoResourceExtractor(asso, getContext(), fieldPrefixInfo); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/ViewModelResourceExtractor.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/ViewModelResourceExtractor.java new file mode 100644 index 0000000000000000000000000000000000000000..01ecacff9590a08ea81f7dc2d1615c08a63d8031 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/ViewModelResourceExtractor.java @@ -0,0 +1,37 @@ + + +package com.inspur.edp.formserver.viewmodel.i18n; + +import com.inspur.edp.cef.designtime.api.i18n.context.CefResourcePrefixInfo; +import com.inspur.edp.cef.designtime.api.i18n.context.ICefResourceExtractContext; +import com.inspur.edp.das.commonmodel.IGspCommonModel; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.das.commonmodel.i18n.CommonModelResourceExtractor; +import com.inspur.edp.das.commonmodel.i18n.CommonObjectResourceExtractor; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.formserver.viewmodel.i18n.names.VoResourceDescriptionNames; + +public class ViewModelResourceExtractor extends CommonModelResourceExtractor { + + public ViewModelResourceExtractor(GspViewModel model, ICefResourceExtractContext context) { + super(model, context); + } + + @Override + protected final String getModelDescriptionName() { + return VoResourceDescriptionNames.ViewModel; + } + + @Override + protected final CommonObjectResourceExtractor getObjectResourceExtractor( + ICefResourceExtractContext context, + CefResourcePrefixInfo modelPrefixInfo, + IGspCommonObject obj) { + return new ViewObjResourceExtractor((GspViewObject) obj, context, modelPrefixInfo); + } + + protected final void extractExtendProperties(IGspCommonModel model) { + + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/ViewObjResourceExtractor.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/ViewObjResourceExtractor.java new file mode 100644 index 0000000000000000000000000000000000000000..e4e2305e20f93efc2309e11d52a3266d8394bbd6 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/ViewObjResourceExtractor.java @@ -0,0 +1,39 @@ + + +package com.inspur.edp.formserver.viewmodel.i18n; + +import com.inspur.edp.cef.designtime.api.i18n.context.CefResourcePrefixInfo; +import com.inspur.edp.cef.designtime.api.i18n.context.ICefResourceExtractContext; +import com.inspur.edp.das.commonmodel.IGspCommonElement; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.das.commonmodel.i18n.CommonElementResourceExtractor; +import com.inspur.edp.das.commonmodel.i18n.CommonObjectResourceExtractor; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.formserver.viewmodel.GspViewObject; + +class ViewObjResourceExtractor extends CommonObjectResourceExtractor { + + public ViewObjResourceExtractor(GspViewObject commonDataType, ICefResourceExtractContext context, CefResourcePrefixInfo parentResourceInfo) { + super(commonDataType, context, parentResourceInfo); + } + + @Override + protected final void extractExtendObjProperties(IGspCommonObject dataType) { + } + + @Override + protected final CommonElementResourceExtractor getCommonEleResourceExtractor( + ICefResourceExtractContext context, + CefResourcePrefixInfo objPrefixInfo, + IGspCommonElement field) { + return new ViewEleResourceExtractor((GspViewModelElement) field, context, objPrefixInfo); + } + + @Override + protected final CommonObjectResourceExtractor getObjectResourceExtractor( + ICefResourceExtractContext context, + CefResourcePrefixInfo modelPrefixInfo, + IGspCommonObject obj) { + return new ViewObjResourceExtractor((GspViewObject) obj, context, modelPrefixInfo); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/merger/ViewAssoRefEleResourceMerger.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/merger/ViewAssoRefEleResourceMerger.java new file mode 100644 index 0000000000000000000000000000000000000000..012e23873d90a02b80d56f40043597c3f36395d7 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/merger/ViewAssoRefEleResourceMerger.java @@ -0,0 +1,25 @@ + + +package com.inspur.edp.formserver.viewmodel.i18n.merger; + +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.cef.designtime.api.element.GspAssociation; +import com.inspur.edp.cef.designtime.api.i18n.context.ICefResourceMergeContext; +import com.inspur.edp.cef.designtime.api.i18n.merger.AssoResourceMerger; +import com.inspur.edp.das.commonmodel.i18n.merge.GspAssoRefEleResourceMerger; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; + +public class ViewAssoRefEleResourceMerger extends GspAssoRefEleResourceMerger { + + public ViewAssoRefEleResourceMerger( + GspViewModelElement element, + ICefResourceMergeContext context) { + super(element, context); + } + + @Override + protected AssoResourceMerger getAssoResourceMerger( + ICefResourceMergeContext context, GspAssociation asso) { + return null; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/merger/ViewAssoResourceMerger.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/merger/ViewAssoResourceMerger.java new file mode 100644 index 0000000000000000000000000000000000000000..4ab166c12413be10adfa975030d5e4b488fd4c7a --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/merger/ViewAssoResourceMerger.java @@ -0,0 +1,24 @@ + + +package com.inspur.edp.formserver.viewmodel.i18n.merger; + +import com.inspur.edp.cef.designtime.api.element.GspAssociation; +import com.inspur.edp.cef.designtime.api.i18n.context.ICefResourceMergeContext; +import com.inspur.edp.das.commonmodel.IGspCommonElement; +import com.inspur.edp.das.commonmodel.i18n.merge.GspAssoRefEleResourceMerger; +import com.inspur.edp.das.commonmodel.i18n.merge.GspAssoResourceMerger; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; + +public class ViewAssoResourceMerger extends GspAssoResourceMerger { + + public ViewAssoResourceMerger(GspAssociation asso, + ICefResourceMergeContext context) { + super(asso, context); + } + + @Override + protected GspAssoRefEleResourceMerger getAssoRefElementResourcemerger( + ICefResourceMergeContext context, IGspCommonElement element) { + return new ViewAssoRefEleResourceMerger((GspViewModelElement) element,context); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/merger/ViewEleResourceMerger.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/merger/ViewEleResourceMerger.java new file mode 100644 index 0000000000000000000000000000000000000000..0347c5bc8c18236e0698fe3c6a91db4542221821 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/merger/ViewEleResourceMerger.java @@ -0,0 +1,30 @@ + + +package com.inspur.edp.formserver.viewmodel.i18n.merger; + +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.cef.designtime.api.element.GspAssociation; +import com.inspur.edp.cef.designtime.api.i18n.context.ICefResourceMergeContext; +import com.inspur.edp.das.commonmodel.IGspCommonElement; +import com.inspur.edp.das.commonmodel.i18n.merge.CommonElementResourceMerger; +import com.inspur.edp.das.commonmodel.i18n.merge.GspAssoResourceMerger; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; + +public class ViewEleResourceMerger extends CommonElementResourceMerger { + + public ViewEleResourceMerger(GspViewModelElement element, + ICefResourceMergeContext context) { + super(element, context); + } + + @Override + protected void extractExtendElementProperties(IGspCommonElement element) { + + } + + @Override + protected GspAssoResourceMerger getGSPAssoResourceMerger( + ICefResourceMergeContext context, GspAssociation asso) { + return new ViewAssoResourceMerger(asso,getContext()); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/merger/ViewModelResourceMerger.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/merger/ViewModelResourceMerger.java new file mode 100644 index 0000000000000000000000000000000000000000..c39e3575ebf6740daa058844e4b0a19d185e468a --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/merger/ViewModelResourceMerger.java @@ -0,0 +1,35 @@ + + +package com.inspur.edp.formserver.viewmodel.i18n.merger; + +import com.inspur.edp.cef.designtime.api.i18n.context.ICefResourceMergeContext; +import com.inspur.edp.das.commonmodel.IGspCommonModel; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.das.commonmodel.i18n.merge.CommonModelResourceMerger; +import com.inspur.edp.das.commonmodel.i18n.merge.CommonobjectResourceMerger; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewObject; + +public class ViewModelResourceMerger extends CommonModelResourceMerger { + + public ViewModelResourceMerger(GspViewModel model, + ICefResourceMergeContext context) { + super(model, context); + } + + @Override + protected String getModelDescriptionName() { + return null; + } + + @Override + protected CommonobjectResourceMerger getObjectResourceMerger( + ICefResourceMergeContext context, IGspCommonObject obj) { + return new ViewObjResourceMerger((GspViewObject) obj, context); + } + + @Override + protected void extractExtendProperties(IGspCommonModel model) { + + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/merger/ViewObjResourceMerger.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/merger/ViewObjResourceMerger.java new file mode 100644 index 0000000000000000000000000000000000000000..1fe0f68a282e4eb11a202c268566759d7852a3c7 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/merger/ViewObjResourceMerger.java @@ -0,0 +1,36 @@ + + +package com.inspur.edp.formserver.viewmodel.i18n.merger; + +import com.inspur.edp.cef.designtime.api.i18n.context.ICefResourceMergeContext; +import com.inspur.edp.das.commonmodel.IGspCommonElement; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.das.commonmodel.i18n.merge.CommonElementResourceMerger; +import com.inspur.edp.das.commonmodel.i18n.merge.CommonobjectResourceMerger; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.formserver.viewmodel.GspViewObject; + +public class ViewObjResourceMerger extends CommonobjectResourceMerger { + + public ViewObjResourceMerger(GspViewObject viewObject, + ICefResourceMergeContext context) { + super(viewObject, context); + } + + @Override + protected void extractExtendObjProperties(IGspCommonObject iGspCommonObject) { + + } + + @Override + protected CommonElementResourceMerger getCommonEleResourceMerger( + ICefResourceMergeContext context, IGspCommonElement element) { + return new ViewEleResourceMerger((GspViewModelElement) element, context); + } + + @Override + protected CommonobjectResourceMerger getObjectResourceMerger( + ICefResourceMergeContext context, IGspCommonObject obj) { + return new ViewObjResourceMerger((GspViewObject) obj,context); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/names/VoResourceDescriptionNames.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/names/VoResourceDescriptionNames.java new file mode 100644 index 0000000000000000000000000000000000000000..30b3e3dc11957620ef6f719b83e29ec2e85e5d4a --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/names/VoResourceDescriptionNames.java @@ -0,0 +1,7 @@ + + +package com.inspur.edp.formserver.viewmodel.i18n.names; + +public class VoResourceDescriptionNames { + public static String ViewModel = "视图对象"; +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/names/VoResourceKeyNames.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/names/VoResourceKeyNames.java new file mode 100644 index 0000000000000000000000000000000000000000..a80380cae82d8c625492a9c6afcd432d0ef16aa5 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/i18n/names/VoResourceKeyNames.java @@ -0,0 +1,6 @@ + + +package com.inspur.edp.formserver.viewmodel.i18n.names; + +public class VoResourceKeyNames { +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/ViewModelIncrement.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/ViewModelIncrement.java new file mode 100644 index 0000000000000000000000000000000000000000..1a1c33d8be9e18fb63b1805cbabe40513d0ff791 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/ViewModelIncrement.java @@ -0,0 +1,32 @@ + + +package com.inspur.edp.formserver.viewmodel.increment; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.inspur.edp.cef.designtime.api.element.increment.GspCommonFieldIncrement; +import com.inspur.edp.das.commonmodel.entity.increment.CommonModelIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.HelpConfigIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.action.VoActionIncrement; +import com.inspur.edp.formserver.viewmodel.json.increment.ViewModelIncrementDeserializer; +import com.inspur.edp.formserver.viewmodel.json.increment.ViewModelIncrementSerializer; + +import java.util.HashMap; +import java.util.LinkedHashMap; + +@JsonSerialize(using = ViewModelIncrementSerializer.class) +@JsonDeserialize(using = ViewModelIncrementDeserializer.class) +public class ViewModelIncrement extends CommonModelIncrement { + + private HashMap valueHelpConfigs = new HashMap<>(); + + public HashMap getValueHelpConfigs() { + return this.valueHelpConfigs; + } + + private HashMap actions = new HashMap<>(); + + public HashMap getActions() { + return actions; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/AddedHelpIncrement.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/AddedHelpIncrement.java new file mode 100644 index 0000000000000000000000000000000000000000..bec1bbf1a0465689af733f00e1df17f3d2dabf8a --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/AddedHelpIncrement.java @@ -0,0 +1,24 @@ + + +package com.inspur.edp.formserver.viewmodel.increment.entity; + +import com.inspur.edp.cef.designtime.api.increment.AddedIncrement; +import com.inspur.edp.cef.designtime.api.increment.IncrementType; +import com.inspur.edp.formserver.viewmodel.common.ValueHelpConfig; + +public class AddedHelpIncrement extends HelpConfigIncrement implements AddedIncrement { + private ValueHelpConfig helpConfig; + + @Override + public IncrementType getIncrementType() { + return IncrementType.Added; + } + + public ValueHelpConfig getHelpConfig() { + return helpConfig; + } + + public void setHelpConfig(ValueHelpConfig helpConfig) { + this.helpConfig = helpConfig; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/DeleteHelpIncrement.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/DeleteHelpIncrement.java new file mode 100644 index 0000000000000000000000000000000000000000..213b6e8940d24a1ad06f28d2425f631b4e6dc233 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/DeleteHelpIncrement.java @@ -0,0 +1,22 @@ + + +package com.inspur.edp.formserver.viewmodel.increment.entity; + +import com.inspur.edp.cef.designtime.api.increment.DeletedIncrement; +import com.inspur.edp.cef.designtime.api.increment.IncrementType; + +public class DeleteHelpIncrement extends HelpConfigIncrement implements DeletedIncrement { + + public DeleteHelpIncrement(String elementId){ + setElementId(elementId); + } + @Override + public IncrementType getIncrementType() { + return IncrementType.Deleted; + } + + @Override + public String getDeleteId() { + return getElementId(); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/HelpConfigIncrement.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/HelpConfigIncrement.java new file mode 100644 index 0000000000000000000000000000000000000000..54d9129a6f13dda7d95985b29fbeb6aeee945801 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/HelpConfigIncrement.java @@ -0,0 +1,18 @@ + + +package com.inspur.edp.formserver.viewmodel.increment.entity; + +import com.inspur.edp.cef.designtime.api.increment.AbstractIncrement; + +public abstract class HelpConfigIncrement extends AbstractIncrement { + + private String elementId; + + public String getElementId() { + return elementId; + } + + public void setElementId(String elementId) { + this.elementId = elementId; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/ModifyHelpIncrement.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/ModifyHelpIncrement.java new file mode 100644 index 0000000000000000000000000000000000000000..14837a5644088023775efcb6372e2a46f5fd0aa3 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/ModifyHelpIncrement.java @@ -0,0 +1,37 @@ + + +package com.inspur.edp.formserver.viewmodel.increment.entity; + +import com.inspur.edp.cef.designtime.api.increment.AddedIncrement; +import com.inspur.edp.cef.designtime.api.increment.IncrementType; +import com.inspur.edp.cef.designtime.api.increment.ModifyIncrement; +import com.inspur.edp.cef.designtime.api.increment.property.PropertyIncrement; +import com.inspur.edp.formserver.viewmodel.common.ValueHelpConfig; + +import java.util.HashMap; + +public class ModifyHelpIncrement extends HelpConfigIncrement implements ModifyIncrement { + + private HashMap changeProperties; + + @Override + public IncrementType getIncrementType() { + return IncrementType.Modify; + } + + @Override + public HashMap getChangeProperties() { + return null; + } + + private ValueHelpConfig helpConfig; + + public ValueHelpConfig getHelpConfig() { + return helpConfig; + } + + public void setHelpConfig(ValueHelpConfig helpConfig) { + this.helpConfig = helpConfig; + setElementId(helpConfig.getElementId()); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/action/AddedVoActionIncrement.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/action/AddedVoActionIncrement.java new file mode 100644 index 0000000000000000000000000000000000000000..d3bb802ba180db7aa711d46b8e43b4779c65c9b3 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/action/AddedVoActionIncrement.java @@ -0,0 +1,24 @@ + + +package com.inspur.edp.formserver.viewmodel.increment.entity.action; + +import com.inspur.edp.cef.designtime.api.increment.IncrementType; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; + +public class AddedVoActionIncrement extends VoActionIncrement { + + private ViewModelAction action; + + @Override + public IncrementType getIncrementType() { + return IncrementType.Added; + } + + public ViewModelAction getAction() { + return action; + } + + public void setAction(ViewModelAction action) { + this.action = action; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/action/DeletedVoActionIncrement.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/action/DeletedVoActionIncrement.java new file mode 100644 index 0000000000000000000000000000000000000000..23f8ea5cfdf37871171161242166ce1d1538c4f6 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/action/DeletedVoActionIncrement.java @@ -0,0 +1,17 @@ + + +package com.inspur.edp.formserver.viewmodel.increment.entity.action; + +import com.inspur.edp.cef.designtime.api.increment.IncrementType; + +public class DeletedVoActionIncrement extends VoActionIncrement { + + public DeletedVoActionIncrement(String actionId){ + setActionId(actionId); + } + + @Override + public IncrementType getIncrementType() { + return IncrementType.Deleted; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/action/ModifyVoActionIncrement.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/action/ModifyVoActionIncrement.java new file mode 100644 index 0000000000000000000000000000000000000000..0dd78459740fbf4d9a262dc17657ec48fc68bd7e --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/action/ModifyVoActionIncrement.java @@ -0,0 +1,24 @@ + + +package com.inspur.edp.formserver.viewmodel.increment.entity.action; + +import com.inspur.edp.cef.designtime.api.increment.IncrementType; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; + +public class ModifyVoActionIncrement extends VoActionIncrement { + + private ViewModelAction action; + + @Override + public IncrementType getIncrementType() { + return IncrementType.Modify; + } + + public ViewModelAction getAction() { + return action; + } + + public void setAction(ViewModelAction action) { + this.action = action; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/action/VoActionIncrement.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/action/VoActionIncrement.java new file mode 100644 index 0000000000000000000000000000000000000000..e72233039bd3510b9831759de62efaf57d768657 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/entity/action/VoActionIncrement.java @@ -0,0 +1,18 @@ + + +package com.inspur.edp.formserver.viewmodel.increment.entity.action; + +import com.inspur.edp.cef.designtime.api.increment.AbstractIncrement; + +public abstract class VoActionIncrement extends AbstractIncrement { + + private String actionId; + + public String getActionId() { + return actionId; + } + + public void setActionId(String actionId) { + this.actionId = actionId; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/extract/AddedHelpExtractor.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/extract/AddedHelpExtractor.java new file mode 100644 index 0000000000000000000000000000000000000000..706827596fd65fc5b7cbf1b07f2b09d51f8ed221 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/extract/AddedHelpExtractor.java @@ -0,0 +1,22 @@ + + +package com.inspur.edp.formserver.viewmodel.increment.extract; + +import com.inspur.edp.formserver.viewmodel.common.ValueHelpConfig; +import com.inspur.edp.formserver.viewmodel.increment.entity.AddedHelpIncrement; + +public class AddedHelpExtractor { + + public AddedHelpExtractor() { + } + + public AddedHelpIncrement extract(ValueHelpConfig helpConfig) { + AddedHelpIncrement addedEntityIncrement = this.createIncrement(); + addedEntityIncrement.setHelpConfig(helpConfig); + return addedEntityIncrement; + } + + protected AddedHelpIncrement createIncrement() { + return new AddedHelpIncrement(); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/extract/HelpIncrementExtractor.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/extract/HelpIncrementExtractor.java new file mode 100644 index 0000000000000000000000000000000000000000..99a415878dbcf4a00e63262cbad3863106af51b7 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/extract/HelpIncrementExtractor.java @@ -0,0 +1,37 @@ + + +package com.inspur.edp.formserver.viewmodel.increment.extract; + +import com.inspur.edp.cef.designtime.api.increment.extractor.AbstractIncrementExtractor; +import com.inspur.edp.das.commonmodel.controlrule.CmControlRule; +import com.inspur.edp.das.commonmodel.controlruledef.entity.CmControlRuleDef; +import com.inspur.edp.formserver.viewmodel.common.ValueHelpConfig; +import com.inspur.edp.formserver.viewmodel.increment.entity.HelpConfigIncrement; + +public class HelpIncrementExtractor extends AbstractIncrementExtractor { + public HelpIncrementExtractor() { + } + + public HelpConfigIncrement extractorIncrement(ValueHelpConfig oldHelpConfig, ValueHelpConfig newHelpConfig, CmControlRule rule, CmControlRuleDef def) { + if (oldHelpConfig == null && newHelpConfig == null) { + return null; + } else if (oldHelpConfig == null && newHelpConfig != null) { + return this.getAddedHelpExtractor().extract(newHelpConfig); + } else { + return null; +// return (CommonEntityIncrement)(oldHelpConfig != null && newHelpConfig == null ? this.getDeletedEntityExtractor().extract(oldHelpConfig) : this.getModifyEntityExtractor().extract(oldHelpConfig, newHelpConfig, rule, def)); + } + } + + protected AddedHelpExtractor getAddedHelpExtractor() { + return new AddedHelpExtractor(); + } + +// protected DeletedEntityExtractor getDeletedEntityExtractor() { +// return new DeletedEntityExtractor(); +// } + +// protected ModifyEntityExtractor getModifyEntityExtractor() { +// return new ModifyEntityExtractor(); +// } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/extract/ViewModelExtractor.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/extract/ViewModelExtractor.java new file mode 100644 index 0000000000000000000000000000000000000000..40369370ccf16d0076066e4f8e8eae7e05018a53 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/extract/ViewModelExtractor.java @@ -0,0 +1,116 @@ + + +package com.inspur.edp.formserver.viewmodel.increment.extract; + +import com.inspur.edp.bef.bizentity.GspBusinessEntity; +import com.inspur.edp.das.commonmodel.controlrule.CmControlRule; +import com.inspur.edp.das.commonmodel.controlruledef.entity.CmControlRuleDef; +import com.inspur.edp.das.commonmodel.entity.GspCommonModel; +import com.inspur.edp.das.commonmodel.entity.increment.CommonModelIncrement; +import com.inspur.edp.das.commonmodel.entity.increment.extract.CommonModelExtractor; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.collection.VMActionCollection; +import com.inspur.edp.formserver.viewmodel.increment.ViewModelIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.ModifyHelpIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.action.AddedVoActionIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.action.DeletedVoActionIncrement; +import com.inspur.edp.formserver.viewmodel.increment.extract.action.ActionIncrementExtractor; +import lombok.var; + +import javax.swing.text.StyledEditorKit; + +public class ViewModelExtractor extends CommonModelExtractor { + + public ViewModelExtractor(){ + super(); + } + + public ViewModelExtractor(boolean includeAll){ + super(includeAll); + } + @Override + protected void extractExtendInfo(CommonModelIncrement increment, GspCommonModel oldModel, GspCommonModel newModel, CmControlRule rule, CmControlRuleDef def) { + extractViewModelInfo(increment, (GspViewModel) oldModel, (GspViewModel) newModel, rule, def); + } + + private void extractViewModelInfo(CommonModelIncrement increment, GspViewModel oldVo, GspViewModel newVo, CmControlRule rule, CmControlRuleDef def) { + extractHelpConfigs((ViewModelIncrement) increment, oldVo, newVo, rule, def); + extractVoActions((ViewModelIncrement) increment, oldVo, newVo, rule, def); + } + + protected CommonModelIncrement createCommonModelIncrement() { + return new ViewModelIncrement(); + } + + private void extractHelpConfigs(ViewModelIncrement increment, GspViewModel oldVo, GspViewModel newVo, CmControlRule rule, CmControlRuleDef def) { + var newHelpConfigs = newVo.getValueHelpConfigs(); + var oldHelpConfigs = oldVo.getValueHelpConfigs(); + if (newHelpConfigs.size() < 1 && oldHelpConfigs.size() < 1) + return; + var extractor = new HelpIncrementExtractor(); + + if (newHelpConfigs.size() < 1) { + //TODO 暂不支持删除帮助 +// extractAllDeleteIncrement(increment, oldObj, extractor, rule, def); + return; + } + +// ArrayList updateObjs = new ArrayList<>(); + + for (var newHelpConfig : newHelpConfigs) { + var oldHelpConfig = oldHelpConfigs.getItem(newHelpConfig.getElementId()); + if (oldHelpConfig != null) { + if(!oldHelpConfig.getHelperId().equals(newHelpConfig.getHelperId())){ + ModifyHelpIncrement modifyIncrement = new ModifyHelpIncrement(); + modifyIncrement.setHelpConfig(newHelpConfig); + increment.getValueHelpConfigs().put(newHelpConfig.getElementId(), modifyIncrement); + + }else{ + //todo 帮助不变,只修改过滤或者帮助前事件 + } + continue; + } + + var helpConfigIncrement = extractor.extractorIncrement(oldHelpConfig, newHelpConfig, rule, def); + if (helpConfigIncrement == null) + continue; + increment.getValueHelpConfigs().put(newHelpConfig.getElementId(), helpConfigIncrement); + } + +// for (var oldChildObj : oldHelpConfigs) { +// if (updateObjs.contains(oldChildObj.getID())) +// continue; +// CmEntityControlRule childObjRule = (CmEntityControlRule)rule.getChildRules().get(CommonModelNames.ChildObject).get(oldChildObj.getID()); +// var childIncrement = extractor.extractorIncrement((GspCommonDataType) oldChildObj, null, childObjRule, def); +// increment.getChildEntitis().put(oldChildObj.getID(), childIncrement); +// } + + } + + //region merge Action + private void extractVoActions(ViewModelIncrement increment, GspViewModel oldVo, GspViewModel newVo, CmControlRule rule, CmControlRuleDef def){ + + VMActionCollection oldActions = oldVo.getActions(); + VMActionCollection newActions = newVo.getActions(); + if(oldActions.size() < 1 && newActions.size()< 1) + return; + + if (newActions.size() < 1) { + //TODO 暂不支持删除动作 +// extractAllDeleteIncrement(increment, oldObj, extractor, rule, def); + return; + } + var extractor = new ActionIncrementExtractor(); + for(ViewModelAction action : newActions) { + ViewModelAction oldAction = oldActions.getItem(action.getID()); + + var actionIncrement = extractor.extractorIncrement(oldAction, action, rule,def); + if (actionIncrement == null) + continue; + increment.getActions().put(action.getID(), actionIncrement); + } + } + + //endregion +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/extract/action/ActionIncrementExtractor.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/extract/action/ActionIncrementExtractor.java new file mode 100644 index 0000000000000000000000000000000000000000..a4c3ce0f1f527a6aa361d6ee21e5d81b5f2c4174 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/extract/action/ActionIncrementExtractor.java @@ -0,0 +1,35 @@ + + +package com.inspur.edp.formserver.viewmodel.increment.extract.action; + +import com.inspur.edp.cef.designtime.api.increment.extractor.AbstractIncrementExtractor; +import com.inspur.edp.das.commonmodel.controlrule.CmControlRule; +import com.inspur.edp.das.commonmodel.controlruledef.entity.CmControlRuleDef; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.increment.entity.action.ModifyVoActionIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.action.VoActionIncrement; + +public class ActionIncrementExtractor extends AbstractIncrementExtractor { + + public VoActionIncrement extractorIncrement(ViewModelAction oldAction, ViewModelAction newAction, CmControlRule rule, CmControlRuleDef def) { + + if (oldAction == null && newAction == null) { + return null; + } else if (oldAction == null) { + return this.getAddedActionExtractor().extract(newAction); + } else if (newAction == null) { + return null; +// return (CommonEntityIncrement)(oldHelpConfig != null && newAction == null ? this.getDeletedEntityExtractor().extract(oldHelpConfig) : this.getModifyEntityExtractor().extract(oldHelpConfig, newAction, rule, def)); + } else { + ModifyVoActionIncrement increment = new ModifyVoActionIncrement(); + increment.setActionId(newAction.getID()); + increment.setAction(newAction); + return increment; + } + } + + protected AddedActionExtractor getAddedActionExtractor() { + return new AddedActionExtractor(); + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/extract/action/AddedActionExtractor.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/extract/action/AddedActionExtractor.java new file mode 100644 index 0000000000000000000000000000000000000000..8a4da417fabb14f0c3ebf4395e95e5dc6318a48f --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/extract/action/AddedActionExtractor.java @@ -0,0 +1,22 @@ + + +package com.inspur.edp.formserver.viewmodel.increment.extract.action; + +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.increment.entity.action.AddedVoActionIncrement; + +public class AddedActionExtractor { + + public AddedActionExtractor() { + } + + public AddedVoActionIncrement extract(ViewModelAction voAction) { + AddedVoActionIncrement addedEntityIncrement = this.createIncrement(); + addedEntityIncrement.setAction(voAction); + return addedEntityIncrement; + } + + protected AddedVoActionIncrement createIncrement() { + return new AddedVoActionIncrement(); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/merger/ViewModelMerger.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/merger/ViewModelMerger.java new file mode 100644 index 0000000000000000000000000000000000000000..1f76e72b8591dac10e773bf1bee60a18edfe998c --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/increment/merger/ViewModelMerger.java @@ -0,0 +1,141 @@ + + +package com.inspur.edp.formserver.viewmodel.increment.merger; + +import com.inspur.edp.das.commonmodel.controlrule.CmControlRule; +import com.inspur.edp.das.commonmodel.controlruledef.entity.CmControlRuleDef; +import com.inspur.edp.das.commonmodel.entity.GspCommonModel; +import com.inspur.edp.das.commonmodel.entity.increment.CommonModelIncrement; +import com.inspur.edp.das.commonmodel.entity.increment.merger.CommonModelMerger; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.common.ValueHelpConfig; +import com.inspur.edp.formserver.viewmodel.increment.ViewModelIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.AddedHelpIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.HelpConfigIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.ModifyHelpIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.action.AddedVoActionIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.action.ModifyVoActionIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.action.VoActionIncrement; +import lombok.var; + +import java.util.HashMap; + +public class ViewModelMerger extends CommonModelMerger { + + public ViewModelMerger(){ + super(); + } + + public ViewModelMerger(boolean includeAll){ + super(includeAll); + } + @Override + protected void mergeExtendInfo(GspCommonModel extendModel, CommonModelIncrement extendIncrement, CommonModelIncrement baseIncrement, CmControlRule rule, CmControlRuleDef def) { + mergeHelp((GspViewModel) extendModel, (ViewModelIncrement) extendIncrement, (ViewModelIncrement) baseIncrement, rule, def); + mergeAction((GspViewModel) extendModel, (ViewModelIncrement) extendIncrement, (ViewModelIncrement) baseIncrement, rule, def); + } + + //region merge help + private void mergeHelp(GspViewModel extendModel, ViewModelIncrement extendIncrement, ViewModelIncrement baseIncrement, CmControlRule rule, CmControlRuleDef def) { + var extendHelpConfigs = extendIncrement.getValueHelpConfigs(); + var baseHelpConfigs = baseIncrement.getValueHelpConfigs(); + if (extendHelpConfigs.size() < 1 && baseHelpConfigs.size() < 1) + return; + + + for (var helpConfigPair : baseHelpConfigs.entrySet()) { + HelpConfigIncrement helpConfigIncrement = helpConfigPair.getValue(); + switch (helpConfigIncrement.getIncrementType()) { + case Added: + mergeAddedHelp(extendModel, (AddedHelpIncrement) helpConfigIncrement, extendHelpConfigs, rule, def); + break; + case Deleted: + extendModel.getValueHelpConfigs().remove(helpConfigIncrement); + break; + case Modify: + dealModifyHelp(extendModel, (ModifyHelpIncrement) helpConfigIncrement, extendHelpConfigs, rule, def); + } + + } + } + + private void mergeAddedHelp( + GspViewModel extendModel, + AddedHelpIncrement helpConfigIncrement, + HashMap extendHelpConfigs, + CmControlRule rule, + CmControlRuleDef def) { + +// if (isAllowAddChildObj(rule, def)) + extendModel.getValueHelpConfigs().add(helpConfigIncrement.getHelpConfig()); + } + + private void dealModifyHelp( + GspViewModel extendModel, + ModifyHelpIncrement helpConfigIncrement, + HashMap extendIncrement, + CmControlRule rule, + CmControlRuleDef def) { + ValueHelpConfig config = helpConfigIncrement.getHelpConfig(); + if(extendModel.getValueHelpConfigs().contains(config)){ + String newHelpId=config.getHelperId(); + String oldHelpId=extendModel.getValueHelpConfigs().getItem(config.getElementId()).getHelperId(); + //todo 帮助数据源变化 + if(!newHelpId.equals(oldHelpId)){ + extendModel.getValueHelpConfigs().remove(config); + extendModel.getValueHelpConfigs().add(config); + }else { + //todo 帮助不变时,暂时不处理,需要后续讨论 + } + } + } + //endregion + + + //region merge actions + private void mergeAction(GspViewModel extendModel, ViewModelIncrement extendIncrement, ViewModelIncrement baseIncrement, CmControlRule rule, CmControlRuleDef def) { + var extendActions = extendIncrement.getActions(); + var baseActions = baseIncrement.getActions(); + if (extendActions.size() < 1 && baseActions.size() < 1) + return; + + for (var actionPair : baseActions.entrySet()) { + VoActionIncrement actionIncrement = actionPair.getValue(); + switch (actionIncrement.getIncrementType()) { + case Added: + mergeAddedAction(extendModel, (AddedVoActionIncrement) actionIncrement, extendActions, rule, def); + break; + case Deleted: + extendModel.getActions().removeById(actionIncrement.getActionId()); + break; + case Modify: + dealModifyAction(extendModel, (ModifyVoActionIncrement)actionIncrement, extendActions, rule, def); + } + + } + } + + + private void mergeAddedAction( + GspViewModel extendModel, + AddedVoActionIncrement actionIncrement, + HashMap extendHelpConfigs, + CmControlRule rule, + CmControlRuleDef def) { + +// if (isAllowAddChildObj(rule, def)) + extendModel.getActions().add(actionIncrement.getAction()); + } + + private void dealModifyAction( + GspViewModel extendModel, + ModifyVoActionIncrement baseActionIncrement, + HashMap extendIncrement, + CmControlRule rule, + CmControlRuleDef def) { + extendModel.getActions().removeById(baseActionIncrement.getActionId()); + extendModel.getActions().add(baseActionIncrement.getAction()); + } + //endregion +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/ExtendPropertiesDeserializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/ExtendPropertiesDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..75001115a3f72e729536422c3fa41ebed41baf68 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/ExtendPropertiesDeserializer.java @@ -0,0 +1,33 @@ + + +package com.inspur.edp.formserver.viewmodel.json; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; + +import java.util.HashMap; +/** + * The Josn Deserializer Of View Model Extend Properties + * + * @ClassName: ExtendPropertiesDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ExtendPropertiesDeserializer extends JsonDeserializer> { + @Override + public HashMap deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) { + HashMap map = new HashMap<>(); + SerializerUtils.readStartObject(jsonParser); + while (jsonParser.getCurrentToken() == JsonToken.FIELD_NAME) { + String key = SerializerUtils.readPropertyName(jsonParser); + String value = SerializerUtils.readPropertyValue_String(jsonParser); + map.put(key, value); + } + SerializerUtils.readEndObject(jsonParser); + return map; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/ViewModelJsonConst.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/ViewModelJsonConst.java new file mode 100644 index 0000000000000000000000000000000000000000..aedc600407a1ba65276a7c955f6803c8be452b5a --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/ViewModelJsonConst.java @@ -0,0 +1,148 @@ + + +package com.inspur.edp.formserver.viewmodel.json; +/** + * The Serializer Property Names Of + * + * @ClassName: BizOperationDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ViewModelJsonConst { + //视图对象 + public static final String Category = "Category"; + public static final String SourceEntity = "SourceEntity"; + public static final String DataLockType = "DataLockType"; + public static final String ExtendType = "ExtendType"; + public static final String DependentEntityId = "DependentEntityId"; + public static final String DependentEntityPackageName = "DependentEntityPackageName"; + public static final String BizMgrActions = "BizMgrActions"; + public static final String ComponentAssemblyName = "ComponentAssemblyName"; + public static final String AssemblyName = "AssemblyName"; + public static final String Actions = "Actions"; + public static final String Mapping = "Mapping"; + public static final String ValueHelpConfigs = "ValueHelpConfigs"; + public static final String Description = "Description"; + public static final String EnableStdTimeFormat = "EnableStdTimeFormat"; + public static final String ExtendProperties = "ExtendProperties"; + public static final String ConvertMsg = "ConvertMsg"; + // vo扩展操作 + public static final String DataExtendInfo = "DataExtendInfo"; + public static final String TemplateVoServiceUnit = "TemplateVoServiceUnit"; + public static final String TemplateVoId = "TemplateVoId"; + public static final String TemplateVoPkgName = "TemplateVoPkgName"; + public static final String TemplateVoInfo = "TemplateVoInfo"; + + public static final String DataMappingActions = "DataMappingActions"; + public static final String BeforeQueryActions = "BeforeQueryActions"; + public static final String QueryActions = "QueryActions"; + public static final String AfterQueryActions = "AfterQueryActions"; + public static final String BeforeRetrieveActions = "BeforeRetrieveActions"; + + public static final String RetrieveActions = "RetrieveActions"; + public static final String AfterRetrieveActions = "AfterRetrieveActions"; + public static final String BeforeModifyActions = "BeforeModifyActions"; + public static final String ModifyActions = "ModifyActions"; + public static final String AfterModifyActions = "AfterModifyActions"; + + public static final String ChangesetMappingActions = "ChangesetMappingActions"; + public static final String BeforeCreateActions = "BeforeCreateActions"; + public static final String CreateActions = "CreateActions"; + public static final String AfterCreateActions = "AfterCreateActions"; + public static final String BeforeDeleteActions = "BeforeDeleteActions"; + + public static final String DeleteActions = "DeleteActions"; + public static final String AfterDeleteActions = "AfterDeleteActions"; + public static final String BeforeSaveActions = "BeforeSaveActions"; + public static final String DataReversalMappingActions = "DataReversalMappingActions"; + public static final String AfterSaveActions = "AfterSaveActions"; + + public static final String BeforeMultiDeleteActions="BeforeMultiDeleteActions"; + public static final String MultiDeleteActions="MultiDeleteActions"; + public static final String AfterMultiDeleteActions="AfterMultiDeleteActions"; + + public static final String ChangesetReversalMappingActions = "ChangesetReversalMappingActions"; + + //视图对象对象 + public static final String IsBeckendOnly = "IsBeckendOnly"; + public static final String IsRootNode = "IsRootNode"; + public static final String PrimaryKey = "PrimaryKey"; + public static final String BelongModel = "BelongModel"; + public static final String ParentObject = "ParentObject"; + public static final String ParentObjectID = "ParentObjectID"; + public static final String HasChildNode = "HasChildNode"; + public static final String DefaultPageSize = "DefaultPageSize"; + public static final String OrderbyCondition="OrderbyCondition"; + public static final String FilterCondition="FilterCondition"; + + //视图对象字段 + //internal const string IsReadOnly = "IsReadOnly"; + public static final String ShowInFilter = "ShowInFilter"; + public static final String ShowInSort = "ShowInSort"; + public static final String ImmediateSubmission = "ImmediateSubmission"; + public static final String IsVirtualViewElement = "IsVirtualViewElement"; + public static final String EnableMultiLanguageInput = "EnableMultiLanguageInput"; + + //ValueHelpConfig + public static final String FilterExpression = "FilterExpression"; + public static final String HelperId = "HelperID"; + public static final String ElementId = "ElementID"; + public static final String HelpExtend = "HelpExtend"; + public static final String BeforeHelp = "BeforeHelp"; + public static final String EnableCustomHelpAuth = "EnableCustomHelpAuth"; + + //ViewModelMapping + public static final String MapType = "MapType"; + public static final String TargetMetadataId = "TargetMetadataId"; + public static final String TargetMetadataPkgName = "TargetMetadataPkgName"; + public static final String TargetObjId = "TargetObjId"; + public static final String TargetObjectId = "TargetObjectId"; + public static final String TargetElementId = "TargetElementId"; + //internal const string TargetMetadataType = "TargetMetadataType"; + public static final String SourceType = "SourceType"; + public static final String IndexVoId = "IndexVoId"; + + //VMAction + public static final String Type = "Type"; + public static final String ParameterCollection = "ParameterCollection"; + public static final String ReturnValue = "ReturnValue"; + + //MappedBizAction + //MappedCdpAction + //MappedCdpActionBase + public static final String ComponentEntityId = "ComponentEntityId"; + public static final String ComponentPkgName = "ComponentPkgName"; + public static final String ComponentName = "ComponentName"; + public static final String IsGenerateComponent = "IsGenerateComponent"; + public static final String IsAutoSave = "IsAutoSave"; + public static final String BelongElement = "BelongElement"; + + //paras + public static final String ParamCode = "ParamCode"; + public static final String ParamName = "ParamName"; + public static final String ParameterType = "ParameterType"; + public static final String Assembly = "Assembly"; + public static final String ClassName = "ClassName"; + public static final String JavaClassName = "JavaClassName"; + public static final String Mode = "Mode"; + public static final String ParamDescription = "ParamDescription"; + public static final String HelpId = "HelpId"; + public static final String VMHelpConfig = "VMHelpConfig"; + // internal const string VMActionCollection = "VMActionCollection"; + public static final String HelpActions = "HelpActions"; + public static final String CollectionParameterType = "CollectionParameterType"; + public static final String ParamActualValue = "ParamActualValue"; + + //Increment + public static final String HelpIncrements = "HelpIncrements"; + public static final String HelpIncrement = "HelpIncrement"; + public static final String AddedAction = "AddedAction"; + public static final String ModifyAction = "ModifyAction"; + public static final String DelAction = "DelAction"; + public static final String Action = "Action"; + + public static final String Source="Source"; + public static final String IsGenFilterConvertor="IsGenFilterConvertor"; + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/element/ViewElementDeserializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/element/ViewElementDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..0a554f6e84f1ba661da965c289dcbeead722f24a --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/element/ViewElementDeserializer.java @@ -0,0 +1,130 @@ + + +package com.inspur.edp.formserver.viewmodel.json.element; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; +import com.inspur.edp.das.commonmodel.entity.GspCommonElement; +import com.inspur.edp.formserver.viewmodel.common.MappingType; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementSourceType; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoObjectSourceType; +import com.inspur.edp.formserver.viewmodel.json.ExtendPropertiesDeserializer; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; +import com.inspur.edp.formserver.viewmodel.json.mapping.GspVoElementMappingDeserializer; +import com.inspur.edp.formserver.viewmodel.json.operation.VmActionCollectionDeserializer; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.das.commonmodel.json.element.CmElementDeserializer; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.formserver.viewmodel.collection.VMActionCollection; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementMapping; +import com.inspur.edp.formserver.viewmodel.common.VMHelpConfig; + +import java.util.HashMap; + +/** + * The Josn Deserializer Of View Model Element + * + * @ClassName: ViewElementDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ViewElementDeserializer extends CmElementDeserializer { + @Override + protected GspCommonElement createElement() { + return new GspViewModelElement(); + } + + @Override + protected void beforeCMElementDeserializer(GspCommonElement item){ + GspViewModelElement field = (GspViewModelElement) item; + field.setIsBeckendOnly(false); + field.setImmediateSubmission(false); + field.setIsVirtualViewElement(false); + field.setExtendProperties(new HashMap<>()); + VMHelpConfig fig = new VMHelpConfig(); + fig.setHelpId(""); + field.setVMHelpConfig(fig); + field.setHelpActions(new VMActionCollection()); + } + + @Override + protected boolean readExtendElementProperty(GspCommonElement item, String propName, JsonParser jsonParser) { + boolean result = true; + GspViewModelElement field = (GspViewModelElement) item; + switch (propName) { + case ViewModelJsonConst.IsBeckendOnly: + field.setIsBeckendOnly(SerializerUtils.readPropertyValue_boolean(jsonParser)); + break; + case ViewModelJsonConst.Mapping: + readMapping(jsonParser, field); + break; + case ViewModelJsonConst.HelpActions: + readHelpActions(jsonParser, field); + break; + case ViewModelJsonConst.ImmediateSubmission: + field.setImmediateSubmission(SerializerUtils.readPropertyValue_boolean(jsonParser)); + break; + case ViewModelJsonConst.IsVirtualViewElement: + field.setIsVirtualViewElement(SerializerUtils.readPropertyValue_boolean(jsonParser)); + break; + case ViewModelJsonConst.EnableMultiLanguageInput: + field.setEnableMultiLanguageInput(SerializerUtils.readPropertyValue_boolean(jsonParser)); + break; + case ViewModelJsonConst.ShowInFilter: + field.setShowInFilter(SerializerUtils.readPropertyValue_boolean(jsonParser)); + break; + case ViewModelJsonConst.ShowInSort: + field.setShowInSort(SerializerUtils.readPropertyValue_boolean(jsonParser)); + break; + case ViewModelJsonConst.ExtendProperties: + readExtendProperties(jsonParser, field); + break; + case ViewModelJsonConst.VMHelpConfig: + readVMHelpConfig(jsonParser, field); + break; + default: + result = false; + break; + } + return result; + } + + private void readHelpActions(JsonParser jsonParser, GspViewModelElement field) { + VmActionCollectionDeserializer deserializer = new VmActionCollectionDeserializer(); + VMActionCollection collection = deserializer.deserialize(jsonParser, null); + field.setHelpActions(collection); + } + + private void readMapping(JsonParser jsonParser, GspViewModelElement field) { + GspVoElementMappingDeserializer deserializer = new GspVoElementMappingDeserializer(); + GspVoElementMapping mapping = (GspVoElementMapping) deserializer.deserialize(jsonParser, null); + field.setMapping(mapping); + } + + private void readExtendProperties(JsonParser jsonParser, GspViewModelElement field) { + ExtendPropertiesDeserializer deserializer = new ExtendPropertiesDeserializer(); + field.setExtendProperties(deserializer.deserialize(jsonParser, null)); + } + + private void readVMHelpConfig(JsonParser jsonParser, GspViewModelElement field) { + VMHelpConfig config = new VMHelpConfig(); + SerializerUtils.readStartObject(jsonParser); + if (jsonParser.getCurrentToken() == JsonToken.FIELD_NAME) { + while (jsonParser.getCurrentToken() == JsonToken.FIELD_NAME) { + readVMHelpConfig(jsonParser, config); + } + } + SerializerUtils.readEndObject(jsonParser); + field.setVMHelpConfig(config); + } + + private void readVMHelpConfig(JsonParser jsonParser, VMHelpConfig config) { + String propName = SerializerUtils.readPropertyName(jsonParser); + switch (propName) { + case ViewModelJsonConst.HelpId: + config.setHelpId(SerializerUtils.readPropertyValue_String(jsonParser)); + break; + } + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/element/ViewElementSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/element/ViewElementSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..25db41f910c13954001953fb8dd821699751fb30 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/element/ViewElementSerializer.java @@ -0,0 +1,97 @@ + + +package com.inspur.edp.formserver.viewmodel.json.element; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.das.commonmodel.IGspCommonElement; +import com.inspur.edp.das.commonmodel.json.element.CmElementSerializer; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; +import com.inspur.edp.formserver.viewmodel.json.mapping.GspVoElementMappingSerializer; +import com.inspur.edp.formserver.viewmodel.json.operation.VmActionCollectionSerializer; +import lombok.var; +/** + * The Josn Serializer Of View Model Elemnet + * + * @ClassName: ViewElementSerializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ViewElementSerializer extends CmElementSerializer { + + public ViewElementSerializer(){} + public ViewElementSerializer(boolean full){ + super(full); + isFull = full; + } + @Override + protected void writeExtendElementBaseProperty(JsonGenerator jsonGenerator, IGspCommonElement iGspCommonElement) { + + } + + @Override + protected void writeExtendElementSelfProperty(JsonGenerator writer, IGspCommonElement commonElement) { + GspViewModelElement bizElement = (GspViewModelElement) commonElement; + if(isFull||bizElement.getIsBeckendOnly()) + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.IsBeckendOnly, bizElement.getIsBeckendOnly()); + if(isFull||bizElement.getImmediateSubmission()) + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.ImmediateSubmission, bizElement.getImmediateSubmission()); + if(isFull||bizElement.getIsVirtualViewElement()) + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.IsVirtualViewElement, bizElement.getIsVirtualViewElement()); + if(isFull||bizElement.isEnableMultiLanguageInput()) + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.EnableMultiLanguageInput, bizElement.isEnableMultiLanguageInput()); + if(isFull||!bizElement.getShowInFilter()) + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.ShowInFilter, bizElement.getShowInFilter()); + if(isFull||!bizElement.getShowInSort()) + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.ShowInSort, bizElement.getShowInSort()); + writeMapping(writer, bizElement); + writeVMActionCollection(writer, bizElement); + writeVMHelpConfig(writer, bizElement); + writeExtendProperties(writer, bizElement); + } + + private void writeMapping(JsonGenerator writer, GspViewModelElement ve) { + if (ve.getMapping() == null) + return; + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.Mapping); + GspVoElementMappingSerializer convertor = new GspVoElementMappingSerializer(isFull); + convertor.serialize(ve.getMapping(), writer, null); + } + +private void writeVMActionCollection(JsonGenerator writer, GspViewModelElement ve) { + if (ve.getHelpActions() == null) + return; + if(!isFull&&ve.getHelpActions().size()==0) + return; + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.HelpActions); + VmActionCollectionSerializer convertor = new VmActionCollectionSerializer(isFull); + convertor.serialize(ve.getHelpActions(), writer, null); + } + + private void writeVMHelpConfig(JsonGenerator writer, GspViewModelElement ve) { + if (ve.getVMHelpConfig() == null) + return; + if(!isFull&&"".equals(ve.getVMHelpConfig().getHelpId())) + return; + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.VMHelpConfig); + SerializerUtils.writeStartObject(writer); + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.HelpId, ve.getVMHelpConfig().getHelpId()); + SerializerUtils.writeEndObject(writer); + } + + private void writeExtendProperties(JsonGenerator writer, GspViewModelElement vm) { + var dic = vm.getExtendProperties(); + if(!isFull&&(dic==null||dic.size()==0)) + return; + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.ExtendProperties); + SerializerUtils.writeStartObject(writer); + if (dic != null && dic.size() > 0) { + for (var item : dic.entrySet()) { + SerializerUtils.writePropertyValue(writer, item.getKey(), item.getValue()); + } + } + SerializerUtils.writeEndObject(writer); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/HelpConfigIncrementDeserializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/HelpConfigIncrementDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..b43414322c007be30ebbb61d742eaf7d3440265c --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/HelpConfigIncrementDeserializer.java @@ -0,0 +1,79 @@ + + +package com.inspur.edp.formserver.viewmodel.json.increment; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.inspur.edp.cef.designtime.api.IGspCommonDataType; +import com.inspur.edp.cef.designtime.api.entity.GspCommonDataType; +import com.inspur.edp.cef.designtime.api.entity.increment.AddedEntityIncrement; +import com.inspur.edp.cef.designtime.api.increment.IncrementType; +import com.inspur.edp.cef.designtime.api.json.CefNames; +import com.inspur.edp.cef.designtime.api.json.object.GspCommonDataTypeDeserializer; +import com.inspur.edp.formserver.viewmodel.common.ValueHelpConfig; +import com.inspur.edp.formserver.viewmodel.increment.entity.AddedHelpIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.HelpConfigIncrement; + +import com.inspur.edp.formserver.viewmodel.increment.entity.ModifyHelpIncrement; +import java.io.IOException; + +/** + * The Josn Deserializer Of Biz Operation + * + * @ClassName: BizOperationDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class HelpConfigIncrementDeserializer extends JsonDeserializer { + + @Override + public HelpConfigIncrement deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { + ObjectMapper mapper = new ObjectMapper(); + JsonNode node = mapper.readTree(jsonParser); + String incrementTypeStr = node.get(CefNames.IncrementType).textValue(); + if(incrementTypeStr == null || "".equals(incrementTypeStr)) + return null; + IncrementType incrementType = IncrementType.valueOf(incrementTypeStr); + switch (incrementType){ + case Added: + return readAddIncrementInfo(node); + case Modify: + return readModifyIncrementInfo(node); + case Deleted: +// return readDeletedIncrementInfo(node); + + } + return null; + } + + private ModifyHelpIncrement readModifyIncrementInfo(JsonNode node) { + ModifyHelpIncrement modifyHelpIncrement=new ModifyHelpIncrement(); + return modifyHelpIncrement; + } + + private AddedHelpIncrement readAddIncrementInfo(JsonNode node){ + AddedHelpIncrement addIncrement = new AddedHelpIncrement(); + readBaseAddedInfo(addIncrement,node); + return addIncrement; + } + + private void readBaseAddedInfo(AddedHelpIncrement addIncrement, JsonNode node){ + JsonNode addVauleNode = node.get(CefNames.AddedDataType); + if(addVauleNode == null) + return; + + ObjectMapper mapper = new ObjectMapper(); + SimpleModule module = new SimpleModule(); + try { + addIncrement.setHelpConfig((ValueHelpConfig)mapper.readValue(mapper.writeValueAsString(addVauleNode), ValueHelpConfig.class)); + } catch (IOException e) { + throw new RuntimeException("IGspCommonDataType反序列化失败", e); + } + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/HelpConfigIncrementSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/HelpConfigIncrementSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..2d452417ccddca5bc5d73e769d34d0273f5909d2 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/HelpConfigIncrementSerializer.java @@ -0,0 +1,59 @@ + + +package com.inspur.edp.formserver.viewmodel.json.increment; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.inspur.edp.cef.designtime.api.json.CefNames; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.formserver.viewmodel.increment.entity.AddedHelpIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.HelpConfigIncrement; +import com.inspur.edp.formserver.viewmodel.json.model.ValueHelpConfigSerizlizer; + +import java.io.IOException; + +/** + * The Josn Deserializer Of Biz Operation + * + * @ClassName: BizOperationDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class HelpConfigIncrementSerializer extends JsonSerializer { + + @Override + public void serialize(HelpConfigIncrement value, JsonGenerator gen, SerializerProvider serializerProvider) throws IOException { + SerializerUtils.writeStartObject(gen); + writeBaseInfo(value, gen); + SerializerUtils.writeEndObject(gen); + } + + private void writeBaseInfo(HelpConfigIncrement value, JsonGenerator gen) { + SerializerUtils.writePropertyValue(gen, CefNames.IncrementType, value.getIncrementType().toString()); + switch (value.getIncrementType()) { + case Added: + writeAddedIncrement((AddedHelpIncrement) value, gen); + break; + case Modify: +// writeModifyIncrement((ModifyEntityIncrement) value, gen); + break; + case Deleted: +// writeDeletedIncrement((DeletedEntityIncrement) value, gen); + break; + default: + throw new RuntimeException("增量序列化失败,不存在增量类型" + value.getIncrementType().toString()); + } + } + + private void writeAddedIncrement(AddedHelpIncrement value, JsonGenerator gen) { + writeBaseAddedInfo(value, gen); + } + + private void writeBaseAddedInfo(AddedHelpIncrement value, JsonGenerator gen) { + SerializerUtils.writePropertyName(gen, CefNames.AddedDataType); + ValueHelpConfigSerizlizer helpConfigSerizlizer = new ValueHelpConfigSerizlizer(); + helpConfigSerizlizer.serialize(value.getHelpConfig(), gen, null); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/ViewElementIncrementDeserializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/ViewElementIncrementDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..f8b19de3e14ea0325c640135036024eaed4b453f --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/ViewElementIncrementDeserializer.java @@ -0,0 +1,22 @@ + + +package com.inspur.edp.formserver.viewmodel.json.increment; + +import com.inspur.edp.das.commonmodel.json.element.CmElementDeserializer; +import com.inspur.edp.das.commonmodel.json.increment.CommonElementIncrementDeserializer; +import com.inspur.edp.formserver.viewmodel.json.element.ViewElementDeserializer; + +/** + * The Josn Deserializer Of Biz Operation + * + * @ClassName: BizOperationDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ViewElementIncrementDeserializer extends CommonElementIncrementDeserializer { + @Override + protected CmElementDeserializer getCmElementDeserializer() { + return new ViewElementDeserializer(); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/ViewElementIncrementSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/ViewElementIncrementSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..fbddf7c6b7bbb0e28060d21e1ceebdf268356c37 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/ViewElementIncrementSerializer.java @@ -0,0 +1,22 @@ + + +package com.inspur.edp.formserver.viewmodel.json.increment; + +import com.inspur.edp.das.commonmodel.json.element.CmElementSerializer; +import com.inspur.edp.das.commonmodel.json.increment.CommonElementIncrementSerializer; +import com.inspur.edp.formserver.viewmodel.json.element.ViewElementSerializer; + +/** + * The Josn Deserializer Of Biz Operation + * + * @ClassName: BizOperationDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ViewElementIncrementSerializer extends CommonElementIncrementSerializer { + @Override + protected CmElementSerializer getCmElementSerializer() { + return new ViewElementSerializer(); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/ViewModelIncrementDeserializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/ViewModelIncrementDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..c2cb54cd85f39d252d7d60ece98428f184004e8f --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/ViewModelIncrementDeserializer.java @@ -0,0 +1,97 @@ + + +package com.inspur.edp.formserver.viewmodel.json.increment; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.inspur.edp.cef.designtime.api.entity.increment.CommonEntityIncrement; +import com.inspur.edp.cef.designtime.api.entity.increment.json.GspDataTypeIncrementDeserializer; +import com.inspur.edp.cef.designtime.api.json.CefNames; +import com.inspur.edp.das.commonmodel.entity.increment.CommonModelIncrement; +import com.inspur.edp.das.commonmodel.json.increment.CommonModelIncrementDeserializer; +import com.inspur.edp.das.commonmodel.json.increment.CommonObjectIncrementDeserializer; +import com.inspur.edp.formserver.viewmodel.increment.ViewModelIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.HelpConfigIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.action.VoActionIncrement; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; + +import java.io.IOException; + +/** + * The Josn Deserializer Of Biz Operation + * + * @ClassName: BizOperationDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ViewModelIncrementDeserializer extends CommonModelIncrementDeserializer { + @Override + protected CommonObjectIncrementDeserializer getObjectIncrementDeserializer() { + return new ViewObjectIncrementDeserializer(); + } + + protected CommonModelIncrement createCommonModelIncrement() { + return new ViewModelIncrement(); + } + + @Override + protected void readExtendInfo(CommonModelIncrement value, JsonNode node) { + ViewModelIncrement increment = (ViewModelIncrement)value; + JsonNode valueConfigIncrements = node.get(ViewModelJsonConst.HelpIncrements); + if(valueConfigIncrements != null) + readValueConfigs(increment, valueConfigIncrements); + JsonNode actionIncrements = node.get(ViewModelJsonConst.Actions); + if(actionIncrements != null) + readActions(increment, actionIncrements); + + } + + private void readValueConfigs(ViewModelIncrement increment, JsonNode node){ + + ArrayNode array = trans2Array(node); + for (JsonNode childNode : array){ + HelpConfigIncrementDeserializer serializer = new HelpConfigIncrementDeserializer(); + ObjectMapper mapper = new ObjectMapper(); + SimpleModule module = new SimpleModule(); + module.addDeserializer(HelpConfigIncrement.class, serializer); + mapper.registerModule(module); + try { + String key = childNode.get(CefNames.Id).textValue(); + JsonNode valueNode = childNode.get(ViewModelJsonConst.HelpIncrement); + + HelpConfigIncrement helpIncrement = mapper.readValue(mapper.writeValueAsString(valueNode), HelpConfigIncrement.class); + helpIncrement.setElementId(key); + increment.getValueHelpConfigs().put(key, helpIncrement); + } catch (IOException e) { + throw new RuntimeException("CommonEntityIncrement反序列化失败", e); + } + } + + } + + private void readActions(ViewModelIncrement increment, JsonNode node){ + ArrayNode array = trans2Array(node); + for (JsonNode childNode : array){ + VoActionIncrementDeserializer serializer = new VoActionIncrementDeserializer(); + ObjectMapper mapper = new ObjectMapper(); + SimpleModule module = new SimpleModule(); + module.addDeserializer(VoActionIncrement.class, serializer); + mapper.registerModule(module); + try { + String key = childNode.get(CefNames.Id).textValue(); + JsonNode valueNode = childNode.get(ViewModelJsonConst.Action); + + VoActionIncrement voActionIncrement = mapper.readValue(mapper.writeValueAsString(valueNode), VoActionIncrement.class); + voActionIncrement.setActionId(key); + increment.getActions().put(key, voActionIncrement); + } catch (IOException e) { + throw new RuntimeException("VoActionIncrement反序列化失败", e); + } + } + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/ViewModelIncrementSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/ViewModelIncrementSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..d9ae15401f6f978d5826f95b2f1c81d9ab6115c3 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/ViewModelIncrementSerializer.java @@ -0,0 +1,85 @@ + + +package com.inspur.edp.formserver.viewmodel.json.increment; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.inspur.edp.cef.designtime.api.entity.increment.CommonEntityIncrement; +import com.inspur.edp.cef.designtime.api.entity.increment.json.GspDataTypeIncrementSerializer; +import com.inspur.edp.cef.designtime.api.json.CefNames; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.das.commonmodel.entity.increment.CommonModelIncrement; +import com.inspur.edp.das.commonmodel.json.increment.CommonModelIncrementSerializer; +import com.inspur.edp.das.commonmodel.json.increment.CommonObjectIncrementSerializer; +import com.inspur.edp.formserver.viewmodel.increment.ViewModelIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.HelpConfigIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.action.VoActionIncrement; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; +import lombok.var; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +/** + * The Josn Deserializer Of Biz Operation + * + * @ClassName: BizOperationDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ViewModelIncrementSerializer extends CommonModelIncrementSerializer { + @Override + protected CommonObjectIncrementSerializer getObjectIncrementSerializer() { + return new ViewObjectIncrementSerializer(); + } + + @Override + protected void writeExtendInfo(CommonModelIncrement value, JsonGenerator gen) { + ViewModelIncrement increment = (ViewModelIncrement)value; + writeHelpConfigs(increment.getValueHelpConfigs(), gen); + writeVoActions(increment.getActions(), gen); + } + + private void writeHelpConfigs(HashMap helpConfigs, JsonGenerator gen) { + SerializerUtils.writePropertyName(gen, ViewModelJsonConst.HelpIncrements); + SerializerUtils.WriteStartArray(gen); + for (var item : helpConfigs.entrySet()) { + try { + SerializerUtils.writeStartObject(gen); + SerializerUtils.writePropertyValue(gen, CefNames.Id, item.getKey()); + + SerializerUtils.writePropertyName(gen, ViewModelJsonConst.HelpIncrement); + HelpConfigIncrementSerializer serializer = new HelpConfigIncrementSerializer(); + serializer.serialize(item.getValue(), gen, null); + SerializerUtils.writeEndObject(gen); + } catch (IOException e) { + throw new RuntimeException("帮助配置信息增量序列化失败", e); + } + } + SerializerUtils.WriteEndArray(gen); + } + + private void writeVoActions(HashMap actions, JsonGenerator gen){ + if(actions == null) + return; + SerializerUtils.writePropertyName(gen, ViewModelJsonConst.Actions); + SerializerUtils.WriteStartArray(gen); + for (var item : actions.entrySet()) { + try { + SerializerUtils.writeStartObject(gen); + SerializerUtils.writePropertyValue(gen, CefNames.Id, item.getKey()); + + SerializerUtils.writePropertyName(gen, ViewModelJsonConst.Action); + VoActionIncrementSerializer serializer = new VoActionIncrementSerializer(); + serializer.serialize(item.getValue(), gen, null); + SerializerUtils.writeEndObject(gen); + } catch (IOException e) { + throw new RuntimeException("Vo动作增量序列化失败", e); + } + } + SerializerUtils.WriteEndArray(gen); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/ViewObjectIncrementDeserializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/ViewObjectIncrementDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..32de024d81f00d1f1f8e34a07b2bec9013e6c9d5 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/ViewObjectIncrementDeserializer.java @@ -0,0 +1,35 @@ + + +package com.inspur.edp.formserver.viewmodel.json.increment; + +import com.inspur.edp.cef.designtime.api.entity.increment.ModifyEntityIncrement; +import com.inspur.edp.das.commonmodel.json.increment.CommonElementIncrementDeserializer; +import com.inspur.edp.das.commonmodel.json.increment.CommonObjectIncrementDeserializer; +import com.inspur.edp.das.commonmodel.json.object.CmObjectDeserializer; +import com.inspur.edp.formserver.viewmodel.json.object.ViewObjectDeserializer; + +/** + * The Josn Deserializer Of Biz Operation + * + * @ClassName: BizOperationDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ViewObjectIncrementDeserializer extends CommonObjectIncrementDeserializer { + @Override + protected CmObjectDeserializer getCommonObjectDeserializer() { + return new ViewObjectDeserializer(); + } + + @Override + protected CommonElementIncrementDeserializer getCmElementIncrementDeserizlizer() { + return new ViewElementIncrementDeserializer(); + } + + @Override + protected CommonObjectIncrementDeserializer getCmObjectIncrementDeserializer() { + return new ViewObjectIncrementDeserializer(); + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/ViewObjectIncrementSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/ViewObjectIncrementSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..1138504390e5c06e3ef21195fcc836685043c2d1 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/ViewObjectIncrementSerializer.java @@ -0,0 +1,33 @@ + + +package com.inspur.edp.formserver.viewmodel.json.increment; + +import com.inspur.edp.das.commonmodel.json.increment.CommonElementIncrementSerializer; +import com.inspur.edp.das.commonmodel.json.increment.CommonObjectIncrementSerializer; +import com.inspur.edp.das.commonmodel.json.object.CmObjectSerializer; +import com.inspur.edp.formserver.viewmodel.json.object.ViewObjectSerializer; + +/** + * The Josn Deserializer Of Biz Operation + * + * @ClassName: BizOperationDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ViewObjectIncrementSerializer extends CommonObjectIncrementSerializer { + @Override + protected CmObjectSerializer getCommonObjectSerializer() { + return new ViewObjectSerializer(); + } + + @Override + protected CommonElementIncrementSerializer getCmElementIncrementSerizlizer() { + return new ViewElementIncrementSerializer(); + } + + @Override + protected CommonObjectIncrementSerializer getCmObjectIncrementSerializer() { + return new ViewObjectIncrementSerializer(); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/VoActionIncrementDeserializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/VoActionIncrementDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..666e926b72fc2f2cc1a8878e75ecb2b6751ac1b7 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/VoActionIncrementDeserializer.java @@ -0,0 +1,102 @@ + + +package com.inspur.edp.formserver.viewmodel.json.increment; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.inspur.edp.cef.designtime.api.increment.IncrementType; +import com.inspur.edp.cef.designtime.api.json.CefNames; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelActionType; +import com.inspur.edp.formserver.viewmodel.increment.entity.action.AddedVoActionIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.action.ModifyVoActionIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.action.VoActionIncrement; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; +import com.inspur.edp.formserver.viewmodel.json.operation.MappedBizActionDeserializer; +import com.inspur.edp.formserver.viewmodel.json.operation.MappedCdpActionDeserializer; +import com.inspur.edp.formserver.viewmodel.json.operation.VmActionDeserializer; + +import java.io.IOException; + +/** + * The Josn Deserializer Of Biz Operation + * + * @ClassName: BizOperationDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class VoActionIncrementDeserializer extends JsonDeserializer { + + @Override + public VoActionIncrement deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { + ObjectMapper mapper = new ObjectMapper(); + JsonNode node = mapper.readTree(jsonParser); + String incrementTypeStr = node.get(CefNames.IncrementType).textValue(); + if(incrementTypeStr == null || "".equals(incrementTypeStr)) + return null; + IncrementType incrementType = IncrementType.valueOf(incrementTypeStr); + switch (incrementType){ + case Added: + return readAddIncrementInfo(node); + case Modify: + return readModifyIncrementInfo(node); + case Deleted: +// return readDeletedIncrementInfo(node); + + } + return null; + } + + private AddedVoActionIncrement readAddIncrementInfo(JsonNode node){ + AddedVoActionIncrement addIncrement = new AddedVoActionIncrement(); + JsonNode addVauleNode = node.get(ViewModelJsonConst.AddedAction); + if(addVauleNode == null) + return addIncrement; + ViewModelAction action = readBizOperation(addVauleNode); + addIncrement.setAction(action); + return addIncrement; + } + + private ModifyVoActionIncrement readModifyIncrementInfo(JsonNode node){ + ModifyVoActionIncrement modifyIncrement = new ModifyVoActionIncrement(); + JsonNode modifyVauleNode = node.get(ViewModelJsonConst.ModifyAction); + if(modifyVauleNode == null) + return modifyIncrement; + ViewModelAction action = readBizOperation(modifyVauleNode); + modifyIncrement.setAction(action); + return modifyIncrement; + } + + private ViewModelAction readBizOperation(JsonNode node) { + String typeJson = node.get("Type").textValue(); + ViewModelActionType type = ViewModelActionType.valueOf(typeJson); + VmActionDeserializer deserializer = createDeserializer(type); + + SimpleModule module = new SimpleModule(); + module.addDeserializer(ViewModelAction.class, deserializer); + ObjectMapper mapper = new ObjectMapper(); + mapper.registerModule(module); + try { + return mapper.readValue(node.toString(), ViewModelAction.class); + } catch (IOException e) { + throw new RuntimeException("动作反序列化失败" + node.toString(), e); + } + } + + private VmActionDeserializer createDeserializer(ViewModelActionType type) { + switch (type) { + case BEAction: + return new MappedBizActionDeserializer(); + case VMAction: + return new MappedCdpActionDeserializer(); + default: + throw new RuntimeException(); + } + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/VoActionIncrementSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/VoActionIncrementSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..b1e1b06f79374034e20c1d4d3de203914f3332be --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/increment/VoActionIncrementSerializer.java @@ -0,0 +1,86 @@ + + +package com.inspur.edp.formserver.viewmodel.json.increment; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.inspur.edp.cef.designtime.api.json.CefNames; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelActionType; +import com.inspur.edp.formserver.viewmodel.increment.entity.AddedHelpIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.HelpConfigIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.action.AddedVoActionIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.action.ModifyVoActionIncrement; +import com.inspur.edp.formserver.viewmodel.increment.entity.action.VoActionIncrement; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; +import com.inspur.edp.formserver.viewmodel.json.model.ValueHelpConfigSerizlizer; +import com.inspur.edp.formserver.viewmodel.json.operation.MappedBizActionSerializer; +import com.inspur.edp.formserver.viewmodel.json.operation.MappedCdpActionSerializer; +import com.inspur.edp.formserver.viewmodel.json.operation.VmActionSerializer; + +import java.io.IOException; + +/** + * The Josn Deserializer Of Biz Operation + * + * @ClassName: BizOperationDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class VoActionIncrementSerializer extends JsonSerializer { + + @Override + public void serialize(VoActionIncrement value, JsonGenerator gen, SerializerProvider serializerProvider) throws IOException { + SerializerUtils.writeStartObject(gen); + writeBaseInfo(value, gen); + SerializerUtils.writeEndObject(gen); + } + + private void writeBaseInfo(VoActionIncrement value, JsonGenerator gen) { + SerializerUtils.writePropertyValue(gen, CefNames.IncrementType, value.getIncrementType().toString()); + switch (value.getIncrementType()) { + case Added: + writeAddedIncrement((AddedVoActionIncrement) value, gen); + break; + case Modify: + writeModifyIncrement((ModifyVoActionIncrement) value, gen); + break; + case Deleted: +// writeDeletedIncrement((DeletedEntityIncrement) value, gen); + break; + default: + throw new RuntimeException("增量序列化失败,不存在增量类型" + value.getIncrementType().toString()); + } + } + + + private void writeAddedIncrement(AddedVoActionIncrement increment, JsonGenerator gen){ + SerializerUtils.writePropertyName(gen, ViewModelJsonConst.AddedAction); + writeBaseActionInfo(increment.getAction(), gen); + } + + private void writeModifyIncrement(ModifyVoActionIncrement increment, JsonGenerator gen){ + SerializerUtils.writePropertyName(gen, ViewModelJsonConst.ModifyAction); + writeBaseActionInfo(increment.getAction(), gen); + } + + private void writeBaseActionInfo(ViewModelAction action, JsonGenerator gen){ + VmActionSerializer convertor = getActionConvertor(action.getType()); + convertor.serialize(action, gen, null); + } + + private VmActionSerializer getActionConvertor(ViewModelActionType type) { + switch (type) { + case BEAction: + return new MappedBizActionSerializer(); + case VMAction: + return new MappedCdpActionSerializer(); + case Custom: + default: + throw new RuntimeException("未定义'" + type + "'类型Action的JSON序列化器。"); + } + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/mapping/GspQoObjectMappingSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/mapping/GspQoObjectMappingSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..a2914faa0950e30560bdd91d2543ac2911235d15 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/mapping/GspQoObjectMappingSerializer.java @@ -0,0 +1,32 @@ + + +package com.inspur.edp.formserver.viewmodel.json.mapping; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.formserver.viewmodel.common.ViewModelMapping; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspQoObjectMapping; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; + +/** + * The Josn Serializer Of QO Object Mapping Definition + * + * @ClassName: GspQoObjectMappingSerializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class GspQoObjectMappingSerializer extends ViewModelMappingSerializer { + + public GspQoObjectMappingSerializer(){} + public GspQoObjectMappingSerializer(boolean full){ + super(full); + isFull = full; + } + + @Override + protected final void writeExtendMappingProperty(JsonGenerator writer, ViewModelMapping mapping) { + GspQoObjectMapping voMapping = (GspQoObjectMapping) mapping; + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.IndexVoId, voMapping.getIndexVoId()); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/mapping/GspVoElementMappingDeserializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/mapping/GspVoElementMappingDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..b2e3b47f5a6141040a29d6251b3a154530539d34 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/mapping/GspVoElementMappingDeserializer.java @@ -0,0 +1,57 @@ + + +package com.inspur.edp.formserver.viewmodel.json.mapping; + +import com.fasterxml.jackson.core.JsonParser; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementMapping; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementSourceType; +import com.inspur.edp.formserver.viewmodel.common.ViewModelMapping; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; + +/** + * The Josn Deserializer Of View Model Element Mapping + * + * @ClassName: GspVoElementMappingDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class GspVoElementMappingDeserializer extends ViewModelMappingDeserializer { + + @Override + protected void beforeVMMappingDeserializer(ViewModelMapping viewModelMapping){ + GspVoElementMapping voMapping = (GspVoElementMapping) viewModelMapping; + voMapping.setTargetObjectId(""); + voMapping.setTargetElementId(""); + voMapping.setTargetMetadataId(""); + voMapping.setTargetMetadataPkgName(""); + voMapping.setTargetObjId(""); + } + + @Override + protected ViewModelMapping createVmMapping() { + return new GspVoElementMapping(); + } + + @Override + protected boolean readExtendMappingProperty(JsonParser reader, ViewModelMapping mapping, String propertyName) { + boolean hasProperty = true; + GspVoElementMapping voMapping = (GspVoElementMapping) mapping; + switch (propertyName) { + case ViewModelJsonConst.SourceType: + voMapping.setSourceType(SerializerUtils.readPropertyValue_Enum(reader, GspVoElementSourceType.class, GspVoElementSourceType.values(), GspVoElementSourceType.BeElement)); + break; + case ViewModelJsonConst.TargetObjectId: + voMapping.setTargetObjectId(SerializerUtils.readPropertyValue_String(reader)); + break; + case ViewModelJsonConst.TargetElementId: + voMapping.setTargetElementId(SerializerUtils.readPropertyValue_String(reader)); + break; + default: + hasProperty = false; + break; + } + return hasProperty; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/mapping/GspVoElementMappingSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/mapping/GspVoElementMappingSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..b32f0a0b745872447cad926891806ab97e674498 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/mapping/GspVoElementMappingSerializer.java @@ -0,0 +1,36 @@ + + +package com.inspur.edp.formserver.viewmodel.json.mapping; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.formserver.viewmodel.common.MappingType; +import com.inspur.edp.formserver.viewmodel.common.ViewModelMapping; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementMapping; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementSourceType; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; + +/** + * The Josn Serializer Of View Model Element Mapping + * + * @ClassName: GspVoElementMappingSerializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class GspVoElementMappingSerializer extends ViewModelMappingSerializer{ + + public GspVoElementMappingSerializer(){} + public GspVoElementMappingSerializer(boolean full){ + super(full); + isFull = full; + } + @Override + protected final void writeExtendMappingProperty(JsonGenerator writer, ViewModelMapping mapping) { + GspVoElementMapping voMapping =(GspVoElementMapping)mapping; + if(isFull||voMapping.getSourceType()!= GspVoElementSourceType.BeElement) + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.SourceType, voMapping.getSourceType().toString()); + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.TargetObjectId, voMapping.getTargetObjectId()); + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.TargetElementId, voMapping.getTargetElementId()); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/mapping/GspVoObjectMappingDeserializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/mapping/GspVoObjectMappingDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..27403d754c3fedd41b1aeff9b7b9a3fbc32dfdbd --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/mapping/GspVoObjectMappingDeserializer.java @@ -0,0 +1,40 @@ + + +package com.inspur.edp.formserver.viewmodel.json.mapping; + +import com.fasterxml.jackson.core.JsonParser; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoObjectMapping; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoObjectSourceType; +import com.inspur.edp.formserver.viewmodel.common.ViewModelMapping; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; + +/** + * The Josn Deserializer Of View Model Object Mapping + * + * @ClassName: GspVoObjectMappingDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class GspVoObjectMappingDeserializer extends ViewModelMappingDeserializer { + @Override + protected GspVoObjectMapping createVmMapping() { + return new GspVoObjectMapping(); + } + + @Override + protected boolean readExtendMappingProperty(JsonParser reader, ViewModelMapping mapping, String propertyName) { + boolean hasProperty = true; + GspVoObjectMapping voMapping = (GspVoObjectMapping) mapping; + switch (propertyName) { + case ViewModelJsonConst.SourceType: + voMapping.setSourceType(SerializerUtils.readPropertyValue_Enum(reader, GspVoObjectSourceType.class, GspVoObjectSourceType.values(), GspVoObjectSourceType.VoObject)); + break; + default: + hasProperty = false; + break; + } + return hasProperty; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/mapping/GspVoObjectMappingSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/mapping/GspVoObjectMappingSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..dc93d51c96ac6a97afab1d1ad86947339efa5acc --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/mapping/GspVoObjectMappingSerializer.java @@ -0,0 +1,42 @@ + + +package com.inspur.edp.formserver.viewmodel.json.mapping; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.formserver.viewmodel.common.MappingType; +import com.inspur.edp.formserver.viewmodel.common.ViewModelMapping; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoObjectMapping; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoObjectSourceType; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; + +/** + * The Josn Serializer Of View Model Object Mapping + * + * @ClassName: GspVoObjectMappingSerializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class GspVoObjectMappingSerializer extends ViewModelMappingSerializer { + + public GspVoObjectMappingSerializer(){} + public GspVoObjectMappingSerializer(boolean full){ + super(full); + isFull = full; + } + + @Override + protected final void writeExtendMappingProperty(JsonGenerator writer, ViewModelMapping mapping) { + GspVoObjectMapping voMapping = (GspVoObjectMapping) mapping; + if(isFull||voMapping.getSourceType()!= GspVoObjectSourceType.BeObject){ + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.SourceType, voMapping.getSourceType().toString());} + //扩展模型属性 + writeExtendObjMappingProperty(writer, mapping); + } + + protected void writeExtendObjMappingProperty(JsonGenerator writer, ViewModelMapping mapping) { + } +} + + diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/mapping/ViewModelMappingDeserializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/mapping/ViewModelMappingDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..701cda688f9ae2d05d148f667319480e6830e1d6 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/mapping/ViewModelMappingDeserializer.java @@ -0,0 +1,73 @@ + + +package com.inspur.edp.formserver.viewmodel.json.mapping; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.formserver.viewmodel.common.MappingType; +import com.inspur.edp.formserver.viewmodel.common.ViewModelMapping; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; + +import static com.fasterxml.jackson.core.JsonToken.FIELD_NAME; + +/** + * The Json Deserializer Of View Model Mapping + * + * @ClassName: ViewModelMappingDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ViewModelMappingDeserializer extends JsonDeserializer { + @Override + public ViewModelMapping deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) { + ViewModelMapping viewModelMapping = createVmMapping(); + viewModelMapping.setTargetMetadataId(""); + viewModelMapping.setTargetMetadataPkgName(""); + viewModelMapping.setTargetObjId(""); + SerializerUtils.readStartObject(jsonParser); + while (jsonParser.getCurrentToken() == FIELD_NAME) { + String propName = SerializerUtils.readPropertyName(jsonParser); + readPropertyValue(viewModelMapping, propName, jsonParser); + } + SerializerUtils.readEndObject(jsonParser); + return viewModelMapping; + } + + private void readPropertyValue(ViewModelMapping mapping, String propName, JsonParser reader) { + switch (propName) { + case ViewModelJsonConst.MapType: + mapping.setMapType(SerializerUtils.readPropertyValue_Enum(reader, MappingType.class, MappingType.values(), MappingType.BizEntity)); + break; + case ViewModelJsonConst.TargetMetadataId: + mapping.setTargetMetadataId(SerializerUtils.readPropertyValue_String(reader)); + break; + case ViewModelJsonConst.TargetMetadataPkgName: + mapping.setTargetMetadataPkgName(SerializerUtils.readPropertyValue_String(reader)); + break; + case ViewModelJsonConst.TargetObjId: + mapping.setTargetObjId(SerializerUtils.readPropertyValue_String(reader)); + break; + //case ViewModelJsonConst.TargetMetadataType: + // mapping.TargetMetadataType = SerializerUtils.ReadEnum(reader, MetadataType.BizEntity); + // break; + default: + if (!readExtendMappingProperty(reader, mapping, propName)) { + throw new RuntimeException("未定义的mapping属性:" + propName); + } + break; + } + } + + protected boolean readExtendMappingProperty(JsonParser reader, ViewModelMapping mapping, String propertyName) { + return false; + } + + protected void beforeVMMappingDeserializer(ViewModelMapping viewModelMapping){} + + protected ViewModelMapping createVmMapping() { + return new ViewModelMapping(); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/mapping/ViewModelMappingSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/mapping/ViewModelMappingSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..6b482d4b0da7efaf1eba2db574eedfc11865ef7d --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/mapping/ViewModelMappingSerializer.java @@ -0,0 +1,54 @@ + + +package com.inspur.edp.formserver.viewmodel.json.mapping; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.formserver.viewmodel.common.MappingType; +import com.inspur.edp.formserver.viewmodel.common.ViewModelMapping; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; + +/** + * The Json Serializer Of View Model Mapping + * + * @ClassName: ViewModelMappingSerializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ViewModelMappingSerializer extends JsonSerializer { + + protected boolean isFull = true; + public ViewModelMappingSerializer(){} + public ViewModelMappingSerializer(boolean full){ + isFull = full; + } + @Override + public void serialize(ViewModelMapping mapping, JsonGenerator writer, SerializerProvider serializers) { + if (mapping == null) + return; + SerializerUtils.writeStartObject(writer); + if(isFull||mapping.getMapType()!= MappingType.ViewObject){ + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.MapType, mapping.getMapType().toString()); + } + if(isFull||mapping.getTargetMetadataId()!=null&&!"".equals(mapping.getTargetMetadataId())){ + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.TargetMetadataId, mapping.getTargetMetadataId()); + } + if(isFull||mapping.getTargetMetadataPkgName()!=null&&!"".equals(mapping.getTargetMetadataPkgName())) { + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.TargetMetadataPkgName, mapping.getTargetMetadataPkgName()); + } + if(isFull||mapping.getTargetObjId()!=null&&!"".equals(mapping.getTargetObjId())){ + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.TargetObjId, mapping.getTargetObjId()); + } + //WritePropertyValue(writer, ViewModelJsonConst.TargetMetadataType, mapping.TargetMetadataType.ToString()); + //扩展模型属性 + writeExtendMappingProperty(writer, mapping); + SerializerUtils.writeEndObject(writer); + } + + protected void writeExtendMappingProperty(JsonGenerator writer, ViewModelMapping mapping) { + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/model/ValueHelpConfigDeserizlizer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/model/ValueHelpConfigDeserizlizer.java new file mode 100644 index 0000000000000000000000000000000000000000..0b09c9e7c6e364815d6418cac2a0c6cf5f3af645 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/model/ValueHelpConfigDeserizlizer.java @@ -0,0 +1,78 @@ + + +package com.inspur.edp.formserver.viewmodel.json.model; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.inspur.edp.cef.designtime.api.entity.CustomizationInfo; +import com.inspur.edp.cef.designtime.api.json.CefNames; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.formserver.viewmodel.common.ValueHelpConfig; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; +import com.inspur.edp.formserver.viewmodel.json.operation.VmActionCollectionDeserializer; +import java.io.IOException; + +/** + * The Josn Deserializer Of View Model Help Configuration + * + * @ClassName: ValueHelpConfigDeserizlizer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ValueHelpConfigDeserizlizer extends JsonDeserializer { + + @Override + public ValueHelpConfig deserialize(JsonParser jsonParser, DeserializationContext ctxt) { + ValueHelpConfig config = new ValueHelpConfig(); + SerializerUtils.readStartObject(jsonParser); + while (jsonParser.getCurrentToken() == JsonToken.FIELD_NAME) { + String propName = SerializerUtils.readPropertyName(jsonParser); + switch (propName) { + case ViewModelJsonConst.HelperId: + config.setHelperId(SerializerUtils.readPropertyValue_String(jsonParser)); + break; + case ViewModelJsonConst.FilterExpression: + config.setFilterExpression(SerializerUtils.readPropertyValue_String(jsonParser)); + break; + case ViewModelJsonConst.ElementId: + config.setElementId(SerializerUtils.readPropertyValue_String(jsonParser)); + break; + case ViewModelJsonConst.EnableCustomHelpAuth: + config.setEnableCustomHelpAuth(SerializerUtils.readPropertyValue_boolean(jsonParser)); + break; + case CefNames.CustomizationInfo: + config.setCustomizationInfo((CustomizationInfo) SerializerUtils + .readPropertyValue_Object(CustomizationInfo.class, jsonParser)); + try { + jsonParser.nextToken(); + } catch (IOException e) { + throw new RuntimeException( + String.format("GspCommonDataTypeDeserializer反序列化错误:%1$s", propName)); + } + break; + case ViewModelJsonConst.HelpExtend: + SerializerUtils.readStartObject(jsonParser); + if (jsonParser.getCurrentToken() == JsonToken.FIELD_NAME) { + String propertyName = SerializerUtils.readPropertyName(jsonParser); + switch (propertyName) { + case ViewModelJsonConst.BeforeHelp: + VmActionCollectionDeserializer deserializer1 = new VmActionCollectionDeserializer(); + config.getHelpExtend().setBeforeHelp(deserializer1.deserialize(jsonParser, null)); + break; + default: + throw new RuntimeException("未定义ValueHelpConfig.HelpExtend属性名" + propertyName); + } + } + SerializerUtils.readEndObject(jsonParser); + break; + default: + throw new RuntimeException("未定义ValueHelpConfig" + propName); + } + } + SerializerUtils.readEndObject(jsonParser); + return config; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/model/ValueHelpConfigSerizlizer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/model/ValueHelpConfigSerizlizer.java new file mode 100644 index 0000000000000000000000000000000000000000..d88d13ed600289aca7d6ba7358e2f190bb2f9b61 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/model/ValueHelpConfigSerizlizer.java @@ -0,0 +1,64 @@ + + +package com.inspur.edp.formserver.viewmodel.json.model; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.inspur.edp.cef.designtime.api.json.CefNames; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.formserver.viewmodel.common.HelpExtendAction; +import com.inspur.edp.formserver.viewmodel.common.ValueHelpConfig; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; +import com.inspur.edp.formserver.viewmodel.json.operation.VmActionCollectionSerializer; + +/** + * The Josn Serializer Of View Model Help Configuration + * + * @ClassName: ValueHelpConfigSerizlizer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ValueHelpConfigSerizlizer extends JsonSerializer { + + protected boolean isFull = true; + public ValueHelpConfigSerizlizer(){} + public ValueHelpConfigSerizlizer(boolean full){ + isFull = full; + } + + @Override + public void serialize(ValueHelpConfig helpConfig, JsonGenerator writer, + SerializerProvider serializers) { + SerializerUtils.writeStartObject(writer); + SerializerUtils + .writePropertyValue(writer, ViewModelJsonConst.ElementId, helpConfig.getElementId()); + SerializerUtils + .writePropertyValue(writer, ViewModelJsonConst.HelperId, helpConfig.getHelperId()); + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.FilterExpression, + helpConfig.getFilterExpression()); + SerializerUtils + .writePropertyValue(writer, CefNames.CustomizationInfo, helpConfig.getCustomizationInfo()); + SerializerUtils.writePropertyName(writer,ViewModelJsonConst.EnableCustomHelpAuth); + SerializerUtils.writePropertyValue_boolean(writer,helpConfig.getEnableCustomHelpAuth()); + writeHelpExtend(writer, helpConfig.getHelpExtend()); + SerializerUtils.writeEndObject(writer); + } + + private void writeHelpExtend(JsonGenerator writer, HelpExtendAction helpExtend) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.HelpExtend); + + SerializerUtils.writeStartObject(writer); + if (helpExtend != null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.BeforeHelp); + getVMActionCollectionConvertor().serialize(helpExtend.getBeforeHelp(), writer, null); + } + SerializerUtils.writeEndObject(writer); + } + + private VmActionCollectionSerializer getVMActionCollectionConvertor() { + return new VmActionCollectionSerializer(isFull); + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/model/ViewModelDeserializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/model/ViewModelDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..84dd0a28d8714b98f5b210e5fb0b53e4488b4031 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/model/ViewModelDeserializer.java @@ -0,0 +1,187 @@ + + +package com.inspur.edp.formserver.viewmodel.json.model; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.das.commonmodel.entity.GspCommonModel; +import com.inspur.edp.das.commonmodel.entity.GspCommonObject; +import com.inspur.edp.das.commonmodel.json.model.CommonModelDeserializer; +import com.inspur.edp.das.commonmodel.json.object.CmObjectDeserializer; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.collection.VMActionCollection; +import com.inspur.edp.formserver.viewmodel.collection.ValueHelpConfigCollection; +import com.inspur.edp.formserver.viewmodel.common.MappingType; +import com.inspur.edp.formserver.viewmodel.common.TemplateVoInfo; +import com.inspur.edp.formserver.viewmodel.common.ViewModelMapping; +import com.inspur.edp.formserver.viewmodel.dataextendinfo.VoDataExtendInfo; +import com.inspur.edp.formserver.viewmodel.json.ExtendPropertiesDeserializer; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; +import com.inspur.edp.formserver.viewmodel.json.mapping.ViewModelMappingDeserializer; +import com.inspur.edp.formserver.viewmodel.json.object.ViewObjectDeserializer; +import com.inspur.edp.formserver.viewmodel.json.operation.VmActionCollectionDeserializer; +import java.io.IOException; +import java.util.HashMap; +import com.inspur.edp.formserver.viewmodel.common.InternalExtendActionUtil; + +/** + * The Josn Deserializer Of View Model Definition + * + * @ClassName: BizOperationDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ViewModelDeserializer extends CommonModelDeserializer { + + @Override + protected void beforeCMModelDeserializer(GspCommonModel model){ + GspViewModel vm = (GspViewModel) model; + vm.setEnableStdTimeFormat(true); + vm.setAutoConvertMessage(true); + vm.setDescription(""); + TemplateVoInfo info = new TemplateVoInfo(); + info.setTemplateVoId(""); + info.setTemplateVoPkgName(""); + info.setTemplateVoServiceUnit(""); + vm.setTemplateVoInfo(info); + vm.setExtendProperties(new HashMap<>()); + VoDataExtendInfo voDataExtendInfo = new VoDataExtendInfo(); + voDataExtendInfo.initVoDataExendInfo(voDataExtendInfo); + vm.setDataExtendInfo(voDataExtendInfo); + vm.setActions(new VMActionCollection()); + vm.setSource(""); + vm.setIsGenFilterConvertor(true); + } + @Override + protected GspCommonModel createCommonModel() { + return new GspViewModel(); + } + + @Override + protected CmObjectDeserializer createCmObjectDeserializer() { + return new ViewObjectDeserializer(); + } + + @Override + protected boolean readExtendModelProperty(GspCommonModel model, String propertyName, + JsonParser jsonParser) { + GspViewModel vm = (GspViewModel) model; + boolean hasProperty = true; + switch (propertyName) { + case ViewModelJsonConst.EnableStdTimeFormat: + vm.setEnableStdTimeFormat(SerializerUtils.readPropertyValue_boolean(jsonParser,false)); + break; + case ViewModelJsonConst.Description: + vm.setDescription(SerializerUtils.readPropertyValue_String(jsonParser)); + break; + case ViewModelJsonConst.Mapping: + readMapping(jsonParser, vm); + break; + case ViewModelJsonConst.ExtendType: + SerializerUtils.readPropertyValue_String(jsonParser); + break; + case ViewModelJsonConst.ValueHelpConfigs: + readValueHelpConfigs(jsonParser, vm); + break; + case ViewModelJsonConst.Actions: + readVMActions(jsonParser, vm); + break; + case ViewModelJsonConst.ExtendProperties: + readExtendProperties(jsonParser, vm); + break; + case ViewModelJsonConst.DataExtendInfo: + readDataExtendInfo(jsonParser, vm); + break; + case ViewModelJsonConst.TemplateVoInfo: + readTemplateVoInfo(jsonParser, vm); + break; + case ViewModelJsonConst.ConvertMsg: + vm.setAutoConvertMessage(SerializerUtils.readPropertyValue_boolean(jsonParser)); + break; + case ViewModelJsonConst.Source: + vm.setSource(SerializerUtils.readPropertyValue_String(jsonParser)); + break; + case ViewModelJsonConst.IsGenFilterConvertor: + vm.setIsGenFilterConvertor(SerializerUtils.readPropertyValue_boolean(jsonParser)); + break; + default: + hasProperty = false; + break; + } + return hasProperty; + } + + private void readTemplateVoInfo(JsonParser jsonParser, GspViewModel vm) { + JsonDeserializer deserializer = new JsonDeserializer() { + @Override + public TemplateVoInfo deserialize(JsonParser p, DeserializationContext ctxt) { + TemplateVoInfo info = new TemplateVoInfo(); + SerializerUtils.readStartObject(jsonParser); + while (jsonParser.getCurrentToken() == JsonToken.FIELD_NAME) { + String propName = SerializerUtils.readPropertyName(jsonParser); + switch (propName) { + case ViewModelJsonConst.TemplateVoId: + info.setTemplateVoId(SerializerUtils.readPropertyValue_String(jsonParser)); + break; + case ViewModelJsonConst.TemplateVoPkgName: + info.setTemplateVoPkgName(SerializerUtils.readPropertyValue_String(jsonParser)); + break; + case ViewModelJsonConst.TemplateVoServiceUnit: + info.setTemplateVoServiceUnit(SerializerUtils.readPropertyValue_String(jsonParser)); + break; + default: + throw new RuntimeException("未定义TemplateVoInfo" + propName); + } + } + SerializerUtils.readEndObject(jsonParser); + return info; + } + }; + try { + vm.setTemplateVoInfo(deserializer.deserialize(jsonParser, null)); + } catch (IOException e) { + throw new RuntimeException("'" + vm.getName() + "'" + "的TemplateVoInfo反序列化失败。"); + } + } + + private void readValueHelpConfigs(JsonParser jsonParser, GspViewModel vm) { + SerializerUtils + .readArray(jsonParser, new ValueHelpConfigDeserizlizer(), vm.getValueHelpConfigs()); + } + + + private void readMapping(JsonParser jsonParser, GspViewModel vm) { + ViewModelMappingDeserializer deserializer = new ViewModelMappingDeserializer(); + vm.setMapping(deserializer.deserialize(jsonParser, null)); + } + + private void readVMActions(JsonParser jsonParser, GspViewModel vm) { + VmActionCollectionDeserializer deserializer = new VmActionCollectionDeserializer(); + VMActionCollection actions = deserializer.deserialize(jsonParser, null); +// InternalExtendActionUtil internalExtendActionUtil = new InternalExtendActionUtil(); + for(ViewModelAction action : actions){ +// if(!internalExtendActionUtil.InternalActionIds.contains(action.getID())){ + vm.getActions().add(action); +// } + } + } + private void initAction(GspViewModel vm){ + vm.setActions(new VMActionCollection()); + } + + private void readExtendProperties(JsonParser jsonParser, GspViewModel vm) { + ExtendPropertiesDeserializer deserializer = new ExtendPropertiesDeserializer(); + vm.setExtendProperties(deserializer.deserialize(jsonParser, null)); + } + + private void readDataExtendInfo(JsonParser jsonParser, GspViewModel vm) { + VoDataExtendInfoDeserializer deserializer = new VoDataExtendInfoDeserializer(); + vm.setDataExtendInfo(deserializer.deserialize(jsonParser, null)); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/model/ViewModelSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/model/ViewModelSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..79e43c84502000586bc22441920ebd2bc145d070 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/model/ViewModelSerializer.java @@ -0,0 +1,158 @@ + + +package com.inspur.edp.formserver.viewmodel.json.model; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.das.commonmodel.IGspCommonModel; +import com.inspur.edp.das.commonmodel.json.model.CommonModelSerializer; +import com.inspur.edp.das.commonmodel.json.object.CmObjectSerializer; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.VoThreadLoacl; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.collection.VMActionCollection; +import com.inspur.edp.formserver.viewmodel.common.InternalExtendActionUtil; +import com.inspur.edp.formserver.viewmodel.common.TemplateVoInfo; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; +import com.inspur.edp.formserver.viewmodel.json.mapping.ViewModelMappingSerializer; +import com.inspur.edp.formserver.viewmodel.json.object.ViewObjectSerializer; +import com.inspur.edp.formserver.viewmodel.json.operation.VmActionCollectionSerializer; +import lombok.var; + +/** + * The Josn Serializer Of View Model Definition + * + * @ClassName: ViewModelSerializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ViewModelSerializer extends CommonModelSerializer { + + public ViewModelSerializer(){ + if(VoThreadLoacl.get()!=null) + isFull = VoThreadLoacl.get().getfull(); + } + public ViewModelSerializer(boolean full){ + super(full); + isFull = full; + } + //region BaseProp + @Override + protected void writeExtendModelProperty(IGspCommonModel commonModel, JsonGenerator writer) { + GspViewModel vm = (GspViewModel) commonModel; + writeAutoMergeMessage(writer, vm); + writeVMActions(writer, vm); + writeExtendModelProperty(writer, vm); + } + + private void writeAutoMergeMessage(JsonGenerator writer, GspViewModel vm) { + if(isFull||!vm.getAutoConvertMessage()) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.ConvertMsg); + SerializerUtils.writePropertyValue_boolean(writer, vm.getAutoConvertMessage()); + } + } + + private void writeVMActions(JsonGenerator writer, GspViewModel vm) { + if (!isFull&&vm.getActions() == null || vm.getActions().size() < 1) + return; + boolean isHaveSelfAction=false; + InternalExtendActionUtil internalExtendActionUtil = new InternalExtendActionUtil(); + VMActionCollection actionList = vm.getActions(); + for(ViewModelAction a : actionList){ + if(!internalExtendActionUtil.InternalActionIds.contains(a.getID())){ + isHaveSelfAction=true; + break; + } + } + if(isFull||isHaveSelfAction){ + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.Actions); + getVMActionCollectionConvertor().serialize(vm.getActions(), writer, null); + } + } + + private VmActionCollectionSerializer getVMActionCollectionConvertor() { + return new VmActionCollectionSerializer(isFull); + } + + private void writeExtendModelProperty(JsonGenerator writer, GspViewModel vm) { + TemplateVoInfo s = vm.getTemplateVoInfo(); + if(isFull||!vm.getEnableStdTimeFormat()){ + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.EnableStdTimeFormat, vm.getEnableStdTimeFormat());} + if((vm.getSource()!=null && !"".equals(vm.getSource()))){ + SerializerUtils.writePropertyValue(writer,ViewModelJsonConst.Source,vm.getSource()); + } + if(isFull ||!vm.getIsGenFilterConvertor()){ + SerializerUtils.writePropertyValue(writer,ViewModelJsonConst.IsGenFilterConvertor,vm.getIsGenFilterConvertor()); + } + if(isFull||(vm.getDescription()!=null&&!"".equals(vm.getDescription()))){ + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.Description, vm.getDescription());} + if(isFull||(!vm.getExtendType().equals("GspViewModel"))){ + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.ExtendType, vm.getExtendType());} + if(isFull||(s.getTemplateVoServiceUnit()!=null&&!"".equals(s.getTemplateVoServiceUnit()))){ + if(isFull||(s.getTemplateVoId()!=null&&!"".equals(s.getTemplateVoId()))){ + if(isFull||(s.getTemplateVoPkgName()!=null&&!"".equals(s.getTemplateVoPkgName()))){ + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.TemplateVoInfo, vm.getTemplateVoInfo()); + } + } + } + writeMapping(writer, vm); + writeValueHelpConfigs(writer, vm); + writeExtendProperties(writer, vm); + writeVoDataExtendInfo(writer, vm); + } + + private void writeMapping(JsonGenerator writer, GspViewModel vm) { + if (vm.getMapping() == null) { + return; + } + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.Mapping); + ViewModelMappingSerializer convertor = new ViewModelMappingSerializer(isFull); + convertor.serialize(vm.getMapping(), writer, null); + } + + private void writeValueHelpConfigs(JsonGenerator writer, GspViewModel vm) { + if(isFull||(vm.getValueHelpConfigs()!=null&&vm.getValueHelpConfigs().size()!=0)){ + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.ValueHelpConfigs); + SerializerUtils.writeArray(writer,new ValueHelpConfigSerizlizer(isFull), vm.getValueHelpConfigs()); + } + } + + + private void writeExtendProperties(JsonGenerator writer, GspViewModel vm) { + if(!isFull&&vm.getExtendProperties()==null&&vm.getExtendProperties().size()==0) + return; + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.ExtendProperties); + var dic = vm.getExtendProperties(); + SerializerUtils.writeStartObject(writer); + if (dic != null && dic.size() > 0) { + for (var item : dic.entrySet()) { + SerializerUtils.writePropertyValue(writer, item.getKey(), item.getValue()); + } + } + SerializerUtils.writeEndObject(writer); + } + + private void writeVoDataExtendInfo(JsonGenerator writer, GspViewModel vm) { + if(isFull||(vm.getDataExtendInfo()!=null&&!vm.getDataExtendInfo().isAllNull())) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.DataExtendInfo); + var converter = new VoDataExtendInfoSerializer(isFull); + converter.serialize(vm.getDataExtendInfo(), writer, null); + } + } + + + //endregion + + //region SelfProp + @Override + protected void writeExtendModelSelfProperty(IGspCommonModel commonModel, JsonGenerator writer) { + + } + + //endregion + @Override + protected CmObjectSerializer getCmObjectSerializer() { + return new ViewObjectSerializer(isFull); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/model/VoDataExtendInfoDeserializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/model/VoDataExtendInfoDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..64b140679bad788790e2f59452faf138b0bfee85 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/model/VoDataExtendInfoDeserializer.java @@ -0,0 +1,139 @@ + + +package com.inspur.edp.formserver.viewmodel.json.model; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.action.internalexternalaction.*; +import com.inspur.edp.formserver.viewmodel.collection.VMActionCollection; +import com.inspur.edp.formserver.viewmodel.common.InternalExtendActionUtil; +import com.inspur.edp.formserver.viewmodel.dataextendinfo.VoDataExtendInfo; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; +import com.inspur.edp.formserver.viewmodel.json.operation.VmActionCollectionDeserializer; + +/** + * The Josn Deserializer Of View Model Data Extendion Info + * + * @ClassName: VoDataExtendInfoDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class VoDataExtendInfoDeserializer extends JsonDeserializer { + @Override + public VoDataExtendInfo deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) { + VoDataExtendInfo info = new VoDataExtendInfo(); + SerializerUtils.readStartObject(jsonParser); + while (jsonParser.getCurrentToken() == JsonToken.FIELD_NAME) { + String propName = SerializerUtils.readPropertyName(jsonParser); + readVoDataExtendInfo(jsonParser, propName, info); + } + SerializerUtils.readEndObject(jsonParser); + return info; + } + + private void readVoDataExtendInfo(JsonParser reader, String propName, VoDataExtendInfo info) { + switch (propName) { + case ViewModelJsonConst.DataMappingActions: + info.setDataMappingActions(readVMActions(reader)); + break; + case ViewModelJsonConst.BeforeQueryActions: + info.setBeforeQueryActions(readVMActions(reader)); + break; + case ViewModelJsonConst.QueryActions: + info.setQueryActions(readVMActions(reader)); + break; + case ViewModelJsonConst.AfterQueryActions: + info.setAfterQueryActions(readVMActions(reader)); + break; + case ViewModelJsonConst.BeforeRetrieveActions: + info.setBeforeRetrieveActions(readVMActions(reader)); + break; + case ViewModelJsonConst.RetrieveActions: + info.setRetrieveActions(readVMActions(reader)); + break; + case ViewModelJsonConst.AfterRetrieveActions: + info.setAfterRetrieveActions(readVMActions(reader)); + break; + case ViewModelJsonConst.BeforeModifyActions: + info.setBeforeModifyActions(readVMActions(reader)); + break; + case ViewModelJsonConst.ModifyActions: + info.setModifyActions(readVMActions(reader)); + break; + case ViewModelJsonConst.AfterModifyActions: + info.setAfterModifyActions(readVMActions(reader)); + break; + case ViewModelJsonConst.ChangesetMappingActions: + info.setChangesetMappingActions(readVMActions(reader)); + break; + case ViewModelJsonConst.BeforeCreateActions: + info.setBeforeCreateActions(readVMActions(reader)); + break; + case ViewModelJsonConst.CreateActions: + info.setCreateActions(readVMActions(reader)); + break; + case ViewModelJsonConst.AfterCreateActions: + info.setAfterCreateActions(readVMActions(reader)); + break; + case ViewModelJsonConst.BeforeDeleteActions: + info.setBeforeDeleteActions(readVMActions(reader)); + break; + case ViewModelJsonConst.DeleteActions: + info.setDeleteActions(readVMActions(reader)); + break; + case ViewModelJsonConst.AfterDeleteActions: + info.setAfterDeleteActions(readVMActions(reader)); + break; + case ViewModelJsonConst.BeforeSaveActions: + info.setBeforeSaveActions(readVMActions(reader)); + break; + case ViewModelJsonConst.DataReversalMappingActions: + info.setDataReversalMappingActions(readVMActions(reader)); + break; + case ViewModelJsonConst.AfterSaveActions: + info.setAfterSaveActions(readVMActions(reader)); + break; + case ViewModelJsonConst.ChangesetReversalMappingActions: + info.setChangesetReversalMappingActions(readVMActions(reader)); + break; + //TODO Java版暂不支持vo扩展动作批量删除及前后 + case ViewModelJsonConst.BeforeMultiDeleteActions: + info.setBeforeMultiDeleteActions(readVMActions(reader)); + break; + case ViewModelJsonConst.MultiDeleteActions: + info.setMultiDeleteActions(readVMActions(reader)); + break; + case ViewModelJsonConst.AfterMultiDeleteActions: + info.setAfterMultiDeleteActions(readVMActions(reader)); + break; + default: + throw new RuntimeException(String.format("未定义的VoDataExtendInfo属性:'%1$s'", propName)); + } + } + + private VMActionCollection readVMActions(JsonParser jsonParser) { + VmActionCollectionDeserializer deserializer = new VmActionCollectionDeserializer(); + VMActionCollection collection = deserializer.deserialize(jsonParser, null); + dealWithInternalExtendActions(collection); + return collection; + } + + private InternalExtendActionUtil extendActionUtil = new InternalExtendActionUtil(); + + private void dealWithInternalExtendActions(VMActionCollection actions) { + if (actions.size() > 0) { + ViewModelAction action = actions.get(0); + if (extendActionUtil.InternalActionIds.contains(action.getID())) { + ViewModelAction newAction = extendActionUtil.GetInternalExtendActionById(action.getID()); + actions.removeAt(0); + actions.add(0, newAction); + } + } + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/model/VoDataExtendInfoSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/model/VoDataExtendInfoSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..ffa86288c4a5abc921ced8e2c295ef64ccfc9add --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/model/VoDataExtendInfoSerializer.java @@ -0,0 +1,144 @@ + + +package com.inspur.edp.formserver.viewmodel.json.model; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.formserver.viewmodel.collection.VMActionCollection; +import com.inspur.edp.formserver.viewmodel.dataextendinfo.VoDataExtendInfo; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; +import com.inspur.edp.formserver.viewmodel.json.operation.VmActionCollectionSerializer; + +/** + * The Josn Serializer Of View Model Data Extendion Info + * + * @ClassName: VoDataExtendInfoSerializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class VoDataExtendInfoSerializer extends JsonSerializer { + protected boolean isFull = true; + public VoDataExtendInfoSerializer(){} + public VoDataExtendInfoSerializer(boolean full){ + isFull = full; + } + @Override + public void serialize(VoDataExtendInfo info, JsonGenerator writer, SerializerProvider serializers) { + if (info == null) { + SerializerUtils.writeStartObject(writer); + SerializerUtils.writeEndObject(writer); + return; + } + //{ + SerializerUtils.writeStartObject(writer); + if(isFull||info.getDataMappingActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.DataMappingActions); + writeVmActions(writer, info.getDataMappingActions()); + } + if(isFull||info.getBeforeQueryActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.BeforeQueryActions); + writeVmActions(writer, info.getBeforeQueryActions()); + } + if(isFull||info.getQueryActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.QueryActions); + writeVmActions(writer, info.getQueryActions()); + } + if(isFull||info.getAfterQueryActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.AfterQueryActions); + writeVmActions(writer, info.getAfterQueryActions()); + } + if(isFull||info.getBeforeRetrieveActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.BeforeRetrieveActions); + writeVmActions(writer, info.getBeforeRetrieveActions()); + } + if(isFull||info.getRetrieveActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.RetrieveActions); + writeVmActions(writer, info.getRetrieveActions()); + } + if(isFull||info.getAfterRetrieveActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.AfterRetrieveActions); + writeVmActions(writer, info.getAfterRetrieveActions()); + } + if(isFull||info.getBeforeModifyActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.BeforeModifyActions); + writeVmActions(writer, info.getBeforeModifyActions()); + } + if(isFull||info.getModifyActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.ModifyActions); + writeVmActions(writer, info.getModifyActions()); + } + if(isFull||info.getAfterModifyActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.AfterModifyActions); + writeVmActions(writer, info.getAfterModifyActions()); + } + if(isFull||info.getChangesetMappingActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.ChangesetMappingActions); + writeVmActions(writer, info.getChangesetMappingActions()); + } + if(isFull||info.getBeforeCreateActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.BeforeCreateActions); + writeVmActions(writer, info.getBeforeCreateActions()); + } + if(isFull||info.getCreateActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.CreateActions); + writeVmActions(writer, info.getCreateActions()); + } + if(isFull||info.getAfterCreateActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.AfterCreateActions); + writeVmActions(writer, info.getAfterCreateActions()); + } + if(isFull||info.getBeforeDeleteActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.BeforeDeleteActions); + writeVmActions(writer, info.getBeforeDeleteActions()); + } + if(isFull||info.getDeleteActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.DeleteActions); + writeVmActions(writer, info.getDeleteActions()); + } + if(isFull||info.getAfterDeleteActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.AfterDeleteActions); + writeVmActions(writer, info.getAfterDeleteActions()); + } + if(isFull||info.getBeforeSaveActions()!=null){ + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.BeforeSaveActions); + writeVmActions(writer, info.getBeforeSaveActions()); + } + if(isFull||info.getDataReversalMappingActions()!=null){ + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.DataReversalMappingActions); + writeVmActions(writer, info.getDataReversalMappingActions()); + } + if(isFull||info.getAfterSaveActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.AfterSaveActions); + writeVmActions(writer, info.getAfterSaveActions()); + } + if(isFull||info.getChangesetMappingActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.ChangesetReversalMappingActions); + writeVmActions(writer, info.getChangesetReversalMappingActions()); + } + if(isFull||info.getBeforeMultiDeleteActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.BeforeMultiDeleteActions); + writeVmActions(writer, info.getBeforeMultiDeleteActions()); + } + if(isFull||info.getMultiDeleteActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.MultiDeleteActions); + writeVmActions(writer, info.getMultiDeleteActions()); + } + if(isFull||info.getAfterMultiDeleteActions()!=null) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.AfterMultiDeleteActions); + writeVmActions(writer, info.getAfterMultiDeleteActions()); + } + //} + SerializerUtils.writeEndObject(writer); + } + + private void writeVmActions(JsonGenerator writer, VMActionCollection actions) { + getVMActionCollectionConvertor().serialize(actions, writer, null); + } + + private VmActionCollectionSerializer getVMActionCollectionConvertor() { + return new VmActionCollectionSerializer(isFull); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/object/ViewObjectDeserializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/object/ViewObjectDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..6dda4e603773603b2e337f44c0e7ab9d4d0c6cb5 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/object/ViewObjectDeserializer.java @@ -0,0 +1,113 @@ + + +package com.inspur.edp.formserver.viewmodel.json.object; + +import com.fasterxml.jackson.core.JsonParser; +import com.inspur.edp.das.commonmodel.collection.GspElementCollection; +import com.inspur.edp.das.commonmodel.collection.GspObjectCollection; +import com.inspur.edp.das.commonmodel.entity.GspCommonObject; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.das.commonmodel.json.element.CmElementDeserializer; +import com.inspur.edp.das.commonmodel.json.object.CmObjectDeserializer; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.formserver.viewmodel.collection.VMElementCollection; +import com.inspur.edp.formserver.viewmodel.collection.ViewObjectCollection; +import com.inspur.edp.formserver.viewmodel.common.MappingType; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoObjectMapping; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoObjectSourceType; +import com.inspur.edp.formserver.viewmodel.json.ExtendPropertiesDeserializer; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; +import com.inspur.edp.formserver.viewmodel.json.element.ViewElementDeserializer; +import com.inspur.edp.formserver.viewmodel.json.mapping.GspVoObjectMappingDeserializer; + +import java.util.HashMap; + +/** + * The Josn Deserializer Of View Object + * + * @ClassName: ViewObjectDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ViewObjectDeserializer extends CmObjectDeserializer { + @Override + protected void beforeCMObjectDeserializer(GspCommonObject commonObject){ + GspViewObject viewObject = (GspViewObject) commonObject; + viewObject.setIsBeckendOnly(false); + viewObject.setPrimaryKey(""); + viewObject.setDefaultPageSize(0); + viewObject.setOrderbyCondition(""); + viewObject.setFilterCondition(""); + viewObject.setExtendProperties(new HashMap<>()); + } + + @Override + protected CmObjectDeserializer createCmObjectDeserializer() { + return new ViewObjectDeserializer(); + } + + @Override + protected GspCommonObject CreateCommonObject() { + return new GspViewObject(); + } + + @Override + protected CmElementDeserializer CreateElementDeserializer() { + return new ViewElementDeserializer(); + } + + @Override + protected boolean ReadExtendObjectProperty(GspCommonObject commonObject, String propertyName, JsonParser reader) { + GspViewObject viewObject = (GspViewObject) commonObject; + boolean hasProperty = true; + switch (propertyName) { + case ViewModelJsonConst.IsBeckendOnly: + viewObject.setIsBeckendOnly(SerializerUtils.readPropertyValue_boolean(reader)); + break; + case ViewModelJsonConst.PrimaryKey: + viewObject.setPrimaryKey(SerializerUtils.readPropertyValue_String(reader)); + break; + case ViewModelJsonConst.Mapping: + readMapping(reader, viewObject); + break; + case ViewModelJsonConst.DefaultPageSize: + viewObject.setDefaultPageSize(SerializerUtils.readPropertyValue_Integer(reader)); + break; + case ViewModelJsonConst.ExtendProperties: + readExtendProperties(reader, viewObject); + break; + case ViewModelJsonConst.OrderbyCondition: + viewObject.setOrderbyCondition(SerializerUtils.readPropertyValue_String(reader)); + break; + case ViewModelJsonConst.FilterCondition: + viewObject.setFilterCondition(SerializerUtils.readPropertyValue_String(reader)); + + default: + hasProperty = false; + break; + } + return hasProperty; + } + + @Override + protected GspObjectCollection createChildObjectCollection() { + return new ViewObjectCollection(getGspCommonDataType()); + } + + @Override + protected GspElementCollection createCommonElementCollection() { + return new VMElementCollection((GspViewObject) getGspCommonDataType()); + } + + private void readExtendProperties(JsonParser jsonParser, GspViewObject viewObject) { + ExtendPropertiesDeserializer deserializer = new ExtendPropertiesDeserializer(); + viewObject.setExtendProperties(deserializer.deserialize(jsonParser, null)); + } + + private void readMapping(JsonParser jsonParser, GspViewObject viewObject) { + GspVoObjectMappingDeserializer deserializer = new GspVoObjectMappingDeserializer(); + GspVoObjectMapping mapping = (GspVoObjectMapping) deserializer.deserialize(jsonParser, null); + viewObject.setMapping(mapping); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/object/ViewObjectSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/object/ViewObjectSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..d75ccb4b3c6dec3f787bcb5ed76b15a09a20a708 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/object/ViewObjectSerializer.java @@ -0,0 +1,88 @@ + + +package com.inspur.edp.formserver.viewmodel.json.object; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.das.commonmodel.json.element.CmElementSerializer; +import com.inspur.edp.das.commonmodel.json.object.CmObjectSerializer; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; +import com.inspur.edp.formserver.viewmodel.json.element.ViewElementSerializer; +import com.inspur.edp.formserver.viewmodel.json.mapping.GspQoObjectMappingSerializer; +import com.inspur.edp.formserver.viewmodel.json.mapping.GspVoObjectMappingSerializer; +import lombok.var; + +/** + * The Josn Serializer Of View Object + * + * @ClassName: ViewObjectSerializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class ViewObjectSerializer extends CmObjectSerializer { + + public ViewObjectSerializer(){} + public ViewObjectSerializer(boolean full){ + super(full); + isFull= full; + } + @Override + protected CmElementSerializer gspCommonDataTypeSerializer() { + return new ViewElementSerializer(isFull); + } + + @Override + protected void writeExtendObjectBaseProperty(JsonGenerator jsonGenerator, IGspCommonObject iGspCommonObject) { + + } + + @Override + protected void writeExtendObjectSelfProperty(JsonGenerator writer, IGspCommonObject commonObject) { + GspViewObject viewObject = (GspViewObject) commonObject; + if(isFull||viewObject.getIsBeckendOnly()) + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.IsBeckendOnly, viewObject.getIsBeckendOnly()); + if(isFull||(viewObject.getPrimaryKey()!=null&&!"".equals(viewObject.getPrimaryKey()))){ + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.PrimaryKey, viewObject.getPrimaryKey());} + if(isFull||viewObject.getDefaultPageSize()!=0){ + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.DefaultPageSize, viewObject.getDefaultPageSize());} + if(isFull||(viewObject.getOrderbyCondition()!=null&&!"".equals(viewObject.getOrderbyCondition()))){ + SerializerUtils.writePropertyValue(writer,ViewModelJsonConst.OrderbyCondition,viewObject.getOrderbyCondition());} + if(isFull||(viewObject.getFilterCondition()!=null&&!"".equals(viewObject.getFilterCondition()))){ + SerializerUtils.writePropertyValue(writer,ViewModelJsonConst.FilterCondition,viewObject.getFilterCondition());} + writeMapping(writer, viewObject); + WriteExtendProperties(writer, viewObject); + } + + private void writeMapping(JsonGenerator writer, GspViewObject vo) { + if (vo.getMapping() == null) + return; + + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.Mapping); + switch (vo.getMapping().getSourceType()) { + case QoObject: + GspQoObjectMappingSerializer qoConvertor = new GspQoObjectMappingSerializer(isFull); + qoConvertor.serialize(vo.getMapping(), writer, null); + break; + default: + GspVoObjectMappingSerializer convertor = new GspVoObjectMappingSerializer(isFull); + convertor.serialize(vo.getMapping(), writer, null); + break; + } + } + + private void WriteExtendProperties(JsonGenerator writer, GspViewObject vo) { + var dic = vo.getExtendProperties(); + if (isFull||(dic != null && dic.size() > 0)) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.ExtendProperties); + SerializerUtils.writeStartObject(writer); + for (var item : dic.entrySet()) { + SerializerUtils.writePropertyValue(writer, item.getKey(), item.getValue()); + } + SerializerUtils.writeEndObject(writer); + } + } + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedBizActionDeserializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedBizActionDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..a3641cd9afd6decb44307f1cb2e0db1d6c517eac --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedBizActionDeserializer.java @@ -0,0 +1,36 @@ + + +package com.inspur.edp.formserver.viewmodel.json.operation; + +import com.inspur.edp.formserver.viewmodel.action.MappedBizAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.action.mappedbiz.MappedBizActionParameterCollection; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelParameterCollection; + +/** + * The Json Deserializer Of The View Model Action Of Mapped Be Action + * + * @ClassName: MappedBizActionDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class MappedBizActionDeserializer extends VmActionDeserializer { + @Override + protected MappedBizAction createOp() { + return new MappedBizAction(); + } + + @Override + protected void beforeVnactionDeserializer(ViewModelAction op) {} + + @Override + protected VmParameterDeserializer createPrapDeserializer() { + return new MappedBizActionParaDeserializer(); + } + + @Override + protected ViewModelParameterCollection createPrapCollection() { + return new MappedBizActionParameterCollection(); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedBizActionParaDeserializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedBizActionParaDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..93f43e5a5a3b44d550a6fc43867bbd0dd79b6f82 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedBizActionParaDeserializer.java @@ -0,0 +1,20 @@ + + +package com.inspur.edp.formserver.viewmodel.json.operation; + +import com.inspur.edp.formserver.viewmodel.action.mappedbiz.MappedBizActionParameter; + +/** + * The Json Deserializer Of The View Model Action Parameter Of Mapped Be Action + * + * @ClassName: MappedBizActionParaDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class MappedBizActionParaDeserializer extends VmParameterDeserializer { + @Override + protected MappedBizActionParameter createVmPara() { + return new MappedBizActionParameter(); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedBizActionParaSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedBizActionParaSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..8e40a87e5f0b82288045583376ef721d0c083ee9 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedBizActionParaSerializer.java @@ -0,0 +1,20 @@ + + +package com.inspur.edp.formserver.viewmodel.json.operation; + +import com.inspur.edp.formserver.viewmodel.action.mappedbiz.MappedBizActionParameter; +/** + * The Json Serializer Of The View Model Action Parameter Of Mapped Be Action + * + * @ClassName: MappedBizActionParaSerializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class MappedBizActionParaSerializer extends VmParameterSerializer { + public MappedBizActionParaSerializer(){} + public MappedBizActionParaSerializer(boolean full){ + super(full); + isFull = full; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedBizActionSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedBizActionSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..31f721ca4d5480f6c258bc0dd18476894f8df203 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedBizActionSerializer.java @@ -0,0 +1,31 @@ + + +package com.inspur.edp.formserver.viewmodel.json.operation; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.inspur.edp.formserver.viewmodel.action.MappedBizAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +/** + * The Json Serializer Of The View Model Action Of Mapped Be Action + * + * @ClassName: MappedBizActionSerializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class MappedBizActionSerializer extends VmActionSerializer { + public MappedBizActionSerializer(){} + public MappedBizActionSerializer(boolean full){ + super(full); + isFull = full; + } + @Override + protected VmParameterSerializer getParaConvertor() { + return new MappedBizActionParaSerializer(isFull); + } + + @Override + protected void writeExtendOperationProperty(JsonGenerator writer, ViewModelAction op) { + + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedCdpActionDeserializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedCdpActionDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..f058be60ae6938d9700f5a9f0e6753d63655b085 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedCdpActionDeserializer.java @@ -0,0 +1,64 @@ + + +package com.inspur.edp.formserver.viewmodel.json.operation; + +import com.fasterxml.jackson.core.JsonParser; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.action.mappedcdp.MappedCdpActionParameterCollection; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelParameterCollection; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; +/** + * The Json Deserializer Of Mapped Component Action Definition + * + * @ClassName: MappedCdpActionDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class MappedCdpActionDeserializer extends VmActionDeserializer { + @Override + protected MappedCdpAction createOp() { + return new MappedCdpAction(); + } + + @Override + protected void beforeVnactionDeserializer(ViewModelAction op) { + MappedCdpAction action = (MappedCdpAction)op; + action.setIsGenerateComponent(true); + action.setComponentPkgName(""); + } + + @Override + protected VmParameterDeserializer createPrapDeserializer() { + return new MappedCdpParaDeserializer(); + } + + @Override + protected ViewModelParameterCollection createPrapCollection() { + return new MappedCdpActionParameterCollection(); + } + + @Override + protected boolean readExtendOpProperty(ViewModelAction op, String propName, JsonParser reader) { + MappedCdpAction action = (MappedCdpAction)op; + boolean hasProperty = true; + switch (propName) + { + case ViewModelJsonConst.ComponentPkgName: + action.setComponentPkgName(SerializerUtils.readPropertyValue_String(reader)); + break; + case ViewModelJsonConst.ComponentEntityId: + action.setComponentEntityId(SerializerUtils.readPropertyValue_String(reader)); + break; + case ViewModelJsonConst.IsGenerateComponent: + action.setIsGenerateComponent(SerializerUtils.readPropertyValue_boolean(reader)); + break; + default: + hasProperty = false; + break; + } + return hasProperty; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedCdpActionSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedCdpActionSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..a10f053bcbf1601678f30e3d64ee21998b273efb --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedCdpActionSerializer.java @@ -0,0 +1,40 @@ + + +package com.inspur.edp.formserver.viewmodel.json.operation; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.formserver.viewmodel.action.MappedCdpAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; +/** + * The Json Serializer Of Mapped Component Action Definition + * + * @ClassName: MappedCdpActionSerializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class MappedCdpActionSerializer extends VmActionSerializer { + + public MappedCdpActionSerializer(){} + public MappedCdpActionSerializer(boolean full){ + super(full); + isFull = full; + } + @Override + protected VmParameterSerializer getParaConvertor() { + return new MappedCdpParaSerializer(isFull); + } + + @Override + protected void writeExtendOperationProperty(JsonGenerator writer, ViewModelAction op) { + MappedCdpAction action = (MappedCdpAction) op; + if(isFull||(action.getComponentEntityId()!=null&&!"".equals(action.getComponentEntityId()))){ + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.ComponentEntityId, action.getComponentEntityId());} + if(isFull||(action.getComponentPkgName()!=null&&!"".equals(action.getComponentPkgName()))){ + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.ComponentPkgName, action.getComponentPkgName());} + if(isFull||!action.getIsGenerateComponent()) + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.IsGenerateComponent, action.getIsGenerateComponent()); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedCdpParaDeserializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedCdpParaDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..90294c7913f52c091bd40023a02f3a3e988ef546 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedCdpParaDeserializer.java @@ -0,0 +1,19 @@ + + +package com.inspur.edp.formserver.viewmodel.json.operation; + +import com.inspur.edp.formserver.viewmodel.action.mappedcdp.MappedCdpActionParameter; +/** + * The Json Deserializer Of Mapped Component Action Parameter Definition + * + * @ClassName: MappedCdpParaDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class MappedCdpParaDeserializer extends VmParameterDeserializer { + @Override + protected MappedCdpActionParameter createVmPara() { + return new MappedCdpActionParameter(); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedCdpParaSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedCdpParaSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..6f9b61608d55c1e89ea36a9805629d8206153277 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/MappedCdpParaSerializer.java @@ -0,0 +1,20 @@ + + +package com.inspur.edp.formserver.viewmodel.json.operation; + +import com.inspur.edp.formserver.viewmodel.action.mappedcdp.MappedCdpActionParameter; +/** + * The Json Serializer Of Mapped Component Action Parameter Definition + * + * @ClassName: MappedCdpParaSerializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class MappedCdpParaSerializer extends VmParameterSerializer{ + public MappedCdpParaSerializer(){} + public MappedCdpParaSerializer(boolean full){ + super(full); + isFull = full; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/VmActionCollectionDeserializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/VmActionCollectionDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..76f9ab2ed2a9cab389d5395b037b08bc1f21bf65 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/VmActionCollectionDeserializer.java @@ -0,0 +1,88 @@ + + +package com.inspur.edp.formserver.viewmodel.json.operation; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.databind.node.JsonNodeType; +import com.fasterxml.jackson.databind.util.JSONPObject; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelActionType; +import com.inspur.edp.formserver.viewmodel.collection.VMActionCollection; + +import java.io.IOException; + +/** + * The Josn Deserializer Of View Model Action Collection + * + * @ClassName: VmActionCollectionDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class VmActionCollectionDeserializer extends JsonDeserializer { + @Override + public VMActionCollection deserialize(JsonParser parser, DeserializationContext deserializationContext) { + VMActionCollection collection = createCollection(); + if (SerializerUtils.readNullObject(parser)) { + return collection; + } + try { + JsonNode nodeList = new ObjectMapper().readTree(parser); + + if (nodeList.getNodeType() == JsonNodeType.ARRAY) { + for (JsonNode node : nodeList) { + collection.add(readBizOperation(node)); + } + } + while (parser.getCurrentToken() == null) { + parser.nextToken(); + } + if (parser.getCurrentToken() == JsonToken.END_ARRAY) { + SerializerUtils.readEndArray(parser); + } + } catch (IOException e) { + e.printStackTrace(); + } + + return collection; + } + + private ViewModelAction readBizOperation(JsonNode node) { + String typeJson = node.get("Type").textValue(); + ViewModelActionType type = ViewModelActionType.valueOf(typeJson); + VmActionDeserializer deserializer = createDeserializer(type); + + SimpleModule module = new SimpleModule(); + module.addDeserializer(ViewModelAction.class, deserializer); + ObjectMapper mapper = new ObjectMapper(); + mapper.registerModule(module); + try { + return mapper.readValue(node.toString(), ViewModelAction.class); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + private VMActionCollection createCollection() { + return new VMActionCollection(); + } + + private VmActionDeserializer createDeserializer(ViewModelActionType type) { + switch (type) { + case BEAction: + return new MappedBizActionDeserializer(); + case VMAction: + return new MappedCdpActionDeserializer(); + default: + throw new RuntimeException(); + } + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/VmActionCollectionSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/VmActionCollectionSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..556c16c9208beb14184d390f3c848441e457e333 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/VmActionCollectionSerializer.java @@ -0,0 +1,56 @@ + + +package com.inspur.edp.formserver.viewmodel.json.operation; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelActionType; +import com.inspur.edp.formserver.viewmodel.collection.VMActionCollection; +import lombok.var; +/** + * The Josn Serializer Of View Model Action Collection + * + * @ClassName: VmActionCollectionSerializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class VmActionCollectionSerializer extends JsonSerializer { + + protected boolean isFull = true; + public VmActionCollectionSerializer(){} + public VmActionCollectionSerializer(boolean full){ + isFull = full; + } + + @Override + public void serialize(VMActionCollection value, JsonGenerator writer, SerializerProvider serializers) { + + if (value.size() == 0) { + SerializerUtils.WriteStartArray(writer); + SerializerUtils.WriteEndArray(writer); + return; + } + SerializerUtils.WriteStartArray(writer); + for (int i = 0; i < value.size(); i++) { + ViewModelAction action = value.get(i); + getActionConvertor(action.getType()).serialize(value.get(i), writer, null); + } + SerializerUtils.WriteEndArray(writer); + } + + private VmActionSerializer getActionConvertor(ViewModelActionType type) { + switch (type) { + case BEAction: + return new MappedBizActionSerializer(isFull); + case VMAction: + return new MappedCdpActionSerializer(isFull); + case Custom: + default: + throw new RuntimeException("未定义'" + type + "'类型Action的JSON序列化器。"); + } + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/VmActionDeserializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/VmActionDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..afad819b3e493bfbe9d51466e0a1fde732c5c175 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/VmActionDeserializer.java @@ -0,0 +1,141 @@ + + +package com.inspur.edp.formserver.viewmodel.json.operation; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.inspur.edp.cef.designtime.api.entity.CustomizationInfo; +import com.inspur.edp.cef.designtime.api.json.CefNames; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.das.commonmodel.json.CommonModelNames; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.action.ViewModelActionType; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelParameter; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelParameterCollection; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelReturnValue; +import com.inspur.edp.formserver.viewmodel.common.ViewModelMapping; +import com.inspur.edp.formserver.viewmodel.json.ExtendPropertiesDeserializer; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; +import com.inspur.edp.formserver.viewmodel.json.mapping.ViewModelMappingDeserializer; + +import java.io.IOException; +import java.util.HashMap; + +import static com.fasterxml.jackson.core.JsonToken.FIELD_NAME; +/** + * The Josn Deserializer Of View Model Action + * + * @ClassName: VmActionDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public abstract class VmActionDeserializer extends JsonDeserializer { + @Override + public final T deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) { + return deserializeBizOperation(jsonParser); + } + + private final T deserializeBizOperation(JsonParser jsonParser) { + T op = createOp(); + op.setComponentName(""); + op.setIsAutoSave(false); + op.setExtendProperties(new HashMap<>()); + op.setReturnValue(new ViewModelReturnValue()); + beforeVnactionDeserializer(op); + SerializerUtils.readStartObject(jsonParser); + while (jsonParser.getCurrentToken() == FIELD_NAME) { + String propName = SerializerUtils.readPropertyName(jsonParser); + readPropertyValue(op, propName, jsonParser); + } + SerializerUtils.readEndObject(jsonParser); + + return op; + } + + private void readPropertyValue(ViewModelAction op, String propName, JsonParser jsonParser) { + switch (propName) { + case CommonModelNames.ID: + op.setID(SerializerUtils.readPropertyValue_String(jsonParser)); + break; + case CommonModelNames.Code: + op.setCode(SerializerUtils.readPropertyValue_String(jsonParser)); + break; + case CommonModelNames.Name: + op.setName(SerializerUtils.readPropertyValue_String(jsonParser)); + break; + case ViewModelJsonConst.Type: + op.setType(SerializerUtils.readPropertyValue_Enum(jsonParser, ViewModelActionType.class, ViewModelActionType.values(), ViewModelActionType.BEAction)); + break; + case ViewModelJsonConst.ParameterCollection: + readParameters(jsonParser, op); + break; + case ViewModelJsonConst.ReturnValue: + readReturnValue(jsonParser, op); + break; + case ViewModelJsonConst.Mapping: + readMapping(jsonParser, op); + break; + case ViewModelJsonConst.ComponentName: + op.setComponentName(SerializerUtils.readPropertyValue_String(jsonParser)); + break; + case ViewModelJsonConst.ExtendProperties: + readExtendProperties(jsonParser, op); + break; + case ViewModelJsonConst.IsAutoSave: + op.setIsAutoSave(SerializerUtils.readPropertyValue_boolean(jsonParser)); + break; + case CefNames.CustomizationInfo: + op.setCustomizationInfo(SerializerUtils.readPropertyValue_Object(CustomizationInfo.class,jsonParser)); + try { + jsonParser.nextToken(); + } catch (IOException e) { + throw new RuntimeException(String.format("BizOperationDeserializer反序列化错误:%1$s", propName)); + } + break; + default: + if (!readExtendOpProperty(op, propName, jsonParser)) { + throw new RuntimeException(String.format("BizOperationDeserializer未识别的属性名:%1$s", propName)); + } + } + } + + private void readExtendProperties(JsonParser jsonParser, ViewModelAction action) { + ExtendPropertiesDeserializer deserializer = new ExtendPropertiesDeserializer(); + action.setExtendProperties(deserializer.deserialize(jsonParser, null)); + } + + private void readParameters(JsonParser jsonParser, ViewModelAction op) { + VmParameterDeserializer parameterDeserializer = createPrapDeserializer(); + ViewModelParameterCollection collection = createPrapCollection(); + SerializerUtils.readArray(jsonParser, parameterDeserializer, collection); + for (ViewModelParameter para : collection) { + op.getParameterCollection().add(para); + } + } + + private void readReturnValue(JsonParser jsonParser, ViewModelAction op) { + VmReturnValueDeserializer deserializer = new VmReturnValueDeserializer(); + op.setReturnValue(deserializer.deserializePara(jsonParser)); + } + + private void readMapping(JsonParser jsonParser, ViewModelAction op) { + ViewModelMappingDeserializer deserializer = new ViewModelMappingDeserializer(); + ViewModelMapping mapping = deserializer.deserialize(jsonParser, null); + op.setMapping(mapping); + } + + protected boolean readExtendOpProperty(ViewModelAction op, String propName, JsonParser jsonParser) { + return false; + } + + protected abstract T createOp(); + + protected abstract void beforeVnactionDeserializer(ViewModelAction op); + + protected abstract VmParameterDeserializer createPrapDeserializer(); + + protected abstract ViewModelParameterCollection createPrapCollection(); +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/VmActionSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/VmActionSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..28af97df0ded2b78df2a9b55ad6d323a6c7f5407 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/VmActionSerializer.java @@ -0,0 +1,116 @@ + + +package com.inspur.edp.formserver.viewmodel.json.operation; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.inspur.edp.cef.designtime.api.json.CefNames; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.das.commonmodel.json.CommonModelNames; +import com.inspur.edp.formserver.viewmodel.action.IViewModelParameter; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.action.mappedcdp.MappedCdpActionParameterCollection; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelParameter; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelParameterCollection; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; +import com.inspur.edp.formserver.viewmodel.json.mapping.ViewModelMappingSerializer; +import lombok.var; +import com.inspur.edp.formserver.viewmodel.common.InternalExtendActionUtil; +/** + * The Josn Serializer Of View Model Action + * + * @ClassName: VmActionSerializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public abstract class VmActionSerializer extends JsonSerializer { + protected boolean isFull = true; + public VmActionSerializer(){} + public VmActionSerializer(boolean full){ + isFull = full; + } + @Override + public void serialize(T value, JsonGenerator writer, SerializerProvider serializers) { + SerializerUtils.writeStartObject(writer); + SerializerUtils.writePropertyValue(writer, CommonModelNames.ID, value.getID()); + SerializerUtils.writePropertyValue(writer, CommonModelNames.Code, value.getCode()); + SerializerUtils.writePropertyValue(writer, CommonModelNames.Name, value.getName()); + if(isFull||(value.getComponentName()!=null&&!"".equals(value.getComponentName()))){ + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.ComponentName, value.getComponentName());} + SerializerUtils.writePropertyValue(writer, CommonModelNames.Type, value.getType().toString()); + if(isFull||value.getIsAutoSave()) + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.IsAutoSave, value.getIsAutoSave()); + if(isFull||value.getCustomizationInfo().isCustomized()) { + SerializerUtils.writePropertyValue(writer, CefNames.CustomizationInfo, value.getCustomizationInfo()); + } + writeParameters(writer, value); + writeReturnValue(writer, value); + writeMapping(writer, value); + writeExtendProperties(writer, value); + + //扩展模型属性 + writeExtendOperationProperty(writer, value); + + SerializerUtils.writeEndObject(writer); + } + + private void writeParameters(JsonGenerator writer, ViewModelAction action) { + if (isFull||(action.getParameterCollection()!=null&&action.getParameterCollection().getCount() > 0)) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.ParameterCollection); + //[ + SerializerUtils.WriteStartArray(writer); + if (action.getParameterCollection().getCount() > 0) { + for (var item : action.getParameterCollection()) { + getParaConvertor().serialize((ViewModelParameter) item, writer, null); + } + } + //] + SerializerUtils.WriteEndArray(writer); + } + } + + private void writeReturnValue(JsonGenerator writer, ViewModelAction action) { + if (action == null || action.getReturnValue() == null) + return; + + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.ReturnValue); + VmParameterSerializer convertor = new VmParameterSerializer(isFull); + convertor.serialize(action.getReturnValue(), writer, null); + + } + + private void writeMapping(JsonGenerator writer, ViewModelAction action) { + if (action.getMapping() == null) { + return; + } + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.Mapping); + ViewModelMappingSerializer convertor = new ViewModelMappingSerializer(isFull); + convertor.serialize(action.getMapping(), writer, null); + } + + private void writeExtendProperties(JsonGenerator writer, ViewModelAction vm) { + var dic = vm.getExtendProperties(); + if (isFull||(dic != null && dic.size() > 0)) { + SerializerUtils.writePropertyName(writer, ViewModelJsonConst.ExtendProperties); + SerializerUtils.writeStartObject(writer); + if (dic != null && dic.size() > 0) { + for (var item : dic.entrySet()) { + SerializerUtils.writePropertyValue(writer, item.getKey(), item.getValue()); + } + } + SerializerUtils.writeEndObject(writer); + } + } + + + protected abstract VmParameterSerializer getParaConvertor(); + + /** + * 序列化子类扩展信息 + * @param writer + * @param op + */ + protected abstract void writeExtendOperationProperty(JsonGenerator writer, ViewModelAction op); +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/VmParameterDeserializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/VmParameterDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..f19712d2612f231dfd6779ca5f57fc8684711877 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/VmParameterDeserializer.java @@ -0,0 +1,104 @@ + + +package com.inspur.edp.formserver.viewmodel.json.operation; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.das.commonmodel.json.CommonModelNames; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelParActualValue; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelParameter; +import com.inspur.edp.formserver.viewmodel.common.VMCollectionParameterType; +import com.inspur.edp.formserver.viewmodel.common.VMParameterMode; +import com.inspur.edp.formserver.viewmodel.common.VMParameterType; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; +import java.io.IOException; + +import static com.fasterxml.jackson.core.JsonToken.FIELD_NAME; +/** + * The Json Deserializer Of View MOdel Action Parameter + * + * @ClassName: VmParameterDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public abstract class VmParameterDeserializer extends JsonDeserializer { + @Override + public T deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) { + return deserializePara(jsonParser); + } + + public final T deserializePara(JsonParser jsonParser) { + T op = createVmPara(); + op.setParamDescription(""); + op.setParamCode(""); + op.setParamName(""); + op.setClassName(""); + SerializerUtils.readStartObject(jsonParser); + while (jsonParser.getCurrentToken() == FIELD_NAME) { + String propName = SerializerUtils.readPropertyName(jsonParser); + readPropertyValue(op, propName, jsonParser); + } + SerializerUtils.readEndObject(jsonParser); + return op; + } + + private void readPropertyValue(ViewModelParameter para, String propName, JsonParser jsonParser) { + switch (propName) { + case CommonModelNames.ID: + para.setID(SerializerUtils.readPropertyValue_String(jsonParser)); + break; + case ViewModelJsonConst.ParamCode: + para.setParamCode(SerializerUtils.readPropertyValue_String(jsonParser)); + break; + case ViewModelJsonConst.ParamName: + para.setParamName(SerializerUtils.readPropertyValue_String(jsonParser)); + break; + case ViewModelJsonConst.ParameterType: + para.setParameterType(SerializerUtils.readPropertyValue_Enum(jsonParser, VMParameterType.class, VMParameterType.values(), VMParameterType.String)); + break; + case ViewModelJsonConst.Assembly: + para.setAssembly(SerializerUtils.readPropertyValue_String(jsonParser)); + break; + case ViewModelJsonConst.ClassName: + para.setDotnetClassName(SerializerUtils.readPropertyValue_String(jsonParser)); + break; + case ViewModelJsonConst.JavaClassName: + para.setClassName(SerializerUtils.readPropertyValue_String(jsonParser)); + break; + case ViewModelJsonConst.Mode: + para.setMode(SerializerUtils.readPropertyValue_Enum(jsonParser, VMParameterMode.class, VMParameterMode.values(), VMParameterMode.IN)); + break; + case ViewModelJsonConst.ParamDescription: + para.setParamDescription(SerializerUtils.readPropertyValue_String(jsonParser)); + break; + case ViewModelJsonConst.CollectionParameterType: + para.setCollectionParameterType(SerializerUtils.readPropertyValue_Enum(jsonParser, VMCollectionParameterType.class, VMCollectionParameterType.values(), VMCollectionParameterType.None)); + break; + case ViewModelJsonConst.ParamActualValue: + if(SerializerUtils.readNullObject(jsonParser)){ + return; + } + para.setActualValue(SerializerUtils.readPropertyValue_Object(ViewModelParActualValue.class, jsonParser)); + //TODO: ?????? 此处参考了CustomizationInfo的反序列化, 有进一步完善的空间 + try { + jsonParser.nextToken(); + } catch (IOException e) { + throw new RuntimeException(e); + } + break; + default: + if (!readExtendParaProperty(para, propName, jsonParser)) { + throw new RuntimeException(String.format("BizOperationDeserializer未识别的属性名:%1$s", propName)); + } + } + } + + protected boolean readExtendParaProperty(ViewModelParameter op, String propName, JsonParser jsonParser) { + return false; + } + + protected abstract T createVmPara(); +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/VmParameterSerializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/VmParameterSerializer.java new file mode 100644 index 0000000000000000000000000000000000000000..3812f53d80e43a07127cf4ab30f1722ba55ba3b2 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/VmParameterSerializer.java @@ -0,0 +1,48 @@ + + +package com.inspur.edp.formserver.viewmodel.json.operation; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.inspur.edp.cef.designtime.api.json.SerializerUtils; +import com.inspur.edp.das.commonmodel.json.CommonModelNames; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelParameter; +import com.inspur.edp.formserver.viewmodel.json.ViewModelJsonConst; +/** + * The Json Serializer Of View MOdel Action Parameter + * + * @ClassName: VmParameterSerializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class VmParameterSerializer extends JsonSerializer { + protected boolean isFull = true; + public VmParameterSerializer(){} + public VmParameterSerializer(boolean full){ + isFull = full; + } + @Override + public void serialize(T value, JsonGenerator writer, SerializerProvider serializers){ + SerializerUtils.writeStartObject(writer); + SerializerUtils.writePropertyValue(writer, CommonModelNames.ID, value.getID()); + if(isFull||value.getParamCode()!=null&&!"".equals(value.getParamCode())) + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.ParamCode, value.getParamCode()); + if(isFull||value.getParamName()!=null&&!"".equals(value.getParamName())) + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.ParamName, value.getParamName()); + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.ParameterType, value.getParameterType().toString()); + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.Assembly, value.getAssembly()); + if(isFull||value.getClassName()!=null&&!"".equals(value.getClassName())) + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.JavaClassName, value.getClassName()); + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.ClassName, value.getDotnetClassName()); + if(isFull||value.getMode().getValue()!=0){ + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.Mode, value.getMode().toString());} + if(isFull||value.getParamDescription()!=null&&!"".equals(value.getParamDescription())){ + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.ParamDescription, value.getParamDescription());} + if(isFull||value.getCollectionParameterType().getValue()!=0){ + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.CollectionParameterType, value.getCollectionParameterType().toString());} + SerializerUtils.writePropertyValue(writer, ViewModelJsonConst.ParamActualValue, value.getActualValue()); + SerializerUtils.writeEndObject(writer); + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/VmReturnValueDeserializer.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/VmReturnValueDeserializer.java new file mode 100644 index 0000000000000000000000000000000000000000..818bc525e9f427e85e4be0ef11e27070a9b577ef --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/json/operation/VmReturnValueDeserializer.java @@ -0,0 +1,37 @@ + + +package com.inspur.edp.formserver.viewmodel.json.operation; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelReturnValue; +import com.inspur.edp.formserver.viewmodel.action.viewmodelbase.ViewModelVoidReturnValue; +/** + * The Josn Deserializer Of View Model Action Return Value + * + * @ClassName: VmReturnValueDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class VmReturnValueDeserializer extends VmParameterDeserializer { + @Override + protected ViewModelReturnValue createVmPara() { + return new ViewModelReturnValue(); + } + + @Override + public ViewModelReturnValue deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) { + ViewModelReturnValue rez = (ViewModelReturnValue) super.deserialize(jsonParser, null); + if (ViewModelVoidReturnValue.assembly.equals(rez.getAssembly()) + && ViewModelVoidReturnValue.className.equals(rez.getClassName())) { + ViewModelReturnValue newRez = new ViewModelVoidReturnValue(); + newRez.setID(rez.getID()); + newRez.setParamCode(rez.getParamCode()); + newRez.setParamDescription(rez.getParamDescription()); + newRez.setParameterType(rez.getParameterType()); + return newRez; + } + return rez; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/pushchangesetargs/VmPushChangeSet.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/pushchangesetargs/VmPushChangeSet.java new file mode 100644 index 0000000000000000000000000000000000000000..f4b2b1703fcccb523f01c022b9b1b88eb186ba3d --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/pushchangesetargs/VmPushChangeSet.java @@ -0,0 +1,30 @@ + + +package com.inspur.edp.formserver.viewmodel.pushchangesetargs; + +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import java.util.List; + +/** + * 需要推送至表单数据: 元数据集合 + */ +public class VmPushChangeSet { + + + public VmPushChangeSet( + List metadataList) { + this.metadataList = metadataList; + } + + public List getMetadataList() { + return metadataList; + } + + public void setMetadataList( + List metadataList) { + this.metadataList = metadataList; + } + + private List metadataList; + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/pushchangesetargs/VmPushChangeSetArgs.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/pushchangesetargs/VmPushChangeSetArgs.java new file mode 100644 index 0000000000000000000000000000000000000000..ac84d70c03b077d34d55186559ae17332d48efa0 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/pushchangesetargs/VmPushChangeSetArgs.java @@ -0,0 +1,21 @@ + + +package com.inspur.edp.formserver.viewmodel.pushchangesetargs; + +import com.inspur.edp.bef.bizentity.pushchangesetargs.AbstractPushChangeSetArgs; + +public class VmPushChangeSetArgs extends AbstractPushChangeSetArgs { + private VmPushChangeSet changeSet; + public VmPushChangeSetArgs(VmPushChangeSet changeSet) { + this.changeSet = changeSet; + } + public VmPushChangeSet getChangeSet() { + return changeSet; + } + + public void setChangeSet(VmPushChangeSet changeSet) { + this.changeSet = changeSet; + } + + +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/pushchangesetlistener/IVmPushChangeSetListener.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/pushchangesetlistener/IVmPushChangeSetListener.java new file mode 100644 index 0000000000000000000000000000000000000000..5f135b423a05ce4a66c9f34093978a7b43aab04c --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/pushchangesetlistener/IVmPushChangeSetListener.java @@ -0,0 +1,10 @@ + + +package com.inspur.edp.formserver.viewmodel.pushchangesetlistener; + +import com.inspur.edp.formserver.viewmodel.pushchangesetargs.VmPushChangeSetArgs; +import io.iec.edp.caf.commons.event.IEventListener; + +public interface IVmPushChangeSetListener extends IEventListener { + void vmPushChangeSet(VmPushChangeSetArgs args); +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/util/UpdateVoElementUtil.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/util/UpdateVoElementUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..182690ac46e6aa8553cfcbee7889988d45d326c0 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/util/UpdateVoElementUtil.java @@ -0,0 +1,369 @@ + + +package com.inspur.edp.formserver.viewmodel.util; + + +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.cef.designtime.api.collection.GspAssociationCollection; +import com.inspur.edp.cef.designtime.api.collection.GspFieldCollection; +import com.inspur.edp.cef.designtime.api.element.GspAssociation; +import com.inspur.edp.cef.designtime.api.element.GspAssociationKey; +import com.inspur.edp.cef.designtime.api.element.GspElementDataType; +import com.inspur.edp.cef.designtime.api.element.GspEnumValue; +import com.inspur.edp.das.commonmodel.IGspCommonElement; +import com.inspur.edp.das.commonmodel.entity.element.GspCommonAssociation; +import com.inspur.edp.formserver.viewmodel.DotNetToJavaStringHelper; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.udt.designtime.api.entity.ComplexDataTypeDef; +import com.inspur.edp.udt.designtime.api.entity.SimpleDataTypeDef; +import com.inspur.edp.udt.designtime.api.entity.UnifiedDataTypeDef; +import com.inspur.edp.udt.designtime.api.entity.UseTypeInfo; +import com.inspur.edp.udt.designtime.api.entity.dbInfo.ColumnInfo; +import com.inspur.edp.udt.designtime.api.entity.dbInfo.ColumnMapType; +import com.inspur.edp.udt.designtime.api.entity.element.UdtElement; +import com.inspur.edp.udt.designtime.api.entity.enumtype.UseType; +import java.util.UUID; + +/** + 更新udt字段 + +*/ +public class UpdateVoElementUtil +{ + private boolean isVirtual = true; + + /** + 创建字段实例 + + @return + */ + private GspViewModelElement getChildElement() + { + GspViewModelElement tempVar = new GspViewModelElement(); + tempVar.setID(UUID.randomUUID().toString()); + return tempVar; + } + + /** + 根据引用的udt元数据更新字段(模板约束均更新) + + @param element + @param udt + */ + public final void UpdateElementWithRefUdt(GspViewModelElement element, UnifiedDataTypeDef udt, boolean isFirstChoose) + { + element.setUdtID(udt.getId()); + element.setUdtName(udt.getName()); + + + + // 其他属性 + if (udt instanceof ComplexDataTypeDef) + { + UpdateComplexDataTypeDefProperties(element, (ComplexDataTypeDef) udt); + } + else if (udt instanceof SimpleDataTypeDef ) + { + UpdateSimpleDataTypeDefProperties(element, (SimpleDataTypeDef) udt, isFirstChoose); + } + } + + /** + 转换columnInfo为childElement + + @param info + @param prefix + @param ele 映射字段 + @return + */ + public final void MapColumnInfoToField(ColumnInfo info, String prefix, GspViewModelElement ele) + { + if (ViewModelUtils.checkNull(prefix)) + { + throw new RuntimeException("请先完善当前字段的[编号]及[标签]。"); + } + String newLabelId = prefix + "_" + info.getCode(); + ele.setLabelID(newLabelId); + ele.setCode(newLabelId) ; + ele.setName(info.getName()); + ele.setMDataType(info.getMDataType()); + ele.setDefaultValue(info.getDefaultValue()); + ele.setLength(info.getLength()); + ele.setPrecision(info.getPrecision()); + } + + ///#region 单值 + + /** + 根据单值udt更新字段的其他属性 + + @param element + @param sUdt + @param isFirstChoose 是否首次选择 + */ + private void UpdateSimpleDataTypeDefProperties(GspViewModelElement element, SimpleDataTypeDef sUdt, boolean isFirstChoose) + { + if (DotNetToJavaStringHelper.isNullOrEmpty(element.getCode())) + { + element.setCode(sUdt.getCode()); + } + if (DotNetToJavaStringHelper.isNullOrEmpty(element.getName())) + { + element.setName(sUdt.getName()); + } + + if (isFirstChoose || IsConstraint(sUdt, "DataType")) + { + element.setMDataType(sUdt.getMDataType()); + } + if (isFirstChoose || IsConstraint(sUdt, "Length")) + { + element.setLength(sUdt.getLength()); + } + if (isFirstChoose || IsConstraint(sUdt, "Precision")) + { + element.setPrecision(sUdt.getPrecision()); ; + } + if (isFirstChoose || IsConstraint(sUdt, "ObjectType")) + { + element.setObjectType(sUdt.getObjectType()); + // 关联 + if (element.getChildAssociations() == null) + { + element.setChildAssociations( new GspAssociationCollection()) ; + } + + IGspCommonField belongElement = (element.getChildAssociations() != null && element.getChildAssociations().size() > 0) ? element.getChildAssociations().get(0).getBelongElement() : null; + + GspAssociationCollection assos = element.getChildAssociations().clone(belongElement); + + element.getChildAssociations().clear(); + if (sUdt.getChildAssociations() != null && sUdt.getChildAssociations().size() > 0) + { + for (GspAssociation item : sUdt.getChildAssociations()) + { + + + GspAssociation beAsso = assos.stream().filter(asso->asso.getId().equals(item.getId())).findFirst().orElse(null); + + element.getChildAssociations().add(ConvertUdtAssociation(item, element, beAsso, isFirstChoose)); + } + } + + element.setEnumIndexType(sUdt.getEnumIndexType()); + // 枚举 + element.getContainEnumValues().clear(); + if (sUdt.getContainEnumValues() != null && sUdt.getContainEnumValues().size() > 0) + { + for (GspEnumValue item : sUdt.getContainEnumValues()) + { + element.getContainEnumValues().add(item); + } + } + } + if (isFirstChoose || IsConstraint(sUdt, "DefaultValue")) + { + + element.setDefaultValue(sUdt.getDefaultValue()==null ? null:sUdt.getDefaultValue().toString()); + } + if (isFirstChoose || IsConstraint(sUdt, "IsRequired")) + { + element.setIsRef(sUdt.getIsRequired()); + } + // UnifiedDataType属性,前端根据[约束]/[模板]控制属性是否可编辑 + //element.UnifiedDataType = sUdt; + } + + /** + 是否约束 + + @return + */ + private boolean IsConstraint(SimpleDataTypeDef sUdt, String propertyName) + { + if (sUdt.getPropertyUseTypeInfos().containsKey(propertyName)) + { + + UseTypeInfo type = sUdt.getPropertyUseTypeInfos().get(propertyName); + return type.getPropertyUseType() == UseType.AsConstraint; + } + else + { + throw new RuntimeException("单值业务字段的约束信息中无属性名:"+propertyName); + } + } + + + ///#endregion + + + ///#region 多值 + /** + 根据多值udt更新字段的其他属性 + + @param element + @param cUdt + */ + private void UpdateComplexDataTypeDefProperties(GspViewModelElement element, ComplexDataTypeDef cUdt) + { + if (DotNetToJavaStringHelper.isNullOrEmpty(element.getCode())) + { + element.setCode(cUdt.getCode()); + } + if (DotNetToJavaStringHelper.isNullOrEmpty(element.getName())) + { + element.setName(cUdt.getName()); + } + + UdtElement newElement; + if (cUdt.getElements().size() == 1 && cUdt.getDbInfo().getMappingType() != ColumnMapType.SingleColumn) + { + newElement = (UdtElement)((cUdt.getElements().get(0) instanceof UdtElement) ? cUdt.getElements().get(0) : null); + } + else + { + newElement = new UdtElement(cUdt.getPropertys()); + } + + element.setObjectType(newElement.getObjectType()); + + // 若为[单一列]的映射关系,可能导致超长,需把数据类型改为[Text] + if (cUdt.getDbInfo().getMappingType() == ColumnMapType.SingleColumn) + { + element.setMDataType(GspElementDataType.Text); + element.setLength(0); + element.setPrecision(0); + } + else + { + element.setMDataType(newElement.getMDataType()); + element.setLength(newElement.getLength()); + element.setPrecision(newElement.getPrecision()); + } + element.setDefaultValue(newElement.getDefaultValue()); + element.getChildAssociations().clear(); + element.getContainEnumValues().clear(); + } + + ///#endregion + + + ///#region 关联 + private GspAssociation ConvertUdtAssociation(GspAssociation udtAsso, IGspCommonElement ele, GspAssociation beAsso, boolean isFirstChoose) + { + GspCommonAssociation asso = new GspCommonAssociation(); + asso.setId(udtAsso.getId()); + asso.setRefModel((ele.getBelongObject()!=null)?ele.getBelongObject().getBelongModel():null); + asso.setRefModelCode(udtAsso.getRefModelCode()); + asso.setRefModelID(udtAsso.getRefModelID()); + asso.setRefModelName(udtAsso.getRefModelName()); + asso.setRefModelPkgName(udtAsso.getRefModelPkgName()); + asso.setRefObjectCode(udtAsso.getRefObjectCode()); + asso.setRefObjectID(udtAsso.getRefObjectID()); + asso.setRefObjectName(udtAsso.getRefObjectName()); + if (udtAsso.getKeyCollection().size() > 0) + { + for (GspAssociationKey key : udtAsso.getKeyCollection()) + { + asso.getKeyCollection().add(ConvertUdtAssoKey(key, ele)); + } + } + + if (isFirstChoose) + { + if (udtAsso.getRefElementCollection().size() > 0) + { + for (IGspCommonField refEle : udtAsso.getRefElementCollection()) + { + asso.getRefElementCollection().add(ConvertUdtRefElement((UdtElement)((refEle instanceof UdtElement) ? refEle : null), ele.getLabelID())); + } + } + } + else + { + GspFieldCollection udtRefElements = udtAsso.getRefElementCollection().clone(null, udtAsso); + // udt带出 + if (beAsso != null && beAsso.getRefElementCollection() != null && beAsso.getRefElementCollection().size() != 0) + { + for (IGspCommonField refEle : beAsso.getRefElementCollection()) + { + if (refEle.getIsFromAssoUdt()) + { + IGspCommonField refElement=udtRefElements.stream().filter(item->{ return item.getRefElementId().equals(refEle.getRefElementId());}).findFirst().orElse(null); + +// var refElement = udtRefElements.Find(item => item.RefElementId == refEle.RefElementId); + udtRefElements.remove(refElement); + // udt仍包含,则加上;udt上已删,则不加。 + if (refElement != null) + { + IGspCommonElement refEle2 = ConvertUdtRefElement((UdtElement)((refElement instanceof UdtElement) ? refElement : null), ele.getLabelID()); + refEle2.setID(refEle.getID()); + asso.getRefElementCollection().add(refEle2); + } + } + else + { + asso.getRefElementCollection().add(refEle); + } + } + } + if (udtRefElements.size() > 0) + { + for (IGspCommonField refEle : udtRefElements) + { + asso.getRefElementCollection().add(ConvertUdtRefElement((UdtElement)((refEle instanceof UdtElement) ? refEle : null), ele.getLabelID())); + } + } + } + + return asso; + } + + private GspAssociationKey ConvertUdtAssoKey(GspAssociationKey udtKey, IGspCommonElement ele) + { + GspAssociationKey key = new GspAssociationKey(); + key.setSourceElement(udtKey.getSourceElement()); + key.setSourceElementDisplay(udtKey.getSourceElementDisplay()); + key.setTargetElement(ele.getID()); + key.setTargetElementDisplay(ele.getName()); + return key; + } + + private IGspCommonElement ConvertUdtRefElement(UdtElement udtEle, String prefix) + { + GspViewModelElement bizEle = new GspViewModelElement(); + bizEle.setID(udtEle.getID() ); + String newLabelId = prefix + "_" + udtEle.getLabelID(); + bizEle.setLabelID(newLabelId); + bizEle.setCode(udtEle.getCode()); + bizEle.setName(udtEle.getName()); + bizEle.setMDataType(udtEle.getMDataType()); + bizEle.setObjectType(udtEle.getObjectType()); + bizEle.setLength(udtEle.getLength()); + bizEle.setPrecision(udtEle.getPrecision()); + bizEle.setRefElementId(udtEle.getRefElementId()); + bizEle.setIsRefElement(true); + bizEle.setIsFromAssoUdt(true); + + // udt相关 + bizEle.setIsUdt(udtEle.getIsUdt()); + bizEle.setUdtID(udtEle.getUdtID()); + bizEle.setUdtName(udtEle.getUdtName()); + bizEle.setUdtPkgName(udtEle.getUdtPkgName()); + switch (udtEle.getObjectType()) + { + case Enum: + bizEle.setContainEnumValues(udtEle.getContainEnumValues()); + break; + } + // 虚拟vo字段 + if (isVirtual) + { + bizEle.setIsVirtualViewElement(true); + bizEle.setIsVirtual(bizEle.getIsVirtualViewElement()); + bizEle.setMapping(null); + } + return bizEle; + } + ///#endregion +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/util/UpdateVoVariableUtil.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/util/UpdateVoVariableUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..3cb251f53c5142a4c39bd31969c88aa5b1b5e29c --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/util/UpdateVoVariableUtil.java @@ -0,0 +1,239 @@ + + +package com.inspur.edp.formserver.viewmodel.util; + + +import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.cef.designtime.api.collection.GspAssociationCollection; +import com.inspur.edp.cef.designtime.api.element.GspElementDataType; +import com.inspur.edp.cef.designtime.api.element.GspEnumValue; +import com.inspur.edp.cef.designtime.api.variable.CommonVariable; +import com.inspur.edp.formserver.viewmodel.DotNetToJavaStringHelper; +import com.inspur.edp.udt.designtime.api.entity.ComplexDataTypeDef; +import com.inspur.edp.udt.designtime.api.entity.SimpleDataTypeDef; +import com.inspur.edp.udt.designtime.api.entity.UnifiedDataTypeDef; +import com.inspur.edp.udt.designtime.api.entity.UseTypeInfo; +import com.inspur.edp.udt.designtime.api.entity.dbInfo.ColumnInfo; +import com.inspur.edp.udt.designtime.api.entity.dbInfo.ColumnMapType; +import com.inspur.edp.udt.designtime.api.entity.element.UdtElement; +import com.inspur.edp.udt.designtime.api.entity.enumtype.UseType; +import java.util.UUID; + +/** + 更新udt字段 + +*/ +public class UpdateVoVariableUtil +{ + /** + 创建字段实例 + + @return + */ + private CommonVariable getChildElement() + { + CommonVariable tempVar = new CommonVariable(); + tempVar.setID(UUID.randomUUID().toString()); + return tempVar; + } + + /** + 根据引用的udt元数据更新字段(模板约束均更新) + + @param element + @param udt + */ + +//ORIGINAL LINE: public void UpdateElementWithRefUdt(CommonVariable element, UnifiedDataTypeDef udt, bool isFirstChoose = false) + public final void UpdateElementWithRefUdt(CommonVariable element, UnifiedDataTypeDef udt, boolean isFirstChoose) + { + element.setUdtID(udt.getId()); + element.setUdtName(udt.getName()); + + + // 其他属性 + if (udt instanceof ComplexDataTypeDef ) + { + UpdateComplexDataTypeDefProperties(element, (ComplexDataTypeDef) udt); + } + else if (udt instanceof SimpleDataTypeDef ) + { + UpdateSimpleDataTypeDefProperties(element, (SimpleDataTypeDef) udt, isFirstChoose); + } + } + + /** + 转换columnInfo为childElement + + @param info + @param prefix + @param ele 映射字段 + @return + */ + public final void MapColumnInfoToField(ColumnInfo info, String prefix, CommonVariable ele) { +// if (DotNetToJavaStringHelper.isNullOrEmpty(prefix)) +// { +// throw new RuntimeException("请先完善当前字段的[编号]及[标签]。"); +// } +// +// var newLabelId = prefix + "_" + info.Code; +// ele.LabelID = newLabelId; +// ele.Code = newLabelId; +// ele.setName(info.getName()); +// ele.MDataType = info.MDataType; +// ele.DefaultValue = info.DefaultValue; +// ele.setLength(info.getLength()); +// ele.Precision = info.Precision; +// } + } + + ///#region 单值 + + /** + 根据单值udt更新字段的其他属性 + + @param element + @param sUdt + @param isFirstChoose 是否首次选择 + */ + private void UpdateSimpleDataTypeDefProperties(CommonVariable element, SimpleDataTypeDef sUdt, boolean isFirstChoose) + { + if (DotNetToJavaStringHelper.isNullOrEmpty(element.getCode())) + { + element.setCode(sUdt.getCode()); + } + if (DotNetToJavaStringHelper.isNullOrEmpty(element.getName())) + { + element.setName(sUdt.getName()); + } + + if (isFirstChoose || IsConstraint(sUdt, "DataType")) + { + element.setMDataType(sUdt.getMDataType()); + } + if (isFirstChoose || IsConstraint(sUdt, "Length")) + { + element.setLength(sUdt.getLength()); + } + if (isFirstChoose || IsConstraint(sUdt, "Precision")) + { + element.setPrecision(sUdt.getPrecision()); + } + if (isFirstChoose || IsConstraint(sUdt, "ObjectType")) + { + element.setObjectType(sUdt.getObjectType()); + // 关联 + if (element.getChildAssociations() == null) + { + element.setChildAssociations(new GspAssociationCollection()); + } + + IGspCommonField belongElement = (element.getChildAssociations() != null && element.getChildAssociations().size() > 0) ? element.getChildAssociations().get(0).getBelongElement() : null; + + GspAssociationCollection assos = element.getChildAssociations().clone(belongElement); + + element.getChildAssociations().clear(); + if (sUdt.getChildAssociations() != null && sUdt.getChildAssociations().size() > 0) + { + throw new RuntimeException("vo变量不支持选择关联udt。"); + //foreach (GspAssociation item in sUdt.ChildAssociations) + //{ + // var beAsso = assos?.Find(asso => asso.Id == item.Id); + // element.ChildAssociations.Add(ConvertUdtAssociation(item, element, beAsso, isFirstChoose)); + //} + } + + element.setEnumIndexType(sUdt.getEnumIndexType()); + // 枚举 + element.getContainEnumValues().clear(); + if (sUdt.getContainEnumValues() != null && sUdt.getContainEnumValues().size() > 0) + { + for (GspEnumValue item : sUdt.getContainEnumValues()) + { + element.getContainEnumValues().add(item); + } + } + } + if (isFirstChoose || IsConstraint(sUdt, "DefaultValue")) + { + element.setDefaultValue(sUdt.getDefaultValue().toString()); + } + if (isFirstChoose || IsConstraint(sUdt, "IsRequired")) + { + element.setIsRequire(sUdt.getIsRequired()); + } + // UnifiedDataType属性,前端根据[约束]/[模板]控制属性是否可编辑 + //element.UnifiedDataType = sUdt; + } + + /** + 是否约束 + + @return + */ + private boolean IsConstraint(SimpleDataTypeDef sUdt, String propertyName) + { + if (sUdt.getPropertyUseTypeInfos().containsKey(propertyName)) + { + + UseTypeInfo type = sUdt.getPropertyUseTypeInfos().get(propertyName); + return type.getPropertyUseType() == UseType.AsConstraint; + } + else + { + throw new RuntimeException("单值业务字段的约束信息中无属性名[{propertyName}]"); + } + } + + + ///#endregion + + + ///#region 多值 + /** + 根据多值udt更新字段的其他属性 + + @param element + @param cUdt + */ + private void UpdateComplexDataTypeDefProperties(CommonVariable element, ComplexDataTypeDef cUdt) { + if (ViewModelUtils.checkNull(element.getCode())) + { + element.setCode(cUdt.getCode()); + } + if (DotNetToJavaStringHelper.isNullOrEmpty(element.getName())) + { + element.setName(cUdt.getName()); + } + + UdtElement newElement; + if (cUdt.getElements().size() == 1 && cUdt.getDbInfo().getMappingType() != ColumnMapType.SingleColumn) + { + newElement = (UdtElement)((cUdt.getElements().get(0) instanceof UdtElement) ? cUdt.getElements().get(0) : null); + } + else + { + newElement = new UdtElement(cUdt.getPropertys()); + } + + element.setObjectType(newElement.getObjectType()); + + // 若为[单一列]的映射关系,可能导致超长,需把数据类型改为[Text] + if (cUdt.getDbInfo().getMappingType() == ColumnMapType.SingleColumn) + { + element.setMDataType(GspElementDataType.Text); + element.setLength(0); + element.setPrecision(0); + } + else + { + element.setMDataType(newElement.getMDataType()); + element.setLength(newElement.getLength()); + element.setPrecision(newElement.getPrecision()); + } + element.setDefaultValue(newElement.getDefaultValue()); + element.getChildAssociations().clear(); + element.getContainEnumValues().clear(); + ///#endregion + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/util/ViewModelUtils.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/util/ViewModelUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..9a5b23f0e5da713f23e8e7258dc96a6824a66ea5 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/util/ViewModelUtils.java @@ -0,0 +1,60 @@ + + +package com.inspur.edp.formserver.viewmodel.util; + +import java.io.File; +import java.nio.file.Paths; + +public class ViewModelUtils { + + /** + * 检查空对象,空字符串 + */ + public static boolean checkNull(Object propValue) { + if (propValue == null) { + return true; + } + if (propValue.getClass().isAssignableFrom(String.class)) { + String stringValue = (String) propValue; + if (stringValue == null || stringValue.isEmpty()) { + return true; + } + } + return false; + } + + public static String getDirectoryName(String path) { + return new File(path).getParent(); + } + + public static String getCombinePath(String path1, String path2) { + String path = Paths.get(path1).resolve(path2).toString(); + return handlePath(path); + } + public static String getCombinePath(String path1, String path2, String path3) { + String path = Paths.get(path1).resolve(path2).resolve(path3).toString(); + return handlePath(path); + } + + public static String handlePath(String path) { + return path.replace("\\", File.separator); + } + + public static String getSeparator(){ + return File.separator; + } + public static String getFileNameWithoutExtension(String path) { + File file = new File(path); + if (file.isDirectory()) { + final String message = path + " is a directory"; + throw new IllegalArgumentException(message); + } + String fileName = file.getName(); + int point = fileName.lastIndexOf("."); + if (point == -1) { + return fileName; + } else { + return fileName.substring(0, point); + } + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/viewmodeldtevent/IVoActionDTEventListener.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/viewmodeldtevent/IVoActionDTEventListener.java new file mode 100644 index 0000000000000000000000000000000000000000..893ab7f7269176f7f0e968e936b42cceec87d73f --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/viewmodeldtevent/IVoActionDTEventListener.java @@ -0,0 +1,31 @@ + + +package com.inspur.edp.formserver.viewmodel.viewmodeldtevent; + +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs.ChangingVoActionCodeEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs.ChangingVoActionCollectTypeEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs.ChangingVoActionParamsEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs.ChangingVoActionReturnEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs.DeletingVoActionEventArgs; +import io.iec.edp.caf.commons.event.IEventListener; +/** + * The Josn Deserializer Of Biz Operation + * + * @ClassName: BizOperationDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public interface IVoActionDTEventListener extends IEventListener { + + public ChangingVoActionCodeEventArgs changingVoActionCode(ChangingVoActionCodeEventArgs args); + + public ChangingVoActionParamsEventArgs changingVoActionParams( + ChangingVoActionParamsEventArgs args); + + public ChangingVoActionReturnEventArgs changingVoActionReturn( + ChangingVoActionReturnEventArgs args); + + public DeletingVoActionEventArgs deletingVoAction(DeletingVoActionEventArgs args); + public ChangingVoActionCollectTypeEventArgs changingVoActionCollectType(ChangingVoActionCollectTypeEventArgs args); +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/viewmodeldtevent/IVoEntityDTEventListener.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/viewmodeldtevent/IVoEntityDTEventListener.java new file mode 100644 index 0000000000000000000000000000000000000000..37bd262083592b8a4861a2d5d70c796e1ca8c28c --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/viewmodeldtevent/IVoEntityDTEventListener.java @@ -0,0 +1,22 @@ + + +package com.inspur.edp.formserver.viewmodel.viewmodeldtevent; + +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.entityeventargs.ChangingViewObjectCodeEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.entityeventargs.RemovingViewObjectEventArgs; +import io.iec.edp.caf.commons.event.IEventListener; +/** + * The Josn Deserializer Of Biz Operation + * + * @ClassName: BizOperationDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public interface IVoEntityDTEventListener extends IEventListener { + + public ChangingViewObjectCodeEventArgs changingViewObjectCode( + ChangingViewObjectCodeEventArgs args); + + public RemovingViewObjectEventArgs removingViewObject(RemovingViewObjectEventArgs args); +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/viewmodeldtevent/IVoFieldDTEventListener.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/viewmodeldtevent/IVoFieldDTEventListener.java new file mode 100644 index 0000000000000000000000000000000000000000..d7cdf097178601a9aa7d4e9fd8f2ee5bdbe3826a --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/viewmodeldtevent/IVoFieldDTEventListener.java @@ -0,0 +1,28 @@ + + +package com.inspur.edp.formserver.viewmodel.viewmodeldtevent; + +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs.ChangingVoFieldDataTypeEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs.ChangingVoFieldLabelIdEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs.ChangingVoFieldObjectTypeEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs.RemovingVoFieldEventArgs; +import io.iec.edp.caf.commons.event.IEventListener; +/** + * The Josn Deserializer Of Biz Operation + * + * @ClassName: BizOperationDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public interface IVoFieldDTEventListener extends IEventListener { + + public ChangingVoFieldDataTypeEventArgs changingVoFieldDataType(ChangingVoFieldDataTypeEventArgs args); + + public ChangingVoFieldLabelIdEventArgs changingVoFieldLabelId(ChangingVoFieldLabelIdEventArgs args); + + public ChangingVoFieldObjectTypeEventArgs changingVoFieldObjectType( + ChangingVoFieldObjectTypeEventArgs args); + + public RemovingVoFieldEventArgs removingVoField(RemovingVoFieldEventArgs args); +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/viewmodeldtevent/VoActionDTEventListener.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/viewmodeldtevent/VoActionDTEventListener.java new file mode 100644 index 0000000000000000000000000000000000000000..a672fb17baff148f856dbad50c91284d4127a8bd --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/viewmodeldtevent/VoActionDTEventListener.java @@ -0,0 +1,47 @@ + + +package com.inspur.edp.formserver.viewmodel.viewmodeldtevent; + +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs.ChangingVoActionCodeEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs.ChangingVoActionCollectTypeEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs.ChangingVoActionParamsEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs.ChangingVoActionReturnEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs.DeletingVoActionEventArgs; +/** + * The Josn Deserializer Of Biz Operation + * + * @ClassName: BizOperationDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class VoActionDTEventListener implements IVoActionDTEventListener{ + + @Override + public ChangingVoActionCodeEventArgs changingVoActionCode(ChangingVoActionCodeEventArgs args) { + return null; + } + + @Override + public ChangingVoActionParamsEventArgs changingVoActionParams( + ChangingVoActionParamsEventArgs args) { + return null; + } + + @Override + public ChangingVoActionReturnEventArgs changingVoActionReturn( + ChangingVoActionReturnEventArgs args) { + return null; + } + + @Override + public DeletingVoActionEventArgs deletingVoAction(DeletingVoActionEventArgs args) { + return null; + } + + @Override + public ChangingVoActionCollectTypeEventArgs changingVoActionCollectType( + ChangingVoActionCollectTypeEventArgs args) { + return null; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/viewmodeldtevent/VoEntityDTEventListener.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/viewmodeldtevent/VoEntityDTEventListener.java new file mode 100644 index 0000000000000000000000000000000000000000..f573664b3a4e6c69e55988a8dbc6e9961245c583 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/viewmodeldtevent/VoEntityDTEventListener.java @@ -0,0 +1,27 @@ + + +package com.inspur.edp.formserver.viewmodel.viewmodeldtevent; + +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.entityeventargs.ChangingViewObjectCodeEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.entityeventargs.RemovingViewObjectEventArgs; +/** + * The Josn Deserializer Of Biz Operation + * + * @ClassName: BizOperationDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class VoEntityDTEventListener implements IVoEntityDTEventListener { + + @Override + public ChangingViewObjectCodeEventArgs changingViewObjectCode( + ChangingViewObjectCodeEventArgs args) { + return null; + } + + @Override + public RemovingViewObjectEventArgs removingViewObject(RemovingViewObjectEventArgs args) { + return null; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/viewmodeldtevent/VoFieldDTEventListener.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/viewmodeldtevent/VoFieldDTEventListener.java new file mode 100644 index 0000000000000000000000000000000000000000..a43794230b5ea26be0d8ad01f31b2201ebfbf2e2 --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/viewmodeldtevent/VoFieldDTEventListener.java @@ -0,0 +1,42 @@ + + +package com.inspur.edp.formserver.viewmodel.viewmodeldtevent; + +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs.ChangingVoFieldDataTypeEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs.ChangingVoFieldLabelIdEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs.ChangingVoFieldObjectTypeEventArgs; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs.RemovingVoFieldEventArgs; +/** + * The Josn Deserializer Of Biz Operation + * + * @ClassName: BizOperationDeserializer + * @Author: Benjamin Gong + * @Date: 2021/1/11 17:13 + * @Version: V1.0 + */ +public class VoFieldDTEventListener implements IVoFieldDTEventListener{ + + + @Override + public ChangingVoFieldDataTypeEventArgs changingVoFieldDataType( + ChangingVoFieldDataTypeEventArgs args) { + return null; + } + + @Override + public ChangingVoFieldLabelIdEventArgs changingVoFieldLabelId( + ChangingVoFieldLabelIdEventArgs args) { + return null; + } + + @Override + public ChangingVoFieldObjectTypeEventArgs changingVoFieldObjectType( + ChangingVoFieldObjectTypeEventArgs args) { + return null; + } + + @Override + public RemovingVoFieldEventArgs removingVoField(RemovingVoFieldEventArgs args) { + return null; + } +} diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/voextendinfo/server/api/GspVoExtendInfoRpcService.java b/view-object-model/src/main/java/com/inspur/edp/formserver/voextendinfo/server/api/GspVoExtendInfoRpcService.java new file mode 100644 index 0000000000000000000000000000000000000000..cc8baffc59d7c3d9c2327966a5a0a69b9dca9d2a --- /dev/null +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/voextendinfo/server/api/GspVoExtendInfoRpcService.java @@ -0,0 +1,60 @@ + + +package com.inspur.edp.formserver.voextendinfo.server.api; + +import com.inspur.edp.formserver.viewmodel.extendinfo.entity.GspVoExtendInfo; +import io.iec.edp.caf.rpc.api.annotation.GspServiceBundle; +import io.iec.edp.caf.rpc.api.annotation.RpcParam; +import java.util.List; + +/** + * Vo扩展Rpc服务接口 + * + * @author hanll02 + */ +@GspServiceBundle(applicationName = "runtime", serviceUnitName = "Lcm", serviceName = "GspVoExtendInfoRpcService") +public interface GspVoExtendInfoRpcService { + /** + * 根据Vo元数据id获取指定id的Vo扩展信息 + * + * @param id Vo元数据id + * @return 指定id的Vo扩展信息 + */ + GspVoExtendInfo getVoExtendInfo(@RpcParam(paramName = "id")String id); + + /** + * 根据Vo元数据configid获取指定configid的Vo扩展信息 + * + * @param configId configid + * @return 指定configid的Vo扩展信息 + */ + GspVoExtendInfo getVoExtendInfoByConfigId(@RpcParam(paramName = "configId")String configId); + + /** + * 获取所有Be扩展信息 + * + * @return 所有Be扩展信息列表 + */ + List getVoExtendInfos(); + + /** + * 根据beId获取对应的VoId + * + * @param beId Be元数据id + * @return 指定Be元数据id对应的所有的Vo扩展信息列表 + */ + List getVoId(@RpcParam(paramName = "beId")String beId); + /** + * 保存 + * + * @param infos 要保存的Vo扩展信息 + */ + void saveGspVoExtendInfos(List infos); + + /** + * 根据id删除数据 + * + * @param id 要删除的数据id + */ + void deleteVoExtendInfo(String id); +} diff --git a/view-object-webapi/pom.xml b/view-object-webapi/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..61c138cb9553f4718bb4b9ab685ec508a36a72f9 --- /dev/null +++ b/view-object-webapi/pom.xml @@ -0,0 +1,76 @@ + + + + + 4.0.0 + + + com.inspur.edp + viewObject-model + 0.1.1 + + + view-object-webapi + 0.1.1 + + + + jakarta.ws.rs + jakarta.ws.rs-api + 2.1.5 + + + jakarta.ws.rs + jakarta.ws.rs-api + + + com.inspur.edp + view-object-model + ${project.version} + + + com.inspur.edp + view-object-manager + ${project.version} + + + com.inspur.edp + bef-bizentity + + + com.inspur.edp + lcm-metadata-api + + + com.inspur.edp + metadata-businesstype-api + 0.1.2 + compile + + + com.inspur.edp + web-help-metadata + 0.1.9 + compile + + + + + diff --git a/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/rtwebapi/BffMetadataRtWebApiServiceAutoConfig.java b/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/rtwebapi/BffMetadataRtWebApiServiceAutoConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..c94fe08ff66d35fae0674a3019be53eba4dcc0f7 --- /dev/null +++ b/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/rtwebapi/BffMetadataRtWebApiServiceAutoConfig.java @@ -0,0 +1,35 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.viewmodel.rtwebapi; + +import io.iec.edp.caf.rest.RESTEndpoint; +import org.springframework.context.annotation.Bean; + +public class BffMetadataRtWebApiServiceAutoConfig { + @Bean + public VMMetadataController getRtBffMetadataRtWebApi() { + return new VMMetadataController(); + } + + @Bean + public RESTEndpoint getBffRtMetadataRtWebApiEndpoint(VMMetadataController genService){ + return new RESTEndpoint( + "/runtime/lcm/v1.0/bff/metadata", + genService + ); + } +} diff --git a/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/rtwebapi/BffRtWebApiServiceAutoConfig.java b/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/rtwebapi/BffRtWebApiServiceAutoConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..40ede002bc073661b9b70988e6f546de7cc4a364 --- /dev/null +++ b/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/rtwebapi/BffRtWebApiServiceAutoConfig.java @@ -0,0 +1,37 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.viewmodel.rtwebapi; + +import io.iec.edp.caf.rest.RESTEndpoint; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class BffRtWebApiServiceAutoConfig { + @Bean + public VMCodeGenController getRtBffWebApi() { + return new VMCodeGenController(); + } + + @Bean + public RESTEndpoint getBffRtWebApiEndpoint(VMCodeGenController genService){ + return new RESTEndpoint( + "/runtime/lcm/v1.0/bff", + genService + ); + } +} diff --git a/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/rtwebapi/VMCodeGenController.java b/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/rtwebapi/VMCodeGenController.java new file mode 100644 index 0000000000000000000000000000000000000000..70e2a9c412e520ba4a49b11a483158a33aa6f240 --- /dev/null +++ b/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/rtwebapi/VMCodeGenController.java @@ -0,0 +1,180 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.viewmodel.rtwebapi; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.inspur.edp.bef.bizentity.GspBusinessEntity; +import com.inspur.edp.das.commonmodel.util.HandleAssemblyNameUtil; +import com.inspur.edp.cef.designtime.api.dtconsistencycheck.ConsistencyCheckEventMessage; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.common.ConvertUtils; +import com.inspur.edp.formserver.viewmodel.common.ValueHelpConfig; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs.ChangingVoActionCodeEventArgs; +import com.inspur.edp.formserver.vmmanager.helpconfig.HelpConfigFilterSortHandler; +import com.inspur.edp.formserver.vmmanager.util.CheckInfoUtil; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs.*; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.entityeventargs.*; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs.*; +import com.inspur.edp.formserver.vmmanager.validate.model.ViewModelChecker; +import com.inspur.edp.formserver.vmmanager.voguide.VoGuideUtil; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.metadata.businesstype.api.MdBizTypeMappingService; +import java.util.HashMap; + +import com.inspur.edp.formserver.vmmanager.vmdtconsistencycheckevent.VmDtConsistencyCheckEventBroker; +import com.inspur.lcm.metadata.logging.LoggerDisruptorQueue; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; +import java.util.List; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +@Path("") +@Produces(MediaType.APPLICATION_JSON) +public class VMCodeGenController { + + @Path("convertBizEntity") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String convertBizEntity(String jsonObject) { + if (CheckInfoUtil.checkNull(jsonObject)) { + throw new RuntimeException("请传入有效Json对象."); + } + + ObjectMapper mapper = new ObjectMapper(); + try { + JsonNode jsonNode = mapper.readTree(jsonObject); + JsonNode bizEntityJsonNode = jsonNode.get("bizEntityJson"); + CheckInfoUtil.checkNessaceryInfo("bizEntityJson", bizEntityJsonNode); + JsonNode bePkgNameJsonNode = jsonNode.get("bePkgName"); + CheckInfoUtil.checkNessaceryInfo("bePkgName", bePkgNameJsonNode); + JsonNode beIdJsonNode = jsonNode.get("beId"); + CheckInfoUtil.checkNessaceryInfo("beId", beIdJsonNode); + JsonNode voGeneratingAssemblyJsonNode = jsonNode.get("voGeneratingAssembly"); + CheckInfoUtil.checkNessaceryInfo("voGeneratingAssembly", voGeneratingAssemblyJsonNode); + + String bizEntityJson = bizEntityJsonNode.textValue(); + String bePkgName = bePkgNameJsonNode.textValue(); + String beId = beIdJsonNode.textValue(); + String voGeneratingAssembly = voGeneratingAssemblyJsonNode.textValue(); + + return convertBizEntityToViewModel(bizEntityJson, bePkgName, beId, voGeneratingAssembly); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + + } + + @Path("createVoRt") + @PUT + public String createVoRt(String jsonObject) { + ObjectMapper mapper = new ObjectMapper(); + try { + JsonNode jsonNode = mapper.readTree(jsonObject); + + JsonNode basicInfoNode = jsonNode.get("basicInfo"); + CheckInfoUtil.checkNessaceryInfo("Vo基本信息", basicInfoNode); + String voCode = basicInfoNode.get("code").textValue(); + String voName = basicInfoNode.get("name").textValue(); + + JsonNode beNode = jsonNode.get("be"); + CheckInfoUtil.checkNessaceryInfo("源业务实体", beNode); + GspBusinessEntity be = mapper.readValue(beNode.toString(), GspBusinessEntity.class); + CheckInfoUtil.checkNessaceryInfo("源业务实体", be); + + GspMetadata beMetadata = VoGuideUtil.getInstance().getRtMetadata(be.getID()); + String beNameSpace = VoGuideUtil.getInstance().getVoMetaGeneratingAssembly(beMetadata); + String bizObjectId = beMetadata.getHeader().getBizobjectID(); + + JsonNode configsArrayNode = jsonNode.get("configs"); + HashMap configMap = new HashMap<>(); + if (configsArrayNode != null && configsArrayNode.size() != 0) { + for (JsonNode configNode : configsArrayNode) { + String key = configNode.get("key").textValue(); + String value = configNode.get("value").textValue(); + configMap.put(key, value); + } + } + + JsonNode billCategoryInfo = jsonNode.get("billCategoryId"); + CheckInfoUtil.checkNessaceryInfo("业务种类Id", billCategoryInfo); + String billCategoryId = billCategoryInfo.textValue(); + + GspViewModel vo = VoGuideUtil.getInstance() + .createVo(be, configMap, beNameSpace, HandleAssemblyNameUtil + .convertToJavaPackageName(beNameSpace)); + vo.setCode(voCode); + vo.setName(voName); + vo.setSource("Print"); + String voId = VoGuideUtil.getInstance().saveVoRt(vo, bizObjectId, beNameSpace); + MdBizTypeMappingService service=SpringBeanUtils.getBean(MdBizTypeMappingService.class); + service.save(billCategoryId,voId); + return new ObjectMapper().writeValueAsString(voId); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + @Path("checkVoConfigIdRt") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public void checkVoConfigIdRt(String jsonObject) { + ObjectMapper mapper = new ObjectMapper(); + try { + JsonNode jsonNode = mapper.readTree(jsonObject); + JsonNode beIdNode = jsonNode.get("beId"); + CheckInfoUtil.checkNessaceryInfo("源业务实体元数据ID", beIdNode); + String beId = beIdNode.textValue(); + CheckInfoUtil.checkNessaceryInfo("源业务实体元数据ID", beId); + + JsonNode voCodeNode = jsonNode.get("voCode"); + CheckInfoUtil.checkNessaceryInfo("VO编号", voCodeNode); + String voCode = voCodeNode.textValue(); + CheckInfoUtil.checkNessaceryInfo("VO编号", voCode); + + GspMetadata beMetadata = VoGuideUtil.getInstance().getRtMetadata(beId); + String beNameSpace = VoGuideUtil.getInstance().getVoMetaGeneratingAssembly(beMetadata); + GspViewModel vo = ConvertUtils + .convertToViewModel((GspBusinessEntity) beMetadata.getContent(), beNameSpace, + beMetadata.getHeader().getId(), + HandleAssemblyNameUtil.convertToJavaPackageName(beNameSpace)); + vo.setCode(voCode); + VoGuideUtil.getInstance().checkBeforeSave(vo.getGeneratedConfigID(), vo.getId()); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + private String convertBizEntityToViewModel(String bizEntityJson, String bePkgName, String beId, + String voGeneratingAssembly) { + GspBusinessEntity be = null; + try { + be = new ObjectMapper().readValue(bizEntityJson, GspBusinessEntity.class); + GspViewModel vm = ConvertUtils.convertToViewModel(be, bePkgName, beId, voGeneratingAssembly); + // 联动vo的关联带出字段枚举信息 +// LinkBeUtils linkBeUtils = new LinkBeUtils(); +// linkBeUtils.LinkBeRefElements(vm); + + return new ObjectMapper().writeValueAsString(vm); + } catch (JsonProcessingException e) { + throw new RuntimeException("元数据序列化失败", e); + } + } +} diff --git a/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/rtwebapi/VMMetadataController.java b/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/rtwebapi/VMMetadataController.java new file mode 100644 index 0000000000000000000000000000000000000000..f4dbde0d0e3c9e17258b7c9118f81926a6c3c8aa --- /dev/null +++ b/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/rtwebapi/VMMetadataController.java @@ -0,0 +1,177 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.viewmodel.rtwebapi; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.inspur.edp.bef.bizentity.GspBusinessEntity; +import com.inspur.edp.bef.bizentity.json.element.BizElementSerializer; +import com.inspur.edp.cef.designtime.api.element.GspAssociation; +import com.inspur.edp.cef.designtime.api.json.element.GspAssociationSerializer; +import com.inspur.edp.cef.designtime.api.util.MetadataUtil; +import com.inspur.edp.das.commonmodel.entity.element.GspCommonAssociation; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementMapping; +import com.inspur.edp.formserver.viewmodel.util.ViewModelUtils; +import com.inspur.edp.formserver.vmmanager.exception.VmManagerException; +import com.inspur.edp.formserver.vmmanager.service.UpdateVirtualVoElementWithUdtService; +import com.inspur.edp.formserver.vmmanager.service.WebControllerService; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.entity.MetadataDto; +import com.inspur.edp.lcm.metadata.common.MetadataDtoConverter; +import com.inspur.edp.metadata.rtcustomization.api.CustomizationService; +import io.iec.edp.caf.commons.exception.ExceptionLevel; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; +import javax.ws.rs.GET; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.MediaType; + +public class VMMetadataController { + private final String EXCEPTIONCODE="vmMetadataRtWebApi"; + + + @Path("getbizObject/{beid}/{objid}") + @GET + @Produces(MediaType.APPLICATION_JSON) + public String getBizObject(@PathParam("beid") String beid,@PathParam("objid") String objid,@QueryParam("path") String path,@QueryParam("bePkgName") String bePkgName) { + GspBusinessEntity be=getBizEntity(path,bePkgName,beid); + return WebControllerService.getInstance().getBizObject(be, objid); + } + + /** + * 保存运行时元数据 + * @param metadataDto + * @return + */ + @Path("saveMetadata") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public boolean saveMetadata(MetadataDto metadataDto) { + if(metadataDto == null) { + throw new VmManagerException("",EXCEPTIONCODE, "保存元数据DTO为空。",null, ExceptionLevel.Error,false); + } + GspMetadata metadata = MetadataDtoConverter.asMetadata(metadataDto); + SpringBeanUtils.getBean(CustomizationService.class).save(metadata); + return true; + } + + @Path("checkvo") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public void checkKeywords(String jsonObject) { + WebControllerService.getInstance().checkKeywords(jsonObject); + } + + @Path("getVirtualVoAsso") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String getVirtualVoAsso(String info) { + return WebControllerService.getInstance().getVirtualVoAsso(info, (String path, String bePkgName, String beId) -> getBizEntity(path,bePkgName,beId)); + } + + @Path("virtualVoChooseUdt") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String updateVirtualVoUdtElementWhenChooseUdt(String info) { + ObjectMapper mapper=new ObjectMapper(); + try { + JsonNode node= mapper.readTree(info); + String refUdtId=node.get("refUdtId").textValue(); + String path=node.get("path").textValue(); + String beElementJson=node.get("udtElementJson").textValue(); + return UpdateVirtualVoElementWithUdtService + .getInstance().UpdateVariableWithRefUdtRT(refUdtId,path,beElementJson,true); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + + } + + /** + * + * @param path + * @param bePkgName + * @param beId + * @return + */ + private GspBusinessEntity getBizEntity(String path, String bePkgName, String beId) + { + + if (ViewModelUtils.checkNull(beId)) + { + throw new VmManagerException("",EXCEPTIONCODE, "待获取的业务实体元数据id不可为空。",null, ExceptionLevel.Error,false); + } + GspMetadata metadata = MetadataUtil.getCustomMetadata(beId); + if (!(metadata.getContent() instanceof GspBusinessEntity)) + { + throw new VmManagerException("",EXCEPTIONCODE, String.format("无法加载id='%1$s'的业务实体元数据。", beId),null,ExceptionLevel.Error,false); + } + return (GspBusinessEntity) metadata.getContent(); + } + + /** + * 转换BE字段 + * @param convertEleInfo + * @return + */ + @Path("convertBeElements") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String convertBeElementIdsToVmElements(String convertEleInfo) { + return WebControllerService.getInstance().convertBeElementIdsToVmElements(convertEleInfo, + (String path, String bePkgName, String beId) -> getBizEntity(path, bePkgName, beId)); + } + + @Path("addObject") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String addBizObject(String addObjInfo) { + return WebControllerService.getInstance().addBizObject(addObjInfo, + (String path, String bePkgName, String beId) -> getBizEntity(path, bePkgName, beId)); + } + + + @Path("getBeAsso") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String getBizAssoById(String info) { + ObjectMapper mapper=new ObjectMapper(); + SimpleModule module =new SimpleModule(); + BizElementSerializer bizElementSerializer=new BizElementSerializer(); + GspAssociationSerializer associationDeserializer=new GspAssociationSerializer(bizElementSerializer); + module.addSerializer(GspAssociation.class,associationDeserializer); + mapper.registerModule(module); + try { + JsonNode node= mapper.readTree(info); + String path = node.get("path").textValue(); + String voEleMappingJson = node.get("voEleMapping").textValue(); + String beAssoId = node.get("assoId").textValue(); + GspVoElementMapping voEleMapping = WebControllerService.getInstance().readVoEleMapping(voEleMappingJson); + GspCommonAssociation bizAsso = WebControllerService.getInstance().getBizAsso(path, voEleMapping, beAssoId, this::getBizEntity); + + String bizAssoJson=mapper.writeValueAsString(bizAsso); + return bizAssoJson; + } catch (JsonProcessingException e) { + throw new RuntimeException("GspAssociation序列化失败"+e); + } + } +} diff --git a/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/webapi/BffWebApiServiceAutoConfig.java b/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/webapi/BffWebApiServiceAutoConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..afa70d562d08e81ae880d4ee0edd307b85ab1301 --- /dev/null +++ b/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/webapi/BffWebApiServiceAutoConfig.java @@ -0,0 +1,37 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.viewmodel.webapi; + +import io.iec.edp.caf.rest.RESTEndpoint; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class BffWebApiServiceAutoConfig { + @Bean + public VMCodeGenController testBffWebApi() { + return new VMCodeGenController(); + } + + @Bean + public RESTEndpoint getBffWebApiEndpoint(VMCodeGenController genService){ + return new RESTEndpoint( + "/dev/main/v1.0/bff", + genService + ); + } +} diff --git a/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/webapi/BffWebApiServiceConfig.java b/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/webapi/BffWebApiServiceConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..7ba0383fc935e989a662d0d02ff2da0c6bed010d --- /dev/null +++ b/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/webapi/BffWebApiServiceConfig.java @@ -0,0 +1,37 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.viewmodel.webapi; + +import io.iec.edp.caf.rest.RESTEndpoint; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class BffWebApiServiceConfig { + @Bean + public ViewModelController getBffWebApi() { + return new ViewModelController(); + } + + @Bean + public RESTEndpoint getBffWebApiServiceEndpoint(ViewModelController genService){ + return new RESTEndpoint( + "/dev/main/v1.0/viewmodel", + genService + ); + } +} diff --git a/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/webapi/VMCodeGenController.java b/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/webapi/VMCodeGenController.java new file mode 100644 index 0000000000000000000000000000000000000000..afcc03fc31c56ca0f490ea0dd8a8647fa8df6461 --- /dev/null +++ b/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/webapi/VMCodeGenController.java @@ -0,0 +1,423 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.viewmodel.webapi; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.inspur.edp.bef.bizentity.GspBusinessEntity; +import com.inspur.edp.das.commonmodel.util.HandleAssemblyNameUtil; +import com.inspur.edp.cef.designtime.api.dtconsistencycheck.ConsistencyCheckEventMessage; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.common.ConvertUtils; +import com.inspur.edp.formserver.viewmodel.common.ValueHelpConfig; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs.ChangingVoActionCodeEventArgs; +import com.inspur.edp.formserver.vmmanager.helpconfig.HelpConfigFilterSortHandler; +import com.inspur.edp.formserver.vmmanager.service.WebControllerService; +import com.inspur.edp.formserver.vmmanager.util.CheckInfoUtil; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.actioneventargs.*; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.entityeventargs.*; +import com.inspur.edp.formserver.viewmodel.dtconsistencycheck.fieldeventargs.*; +import com.inspur.edp.formserver.vmmanager.validate.model.ViewModelChecker; +import com.inspur.edp.formserver.vmmanager.voguide.VoGuideUtil; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.metadata.businesstype.api.MdBizTypeMappingService; +import io.iec.edp.caf.boot.context.CAFContext; +import java.util.HashMap; + +import com.inspur.edp.formserver.vmmanager.vmdtconsistencycheckevent.VmDtConsistencyCheckEventBroker; +import com.inspur.lcm.metadata.logging.LoggerDisruptorQueue; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; +import java.util.List; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +@Path("") +@Produces(MediaType.APPLICATION_JSON) +public class VMCodeGenController { + @Path("checkvo") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public void checkKeywords(String jsonObject) { + WebControllerService.getInstance().checkKeywords(jsonObject); + } + + @Path("convertBizEntity") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String convertBizEntity(String jsonObject) { + if (CheckInfoUtil.checkNull(jsonObject)) { + throw new RuntimeException("请传入有效Json对象."); + } + + ObjectMapper mapper = new ObjectMapper(); + try { + JsonNode jsonNode = mapper.readTree(jsonObject); + JsonNode bizEntityJsonNode = jsonNode.get("bizEntityJson"); + CheckInfoUtil.checkNessaceryInfo("bizEntityJson", bizEntityJsonNode); + JsonNode bePkgNameJsonNode = jsonNode.get("bePkgName"); + CheckInfoUtil.checkNessaceryInfo("bePkgName", bePkgNameJsonNode); + JsonNode beIdJsonNode = jsonNode.get("beId"); + CheckInfoUtil.checkNessaceryInfo("beId", beIdJsonNode); + JsonNode voGeneratingAssemblyJsonNode = jsonNode.get("voGeneratingAssembly"); + CheckInfoUtil.checkNessaceryInfo("voGeneratingAssembly", voGeneratingAssemblyJsonNode); + + String bizEntityJson = bizEntityJsonNode.textValue(); + String bePkgName = bePkgNameJsonNode.textValue(); + String beId = beIdJsonNode.textValue(); + String voGeneratingAssembly = voGeneratingAssemblyJsonNode.textValue(); + + return convertBizEntityToViewModel(bizEntityJson, bePkgName, beId, voGeneratingAssembly); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + + } + + @Path("createVoRt") + @PUT + public String createVoRt(String jsonObject) { + ObjectMapper mapper = new ObjectMapper(); + try { + JsonNode jsonNode = mapper.readTree(jsonObject); + + JsonNode basicInfoNode = jsonNode.get("basicInfo"); + CheckInfoUtil.checkNessaceryInfo("Vo基本信息", basicInfoNode); + String voCode = basicInfoNode.get("code").textValue(); + String voName = basicInfoNode.get("name").textValue(); + + JsonNode beNode = jsonNode.get("be"); + CheckInfoUtil.checkNessaceryInfo("源业务实体", beNode); + GspBusinessEntity be = mapper.readValue(beNode.toString(), GspBusinessEntity.class); + CheckInfoUtil.checkNessaceryInfo("源业务实体", be); + + GspMetadata beMetadata = VoGuideUtil.getInstance().getRtMetadata(be.getID()); + String beNameSpace = VoGuideUtil.getInstance().getVoMetaGeneratingAssembly(beMetadata); + String bizObjectId = beMetadata.getHeader().getBizobjectID(); + + JsonNode configsArrayNode = jsonNode.get("configs"); + HashMap configMap = new HashMap<>(); + if (configsArrayNode != null && configsArrayNode.size() != 0) { + for (JsonNode configNode : configsArrayNode) { + String key = configNode.get("key").textValue(); + String value = configNode.get("value").textValue(); + configMap.put(key, value); + } + } + String billCategoryId = null; + JsonNode billCategoryInfo = jsonNode.get("billCategoryId"); + if(CheckInfoUtil.checkNull(billCategoryInfo)) { + billCategoryId = billCategoryInfo.textValue(); + } + + GspViewModel vo = VoGuideUtil.getInstance() + .createVo(be, configMap, beNameSpace, HandleAssemblyNameUtil + .convertToJavaPackageName(beNameSpace)); + vo.setCode(voCode); + vo.setName(voName); + String voId = VoGuideUtil.getInstance().saveVoRt(vo, bizObjectId, beNameSpace); + MdBizTypeMappingService service=SpringBeanUtils.getBean(MdBizTypeMappingService.class); + if(billCategoryId == null) + service.save(configMap.get("billCategoryId"),voId); + else + service.save(billCategoryId,voId); + + return new ObjectMapper().writeValueAsString(voId); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + @Path("checkVoConfigIdRt") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public void checkVoConfigIdRt(String jsonObject) { + ObjectMapper mapper = new ObjectMapper(); + try { + JsonNode jsonNode = mapper.readTree(jsonObject); + JsonNode beIdNode = jsonNode.get("beId"); + CheckInfoUtil.checkNessaceryInfo("源业务实体元数据ID", beIdNode); + String beId = beIdNode.textValue(); + CheckInfoUtil.checkNessaceryInfo("源业务实体元数据ID", beId); + + JsonNode voCodeNode = jsonNode.get("voCode"); + CheckInfoUtil.checkNessaceryInfo("VO编号", voCodeNode); + String voCode = voCodeNode.textValue(); + CheckInfoUtil.checkNessaceryInfo("VO编号", voCode); + + GspMetadata beMetadata = VoGuideUtil.getInstance().getRtMetadata(beId); + String beNameSpace = VoGuideUtil.getInstance().getVoMetaGeneratingAssembly(beMetadata); + GspViewModel vo = ConvertUtils + .convertToViewModel((GspBusinessEntity) beMetadata.getContent(), beNameSpace, + beMetadata.getHeader().getId(), + HandleAssemblyNameUtil.convertToJavaPackageName(beNameSpace)); + vo.setCode(voCode); + VoGuideUtil.getInstance().checkBeforeSave(vo.getGeneratedConfigID(), vo.getId()); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + @Path("handleHelpConfigFilterSort") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public ValueHelpConfig handleHelpConfigFilterSortCondition(String jsonObject) { + ObjectMapper mapper = new ObjectMapper(); + try { + JsonNode jsonNode = mapper.readTree(jsonObject); + JsonNode helpConfigNode = jsonNode.get("helpConfig"); + CheckInfoUtil.checkNessaceryInfo("helpConfig", helpConfigNode); + ValueHelpConfig config = mapper.readValue(helpConfigNode.textValue(), ValueHelpConfig.class); + JsonNode filterConditionNode = jsonNode.get("filterCondition"); + JsonNode sortConditionNode = jsonNode.get("sortCondition"); + JsonNode pathNode = jsonNode.get("path"); + HelpConfigFilterSortHandler.getInstance(config, pathNode.textValue()) + .handleConfigFilterAndSort( + filterConditionNode.textValue(), sortConditionNode.textValue()); + return config; + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + private String convertBizEntityToViewModel(String bizEntityJson, String bePkgName, String beId, + String voGeneratingAssembly) { + GspBusinessEntity be = null; + try { + be = new ObjectMapper().readValue(bizEntityJson, GspBusinessEntity.class); + GspViewModel vm = ConvertUtils.convertToViewModel(be, bePkgName, beId, voGeneratingAssembly); + // 联动vo的关联带出字段枚举信息 +// LinkBeUtils linkBeUtils = new LinkBeUtils(); +// linkBeUtils.LinkBeRefElements(vm); + + return new ObjectMapper().writeValueAsString(vm); + } catch (JsonProcessingException e) { + throw new RuntimeException("元数据序列化失败", e); + } + } + + + /** + * 删除Vo节点 + */ + @Path("vmDtConsistencyCheck/removingViewObject") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public RemovingViewObjectEventArgs removingViewObject(RemovingViewObjectEventArgs args){ + VmDtConsistencyCheckEventBroker vmEventBroker = SpringBeanUtils.getBean(VmDtConsistencyCheckEventBroker.class); + vmEventBroker.fireRemovingViewObject(args); + + if(args.getEventMessages().size() != 0){ + BefConsistencyCheckMessage(args.getEventMessages(),"请先解除该Vo节点的依赖和关联信息"); + } + return args; + } + + /** + * 修改BizEntityCode + * + * @return + */ + @Path("vmDtConsistencyCheck/changingViewObjectCode") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public ChangingViewObjectCodeEventArgs changingViewObjectCode(ChangingViewObjectCodeEventArgs args){ + VmDtConsistencyCheckEventBroker vmEventBroker = SpringBeanUtils.getBean(VmDtConsistencyCheckEventBroker.class); + vmEventBroker.fireChangingViewObjectCode(args); + + if(args.eventMessages.size() != 0){ + BefConsistencyCheckMessage(args.eventMessages, "请先解除该Vo节点的依赖和关联信息"); + } + return args; + } + /** + * 删除Vo 字段 + * + * @return + */ + @Path("vmDtConsistencyCheck/removingVoField") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public RemovingVoFieldEventArgs removingVoField(RemovingVoFieldEventArgs args){ + VmDtConsistencyCheckEventBroker vmEventBroker = SpringBeanUtils.getBean(VmDtConsistencyCheckEventBroker.class); + vmEventBroker.fireRemovingVoField(args); + + if(args.eventMessages.size() != 0){ + BefConsistencyCheckMessage(args.eventMessages, "请先解除该Vo字段的依赖和关联信息"); + } + return args; + } + /** + * 修改Vo字段数据类型 + * + * @return + */ + @Path("vmDtConsistencyCheck/changingVoFieldDataType") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public ChangingVoFieldDataTypeEventArgs changingVoFieldDataType(ChangingVoFieldDataTypeEventArgs args){ + VmDtConsistencyCheckEventBroker vmEventBroker = SpringBeanUtils.getBean(VmDtConsistencyCheckEventBroker.class); + vmEventBroker.fireChangingVoFieldDataType(args); + + if(args.eventMessages.size() != 0){ + BefConsistencyCheckMessage(args.eventMessages, "请先解除该Vo字段的依赖和关联信息"); + } + return args; + } + /** + * 修改Vo字段objectType + * + * @return + */ + @Path("vmDtConsistencyCheck/changingVoFieldObjectType") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public ChangingVoFieldObjectTypeEventArgs changingVoFieldObjectType(ChangingVoFieldObjectTypeEventArgs args){ + VmDtConsistencyCheckEventBroker vmEventBroker = SpringBeanUtils.getBean(VmDtConsistencyCheckEventBroker.class); + vmEventBroker.fireChangingVoFieldObjectType(args); + + if(args.eventMessages.size() != 0){ + BefConsistencyCheckMessage(args.eventMessages, "请先解除该Vo字段的依赖和关联信息"); + } + return args; + } + /** + * 修改Vo字段标签 + * + * @return + */ + @Path("vmDtConsistencyCheck/changingVoFieldLabelId") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public ChangingVoFieldLabelIdEventArgs changingVoFieldLabelId(ChangingVoFieldLabelIdEventArgs args){ + VmDtConsistencyCheckEventBroker vmEventBroker = SpringBeanUtils.getBean(VmDtConsistencyCheckEventBroker.class); + vmEventBroker.fireChangingVoFieldLabelId(args); + + if(args.eventMessages.size() != 0){ + BefConsistencyCheckMessage(args.eventMessages, "请先解除该Vo字段的依赖和关联信息"); + } + return args; + } + + /** + * 修改动作编号 + * + * @return + */ + @Path("vmDtConsistencyCheck/changingVoActionCode") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public ChangingVoActionCodeEventArgs changingVoActionCode(ChangingVoActionCodeEventArgs args){ + VmDtConsistencyCheckEventBroker vmEventBroker = SpringBeanUtils.getBean(VmDtConsistencyCheckEventBroker.class); + vmEventBroker.fireChangingVoActionCode(args); + + if(args.eventMessages.size() != 0){ + BefConsistencyCheckMessage(args.eventMessages, "请先解除该动作的依赖和关联信息"); + } + return args; + } + /** + * 修改动作参数 + * + * @return + */ + @Path("vmDtConsistencyCheck/changingVoActionParams") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public ChangingVoActionParamsEventArgs changingVoActionParams(ChangingVoActionParamsEventArgs args){ + VmDtConsistencyCheckEventBroker vmEventBroker = SpringBeanUtils.getBean(VmDtConsistencyCheckEventBroker.class); + vmEventBroker.fireChangingVoActionParams(args); + + if(args.eventMessages.size() != 0){ + BefConsistencyCheckMessage(args.eventMessages, "请先解除该动作的依赖和关联信息"); + } + return args; + } + /** + * 修改集合类型 + * + * @return + */ + @Path("vmDtConsistencyCheck/changingVoActionCollectType") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public ChangingVoActionCollectTypeEventArgs changingVoActionCollectType( + ChangingVoActionCollectTypeEventArgs args){ + VmDtConsistencyCheckEventBroker vmEventBroker = SpringBeanUtils.getBean(VmDtConsistencyCheckEventBroker.class); + vmEventBroker.fireChangingVoActionCollectType(args); + + if(args.eventMessages.size() != 0){ + BefConsistencyCheckMessage(args.eventMessages, "请先解除该动作的依赖和关联信息"); + } + return args; + } + /** + * 修改动作参数 + * + * @return + */ + @Path("vmDtConsistencyCheck/changingVoActionReturn") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public ChangingVoActionReturnEventArgs changingVoActionReturn(ChangingVoActionReturnEventArgs args){ + VmDtConsistencyCheckEventBroker vmEventBroker = SpringBeanUtils.getBean(VmDtConsistencyCheckEventBroker.class); + vmEventBroker.fireChangingVoActionReturn(args); + + if(args.eventMessages.size() != 0){ + BefConsistencyCheckMessage(args.eventMessages, "请先解除该动作的依赖和关联信息"); + } + return args; + } + /** + * 修改动作参数 + * + * @return + */ + @Path("vmDtConsistencyCheck/deletingVoAction") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public DeletingVoActionEventArgs deletingVoAction(DeletingVoActionEventArgs args){ + VmDtConsistencyCheckEventBroker vmEventBroker = SpringBeanUtils.getBean(VmDtConsistencyCheckEventBroker.class); + vmEventBroker.fireDeletingVoAction(args); + + if(args.eventMessages.size() != 0){ + BefConsistencyCheckMessage(args.eventMessages, "请先解除该动作的依赖和关联信息"); + } + return args; + } + /** + * 控制台输出BEF Warnings + * + * @param messages + */ + public void BefConsistencyCheckMessage(List messages,String + suffix){ + StringBuilder befWarnings = new StringBuilder(); + if (messages.size() > 0) + messages.forEach(message->{ + befWarnings.append(message.getMessage()); + }); + befWarnings.append(suffix); + String currentUerId = CAFContext.current.getUserId(); + if (currentUerId == null || currentUerId.equals("")) { + throw new RuntimeException("获取当前用户ID为空"); + } + LoggerDisruptorQueue.publishEvent("[BEF Warning]:" + befWarnings.toString(),currentUerId); + } +} diff --git a/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/webapi/ViewModelController.java b/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/webapi/ViewModelController.java new file mode 100644 index 0000000000000000000000000000000000000000..84c39439503436a59c4dfd9c003c6a6e87b174b2 --- /dev/null +++ b/view-object-webapi/src/main/java/com/inspur/edp/formserver/viewmodel/webapi/ViewModelController.java @@ -0,0 +1,810 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.formserver.viewmodel.webapi; + +import static com.inspur.edp.formserver.viewmodel.common.ConvertUtils.toElement; +import static com.inspur.edp.formserver.viewmodel.common.ConvertUtils.toObject; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.inspur.edp.bef.bizentity.GspBizEntityElement; +import com.inspur.edp.bef.bizentity.GspBizEntityObject; +import com.inspur.edp.bef.bizentity.GspBusinessEntity; +import com.inspur.edp.bef.bizentity.json.element.BizElementDeserializer; +import com.inspur.edp.bef.bizentity.json.element.BizElementSerializer; +import com.inspur.edp.bef.bizentity.json.operation.BizMgrActionCollectionDeserializer; +import com.inspur.edp.bef.bizentity.operation.BizMgrAction; +import com.inspur.edp.bef.bizentity.operation.BizOperationCollection; +import com.inspur.edp.bef.bizentity.operation.collection.BizMgrActionCollection; +import com.inspur.edp.bef.bizentity.util.StringUtil; +import com.inspur.edp.cef.designtime.api.collection.GspFieldCollection; +import com.inspur.edp.cef.designtime.api.element.GspAssociation; +import com.inspur.edp.cef.designtime.api.json.element.GspAssociationSerializer; +import com.inspur.edp.das.commonmodel.IGspCommonElement; +import com.inspur.edp.das.commonmodel.IGspCommonModel; +import com.inspur.edp.das.commonmodel.IGspCommonObject; +import com.inspur.edp.das.commonmodel.collection.GspElementCollection; +import com.inspur.edp.das.commonmodel.entity.element.GspCommonAssociation; +import com.inspur.edp.das.commonmodel.entity.object.GspCommonObjectType; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.formserver.viewmodel.action.ViewModelAction; +import com.inspur.edp.formserver.viewmodel.collection.VMActionCollection; +import com.inspur.edp.formserver.viewmodel.common.ConvertUtils; +import com.inspur.edp.formserver.viewmodel.common.InitVoUtil; +import com.inspur.edp.formserver.viewmodel.common.LinkBeUtils; +import com.inspur.edp.formserver.viewmodel.common.MappingType; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementMapping; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementSourceType; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoObjectSourceType; +import com.inspur.edp.formserver.viewmodel.json.element.ViewElementDeserializer; +import com.inspur.edp.formserver.viewmodel.json.model.ViewModelDeserializer; +import com.inspur.edp.formserver.viewmodel.json.model.ViewModelSerializer; +import com.inspur.edp.formserver.viewmodel.json.operation.VmActionCollectionSerializer; +import com.inspur.edp.formserver.viewmodel.util.ViewModelUtils; +import com.inspur.edp.formserver.vmmanager.compcodebutton.CompButton; +import com.inspur.edp.formserver.vmmanager.exception.VmManagerException; +import com.inspur.edp.formserver.vmmanager.service.UpdateVariableWithUdtService; +import com.inspur.edp.formserver.vmmanager.service.UpdateVirtualVoElementWithUdtService; +import com.inspur.edp.formserver.vmmanager.service.VmManagerService; +import com.inspur.edp.formserver.vmmanager.service.WebControllerService; +import com.inspur.edp.formserver.vmmanager.util.CheckComUtil; +import com.inspur.edp.formserver.vmmanager.util.CheckInfoUtil; +import com.inspur.edp.formserver.vmmanager.util.SimplifyMetadataUtil; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.entity.GspProject; +import com.inspur.edp.lcm.metadata.api.service.FileService; +import com.inspur.edp.lcm.metadata.api.service.MetadataProjectService; +import com.inspur.edp.lcm.metadata.api.service.MetadataService; +import com.inspur.edp.lcm.metadata.api.service.RefCommonService; +import com.inspur.edp.web.help.metadata.HelpMetadataContent; +import io.iec.edp.caf.commons.exception.ExceptionLevel; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.stream.Collectors; +import javax.ws.rs.GET; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.MediaType; +import lombok.var; + +@Path("") +@Produces(MediaType.APPLICATION_JSON) +public class ViewModelController { + + private final String EXCEPTIONCODE="vmWebApi"; + + + + @Path("sysn") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public void saveAndSysn(String metadataInfo){ + ObjectMapper mapper=getViewModelMapper(); + MetadataService service= SpringBeanUtils.getBean(MetadataService.class); + + try { + JsonNode node=mapper.readTree(metadataInfo); + isMetadataCodeExist(node); + String path=node.get("path").textValue(); + String metadataName=null; + if(!CheckInfoUtil.checkNull(node.get("name"))){ + metadataName=node.get("name").textValue(); + } + GspMetadata metadata=service.loadMetadata(metadataName,path); + //生成构件元数据 + ArrayList list= VmManagerService.generateComponent(metadata,path,true); + //构件代码模板 + VmManagerService.generateComponentCode(metadata,path,list); + //保存元数据 + VmManagerService.saveMetadata(metadata,path); + } catch (JsonProcessingException e) { + throw new RuntimeException("元数据信息读取异常"+e); + } + } + + @Path("isHelpComp") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public boolean isHelpComp(String info){ + return true; + } + + @Path("createVirtualVo") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String creataVirtualVo(String info){ + ObjectMapper mapper=getViewModelMapper(); + try { + JsonNode node=mapper.readTree(info); + String metadataID=node.get("metadataID").textValue(); + String metadataName=null; + if(!CheckInfoUtil.checkNull(node.get("metadataName"))){ + metadataName=node.get("metadataName").textValue(); + } + String metadataCode=node.get("metadataCode").textValue(); + String metadataAssembly=node.get("metadataAssembly").textValue(); + GspViewModel vm= InitVoUtil + .BuildVirtualVo(metadataID,metadataName,metadataCode,metadataAssembly); + String vmJson=mapper.writeValueAsString(vm); + return vmJson; + } catch (JsonProcessingException e) { + throw new RuntimeException("序列化异常"+e); + } + } + + @Path("convertBizEntity") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String convertBizEntityToViewModel(String convertBeInfo) { + ObjectMapper mapper=new ObjectMapper(); + try { + JsonNode node= mapper.readTree(convertBeInfo); + String bizEntityJson=node.get("bizEntityJson").textValue(); + String bePkgName=null; + if(!CheckInfoUtil.checkNull(node.get("bePkgName"))){ + bePkgName=node.get("bePkgName").textValue(); + } + + String beId=node.get("beId").textValue(); + String voGeneratingAssembly=node.get("voGeneratingAssembly").textValue(); + return convertBizEntityToViewModel(bizEntityJson,bePkgName,beId,voGeneratingAssembly); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + + } + + @Path("chooseUdt") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String updateUdtElementWhenChooseUdt(String info) { + ObjectMapper mapper=new ObjectMapper(); + try { + JsonNode node= mapper.readTree(info); + String refUdtId=node.get("refUdtId").textValue(); + String path=node.get("path").textValue(); + String beElementJson=node.get("udtElementJson").textValue(); + return UpdateVariableWithUdtService + .getInstance().updateVariableWithRefUdt(refUdtId,path,beElementJson,true); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + + } + + @Path("updateUdt") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String updateUdtElementWhenLoading(String info) { + ObjectMapper mapper=new ObjectMapper(); + try { + JsonNode node= mapper.readTree(info); + String refUdtId=node.get("refUdtId").textValue(); + String path=node.get("path").textValue(); + String beElementJson=node.get("udtElementJson").textValue(); + return UpdateVariableWithUdtService.getInstance().updateVariableWithRefUdt(refUdtId,path,beElementJson,false); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + + } + + @Path("virtualVoChooseUdt") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String updateVirtualVoUdtElementWhenChooseUdt(String info) { + ObjectMapper mapper=new ObjectMapper(); + try { + JsonNode node= mapper.readTree(info); + String refUdtId=node.get("refUdtId").textValue(); + String path=node.get("path").textValue(); + String beElementJson=node.get("udtElementJson").textValue(); + return UpdateVirtualVoElementWithUdtService + .getInstance().UpdateVariableWithRefUdt(refUdtId,path,beElementJson,true); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + + } + + @Path("virtualVoUpdateUdt") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String updateVirtualVoUdtElementWhenLoading(String info) { + ObjectMapper mapper=new ObjectMapper(); + try { + JsonNode node= mapper.readTree(info); + String refUdtId=node.get("refUdtId").textValue(); + String path=node.get("path").textValue(); + String beElementJson=node.get("udtElementJson").textValue(); + return UpdateVirtualVoElementWithUdtService + .getInstance().UpdateVariableWithRefUdt(refUdtId,path,beElementJson,false); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + + } + + + @Path("changeMainObj") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String changeMainObj(String convertBeInfo) { + ObjectMapper mapper=getViewModelMapper(); + try { + JsonNode node= mapper.readTree(convertBeInfo); + String newObjId=node.get("newObjId").textValue(); + String bePkgName=null; + if(!CheckInfoUtil.checkNull(node.get("bePkgName"))){ + bePkgName=node.get("bePkgName").textValue(); + } + + String beId=node.get("beId").textValue(); + String voGeneratingAssembly=node.get("voGeneratingAssembly").textValue(); + GspBusinessEntity be=getBizEntity(null,bePkgName,beId); + GspBizEntityObject bizObj= (GspBizEntityObject) be.findObjectById(newObjId); + if (bizObj==null) + { + throw new VmManagerException("",EXCEPTIONCODE, "所选业务实体'{"+be.getName()+"}'中无选中的节点,业务实体id='{"+beId+"}', 节点id='{"+bizObj+"}'。",null, + ExceptionLevel.Error,false); + } + // 处理子节点 + if (bizObj.getObjectType() == GspCommonObjectType.ChildObject) + { + bizObj.setObjectType(GspCommonObjectType.MainObject); + bizObj.getKeys().clear(); + be.setMainObject(bizObj); + } + GspViewModel vm= ConvertUtils.convertToViewModel(be, bePkgName, beId, voGeneratingAssembly); + String vmJson=mapper.writeValueAsString(vm); + return vmJson; + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + + @Path("getHelpVoTargetBeId") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String getHelpVoTargetBeId(String convertBeInfo) { + ObjectMapper mapper=new ObjectMapper(); + try { + JsonNode node= mapper.readTree(convertBeInfo); + String helperId=node.get("helperId").textValue(); + RefCommonService service=SpringBeanUtils.getBean(RefCommonService.class); + HelpMetadataContent helpMetadataContent= (HelpMetadataContent) service.getRefMetadata(helperId).getContent(); + String voId=helpMetadataContent.getDataSource().getVoSourceId(); + GspViewModel helpVo= (GspViewModel) service.getRefMetadata(voId).getContent(); + if(helpVo==null){ + throw new RuntimeException("当前帮助"+helpMetadataContent.getName()+"无对应的vo元数据,helpId="+"帮助来源类型为:"+helpMetadataContent.getDataSource().getSourceType()); + } + if (helpVo.getMapping() == null || helpVo.getMapping().getMapType() != MappingType.BizEntity) + { + throw new RuntimeException("当前帮助'"+helpMetadataContent.getName()+"'vo元数据非Be源。"); + } + return "\""+helpVo.getMapping().getTargetMetadataId()+"\""; + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + + + @Path("convertBeElements") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String convertBeElementIdsToVmElements(String convertEleInfo) { + return WebControllerService.getInstance().convertBeElementIdsToVmElements(convertEleInfo,this::getBizEntity); + } + + @Path("getBeAsso") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String getBizAssoById(String info) { + ObjectMapper mapper=new ObjectMapper(); + SimpleModule module =new SimpleModule(); + BizElementSerializer bizElementSerializer=new BizElementSerializer(); + GspAssociationSerializer associationDeserializer=new GspAssociationSerializer(bizElementSerializer); + module.addSerializer(GspAssociation.class,associationDeserializer); + mapper.registerModule(module); + try { + JsonNode node= mapper.readTree(info); + String path = node.get("path").textValue(); + String voEleMappingJson = node.get("voEleMapping").textValue(); + String beAssoId = node.get("assoId").textValue(); + GspVoElementMapping voEleMapping = WebControllerService.getInstance().readVoEleMapping(voEleMappingJson); + GspCommonAssociation bizAsso =WebControllerService.getInstance().getBizAsso(path, voEleMapping, beAssoId,this::getBizEntity); + + String bizAssoJson=mapper.writeValueAsString(bizAsso); + return bizAssoJson; + } catch (JsonProcessingException e) { + throw new RuntimeException("GspAssociation序列化失败"+e); + } + } + + @Path("getVoAsso") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String getVoAsso(String info) { + ObjectMapper mapper=new ObjectMapper(); + try { + JsonNode node= mapper.readTree(info); + String path = node.get("path").textValue(); + String voEleMappingJson = node.get("voEleMapping").textValue(); + String beAssoJson = node.get("beAsso").textValue(); + String voAssoJson = node.get("voAsso").textValue(); + String refElementIdsJson = node.get("refElementIds").textValue(); + + + GspCommonAssociation beAsso = WebControllerService.getInstance().readAsso(beAssoJson,new BizElementDeserializer()); + GspCommonAssociation originVoAsso = WebControllerService.getInstance().readAsso(voAssoJson,new ViewElementDeserializer()); + var voEleMapping = WebControllerService.getInstance().readVoEleMapping(voEleMappingJson); + var refElementIds=WebControllerService.getInstance().readIdList(refElementIdsJson); + + if (refElementIds.size() == 0) + { + throw new VmManagerException("",EXCEPTIONCODE, "当前未选中关联带出字段。",null,ExceptionLevel.Error,false); + } + + GspFieldCollection bizRefElements = beAsso.getRefElementCollection(); + GspFieldCollection originVoRefElements = originVoAsso.getRefElementCollection(); + GspElementCollection refElements = new GspElementCollection(null); + + for (var refElementId : refElementIds) + { + IGspCommonElement voRefElement= (IGspCommonElement) originVoRefElements.stream().filter(item->item.getRefElementId().equals(refElementId)).findFirst().orElse(null); + if (!( voRefElement instanceof GspViewModelElement)) + { + IGspCommonElement beRefElement= (IGspCommonElement) bizRefElements.stream().filter(item->item.getRefElementId().equals(refElementId)).findFirst().orElse(null); + if (!(beRefElement instanceof GspBizEntityElement)) + { + throw new VmManagerException("",EXCEPTIONCODE, "be关联中无refElementId='{"+refElementId+"}'的关联带出字段。",null,ExceptionLevel.Error,false); + } + else + { + refElements.add(toElement((IGspCommonElement) beRefElement,voEleMapping.getTargetMetadataPkgName(),voEleMapping.getTargetMetadataId(),voEleMapping.getSourceType())); + } + } + else + { + refElements.add(voRefElement); + } + } + return WebControllerService.getInstance().writeViewElementsJson(refElements); + } catch (JsonProcessingException e) { + throw new RuntimeException("GspAssociation序列化失败"+e); + } + + } + + @Path("getVirtualVoAsso") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String getVirtualVoAsso(String info) { + return WebControllerService.getInstance().getVirtualVoAsso(info, this::getBizEntity); + } + + @Path("convertActions") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String convertBizActionsToVmActions(String convertActionInfo) { + ObjectMapper mapper=new ObjectMapper(); + try { + JsonNode node= mapper.readTree(convertActionInfo); + String bizActionsJson = node.get("bizActionsJson").textValue(); + String bePkgName=null; + if(!CheckInfoUtil.checkNull(node.get("bePkgName"))){ + bePkgName=node.get("bePkgName").textValue(); + } + String beId = node.get("beId").textValue(); + return convertBizActionsToVmActions(bizActionsJson, bePkgName, beId); + } catch (JsonProcessingException e) { + throw new RuntimeException("GspAssociation序列化失败"+e); + } + } + + @Path("convertElements") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String convertBizElementsToVmElements(String convertActionInfo) { + ObjectMapper mapper=new ObjectMapper(); + try { + JsonNode node= mapper.readTree(convertActionInfo); + String bizElementsJson = node.get("bizElementsJson").textValue(); + String bePkgName=null; + if(!CheckInfoUtil.checkNull(node.get("bePkgName"))){ + bePkgName=node.get("bePkgName").textValue(); + } + String beId = node.get("beId").textValue(); + return convertBizActionsToVmActions(bizElementsJson, bePkgName, beId); + } catch (JsonProcessingException e) { + throw new RuntimeException("GspAssociation序列化失败"+e); + } + } + + @Path("getbizObject/{beid}/{objid}") + @GET + @Produces(MediaType.APPLICATION_JSON) + public String getBizObject(@PathParam("beid") String beid,@PathParam("objid") String objid,@QueryParam("path") String path,@QueryParam("bePkgName") String bePkgName) { + GspBusinessEntity be=getBizEntity(path,bePkgName,beid); + return WebControllerService.getInstance().getBizObject(be, objid); + } + + @Path("addObjects") + @GET + @Produces(MediaType.APPLICATION_JSON) + public String addBizObjects(String convertActionInfo) { + ObjectMapper mapper=new ObjectMapper(); + SimpleModule module =new SimpleModule(); + module.addSerializer(IGspCommonModel.class,new ViewModelSerializer()); + module.addDeserializer(IGspCommonModel.class,new ViewModelDeserializer()); + mapper.registerModule(module); + try { + JsonNode node= mapper.readTree(convertActionInfo); + String vmJson = node.get("vmJson").textValue(); + String bizObjIdsJson = node.get("bizObjIds").textValue(); + String path = node.get("path").textValue(); + String bePkgName=null; + if(!CheckInfoUtil.checkNull(node.get("bePkgName"))){ + bePkgName=node.get("bePkgName").textValue(); + } + String beId = node.get("beId").textValue(); + + List bizObjIds = WebControllerService.getInstance().readIdList(bizObjIdsJson); + + GspBusinessEntity be = getBizEntity(path, bePkgName, beId); + GspViewModel vm =mapper.readValue(vmJson,GspViewModel.class); + List allBizObjIds = be.getAllObjectList().stream().map(item -> item.getID()).collect( + Collectors.toList());//.Select(item => item.ID).ToList(); + List vmObjMappingIds = vm.getAllObjectList().stream().map(item -> ((GspViewObject)item).getMapping().getTargetObjId()).collect( + Collectors.toList());//.Select(item => ((GspViewObject)item).Mapping.TargetObjId).ToList(); + + List newVmMappingObjIds = bizObjIds.stream().filter(item ->!vmObjMappingIds.contains(item)).collect(Collectors.toList());//.Where(item => !vmObjMappingIds.Contains(item)).ToList(); + if (newVmMappingObjIds.size()== 0) + { + return mapper.writeValueAsString(vm); + } + + // 删除未选中的be对象 + var redundantBizObjIds = allBizObjIds.stream().filter(item ->!vmObjMappingIds.contains(item)).collect(Collectors.toList());//.Where(item => !bizObjIds.Contains(item)).ToList(); + removeRedundantBizObj(be, redundantBizObjIds); + + // 添加新增的be对象 + addNewBizObject(vm, be, newVmMappingObjIds, vmObjMappingIds); + return mapper.writeValueAsString(vm); + } catch (JsonProcessingException e) { + throw new RuntimeException("GspAssociation序列化失败"+e); + } + } + + private void addNewBizObject(GspViewModel vm, GspBusinessEntity be,List newVmMappingObjIds, + List vmObjMappingIds) { + if (newVmMappingObjIds.size() != 0) + { + List ids = newVmMappingObjIds; + for(String id :ids){ + IGspCommonObject bizObj=getObjectById(be,id); + String parentObjId=bizObj.getParentObject().getID(); + if(vmObjMappingIds.contains(parentObjId)){ + IGspCommonObject parentObj=getMappedObjectById(vm,parentObjId); + if(parentObj==null) + parentObj.getContainChildObjects().add( + toObject(bizObj,vm.getMapping().getTargetMetadataPkgName(),vm.getMapping().getTargetMetadataId(),parentObj.getIDElement().getID(),GspVoObjectSourceType.BeObject)); + } + } + } + } + + private IGspCommonObject getObjectById(IGspCommonModel cm, String id) + { + return cm.getAllObjectList().stream().filter((item)->item.getID().equals(id)).findFirst().orElse(null);//;.Find(obj => obj.ID == id); + } + + private IGspCommonObject getMappedObjectById(GspViewModel vm, String id) + { + return vm.getAllObjectList().stream().filter((item)->((GspViewModel)item).getMapping().getTargetObjId().equals(id)).findFirst().orElse(null);//.Find(obj => ((GspViewObject)obj).Mapping.TargetObjId == id); + } + private void removeRedundantBizObj(GspBusinessEntity be, List redundantBizObjIds) { + if (redundantBizObjIds.size() != 0) + { + for (String id : redundantBizObjIds) + { + IGspCommonObject childObj = getObjectById(be, id); + if(childObj==null) + continue; + childObj.getParentObject().getContainChildObjects().remove(childObj); + } + } + } + + @Path("addObject") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String addBizObject(String addObjInfo) { + return WebControllerService.getInstance().addBizObject(addObjInfo,this::getBizEntity); + } + + @Path("batchSimplification") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public void SimplifyMetadata() { + SimplifyMetadataUtil util = new SimplifyMetadataUtil(); + util.Simplify(); + } + + + + private String convertBizActionsToVmActions(String bizActionsJson, String bePkgName, + String beId) { + VMActionCollection vmActions = new VMActionCollection(); + BizMgrActionCollection bizMgrActions = readBizMgrActions(bizActionsJson); + if (bizMgrActions.getCount() > 0) + { + bizMgrActions.forEach(mgrAction -> { var vmAction = ConvertUtils.toMappedAction((BizMgrAction)mgrAction, beId, bePkgName);vmActions.add(vmAction); + }); + } + return writeViewObjectsJson(vmActions); + } + + private String writeViewObjectsJson(VMActionCollection vmActions) { + ObjectMapper mapper=new ObjectMapper(); + SimpleModule module =new SimpleModule(); + module.addSerializer(VMActionCollection.class,new VmActionCollectionSerializer()); + mapper.registerModule(module); + try { + String vmActionsJson=mapper.writeValueAsString(vmActions); + return vmActionsJson; + } catch (JsonProcessingException e) { + throw new RuntimeException("VMActionCollection序列化失败"+e); + } + } + + private BizMgrActionCollection readBizMgrActions(String bizActionsJson) { + ObjectMapper mapper=new ObjectMapper(); + SimpleModule module =new SimpleModule(); + module.addDeserializer(BizOperationCollection.class,new BizMgrActionCollectionDeserializer()); + mapper.registerModule(module); + try { + BizMgrActionCollection bizOperations= (BizMgrActionCollection) mapper.readValue(bizActionsJson,BizOperationCollection.class); + return bizOperations; + } catch (JsonProcessingException e) { + throw new RuntimeException("BizMgrActionCollection反序列化失败"+e); + } + } + + +// private GspCommonAssociation getBizAsso(String path, GspVoElementMapping voEleMapping, +// String assoId) { +// GspBusinessEntity be = getBizEntity(path, voEleMapping.getTargetMetadataPkgName(), voEleMapping.getTargetMetadataId()); +// String bizEleId = voEleMapping.getTargetElementId(); +// GspBizEntityElement bizEle = (GspBizEntityElement) be.findElementById(bizEleId); +// if (bizEle == null) +// { +// throw new VmManagerException("",EXCEPTIONCODE, "找不到当前vo字段映射的be字段, 字段id={bizEleId}",null,ExceptionLevel.Error,false); +// } +// if (bizEle.getChildAssociations().getCount() == 0) +// { +// throw new VmManagerException("",EXCEPTIONCODE, "当前vo字段映射的be字段, 不是关联字段。",null,ExceptionLevel.Error,false); +// +// } +// GspAssociation association= bizEle.getChildAssociations().stream().filter(item->item.getId().equals(assoId)).findFirst().orElse(null); +// if (!(association instanceof GspCommonAssociation)) +// { +// throw new VmManagerException("",EXCEPTIONCODE, "找找不到当前vo关联映射的be关联, 关联id={assoId}。",null,ExceptionLevel.Error,false); +// } +// return (GspCommonAssociation) association; +// } + +// private GspVoElementMapping readVoEleMapping(String voEleMappingJson) { +// ObjectMapper mapper=new ObjectMapper(); +// SimpleModule module =new SimpleModule(); +// module.addSerializer(ViewModelMapping.class,new GspVoElementMappingSerializer()); +// module.addDeserializer(ViewModelMapping.class,new GspVoElementMappingDeserializer()); +// mapper.registerModule(module); +// try { +// GspVoElementMapping voElemapping= (GspVoElementMapping) mapper.readValue(voEleMappingJson,ViewModelMapping.class); +// if(voElemapping==null){ +// throw new VmManagerException("",EXCEPTIONCODE, "找不到当前vo字段映射的映射关系。",null,ExceptionLevel.Error,false); +// } +// return voElemapping; +// } catch (JsonProcessingException e) { +// throw new RuntimeException("VoElementMapping反序列化失败"+e); +// } +// } + + public static GspElementCollection convertPartialElementsToVoElements(IGspCommonObject co, List eleIdList, String pkgName, String metaId, GspVoElementSourceType sourceType ) + { + GspElementCollection voElements = new GspElementCollection(null); + if (eleIdList != null && eleIdList.size() > 0) + { + for (String eleId : eleIdList) + { + GspBizEntityElement bizElement = (GspBizEntityElement) co.findElement(eleId); + GspViewModelElement voElement = toElement(bizElement, pkgName, metaId, sourceType); + voElement.getMapping().setTargetObjectId(co.getID()); + voElements.add(voElement); + } + } + return voElements; + } + + private ObjectMapper getViewModelMapper(){ + ObjectMapper mapper=new ObjectMapper(); + SimpleModule module =new SimpleModule(); + module.addSerializer(IGspCommonModel.class,new ViewModelSerializer()); + module.addDeserializer(IGspCommonModel.class,new ViewModelDeserializer()); + mapper.registerModule(module); + return mapper; + } + private String convertBizEntityToViewModel(String bizEntityJson, String bePkgName, String beId, + String voGeneratingAssembly) { + GspBusinessEntity be = null; + try { + be = new ObjectMapper().readValue(bizEntityJson, GspBusinessEntity.class); + GspViewModel vm = ConvertUtils.convertToViewModel(be, bePkgName, beId, voGeneratingAssembly); +// 联动vo的关联带出字段枚举信息 + LinkBeUtils linkBeUtils = new LinkBeUtils(); + linkBeUtils.linkBeRefElements(vm); + + return new ObjectMapper().writeValueAsString(vm); + } catch (JsonProcessingException e) { + throw new RuntimeException("元数据序列化失败", e); + } + } + private GspBusinessEntity getBizEntity(String path, String bePkgName, String beId) + { + + if (ViewModelUtils.checkNull(beId)) + { + throw new VmManagerException("",EXCEPTIONCODE, "待获取的业务实体元数据id不可为空。",null, ExceptionLevel.Error,false); + } + GspMetadata metadata =SpringBeanUtils.getBean(RefCommonService.class).getRefMetadata(beId); + if (!(metadata.getContent() instanceof GspBusinessEntity)) + { + throw new VmManagerException("",EXCEPTIONCODE, String.format("无法加载id='%1$s'的业务实体元数据。", beId),null,ExceptionLevel.Error,false); + } + return (GspBusinessEntity) metadata.getContent(); + } + + /** + * 获取VO动作构件代码路径 + * @param info + * @return + */ + @Path("VOComponentCodePath") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String getVOComponentCodePath(JsonNode info) { + String id = info.get("metadataId").textValue(); + String projectpath = info.get("metadataPath").textValue(); + String type = info.get("actionType").textValue(); + String action = info.get("actionCode").textValue(); + ArrayList actionList = new ArrayList<>(); + actionList.add(action); + GspMetadata metadata = SpringBeanUtils.getBean(MetadataService.class).loadMetadataByMetadataId(id, projectpath); + GspViewModel vo = (GspViewModel) metadata.getContent(); + String relativePath = metadata.getRelativePath(); + + GspProject metadataProj = SpringBeanUtils.getBean(MetadataService.class).getGspProjectInfo(relativePath); + String compAssemblyName = metadataProj.getProjectNameSpace(); + + CompButton button = new CompButton(); + String filePath =button.getCompPath(vo,type,relativePath,actionList,compAssemblyName); + filePath.replaceAll("\\\\", Matcher.quoteReplacement(File.separator)); + filePath.replaceAll("/", Matcher.quoteReplacement(File.separator)); + + return filePath; + } + + /** + * 获取VO动作构件代码 + * @param info + * @return + */ + @Path("VOComponentCode") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String getVOComponentCode(JsonNode info) { + String id = info.get("metadataId").textValue(); + String projectpath = info.get("metadataPath").textValue(); + String type = info.get("actionType").textValue(); + String action = info.get("actionCode").textValue(); + ArrayList actionList = new ArrayList<>(); + actionList.add(action); + GspMetadata metadata = SpringBeanUtils.getBean(MetadataService.class).loadMetadataByMetadataId(id, projectpath); + GspViewModel vo = (GspViewModel) metadata.getContent(); + String relativePath = metadata.getRelativePath(); + GspProject metadataProj = SpringBeanUtils.getBean(MetadataService.class).getGspProjectInfo(relativePath); + String compAssemblyName = metadataProj.getProjectNameSpace(); + + CompButton button = new CompButton(); + String code =button.getCompCode(vo,type,relativePath,actionList,compAssemblyName); + + return code; + } + + /** + * 判断当前元数据是否在当前BO内 + * @param info + * @return + */ + @Path("isMetadataExist") + @PUT + @Produces(MediaType.APPLICATION_JSON) + public boolean isMetadataExist(JsonNode info) { + if(StringUtil.checkNull(info)) { + return false; + } + String path = info.get("path").textValue(); + String metadataFileName = info.get("metadataFileName").textValue(); + MetadataService service = SpringBeanUtils.getBean(com.inspur.edp.lcm.metadata.api.service.MetadataService.class); + return service.isMetadataExist(path, metadataFileName); + } + + private void isMetadataCodeExist(JsonNode info) { + if(StringUtil.checkNull(info)) { + return; + } + String metadataName = info.get("name").textValue(); + String projectPath = info.get("path").textValue(); + + GspMetadata metadata = SpringBeanUtils.getBean(MetadataService.class).loadMetadata(metadataName, projectPath); + GspViewModel vo = (GspViewModel) metadata.getContent(); + List checkInfo = new ArrayList<>(); + CompButton button = new CompButton(); + button.getNewActions(vo,checkInfo); + String relativePath = metadata.getRelativePath(); + MetadataProjectService service = SpringBeanUtils.getBean(MetadataProjectService.class); + String compModulePath = service.getJavaCompProjectPath(relativePath); + GspProject metadataProj = SpringBeanUtils.getBean(MetadataService.class).getGspProjectInfo(relativePath); + String compAssemblyName = metadataProj.getProjectNameSpace(); + if(checkInfo.size()<=0){ + return; + } + + for(CheckComUtil checkComUtil : checkInfo) { + ArrayList actionList = new ArrayList<>(); + actionList.add(checkComUtil.getAction()); + String filePath = button.getFilePath(vo, checkComUtil,compModulePath,compAssemblyName); + filePath.replaceAll("\\\\", Matcher.quoteReplacement(File.separator)); + filePath.replaceAll("/", Matcher.quoteReplacement(File.separator)); + FileService fsService = SpringBeanUtils.getBean(FileService.class); + if (fsService.isFileExist(filePath)) { + String fileName = ""; + if(!"VarDeterminations".equals(checkComUtil.getType())){ + fileName = checkComUtil.getAction()+"VOAction.java"; + }else { + fileName = vo.getName()+"Variable"+checkComUtil.getAction()+"VODtm.java"; + } + throw new RuntimeException("已存在名为"+fileName+"的构件代码文件,请修改编号为"+checkComUtil.getAction()+"、名称为"+checkComUtil.getActionName()+"的"+checkComUtil.getCheckInfo()+"的编号,再执行保存操作。"+"\r\n代码路径:"+filePath); + } + } + } + +} diff --git a/view-object-webapi/src/main/resources/META-INF/spring.factories b/view-object-webapi/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000000000000000000000000000000000000..a77ce4d3da712af4588d952c7240515bc762c1c6 --- /dev/null +++ b/view-object-webapi/src/main/resources/META-INF/spring.factories @@ -0,0 +1 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.inspur.edp.formserver.viewmodel.rtwebapi.BffRtWebApiServiceAutoConfig,com.inspur.edp.formserver.viewmodel.rtwebapi.BffMetadataRtWebApiServiceAutoConfig,com.inspur.edp.formserver.viewmodel.webapi.BffWebApiServiceAutoConfig,com.inspur.edp.formserver.viewmodel.webapi.BffWebApiServiceConfig