From 44ca0f01134c44e950311e1852289d0d08e35dcb Mon Sep 17 00:00:00 2001 From: Starryi Date: Tue, 14 Jun 2022 17:57:44 +0800 Subject: [PATCH 01/14] =?UTF-8?q?KERNEL-11517=20=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E4=B8=BB=E9=A2=98=E8=89=B2=E6=97=B6ClassHelper=E4=B8=AD?= =?UTF-8?q?=E9=81=8D=E5=8E=86=E6=90=9C=E7=B4=A2=E5=AF=B9=E8=B1=A1=E5=AD=98?= =?UTF-8?q?=E5=9C=A8=E6=80=A7=E8=83=BD=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 1. 利用clone机制遍历搜索待查找对象 2. 在clone时应用主题色,从而得到同步主题色的大对象 3. 使用上述cloned大对象 【改动思路】 同上 【review建议】 --- .../com/fr/design/mainframe/JTemplate.java | 10 +- .../fr/design/mainframe/JTemplateFactory.java | 6 + .../theme/TemplateThemeEditorPane.java | 5 +- .../theme/edit/ui/ColorListExtendedPane.java | 144 ------------------ .../designer/creator/XCreatorUtils.java | 17 +-- .../java/com/fr/design/mainframe/JForm.java | 5 + .../share/util/ShareComponentUtils.java | 4 +- .../com/fr/design/mainframe/JWorkBook.java | 6 + .../com/fr/design/mainframe/app/FormApp.java | 5 +- 9 files changed, 38 insertions(+), 164 deletions(-) delete mode 100644 designer-base/src/main/java/com/fr/design/mainframe/theme/edit/ui/ColorListExtendedPane.java diff --git a/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java b/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java index e1433119b4..7d1461bf37 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java @@ -1949,10 +1949,12 @@ public abstract class JTemplate> @Override public void setTemplateTheme(TemplateTheme newTheme, TemplateThemeCompatible compatible) { - ThemedTemplate.super.setTemplateTheme(newTheme, compatible); - String name = newTheme.getName(); - templateThemeButton.setText(name); - templateThemeButton.setToolTipText(name); + if (templateThemeButton != null) { + ThemedTemplate.super.setTemplateTheme(newTheme, compatible); + String name = newTheme.getName(); + templateThemeButton.setText(name); + templateThemeButton.setToolTipText(name); + } } /** diff --git a/designer-base/src/main/java/com/fr/design/mainframe/JTemplateFactory.java b/designer-base/src/main/java/com/fr/design/mainframe/JTemplateFactory.java index 9aa8204d60..310a051a4e 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/JTemplateFactory.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/JTemplateFactory.java @@ -1,7 +1,12 @@ package com.fr.design.mainframe; import com.fr.base.io.BaseBook; +import com.fr.base.theme.FineColorGather; +import com.fr.base.theme.FineColorManager; +import com.fr.base.theme.FineColorSynchronizer; +import com.fr.base.theme.TemplateThemeCompatible; import com.fr.file.FILE; +import com.fr.form.main.Form; import com.fr.stable.CoreConstants; import com.fr.stable.StringUtils; @@ -36,6 +41,7 @@ public final class JTemplateFactory { if (defaultAppExtension.equalsIgnoreCase(fileExtension)) { JTemplate jt = app.openTemplate(file); if (jt != null) { + jt.checkAndResetTheme(); return jt; } } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeEditorPane.java b/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeEditorPane.java index 0b26f6f8e7..8cb1802771 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeEditorPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeEditorPane.java @@ -2,6 +2,7 @@ package com.fr.design.mainframe.theme; import com.fr.base.theme.FineColorFlushUtils; import com.fr.base.theme.FineColorManager; +import com.fr.base.theme.FineColorSynchronizer; import com.fr.base.theme.TemplateTheme; import com.fr.base.theme.TemplateThemeConfig; import com.fr.base.theme.settings.ThemedCellStyleList; @@ -157,10 +158,8 @@ public abstract class TemplateThemeEditorPane extends J return container; } private void onColorSchemeChanged(List colors) { - FineColorManager.FineColorReplaceByColorScheme replaceByColorScheme = new FineColorManager.FineColorReplaceByColorScheme(colors); T theme = updateBean(); - FineColorFlushUtils.replaceCacheObject(theme, replaceByColorScheme); - FineColorManager.traverse(theme, replaceByColorScheme); + theme = (T) FineColorSynchronizer.flush(theme, colors); populateBean4CustomEditors(theme); this.repaint(); } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/theme/edit/ui/ColorListExtendedPane.java b/designer-base/src/main/java/com/fr/design/mainframe/theme/edit/ui/ColorListExtendedPane.java deleted file mode 100644 index 9d02180e7d..0000000000 --- a/designer-base/src/main/java/com/fr/design/mainframe/theme/edit/ui/ColorListExtendedPane.java +++ /dev/null @@ -1,144 +0,0 @@ -package com.fr.design.mainframe.theme.edit.ui; - -import com.fr.base.theme.FineColorManager; -import com.fr.design.layout.FRGUIPaneFactory; - -import javax.swing.JPanel; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.util.ArrayList; -import java.util.List; - -/** - * @author Starryi - * @version 1.0 - * Created by Starryi on 2021/8/7 - */ -public class ColorListExtendedPane extends JPanel implements MouseListener { - public static final int DEFAULT_COLOR_COUNT = 8; - public static final int DEFAULT_EXTENDED_COUNT = 5; - public static final int DEFAULT_COLOR_SIZE = 16; - public static final int DEFAULT_COLOR_GAP = 3; - - public static final ExtendedColorComputer DEFAULT_EXTENDED_COMPUTER = new ExtendedColorComputer() { - @Override - public Color computeExtendedColor(Color color, int index, int count) { - return FineColorManager.computeExtendedColor(color, index, count); - } - }; - - private final boolean selectable; - private final int colorCount; - private final int extendedCount; - private final int boxSize; - private final int boxGap; - - private final List colorList = new ArrayList<>(); - private ExtendedColorComputer extendedColorComputer = DEFAULT_EXTENDED_COMPUTER; - - private int selectedColorIndex = -1; - private int selectedExtendedIndex = -1; - - public ColorListExtendedPane() { - this(false, DEFAULT_COLOR_COUNT, DEFAULT_EXTENDED_COUNT, DEFAULT_COLOR_SIZE, DEFAULT_COLOR_GAP); - } - - public ColorListExtendedPane(boolean selectable, int colorCount, int extendedCount, int boxSize, int boxGap) { - setLayout(FRGUIPaneFactory.createBorderLayout()); - this.selectable = selectable; - this.colorCount = Math.max(1, colorCount); - this.extendedCount = extendedCount; - this.boxSize = boxSize; - this.boxGap = boxGap; - - for (int i = 0; i < colorCount; i++) { - colorList.add(Color.WHITE); - } - - int width = colorCount * boxSize + (colorCount - 1) * boxGap; - int height = extendedCount * boxSize + (extendedCount - 1) * boxGap; - setPreferredSize(new Dimension(width, height)); - } - - public void populate(List colors) { - if (colors.size() > 0) { - colorList.clear(); - colorList.addAll(colors); - repaint(); - } - } - - public List update() { - return new ArrayList<>(colorList); - } - - public void setExtendedColorComputer(ExtendedColorComputer extendedColorComputer) { - this.extendedColorComputer = extendedColorComputer; - } - - @Override - public void mouseClicked(MouseEvent e) { - int x = e.getX(); - int y = e.getY(); - - int colorIndex = x / (boxSize + boxGap); - int colorX = colorIndex * (boxSize + boxGap); - - int extendedIndex = y / boxSize; - int extendedY = extendedIndex * boxSize; - - if (colorX <= x && x <= colorX + boxSize && extendedY <= y && y <= extendedY + boxSize) { - selectedColorIndex = colorIndex; - selectedExtendedIndex = extendedIndex; - } else { - selectedColorIndex = -1; - selectedExtendedIndex = -1; - } - repaint(); - } - - @Override - public void mousePressed(MouseEvent e) { - - } - - @Override - public void mouseReleased(MouseEvent e) { - - } - - @Override - public void mouseEntered(MouseEvent e) { - - } - - @Override - public void mouseExited(MouseEvent e) { - - } - - public interface ExtendedColorComputer { - Color computeExtendedColor(Color color, int index, int count); - } - - @Override - public void paint(Graphics g) { - super.paint(g); - Color oldColor = g.getColor(); - - for (int i = 0; i < colorCount; i++) { - int x = i * (boxSize + boxGap); - for (int j = 0; j < extendedCount; j++) { - Color color = extendedColorComputer.computeExtendedColor(colorList.get(i), j, extendedCount); - g.setColor(color); - int y = j * (boxSize + boxGap); - g.fillRect(x, y, boxSize, boxSize); - } - } - - g.setColor(oldColor); - } -} diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java b/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java index d5b6a95814..395521a7fa 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java @@ -7,6 +7,7 @@ import com.fr.base.chart.BaseChartCollection; import com.fr.base.theme.FineColorFlushUtils; import com.fr.base.theme.FineColorGather; import com.fr.base.theme.FineColorManager; +import com.fr.base.theme.FineColorSynchronizer; import com.fr.base.theme.FormTheme; import com.fr.base.theme.TemplateTheme; import com.fr.base.theme.TemplateThemeAware; @@ -235,13 +236,12 @@ public class XCreatorUtils { } public static XCreator createThemedXCreator(Widget widget) { - XCreator creator = createXCreator(widget); JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); TemplateTheme theme = template.getTemplateTheme(); if (theme instanceof FormTheme) { - setupTemplateTheme(creator, true, (FormTheme) theme, TemplateThemeCompatible.NONE); + widget = setupTemplateTheme(widget, true, (FormTheme) theme, TemplateThemeCompatible.NONE); } - return creator; + return createXCreator(widget); } /** @@ -386,14 +386,12 @@ public class XCreatorUtils { } - public static void setupTemplateTheme(XCreator container, final boolean forceFollowingTheme, final FormTheme currentTemplateUsingTheme, TemplateThemeCompatible compatible) { - FineColorGather colorGather = new FineColorManager.FineColorReplaceByTheme(currentTemplateUsingTheme, compatible); - Widget root = container.toData(); - List chartCollections = root.getChartCollections(); + public static Widget setupTemplateTheme(Widget widget, final boolean forceFollowingTheme, final FormTheme currentTemplateUsingTheme, TemplateThemeCompatible compatible) { + List chartCollections = widget.getChartCollections(); for (BaseChartCollection chartCollection: chartCollections) { chartCollection.onTemplateUsingThemeChange(currentTemplateUsingTheme, compatible); } - Form.traversalWidget(root, new WidgetGather() { + Form.traversalWidget(widget, new WidgetGather() { @Override public void dealWith(Widget widget) { TemplateThemeAware themedWidget = (TemplateThemeAware) widget; @@ -408,8 +406,7 @@ public class XCreatorUtils { return true; } }, TemplateThemeAware.class); - FineColorFlushUtils.replaceCacheObject(container.toData(), colorGather); - FineColorManager.traverse(container.toData(), colorGather); + return (Widget) FineColorSynchronizer.flush(widget, currentTemplateUsingTheme, compatible); } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/JForm.java b/designer-form/src/main/java/com/fr/design/mainframe/JForm.java index 493a7fa74a..0f5b903078 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/JForm.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/JForm.java @@ -6,6 +6,9 @@ import com.fr.base.Parameter; import com.fr.base.Releasable; import com.fr.base.extension.FileExtension; import com.fr.base.iofile.attr.ExtendSharableAttrMark; +import com.fr.base.theme.FineColorGather; +import com.fr.base.theme.FineColorManager; +import com.fr.base.theme.FineColorSynchronizer; import com.fr.base.theme.FormTheme; import com.fr.base.theme.TemplateTheme; import com.fr.base.theme.TemplateThemeCompatible; @@ -1210,6 +1213,7 @@ public class JForm extends JTemplate implements BaseJForm implements BaseJForm template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); TemplateTheme theme = template.getTemplateTheme(); if (theme instanceof FormTheme) { @@ -64,8 +63,9 @@ public class ShareComponentUtils { StringUtils.isNotEmpty(suitableTemplateThemeName) && StringUtils.equals(theme.getName(), suitableTemplateThemeName) && !StringUtils.equals(theme.getName(), themeName4LegacyTemplate); - XCreatorUtils.setupTemplateTheme(creator, false, (FormTheme) theme, isCurrentUsingThemeSuitSharedComponent ? TemplateThemeCompatible.NONE : TemplateThemeCompatible.ABSENT); + creatorSource = XCreatorUtils.setupTemplateTheme(creatorSource, false, (FormTheme) theme, isCurrentUsingThemeSuitSharedComponent ? TemplateThemeCompatible.NONE : TemplateThemeCompatible.ABSENT); } + XCreator creator = createXCreator(creatorSource, shareId, provider); return creator; } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java b/designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java index 20b674a48e..29af88fe53 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java @@ -6,6 +6,9 @@ import com.fr.base.Parameter; import com.fr.base.ScreenResolution; import com.fr.base.TRL; import com.fr.base.extension.FileExtension; +import com.fr.base.theme.FineColorGather; +import com.fr.base.theme.FineColorManager; +import com.fr.base.theme.FineColorSynchronizer; import com.fr.base.theme.ReportTheme; import com.fr.base.theme.TemplateTheme; import com.fr.base.theme.TemplateThemeCompatible; @@ -77,6 +80,7 @@ import com.fr.file.FILEChooserPane; import com.fr.file.FileNodeFILE; import com.fr.file.filetree.FileNode; import com.fr.file.filter.ChooseFileFilter; +import com.fr.form.main.Form; import com.fr.general.ComparatorUtils; import com.fr.general.ModuleContext; import com.fr.grid.Grid; @@ -1289,6 +1293,7 @@ public class JWorkBook extends JTemplate { protected void setUpTheme4NewTemplate() { super.setUpTheme4NewTemplate(); getTarget().setTemplateTheme(getTarget().getTemplateTheme()); + setTarget((WorkBook) FineColorSynchronizer.flush(getTarget(), getTemplateTheme())); } @@ -1308,6 +1313,7 @@ public class JWorkBook extends JTemplate { boolean shouldCreateUndoState = compatible == TemplateThemeCompatible.NONE && !StringUtils.equals(oldTheme.getName(), newTheme.getName()); getTarget().setTemplateTheme(newTheme, compatible); + setTarget((WorkBook) FineColorSynchronizer.flush(getTarget(), newTheme, compatible)); if (HistoryTemplateListCache.getInstance().getCurrentEditingTemplate() == this) { fireTargetModified(shouldCreateUndoState); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/app/FormApp.java b/designer-realize/src/main/java/com/fr/design/mainframe/app/FormApp.java index 01b3172bd4..0ced38559b 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/app/FormApp.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/app/FormApp.java @@ -3,6 +3,9 @@ package com.fr.design.mainframe.app; import com.fr.base.Parameter; import com.fr.base.chart.exception.ChartNotFoundException; import com.fr.base.io.XMLEncryptUtils; +import com.fr.base.theme.FineColorManager; +import com.fr.base.theme.FineColorSynchronizer; +import com.fr.base.theme.TemplateThemeCompatible; import com.fr.design.DesignerEnvManager; import com.fr.design.fit.NewJForm; import com.fr.design.i18n.Toolkit; @@ -124,6 +127,6 @@ class FormApp extends AbstractAppProvider { FineLoggerFactory.getLogger().error("Failed to generate frm from " + file, exp); return null; } - return tpl; + return (Form) FineColorSynchronizer.flush(tpl, tpl.getTemplateTheme()); } } From 8a20aff9ced4340288780785650ff76d377c6ea0 Mon Sep 17 00:00:00 2001 From: kerry Date: Fri, 17 Jun 2022 14:36:09 +0800 Subject: [PATCH 02/14] =?UTF-8?q?REPORT-73488=20=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E5=8F=96=E8=89=B2=E5=99=A8=E9=85=8D=E7=BD=AE=E9=A2=9C=E8=89=B2?= =?UTF-8?q?=E5=90=8E=EF=BC=8C=E6=9C=80=E8=BF=91=E4=BD=BF=E7=94=A8=E7=9A=84?= =?UTF-8?q?=E9=A2=9C=E8=89=B2=E5=88=97=E8=A1=A8=E4=B8=8D=E4=BC=9A=E8=A2=AB?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/style/color/ColorPicker.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/style/color/ColorPicker.java b/designer-base/src/main/java/com/fr/design/style/color/ColorPicker.java index 93b9ba3fd0..2e5f56981d 100644 --- a/designer-base/src/main/java/com/fr/design/style/color/ColorPicker.java +++ b/designer-base/src/main/java/com/fr/design/style/color/ColorPicker.java @@ -4,6 +4,7 @@ package com.fr.design.style.color; * Created by plough on 2016/12/22. */ +import com.fr.design.DesignerEnvManager; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.IOUtils; import com.fr.log.FineLoggerFactory; @@ -137,6 +138,7 @@ public class ColorPicker extends JDialog implements ActionListener { timer.stop(); if (setColor) { colorSelectable.setColor(colorToSet); + DesignerEnvManager.getEnvManager().getColorConfigManager().addToColorQueue(new Color(colorToSet.getRGB())); } this.dispose(); } From 7a18e5ec1363928599ec707bcd587260a7fba649 Mon Sep 17 00:00:00 2001 From: Harrison Date: Fri, 17 Jun 2022 16:17:18 +0800 Subject: [PATCH 03/14] =?UTF-8?q?REPORT-73833=E3=80=90=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E7=8E=AF=E5=A2=83=E6=A3=80=E6=B5=8B=E3=80=91=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E7=9B=AE=E5=BD=95=EF=BC=8C=E5=8F=AA=E6=9C=89finedb?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=EF=BC=8C=E8=87=AA=E5=8A=A8=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E6=B2=A1=E5=BC=B9=201-=E8=BF=99=E9=87=8C=E5=AE=B9=E6=98=93?= =?UTF-8?q?=E5=90=9E=E5=BC=82=E5=B8=B8=EF=BC=8C=E4=BF=AE=E6=94=B9=E4=B8=80?= =?UTF-8?q?=E4=B8=8B=E3=80=82=202-=E6=A0=87=E8=AE=B0=E4=B8=BA=20Careful?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/env/detect/base/DetectorBridge.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/designer-base/src/main/java/com/fr/env/detect/base/DetectorBridge.java b/designer-base/src/main/java/com/fr/env/detect/base/DetectorBridge.java index d5291bb7f6..c7159eec80 100644 --- a/designer-base/src/main/java/com/fr/env/detect/base/DetectorBridge.java +++ b/designer-base/src/main/java/com/fr/env/detect/base/DetectorBridge.java @@ -1,5 +1,6 @@ package com.fr.env.detect.base; +import com.fr.common.annotations.Careful; import com.fr.env.detect.bean.DetectorResult; import com.fr.env.detect.bean.DetectorType; import com.fr.env.detect.impl.DetectorChain; @@ -21,9 +22,11 @@ import java.util.stream.Stream; /** * 检测器桥接逻辑 * [detect-core] - bridge - ui + * 标记为谨慎类。目前埋点依赖于包名、方法名、方法特征,不能随意更改 * * created by Harrison on 2022/05/13 **/ +@Careful public class DetectorBridge { public static DetectorBridge getInstance() { From 8206cbb3dfad0a60bb86cdc91a42740859d1fdbf Mon Sep 17 00:00:00 2001 From: hades Date: Mon, 20 Jun 2022 10:26:14 +0800 Subject: [PATCH 04/14] =?UTF-8?q?REPORT-72819=20=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E4=B8=8D=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/com/fr/design/i18n/dimension_zh.properties | 2 +- .../resources/com/fr/design/i18n/dimension_zh_TW.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties b/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties index 3c398efc04..055a81109a 100644 --- a/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties +++ b/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties @@ -13,7 +13,7 @@ com.fr.design.actions.server.dialog=700*630 com.fr.design.report.fit.templatePane.dialog=600*400 com.fr.design.report.fit.firstColumn=80*20 com.fr.design.report.fit.column=100*20 -com.fr.design.lock.LockInfoDialog=400*160 +com.fr.design.lock.LockInfoDialog=400*180 com.fr.design.mainframe.ForbiddenPane.refreshButton=68*24 com.fr.design.cell.expand.sort.pane=227*155 com.fr.design.sort.rule.item=80*20 diff --git a/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties b/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties index 7130938c77..2ee112455f 100644 --- a/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties +++ b/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties @@ -12,7 +12,7 @@ com.fr.design.actions.server.dialog=700*630 com.fr.design.report.fit.templatePane.dialog=600*400 com.fr.design.report.fit.firstColumn=80*20 com.fr.design.report.fit.column=100*20 -com.fr.design.lock.LockInfoDialog=400*160 +com.fr.design.lock.LockInfoDialog=400*180 com.fr.design.mainframe.ForbiddenPane.refreshButton=68*24 com.fr.design.cell.expand.sort.pane=227*155 com.fr.design.sort.rule.item=80*20 From 2476285d676850ea743544f2f5e5641e0105b987 Mon Sep 17 00:00:00 2001 From: pengda Date: Mon, 20 Jun 2022 14:08:46 +0800 Subject: [PATCH 05/14] =?UTF-8?q?REPORT-73811=20=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E5=B1=9E=E6=80=A7=E6=B1=87=E6=80=BB=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E5=80=BC=EF=BC=8C=E6=B1=87=E6=80=BB=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E4=B8=8B=E6=8B=89=E5=86=85=E5=AE=B9=E6=98=BE=E7=A4=BA=E4=BA=86?= =?UTF-8?q?=E4=B8=A4=E9=81=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SeriesCondition/ColSelectedWithSummaryMethodEditor.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/chart/series/SeriesCondition/ColSelectedWithSummaryMethodEditor.java b/designer-chart/src/main/java/com/fr/design/chart/series/SeriesCondition/ColSelectedWithSummaryMethodEditor.java index 5388684e74..6d7ba7699b 100644 --- a/designer-chart/src/main/java/com/fr/design/chart/series/SeriesCondition/ColSelectedWithSummaryMethodEditor.java +++ b/designer-chart/src/main/java/com/fr/design/chart/series/SeriesCondition/ColSelectedWithSummaryMethodEditor.java @@ -46,8 +46,9 @@ public class ColSelectedWithSummaryMethodEditor extends Editor Date: Mon, 20 Jun 2022 14:45:39 +0800 Subject: [PATCH 06/14] =?UTF-8?q?REPORT-73833=E3=80=90=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E7=8E=AF=E5=A2=83=E6=A3=80=E6=B5=8B=E3=80=91=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E7=9B=AE=E5=BD=95=EF=BC=8C=E5=8F=AA=E6=9C=89finedb?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=EF=BC=8C=E8=87=AA=E5=8A=A8=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E6=B2=A1=E5=BC=B9=20=E9=9C=80=E8=A6=81=E5=AF=B9=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E5=90=8E=E5=9F=8B=E7=82=B9=E3=80=82=E4=B9=8B=E5=89=8D?= =?UTF-8?q?=E6=98=AF=E4=BD=BF=E7=94=A8=E7=9A=84=20Stream.=20=E5=9F=8B?= =?UTF-8?q?=E7=82=B9=E5=90=8E=20Stream=20=E6=B5=81=E5=B0=B1=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E7=94=A8=E4=BA=86=E3=80=82=20=E8=BF=99=E8=BE=B9?= =?UTF-8?q?=E6=8D=A2=E6=88=90=20Collection=20=E9=80=82=E9=85=8D=E4=B8=80?= =?UTF-8?q?=E4=B8=8B=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/env/detect/EnvDetectorCenter.java | 6 +++--- .../java/com/fr/env/detect/base/DetectorBridge.java | 13 +++++++++---- .../com/fr/start/LifecycleFatalErrorHandler.java | 5 +++-- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/designer-base/src/main/java/com/fr/env/detect/EnvDetectorCenter.java b/designer-base/src/main/java/com/fr/env/detect/EnvDetectorCenter.java index edaf3d0b3f..1fb2665b28 100644 --- a/designer-base/src/main/java/com/fr/env/detect/EnvDetectorCenter.java +++ b/designer-base/src/main/java/com/fr/env/detect/EnvDetectorCenter.java @@ -151,7 +151,7 @@ public class EnvDetectorCenter { if (!validAction.get()) { return; } - Stream resultStream = DetectorBridge.getInstance().detect(); + Stream resultStream = DetectorBridge.getInstance().detect().stream(); // 展示效果 NotificationDialogProperties properties = new NotificationDialogProperties(DesignerContext.getDesignerFrame(), Toolkit.i18nText("Fine-Design_Basic_Detect_Notification_Title")); @@ -196,7 +196,7 @@ public class EnvDetectorCenter { */ public List terminate(Throwable throwable) { - Stream resultStream = DetectorBridge.getInstance().detect(throwable); + Stream resultStream = DetectorBridge.getInstance().detect(throwable).stream(); return resultStream .filter((e) -> e.getStatus() == DetectorStatus.EXCEPTION) .collect(Collectors.toList()); @@ -209,7 +209,7 @@ public class EnvDetectorCenter { */ public List terminateUnexpectedly() { - Stream resultStream = DetectorBridge.getInstance().detect(); + Stream resultStream = DetectorBridge.getInstance().detect().stream(); return resultStream .filter((e) -> e.getStatus() == DetectorStatus.EXCEPTION) .collect(Collectors.toList()); diff --git a/designer-base/src/main/java/com/fr/env/detect/base/DetectorBridge.java b/designer-base/src/main/java/com/fr/env/detect/base/DetectorBridge.java index c7159eec80..09ff9fe89d 100644 --- a/designer-base/src/main/java/com/fr/env/detect/base/DetectorBridge.java +++ b/designer-base/src/main/java/com/fr/env/detect/base/DetectorBridge.java @@ -16,7 +16,9 @@ import com.fr.log.FineLoggerFactory; import com.fr.value.NotNullLazyValue; import org.jetbrains.annotations.NotNull; +import java.util.Collection; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.stream.Collectors; import java.util.stream.Stream; /** @@ -128,9 +130,11 @@ public class DetectorBridge { * * @return 能够检测出的异常情况 */ - public Stream detect() { + @NotNull + public Collection detect() { - return detectorManager.getValue().detect(); + Stream results = detectorManager.getValue().detect(); + return results.collect(Collectors.toList()); } /** @@ -141,10 +145,11 @@ public class DetectorBridge { * @param throwable 异常 * @return 检测结果 */ - public Stream detect(Throwable throwable) { + @NotNull + public Collection detect(Throwable throwable) { ThrowableStore.getInstance().add(throwable); - Stream result = detect(); + Collection result = detect(); ThrowableStore.getInstance().reset(); return result; diff --git a/designer-realize/src/main/java/com/fr/start/LifecycleFatalErrorHandler.java b/designer-realize/src/main/java/com/fr/start/LifecycleFatalErrorHandler.java index ba0c5e03da..3115781b3d 100644 --- a/designer-realize/src/main/java/com/fr/start/LifecycleFatalErrorHandler.java +++ b/designer-realize/src/main/java/com/fr/start/LifecycleFatalErrorHandler.java @@ -28,12 +28,12 @@ import com.fr.stable.lifecycle.FineLifecycleFatalError; import com.fr.stable.project.ProjectConstants; import javax.swing.JOptionPane; +import java.util.Collection; import java.util.EnumMap; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import java.util.stream.Stream; /** * @author hades @@ -88,8 +88,9 @@ public class LifecycleFatalErrorHandler { @Override public void handle(FineLifecycleFatalError fatal) { - Stream resultStream = DetectorBridge.getInstance().detect(fatal); + Collection resultStream = DetectorBridge.getInstance().detect(fatal); List results = resultStream + .stream() .filter((e) -> e.getStatus() == DetectorStatus.EXCEPTION) .collect(Collectors.toList()); From 3a69b376094af2877caaa9a4ab2e9447c4d15833 Mon Sep 17 00:00:00 2001 From: Lanlan Date: Mon, 20 Jun 2022 14:52:14 +0800 Subject: [PATCH 07/14] =?UTF-8?q?REPORT-72595=20FR=E6=BA=90=E7=A0=81?= =?UTF-8?q?=E4=B8=AD=E5=AD=98=E5=9C=A8=E5=8A=A0=E5=AF=86=E5=AF=86=E9=92=A5?= =?UTF-8?q?=E7=A1=AC=E7=BC=96=E7=A0=81=EF=BC=8C=E5=BB=BA=E8=AE=AE=E6=94=BE?= =?UTF-8?q?=E5=88=B0=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../login/utils/DesignerLoginUtils.java | 22 ++++++++++++++++--- .../resources/com/fr/design/config/default | 1 + 2 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 designer-base/src/main/resources/com/fr/design/config/default diff --git a/designer-base/src/main/java/com/fr/design/login/utils/DesignerLoginUtils.java b/designer-base/src/main/java/com/fr/design/login/utils/DesignerLoginUtils.java index a39a0be4bf..ca238d1544 100644 --- a/designer-base/src/main/java/com/fr/design/login/utils/DesignerLoginUtils.java +++ b/designer-base/src/main/java/com/fr/design/login/utils/DesignerLoginUtils.java @@ -9,12 +9,16 @@ import com.fr.general.http.HttpToolbox; import com.fr.general.log.MessageFormatter; import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; +import com.fr.security.encryption.storage.keys.DefaultKeys; import com.fr.stable.StringUtils; import com.fr.third.org.bouncycastle.util.encoders.Hex; import java.awt.Window; +import java.io.IOException; +import java.io.InputStream; import java.security.SecureRandom; import java.util.HashMap; import java.util.Map; +import java.util.Properties; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; @@ -28,8 +32,6 @@ public class DesignerLoginUtils { private static final String PRODUCT_FINEREPORT = "product-finereport"; - private static final String KEY = "i7hP48WAcuTrmxfN"; - public static Map renderMap() { Map map4Tpl = new HashMap<>(); map4Tpl.put("language", GeneralContext.getLocale().toString()); @@ -85,8 +87,11 @@ public class DesignerLoginUtils { jo.put("uid", manager.getDesignerLoginUid()); jo.put("username", manager.getDesignerLoginUsername()); jo.put("source", PRODUCT_FINEREPORT); + + Properties properties = read("/default"); + byte[] iv = randomIv(); - return new String(Hex.encode(iv)) + encrypt(jo.toString(), KEY.getBytes(), iv); + return new String(Hex.encode(iv)) + encrypt(jo.toString(), properties.getProperty("Fine-Designer_Login").getBytes(), iv); } private static byte[] randomIv() { @@ -105,4 +110,15 @@ public class DesignerLoginUtils { byte[] resultBytes = cipher.doFinal(content.getBytes()); return new String(Hex.encode(resultBytes)); } + + private static Properties read(String fileName) { + fileName = "com/fr/design/config" + fileName; + Properties properties = new Properties(); + try (InputStream inputStream = DefaultKeys.class.getClassLoader().getResourceAsStream(fileName)){ + properties.load(inputStream); + } catch (IOException e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + return properties; + } } diff --git a/designer-base/src/main/resources/com/fr/design/config/default b/designer-base/src/main/resources/com/fr/design/config/default new file mode 100644 index 0000000000..f808a82379 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/config/default @@ -0,0 +1 @@ +Fine-Designer_Login=i7hP48WAcuTrmxfN From 2076a9d77be281e99ff51b7346d176168b806ea3 Mon Sep 17 00:00:00 2001 From: Lanlan Date: Mon, 20 Jun 2022 15:10:08 +0800 Subject: [PATCH 08/14] =?UTF-8?q?=E5=8D=95=E7=8B=AC=E5=86=99=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=20DefaultLoginKeys?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/login/config/DefaultLoginKeys.java | 48 +++++++++++++++++++ .../login/utils/DesignerLoginUtils.java | 25 +++------- 2 files changed, 54 insertions(+), 19 deletions(-) create mode 100644 designer-base/src/main/java/com/fr/design/login/config/DefaultLoginKeys.java diff --git a/designer-base/src/main/java/com/fr/design/login/config/DefaultLoginKeys.java b/designer-base/src/main/java/com/fr/design/login/config/DefaultLoginKeys.java new file mode 100644 index 0000000000..36988aa5ca --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/login/config/DefaultLoginKeys.java @@ -0,0 +1,48 @@ +package com.fr.design.login.config; + +import com.fr.log.FineLoggerFactory; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; + +/** + * @author Lanlan + * @version 10.0 + * Created by Lanlan on 2022/6/20 + */ +public class DefaultLoginKeys { + + private static final String FILENAME = "com/fr/design/config/default"; + + private static final DefaultLoginKeys INSTANCE = new DefaultLoginKeys(); + + public static DefaultLoginKeys getInstance() { + return INSTANCE; + } + + private final Map keys = new HashMap<>(); + + private DefaultLoginKeys() { + Properties properties = load(); + for (Map.Entry entry : properties.entrySet()) { + String name = entry.getKey().toString(); + keys.put(name, entry.getValue().toString()); + } + } + + public String getKey(String name) { + return keys.get(name); + } + + private Properties load() { + Properties properties = new Properties(); + try (InputStream inputStream = DefaultLoginKeys.class.getClassLoader().getResourceAsStream(FILENAME)) { + properties.load(inputStream); + } catch (IOException e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + return properties; + } +} diff --git a/designer-base/src/main/java/com/fr/design/login/utils/DesignerLoginUtils.java b/designer-base/src/main/java/com/fr/design/login/utils/DesignerLoginUtils.java index ca238d1544..8845f00e1f 100644 --- a/designer-base/src/main/java/com/fr/design/login/utils/DesignerLoginUtils.java +++ b/designer-base/src/main/java/com/fr/design/login/utils/DesignerLoginUtils.java @@ -1,6 +1,7 @@ package com.fr.design.login.utils; import com.fr.design.DesignerEnvManager; +import com.fr.design.login.config.DefaultLoginKeys; import com.fr.design.mainframe.toast.DesignerToastMsgUtil; import com.fr.general.CloudCenter; import com.fr.general.CloudCenterConfig; @@ -9,16 +10,12 @@ import com.fr.general.http.HttpToolbox; import com.fr.general.log.MessageFormatter; import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; -import com.fr.security.encryption.storage.keys.DefaultKeys; import com.fr.stable.StringUtils; import com.fr.third.org.bouncycastle.util.encoders.Hex; import java.awt.Window; -import java.io.IOException; -import java.io.InputStream; import java.security.SecureRandom; import java.util.HashMap; import java.util.Map; -import java.util.Properties; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; @@ -87,11 +84,12 @@ public class DesignerLoginUtils { jo.put("uid", manager.getDesignerLoginUid()); jo.put("username", manager.getDesignerLoginUsername()); jo.put("source", PRODUCT_FINEREPORT); - - Properties properties = read("/default"); - byte[] iv = randomIv(); - return new String(Hex.encode(iv)) + encrypt(jo.toString(), properties.getProperty("Fine-Designer_Login").getBytes(), iv); + return new String(Hex.encode(iv)) + encrypt( + jo.toString(), + DefaultLoginKeys.getInstance().getKey("Fine-Designer_Login").getBytes(), + iv + ); } private static byte[] randomIv() { @@ -110,15 +108,4 @@ public class DesignerLoginUtils { byte[] resultBytes = cipher.doFinal(content.getBytes()); return new String(Hex.encode(resultBytes)); } - - private static Properties read(String fileName) { - fileName = "com/fr/design/config" + fileName; - Properties properties = new Properties(); - try (InputStream inputStream = DefaultKeys.class.getClassLoader().getResourceAsStream(fileName)){ - properties.load(inputStream); - } catch (IOException e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); - } - return properties; - } } From dfb4108c7e8ebf6f765aba5cc3fac0806b70f785 Mon Sep 17 00:00:00 2001 From: "Henry.Wang" Date: Mon, 20 Jun 2022 15:35:35 +0800 Subject: [PATCH 09/14] =?UTF-8?q?KERNEL-11531=20=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=93=BE=E6=8E=A5=E8=B6=8A=E6=9D=83=E6=BC=8F=E6=B4=9E=E8=B0=83?= =?UTF-8?q?=E7=94=A8com.fr.invoke.ClassHelper=E4=B8=AD=E9=81=8D=E5=8E=86?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E5=AF=B9=E8=B1=A1=E5=AD=98=E5=9C=A8=E7=A9=BA?= =?UTF-8?q?=E9=97=B4=E6=97=B6=E9=97=B4=E6=95=88=E7=8E=87=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E5=AE=95=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AuthorityTargetObjectCollector.java | 21 +++++ .../authority/JTemplateAuthorityChecker.java | 80 +++++++------------ 2 files changed, 49 insertions(+), 52 deletions(-) create mode 100644 designer-base/src/main/java/com/fr/design/mainframe/authority/AuthorityTargetObjectCollector.java diff --git a/designer-base/src/main/java/com/fr/design/mainframe/authority/AuthorityTargetObjectCollector.java b/designer-base/src/main/java/com/fr/design/mainframe/authority/AuthorityTargetObjectCollector.java new file mode 100644 index 0000000000..8fb5911db9 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mainframe/authority/AuthorityTargetObjectCollector.java @@ -0,0 +1,21 @@ +package com.fr.design.mainframe.authority; + +import com.fr.base.CloneCollector; + + +import java.util.ArrayList; +import java.util.List; + +public class AuthorityTargetObjectCollector extends CloneCollector { + List targetObject = new ArrayList<>(); + + @Override + public void collect(Object object) { + targetObject.add(object); + } + + public List getTargetObject() { + return targetObject; + } + +} diff --git a/designer-base/src/main/java/com/fr/design/mainframe/authority/JTemplateAuthorityChecker.java b/designer-base/src/main/java/com/fr/design/mainframe/authority/JTemplateAuthorityChecker.java index d76031f654..59257c6c96 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/authority/JTemplateAuthorityChecker.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/authority/JTemplateAuthorityChecker.java @@ -1,24 +1,23 @@ package com.fr.design.mainframe.authority; +import com.fr.base.CloneCollector; import com.fr.design.dialog.FineJOptionPane; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; -import com.fr.design.mod.ModClassFilter; import com.fr.file.ConnectionConfig; import com.fr.file.TableDataConfig; -import com.fr.invoke.ClassHelper; import com.fr.log.FineLoggerFactory; -import com.fr.stable.Filter; import com.fr.workspace.WorkContext; import com.fr.workspace.server.authority.user.UserAuthority; -import java.util.Collection; + import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -77,24 +76,21 @@ public class JTemplateAuthorityChecker { public boolean isAuthority() { long s = System.currentTimeMillis(); - //遍历模板对象,根据checkerMap.keySet()把感兴趣的对象找出来 - Map> targetObjects = ClassHelper.searchObject(jTemplate.getTarget(), checkerMap.keySet(), ClassFilter.getInstance()); - + List targetObjects = getTargetObjects(); //找到对应的checker,对对象进行检查 - for (String name : targetObjects.keySet()) { + for (Object targetObject : targetObjects) { + String name = targetObject.getClass().getName(); ElementAuthorityChecker checker = checkerMap.get(name); - for (Object object : targetObjects.get(name)) { - if (authConnectionNames != null) { - Set noAuthName = checker.getNoAuthConnectionNames(object, authConnectionNames); - if (noAuthName != null) { - authFailConnectionNames.addAll(noAuthName); - } + if (authConnectionNames != null) { + Set noAuthName = checker.getNoAuthConnectionNames(targetObject, authConnectionNames); + if (noAuthName != null) { + authFailConnectionNames.addAll(noAuthName); } - if (authDatasetNames != null) { - Set noAuthName = checker.getNoAuthDatasetNames(object, authDatasetNames); - if (noAuthName != null) { - authFailDatasetNames.addAll(noAuthName); - } + } + if (authDatasetNames != null) { + Set noAuthName = checker.getNoAuthDatasetNames(targetObject, authDatasetNames); + if (noAuthName != null) { + authFailDatasetNames.addAll(noAuthName); } } } @@ -104,6 +100,19 @@ public class JTemplateAuthorityChecker { return authFailConnectionNames.size() == 0 && authFailDatasetNames.size() == 0; } + private List getTargetObjects() { + AuthorityTargetObjectCollector authorityTargetObjectCollector = new AuthorityTargetObjectCollector(); + CloneCollector.setCollector(authorityTargetObjectCollector); + try { + jTemplate.getTarget().clone(); + } catch (Exception ignore) { + + } + List targetObjects = authorityTargetObjectCollector.getTargetObject(); + CloneCollector.clearCollector(); + return targetObjects; + } + public void showAuthorityFailPromptDialog() { StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append(Toolkit.i18nText("Fine-Design-Basic_Save_Failure")); @@ -151,38 +160,5 @@ public class JTemplateAuthorityChecker { return stringBuffer.toString(); } - static class ClassFilter implements Filter { - - private static final Set FILTER_SET = new HashSet<>(); - private static final Set START_WITH_SET = new HashSet<>(); - private static final Filter INSTANCE = new ModClassFilter(); - - public static Filter getInstance() { - return INSTANCE; - } - - static { - FILTER_SET.add("java.awt.image.BufferedImage"); - FILTER_SET.add("sun.awt.AppContext"); - FILTER_SET.add("com.fr.poly.creator.ECBlockCreator"); - FILTER_SET.add("io.netty.channel.nio.SelectedSelectionKeySet"); - FILTER_SET.add("com.fr.form.ui.ElementCaseImage"); - FILTER_SET.add("this$0"); - START_WITH_SET.add("com.fr.design"); - } - - @Override - public boolean accept(String s) { - if (FILTER_SET.contains(s)) { - return true; - } - for (String start : START_WITH_SET) { - if (s.startsWith(start)) { - return true; - } - } - return false; - } - } } From bbc2d0aead6909e52e91788600927f9dd763f07d Mon Sep 17 00:00:00 2001 From: hades Date: Mon, 20 Jun 2022 16:38:49 +0800 Subject: [PATCH 10/14] =?UTF-8?q?REPORT-73802=20=E3=80=90=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=99=A8=E7=8E=AF=E5=A2=83=E7=9B=91=E6=B5=8B=E3=80=91?= =?UTF-8?q?windows=E4=B8=8B=E6=B2=A1=E6=9C=89finedb=E6=9D=83=E9=99=90?= =?UTF-8?q?=EF=BC=8C=E9=A6=96=E6=AC=A1=E5=90=AF=E5=8A=A8=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E8=83=BD=E8=B5=B7=E6=9D=A5=EF=BC=8C=E7=AC=AC=E4=BA=8C?= =?UTF-8?q?=E6=AC=A1=E5=B0=B1=E5=90=AF=E5=8A=A8=E5=A4=B1=E8=B4=A5=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../start/module/optimized/BaseDBActivator4Designer.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/start/module/optimized/BaseDBActivator4Designer.java b/designer-realize/src/main/java/com/fr/start/module/optimized/BaseDBActivator4Designer.java index 4c54926510..41f4233c54 100644 --- a/designer-realize/src/main/java/com/fr/start/module/optimized/BaseDBActivator4Designer.java +++ b/designer-realize/src/main/java/com/fr/start/module/optimized/BaseDBActivator4Designer.java @@ -5,6 +5,8 @@ import com.fr.config.dao.DaoSelectorFactory; import com.fr.event.Event; import com.fr.event.Listener; import com.fr.event.Null; +import com.fr.stable.lifecycle.FineLifecycleFatalError; +import com.fr.start.LifecycleFatalErrorHandler; import com.fr.start.event.LazyStartupEvent; /** @@ -20,7 +22,11 @@ public class BaseDBActivator4Designer extends BaseDBActivator { listenEvent(LazyStartupEvent.INSTANCE, new Listener(Integer.MAX_VALUE) { @Override public void on(Event event, Null param) { - BaseDBActivator4Designer.super.start(); + try { + BaseDBActivator4Designer.super.start(); + } catch (FineLifecycleFatalError error) { + LifecycleFatalErrorHandler.getInstance().handle(error); + } } }); } else { From 3d43b762187584ad75dc642ec460226d57fbf65f Mon Sep 17 00:00:00 2001 From: "Henry.Wang" Date: Tue, 21 Jun 2022 11:51:03 +0800 Subject: [PATCH 11/14] =?UTF-8?q?KERNEL-11531=20=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=B8=8B=E8=AE=BE=E8=AE=A1=EF=BC=8CColoneCollector=E4=B8=AD?= =?UTF-8?q?=E8=A7=A6=E5=8F=91clone()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AuthorityTargetObjectCollector.java | 22 ++++++++++++++++--- .../authority/JTemplateAuthorityChecker.java | 14 ++++++------ 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/authority/AuthorityTargetObjectCollector.java b/designer-base/src/main/java/com/fr/design/mainframe/authority/AuthorityTargetObjectCollector.java index 8fb5911db9..9972c7be37 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/authority/AuthorityTargetObjectCollector.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/authority/AuthorityTargetObjectCollector.java @@ -1,6 +1,11 @@ package com.fr.design.mainframe.authority; import com.fr.base.CloneCollector; +import com.fr.base.Formula; +import com.fr.data.impl.NameDatabaseConnection; +import com.fr.data.impl.NameTableData; +import com.fr.report.cell.cellattr.core.group.DSColumn; +import com.fr.stable.FCloneable; import java.util.ArrayList; @@ -9,13 +14,24 @@ import java.util.List; public class AuthorityTargetObjectCollector extends CloneCollector { List targetObject = new ArrayList<>(); + public AuthorityTargetObjectCollector(FCloneable rootObject) { + super(rootObject); + } + @Override public void collect(Object object) { - targetObject.add(object); + if (object instanceof DSColumn || object instanceof Formula + || object instanceof NameDatabaseConnection || object instanceof NameTableData) { + targetObject.add(object); + } } - public List getTargetObject() { + public List collectTargetObject() { + CloneCollector.setCollector(this); + this.targetObject = new ArrayList<>(); + this.collect(); + CloneCollector.clearCollector(); return targetObject; } - + } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/authority/JTemplateAuthorityChecker.java b/designer-base/src/main/java/com/fr/design/mainframe/authority/JTemplateAuthorityChecker.java index 59257c6c96..b33f0665c9 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/authority/JTemplateAuthorityChecker.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/authority/JTemplateAuthorityChecker.java @@ -15,6 +15,7 @@ import com.fr.workspace.WorkContext; import com.fr.workspace.server.authority.user.UserAuthority; +import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -101,15 +102,14 @@ public class JTemplateAuthorityChecker { } private List getTargetObjects() { - AuthorityTargetObjectCollector authorityTargetObjectCollector = new AuthorityTargetObjectCollector(); - CloneCollector.setCollector(authorityTargetObjectCollector); + List targetObjects = new ArrayList<>(); try { - jTemplate.getTarget().clone(); - } catch (Exception ignore) { - + AuthorityTargetObjectCollector authorityTargetObjectCollector + = new AuthorityTargetObjectCollector(jTemplate.getTarget()); + targetObjects = authorityTargetObjectCollector.collectTargetObject(); + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e, e.getMessage()); } - List targetObjects = authorityTargetObjectCollector.getTargetObject(); - CloneCollector.clearCollector(); return targetObjects; } From b93c4902292765fa9ce9e4ecfb0980919f1c5230 Mon Sep 17 00:00:00 2001 From: Starryi Date: Tue, 21 Jun 2022 12:00:20 +0800 Subject: [PATCH 12/14] =?UTF-8?q?REPORT-73996-=E6=96=B0=E5=BB=BAfrm?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E7=A9=BA=E7=99=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 1. 重复创建新Form、WorkBook对象,导致显示和保存用的对象是不同的 2. 代码合并问题导致JTemplate中checkAndResetTheme未能删除 3. 修复undo没有同步主题色的问题 【改动思路】 同上 --- .../src/main/java/com/fr/design/mainframe/JTemplate.java | 6 +----- .../main/java/com/fr/design/mainframe/JTemplateFactory.java | 6 +----- .../src/main/java/com/fr/design/mainframe/JForm.java | 1 + .../src/main/java/com/fr/design/mainframe/JWorkBook.java | 1 + 4 files changed, 4 insertions(+), 10 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java b/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java index 7d1461bf37..a76d92913c 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java @@ -201,7 +201,7 @@ public abstract class JTemplate> } else if (!DesignModeContext.isVcsMode() && !DesignModeContext.isAuthorityEditing() && !DesignModeContext.isDuchampMode()) { DesignModeContext.switchTo(com.fr.design.base.mode.DesignerMode.NORMAL); } - this.template = t; + this.template = getTarget(); this.previewType = parserPreviewProvider(t.getPreviewType()); this.editingFILE = file; this.setLayout(FRGUIPaneFactory.createBorderLayout()); @@ -213,10 +213,6 @@ public abstract class JTemplate> } addCenterPane(); isNewCreateTpl = isNewFile; - if (isNewCreateTpl) { - // REPORT-58486: 必须在初始的UndoState创建前设置主题,使得初始的UndoState就包含了主题效果 - setUpTheme4NewTemplate(); - } this.undoState = createUndoState(); initAndStartPlugin(); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/JTemplateFactory.java b/designer-base/src/main/java/com/fr/design/mainframe/JTemplateFactory.java index 310a051a4e..15895c06a8 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/JTemplateFactory.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/JTemplateFactory.java @@ -39,11 +39,7 @@ public final class JTemplateFactory { String[] defaultAppExtensions = app.defaultExtensions(); for (String defaultAppExtension : defaultAppExtensions) { if (defaultAppExtension.equalsIgnoreCase(fileExtension)) { - JTemplate jt = app.openTemplate(file); - if (jt != null) { - jt.checkAndResetTheme(); - return jt; - } + return app.openTemplate(file); } } } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/JForm.java b/designer-form/src/main/java/com/fr/design/mainframe/JForm.java index 0f5b903078..831d245d1a 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/JForm.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/JForm.java @@ -664,6 +664,7 @@ public class JForm extends JTemplate implements BaseJForm { try { WorkBook undoWorkBook = (WorkBook) u.getWorkBook().clone(); undoWorkBook.checkAndResetTheme(); + undoWorkBook = (WorkBook) FineColorSynchronizer.flush(undoWorkBook, undoWorkBook.getTemplateTheme()); this.setTarget(undoWorkBook); if (!DesignerMode.isAuthorityEditing()) { if (u.getAuthorityType() != BaseUndoState.NORMAL_STATE) { From 8a19532679cba8f3a4e64d4939018ae64cbf366a Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Tue, 21 Jun 2022 16:13:09 +0800 Subject: [PATCH 13/14] =?UTF-8?q?REPORT-73970=20=E6=89=8B=E5=8A=A8?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=82=E6=95=B0=E9=9D=A2=E6=9D=BF=E5=AE=BD?= =?UTF-8?q?=E5=BA=A6=E6=9C=AA=E7=94=9F=E6=95=88=201=E3=80=81REPORT-66771?= =?UTF-8?q?=E6=94=B9=E5=8A=A8=E5=AF=BC=E8=87=B4=EF=BC=8C=E5=9C=A8dolayout?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=E4=BF=AE=E6=94=B9=E4=BA=86=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=AE=BD=E5=BA=A6=202=E3=80=81=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=EF=BC=8C=E5=9C=A8form=E5=AE=BD=E5=BA=A6=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E4=B8=AD=E4=BF=AE=E6=94=B9=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E5=AE=BD=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/designer/creator/XWParameterLayout.java | 8 +++----- .../src/main/java/com/fr/design/mainframe/FormArea.java | 7 +++++++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XWParameterLayout.java b/designer-form/src/main/java/com/fr/design/designer/creator/XWParameterLayout.java index aacdf6d04b..d925df070f 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XWParameterLayout.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XWParameterLayout.java @@ -272,13 +272,11 @@ public class XWParameterLayout extends XWAbsoluteLayout { } /** - * 修改form布局的宽度时,需要同时修改表单参数界面的布局的宽度。 + * 修改参数面板宽度 * */ - @Override - public void doLayout() { - layout(); + public void setParaWidth(int width) { if (data != null && data instanceof WParameterLayout) { - ((WParameterLayout) data).setDesignWidth(getWidth()); + ((WParameterLayout) data).setDesignWidth(width); } } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormArea.java b/designer-form/src/main/java/com/fr/design/mainframe/FormArea.java index 759c0b6f75..e515dd1f35 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormArea.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormArea.java @@ -12,6 +12,7 @@ import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButtonUI; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.imenu.UIPopupMenu; +import com.fr.design.designer.creator.XWParameterLayout; import com.fr.design.gui.itextfield.UINumberField; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; @@ -402,6 +403,12 @@ public class FormArea extends JComponent implements ScrollRulerComponent { } doReCalculateRoot(width, rec.height, layout); } + + // REPORT-66771, 调整参数面板宽度 + XLayoutContainer para = FormArea.this.designer.getParaComponent(); + if (para != null && para instanceof XWParameterLayout) { + ((XWParameterLayout) para).setParaWidth(width); + } } private void reCalculateHeight(int height) { From 6cc530b728b62c063d3e6375f2311efc52536e55 Mon Sep 17 00:00:00 2001 From: Harrison Date: Tue, 21 Jun 2022 17:20:31 +0800 Subject: [PATCH 14/14] =?UTF-8?q?REPORT-74100=E3=80=90=E5=86=92=E7=83=9F?= =?UTF-8?q?=E3=80=91=E8=BF=9C=E7=A8=8BBI=E7=8E=AF=E5=A2=83=EF=BC=8C13?= =?UTF-8?q?=E4=B8=AAjar=E5=85=A8=E9=83=A8=E6=8F=90=E7=A4=BA=E7=BC=BA?= =?UTF-8?q?=E5=A4=B1=20BI=20=E9=9B=86=E6=88=90=E7=9A=84=20JAR=20=E6=88=96?= =?UTF-8?q?=E8=80=85=E4=B9=8B=E5=89=8D=E7=9A=84=E7=8E=AF=E5=A2=83=EF=BC=8C?= =?UTF-8?q?=20=E8=BF=99=E9=87=8C=E9=9C=80=E8=A6=81=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6=E9=9C=80=E8=A6=81=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E6=A3=80=E6=9F=A5=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/env/detect/impl/JarLackDetector.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/designer-base/src/main/java/com/fr/env/detect/impl/JarLackDetector.java b/designer-base/src/main/java/com/fr/env/detect/impl/JarLackDetector.java index 322c15d501..8e28116e51 100644 --- a/designer-base/src/main/java/com/fr/env/detect/impl/JarLackDetector.java +++ b/designer-base/src/main/java/com/fr/env/detect/impl/JarLackDetector.java @@ -54,6 +54,11 @@ public class JarLackDetector extends AbstractExceptionDetector { // 本地情况 List localInfos = BuildInfoManager.getInstance().getInfos(); + // 说明远程环境并不存在对应的 info.json, 直接忽略 + if (Collections.isEmpty(remoteInfos)) { + return DetectorResult.normal(type()); + } + Set remoteSet = remoteInfos.stream() .filter(this::isExistInfo) .map(BuildInfo::getJar)