diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/DatabaseConnectionPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/DatabaseConnectionPane.java index 18f4d9440..f3a97ffb1 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/DatabaseConnectionPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/DatabaseConnectionPane.java @@ -136,8 +136,8 @@ public abstract class DatabaseConnectionPane contentChangeItemList, List contentChangeList) { diff --git a/designer-base/src/main/java/com/fr/design/mod/impl/change/DSColumnContentChange.java b/designer-base/src/main/java/com/fr/design/mod/impl/change/DSColumnContentChange.java index be6e6e4ec..4ca627637 100644 --- a/designer-base/src/main/java/com/fr/design/mod/impl/change/DSColumnContentChange.java +++ b/designer-base/src/main/java/com/fr/design/mod/impl/change/DSColumnContentChange.java @@ -3,7 +3,8 @@ package com.fr.design.mod.impl.change; import com.fr.design.mod.ContentChange; import com.fr.design.mod.ContentReplacer; import com.fr.design.mod.bean.ChangeItem; -import com.fr.design.mod.impl.repalce.DSColumnContentReplacer; +import com.fr.design.mod.impl.repalce.DSColumn4TableDataNameContentReplacer; +import com.fr.design.mod.impl.repalce.DSColumn4WidgetNameContentReplacer; import com.fr.report.cell.cellattr.core.group.DSColumn; import java.util.HashMap; import java.util.Map; @@ -19,7 +20,8 @@ public class DSColumnContentChange implements ContentChange { public DSColumnContentChange() { map = new HashMap<>(); - map.put(ChangeItem.TABLE_DATA_NAME, new DSColumnContentReplacer()); + map.put(ChangeItem.TABLE_DATA_NAME, new DSColumn4TableDataNameContentReplacer()); + map.put(ChangeItem.WIDGET_NAME, new DSColumn4WidgetNameContentReplacer()); } @Override diff --git a/designer-base/src/main/java/com/fr/design/mod/impl/change/FormHyperlinkContentChange.java b/designer-base/src/main/java/com/fr/design/mod/impl/change/FormHyperlinkContentChange.java new file mode 100644 index 000000000..1ad89e1ad --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mod/impl/change/FormHyperlinkContentChange.java @@ -0,0 +1,34 @@ +package com.fr.design.mod.impl.change; + +import com.fr.design.mod.ContentChange; +import com.fr.design.mod.ContentReplacer; +import com.fr.design.mod.bean.ChangeItem; +import com.fr.design.mod.impl.repalce.FormHyperlinkContentReplacer; +import com.fr.form.main.FormHyperlink; +import java.util.HashMap; +import java.util.Map; + +/** + * @author hades + * @version 10.0 + * Created by hades on 2021/6/2 + */ +public class FormHyperlinkContentChange implements ContentChange { + + private final Map> map; + + public FormHyperlinkContentChange() { + map = new HashMap<>(); + map.put(ChangeItem.WIDGET_NAME, new FormHyperlinkContentReplacer()); + } + + @Override + public String type() { + return FormHyperlink.class.getName(); + } + + @Override + public Map> changeInfo() { + return map; + } +} diff --git a/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/CardSwitchButtonContentChange.java b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/CardSwitchButtonContentChange.java new file mode 100644 index 000000000..0f785892d --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/CardSwitchButtonContentChange.java @@ -0,0 +1,36 @@ +package com.fr.design.mod.impl.change.formula; + +import com.fr.design.mod.ContentChange; +import com.fr.design.mod.ContentReplacer; +import com.fr.design.mod.bean.ChangeItem; +import com.fr.design.mod.impl.repalce.FormulaReplacer; +import com.fr.form.ui.CardSwitchButton; +import java.util.HashMap; +import java.util.Map; + +/** + * @author hades + * @version 10.0 + * Created by hades on 2021/6/3 + */ +public class CardSwitchButtonContentChange implements ContentChange { + + + private final Map> map; + + public CardSwitchButtonContentChange() { + map = new HashMap<>(); + map.put(ChangeItem.WIDGET_NAME, FormulaReplacer.CardSwitchButton4WidgetNameContentReplacer); + map.put(ChangeItem.TABLE_DATA_NAME, FormulaReplacer.CardSwitchButton4TableDataNameContentReplacer); + } + + @Override + public String type() { + return CardSwitchButton.class.getName(); + } + + @Override + public Map> changeInfo() { + return map; + } +} diff --git a/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/CellExpandAttrContentChange.java b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/CellExpandAttrContentChange.java new file mode 100644 index 000000000..4204108c6 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/CellExpandAttrContentChange.java @@ -0,0 +1,37 @@ +package com.fr.design.mod.impl.change.formula; + +import com.fr.design.mod.ContentChange; +import com.fr.design.mod.ContentReplacer; +import com.fr.design.mod.bean.ChangeItem; +import com.fr.design.mod.impl.repalce.FormulaReplacer; +import com.fr.report.cell.cellattr.CellExpandAttr; +import java.util.HashMap; +import java.util.Map; + +/** + * 扩展后排序公式 + * + * @author hades + * @version 10.0 + * Created by hades on 2021/6/2 + */ +public class CellExpandAttrContentChange implements ContentChange { + + private final Map> map; + + public CellExpandAttrContentChange() { + map = new HashMap<>(); + map.put(ChangeItem.WIDGET_NAME, FormulaReplacer.CellExpandAttr4WidgetNameContentReplacer); + map.put(ChangeItem.TABLE_DATA_NAME, FormulaReplacer.CellExpandAttr4TableDataNameContentReplacer); + } + + @Override + public String type() { + return CellExpandAttr.class.getName(); + } + + @Override + public Map> changeInfo() { + return map; + } +} diff --git a/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/CellGUIAttrContentChange.java b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/CellGUIAttrContentChange.java new file mode 100644 index 000000000..c969a1e05 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/CellGUIAttrContentChange.java @@ -0,0 +1,35 @@ +package com.fr.design.mod.impl.change.formula; + +import com.fr.design.mod.ContentChange; +import com.fr.design.mod.ContentReplacer; +import com.fr.design.mod.bean.ChangeItem; +import com.fr.design.mod.impl.repalce.FormulaReplacer; +import com.fr.report.cell.cellattr.CellGUIAttr; +import java.util.HashMap; +import java.util.Map; + +/** + * @author hades + * @version 10.0 + * Created by hades on 2021/6/3 + */ +public class CellGUIAttrContentChange implements ContentChange { + + private Map> map; + + public CellGUIAttrContentChange() { + map = new HashMap<>(); + map.put(ChangeItem.WIDGET_NAME, FormulaReplacer.CellGUIAttr4WidgetNameContentReplacer); + map.put(ChangeItem.TABLE_DATA_NAME, FormulaReplacer.CellGUIAttr4TableDataNameContentReplacer); + } + + @Override + public String type() { + return CellGUIAttr.class.getName(); + } + + @Override + public Map> changeInfo() { + return map; + } +} diff --git a/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FormulaConditionContentChange.java b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FormulaConditionContentChange.java new file mode 100644 index 000000000..e67d5dfbd --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FormulaConditionContentChange.java @@ -0,0 +1,37 @@ +package com.fr.design.mod.impl.change.formula; + +import com.fr.data.condition.FormulaCondition; +import com.fr.design.mod.ContentChange; +import com.fr.design.mod.ContentReplacer; +import com.fr.design.mod.bean.ChangeItem; +import com.fr.design.mod.impl.repalce.FormulaReplacer; +import java.util.HashMap; +import java.util.Map; + +/** + * 公式条件 + * + * @author hades + * @version 10.0 + * Created by hades on 2021/6/2 + */ +public class FormulaConditionContentChange implements ContentChange { + + private final Map> map; + + public FormulaConditionContentChange() { + map = new HashMap<>(); + map.put(ChangeItem.WIDGET_NAME, FormulaReplacer.FormulaCondition4WidgetNameContentReplacer); + map.put(ChangeItem.TABLE_DATA_NAME, FormulaReplacer.FormulaCondition4TableDataNameContentReplacer); + } + + @Override + public String type() { + return FormulaCondition.class.getName(); + } + + @Override + public Map> changeInfo() { + return map; + } +} diff --git a/designer-base/src/main/java/com/fr/design/mod/impl/change/FormulaContentChange.java b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FormulaContentChange.java similarity index 65% rename from designer-base/src/main/java/com/fr/design/mod/impl/change/FormulaContentChange.java rename to designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FormulaContentChange.java index de69b49d5..d6edff530 100644 --- a/designer-base/src/main/java/com/fr/design/mod/impl/change/FormulaContentChange.java +++ b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FormulaContentChange.java @@ -1,11 +1,10 @@ -package com.fr.design.mod.impl.change; +package com.fr.design.mod.impl.change.formula; import com.fr.base.Formula; import com.fr.design.mod.ContentChange; import com.fr.design.mod.ContentReplacer; import com.fr.design.mod.bean.ChangeItem; -import com.fr.design.mod.impl.repalce.Formula4TableDataNameContentReplacer; -import com.fr.design.mod.impl.repalce.Formula4WidgetNameContentReplacer; +import com.fr.design.mod.impl.repalce.FormulaReplacer; import java.util.HashMap; import java.util.Map; @@ -20,8 +19,8 @@ public class FormulaContentChange implements ContentChange { public FormulaContentChange() { map = new HashMap<>(); - map.put(ChangeItem.WIDGET_NAME, new Formula4WidgetNameContentReplacer()); - map.put(ChangeItem.TABLE_DATA_NAME, new Formula4TableDataNameContentReplacer()); + map.put(ChangeItem.WIDGET_NAME, FormulaReplacer.Formula4WidgetNameContentReplacer); + map.put(ChangeItem.TABLE_DATA_NAME, FormulaReplacer.Formula4TableDataNameContentReplacer); } @Override diff --git a/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FormulaDictionaryContentChange.java b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FormulaDictionaryContentChange.java new file mode 100644 index 000000000..d0cd674ef --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FormulaDictionaryContentChange.java @@ -0,0 +1,37 @@ +package com.fr.design.mod.impl.change.formula; + +import com.fr.data.impl.FormulaDictionary; +import com.fr.design.mod.ContentChange; +import com.fr.design.mod.ContentReplacer; +import com.fr.design.mod.bean.ChangeItem; +import com.fr.design.mod.impl.repalce.FormulaReplacer; +import java.util.HashMap; +import java.util.Map; + +/** + * 数据字典——公式 + * + * @author hades + * @version 10.0 + * Created by hades on 2021/6/2 + */ +public class FormulaDictionaryContentChange implements ContentChange { + + private final Map> map; + + public FormulaDictionaryContentChange() { + map = new HashMap<>(); + map.put(ChangeItem.WIDGET_NAME, FormulaReplacer.FormulaDictionary4WidgetNameContentReplacer); + map.put(ChangeItem.TABLE_DATA_NAME, FormulaReplacer.FormulaDictionary4TableDataNameContentReplacer); + } + + @Override + public String type() { + return FormulaDictionary.class.getName(); + } + + @Override + public Map> changeInfo() { + return map; + } +} diff --git a/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FormulaHFElementContentChange.java b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FormulaHFElementContentChange.java new file mode 100644 index 000000000..53ec9c34a --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FormulaHFElementContentChange.java @@ -0,0 +1,38 @@ +package com.fr.design.mod.impl.change.formula; + +import com.fr.base.headerfooter.FormulaHFElement; +import com.fr.design.mod.ContentChange; +import com.fr.design.mod.ContentReplacer; +import com.fr.design.mod.bean.ChangeItem; +import com.fr.design.mod.impl.repalce.FormulaReplacer; +import java.util.HashMap; +import java.util.Map; + +/** + * 页面/页脚——公式 + * + * @author hades + * @version 10.0 + * Created by hades on 2021/6/2 + */ + +public class FormulaHFElementContentChange implements ContentChange { + + private final Map> map; + + public FormulaHFElementContentChange() { + map = new HashMap<>(); + map.put(ChangeItem.WIDGET_NAME, FormulaReplacer.FormulaHFElement4WidgetNameContentReplacer); + map.put(ChangeItem.TABLE_DATA_NAME, FormulaReplacer.FormulaHFElement4TableDataNameContentReplacer); + } + + @Override + public String type() { + return FormulaHFElement.class.getName(); + } + + @Override + public Map> changeInfo() { + return map; + } +} diff --git a/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FormulaPresentContentChange.java b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FormulaPresentContentChange.java new file mode 100644 index 000000000..eaca94c7a --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FormulaPresentContentChange.java @@ -0,0 +1,38 @@ +package com.fr.design.mod.impl.change.formula; + +import com.fr.base.present.FormulaPresent; +import com.fr.design.mod.ContentChange; +import com.fr.design.mod.ContentReplacer; +import com.fr.design.mod.bean.ChangeItem; +import com.fr.design.mod.impl.repalce.FormulaReplacer; +import java.util.HashMap; +import java.util.Map; + +/** + * 公式形态 + * + * @author hades + * @version 10.0 + * Created by hades on 2021/6/2 + */ + +public class FormulaPresentContentChange implements ContentChange { + + private final Map> map; + + public FormulaPresentContentChange() { + map = new HashMap<>(); + map.put(ChangeItem.WIDGET_NAME, FormulaReplacer.FormulaPresent4WidgetNameContentReplacer); + map.put(ChangeItem.TABLE_DATA_NAME, FormulaReplacer.FormulaPresent4TableDataNameContentReplacer); + } + + @Override + public String type() { + return FormulaPresent.class.getName(); + } + + @Override + public Map> changeInfo() { + return map; + } +} diff --git a/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FunctionGrouperContentChange.java b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FunctionGrouperContentChange.java new file mode 100644 index 000000000..33947c832 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FunctionGrouperContentChange.java @@ -0,0 +1,35 @@ +package com.fr.design.mod.impl.change.formula; + +import com.fr.design.mod.ContentChange; +import com.fr.design.mod.ContentReplacer; +import com.fr.design.mod.bean.ChangeItem; +import com.fr.design.mod.impl.repalce.FormulaReplacer; +import com.fr.report.cell.cellattr.core.group.FunctionGrouper; +import java.util.HashMap; +import java.util.Map; + +/** + * @author hades + * @version 10.0 + * Created by hades on 2021/6/3 + */ +public class FunctionGrouperContentChange implements ContentChange { + + private final Map> map; + + public FunctionGrouperContentChange() { + map = new HashMap<>(); + map.put(ChangeItem.WIDGET_NAME, FormulaReplacer.FunctionGrouper4WidgetNameContentReplacer); + map.put(ChangeItem.TABLE_DATA_NAME, FormulaReplacer.FunctionGrouper4TableDataNameContentReplacer); + } + + @Override + public String type() { + return FunctionGrouper.class.getName(); + } + + @Override + public Map> changeInfo() { + return map; + } +} diff --git a/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/RichCharContentChange.java b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/RichCharContentChange.java new file mode 100644 index 000000000..45c06a342 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/RichCharContentChange.java @@ -0,0 +1,37 @@ +package com.fr.design.mod.impl.change.formula; + +import com.fr.design.mod.ContentChange; +import com.fr.design.mod.ContentReplacer; +import com.fr.design.mod.bean.ChangeItem; +import com.fr.design.mod.impl.repalce.FormulaReplacer; +import com.fr.report.cell.cellattr.core.RichChar; +import java.util.HashMap; +import java.util.Map; + +/** + * 富文本 + * + * @author hades + * @version 10.0 + * Created by hades on 2021/6/2 + */ +public class RichCharContentChange implements ContentChange { + + private final Map> map; + + public RichCharContentChange() { + map = new HashMap<>(); + map.put(ChangeItem.WIDGET_NAME, FormulaReplacer.RichChar4WidgetNameContentReplacer); + map.put(ChangeItem.TABLE_DATA_NAME, FormulaReplacer.RichChar4TableDataNameContentReplacer); + } + + @Override + public String type() { + return RichChar.class.getName(); + } + + @Override + public Map> changeInfo() { + return map; + } +} diff --git a/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/SelectCountContentChange.java b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/SelectCountContentChange.java new file mode 100644 index 000000000..705bfc51b --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/SelectCountContentChange.java @@ -0,0 +1,35 @@ +package com.fr.design.mod.impl.change.formula; + +import com.fr.design.mod.ContentChange; +import com.fr.design.mod.ContentReplacer; +import com.fr.design.mod.bean.ChangeItem; +import com.fr.design.mod.impl.repalce.FormulaReplacer; +import com.fr.report.cell.cellattr.core.group.SelectCount; +import java.util.HashMap; +import java.util.Map; + +/** + * @author hades + * @version 10.0 + * Created by hades on 2021/6/3 + */ +public class SelectCountContentChange implements ContentChange { + + private final Map> map; + + public SelectCountContentChange() { + map = new HashMap<>(); + map.put(ChangeItem.WIDGET_NAME, FormulaReplacer.SelectCount4WidgetNameContentReplacer); + map.put(ChangeItem.TABLE_DATA_NAME, FormulaReplacer.SelectCount4TableDataNameContentReplacer); + } + + @Override + public String type() { + return SelectCount.class.getName(); + } + + @Override + public Map> changeInfo() { + return map; + } +} diff --git a/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/WidgetTitleContentChange.java b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/WidgetTitleContentChange.java new file mode 100644 index 000000000..f4d8ff764 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mod/impl/change/formula/WidgetTitleContentChange.java @@ -0,0 +1,35 @@ +package com.fr.design.mod.impl.change.formula; + +import com.fr.design.mod.ContentChange; +import com.fr.design.mod.ContentReplacer; +import com.fr.design.mod.bean.ChangeItem; +import com.fr.design.mod.impl.repalce.FormulaReplacer; +import com.fr.form.ui.WidgetTitle; +import java.util.HashMap; +import java.util.Map; + +/** + * @author hades + * @version 10.0 + * Created by hades on 2021/6/3 + */ +public class WidgetTitleContentChange implements ContentChange { + + private final Map> map; + + public WidgetTitleContentChange() { + map = new HashMap<>(); + map.put(ChangeItem.WIDGET_NAME, FormulaReplacer.WidgetTitle4WidgetNameContentReplacer); + map.put(ChangeItem.TABLE_DATA_NAME, FormulaReplacer.WidgetTitle4TableDataNameContentReplacer); + } + + @Override + public String type() { + return WidgetTitle.class.getName(); + } + + @Override + public Map> changeInfo() { + return map; + } +} diff --git a/designer-base/src/main/java/com/fr/design/mod/impl/repalce/DSColumnContentReplacer.java b/designer-base/src/main/java/com/fr/design/mod/impl/repalce/DSColumn4TableDataNameContentReplacer.java similarity index 55% rename from designer-base/src/main/java/com/fr/design/mod/impl/repalce/DSColumnContentReplacer.java rename to designer-base/src/main/java/com/fr/design/mod/impl/repalce/DSColumn4TableDataNameContentReplacer.java index a1c131f6b..548e2f4ee 100644 --- a/designer-base/src/main/java/com/fr/design/mod/impl/repalce/DSColumnContentReplacer.java +++ b/designer-base/src/main/java/com/fr/design/mod/impl/repalce/DSColumn4TableDataNameContentReplacer.java @@ -1,5 +1,6 @@ package com.fr.design.mod.impl.repalce; +import com.fr.design.mod.ContentReplaceUtil; import com.fr.design.mod.ContentReplacer; import com.fr.general.ComparatorUtils; import com.fr.report.cell.cellattr.core.group.DSColumn; @@ -9,12 +10,14 @@ import com.fr.report.cell.cellattr.core.group.DSColumn; * @version 10.0 * Created by hades on 2021/6/2 */ -public class DSColumnContentReplacer implements ContentReplacer { +public class DSColumn4TableDataNameContentReplacer implements ContentReplacer { @Override public void replace(DSColumn dsColumn, String oldName, String newName) { if (ComparatorUtils.equals(dsColumn.getDSName(), oldName)) { dsColumn.setDSName(newName); } + dsColumn.setResult(ContentReplaceUtil.replacePureFormula4TableDataName(dsColumn.getResult(), oldName, newName)); + dsColumn.setSortFormula(ContentReplaceUtil.replacePureFormula4TableDataName(dsColumn.getSortFormula(), oldName, newName)); } } diff --git a/designer-base/src/main/java/com/fr/design/mod/impl/repalce/DSColumn4WidgetNameContentReplacer.java b/designer-base/src/main/java/com/fr/design/mod/impl/repalce/DSColumn4WidgetNameContentReplacer.java new file mode 100644 index 000000000..ec1418705 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mod/impl/repalce/DSColumn4WidgetNameContentReplacer.java @@ -0,0 +1,19 @@ +package com.fr.design.mod.impl.repalce; + +import com.fr.design.mod.ContentReplaceUtil; +import com.fr.design.mod.ContentReplacer; +import com.fr.report.cell.cellattr.core.group.DSColumn; + +/** + * @author hades + * @version 10.0 + * Created by hades on 2021/6/3 + */ +public class DSColumn4WidgetNameContentReplacer implements ContentReplacer { + + @Override + public void replace(DSColumn dsColumn, String oldName, String newName) { + dsColumn.setResult(ContentReplaceUtil.replacePureFormula4WidgetName(dsColumn.getResult(), oldName, newName)); + dsColumn.setSortFormula(ContentReplaceUtil.replacePureFormula4WidgetName(dsColumn.getSortFormula(), oldName, newName)); + } +} diff --git a/designer-base/src/main/java/com/fr/design/mod/impl/repalce/FormHyperlinkContentReplacer.java b/designer-base/src/main/java/com/fr/design/mod/impl/repalce/FormHyperlinkContentReplacer.java new file mode 100644 index 000000000..9da4ee047 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mod/impl/repalce/FormHyperlinkContentReplacer.java @@ -0,0 +1,20 @@ +package com.fr.design.mod.impl.repalce; + +import com.fr.design.mod.ContentReplacer; +import com.fr.form.main.FormHyperlink; +import com.fr.general.ComparatorUtils; + +/** + * @author hades + * @version 10.0 + * Created by hades on 2021/6/2 + */ +public class FormHyperlinkContentReplacer implements ContentReplacer { + + @Override + public void replace(FormHyperlink formHyperlink, String oldName, String newName) { + if (ComparatorUtils.equals(formHyperlink.getRelateEditorName(), oldName)) { + formHyperlink.setRelateEditorName(newName); + } + } +} diff --git a/designer-base/src/main/java/com/fr/design/mod/impl/repalce/Formula4TableDataNameContentReplacer.java b/designer-base/src/main/java/com/fr/design/mod/impl/repalce/Formula4TableDataNameContentReplacer.java deleted file mode 100644 index 8f4dafa2a..000000000 --- a/designer-base/src/main/java/com/fr/design/mod/impl/repalce/Formula4TableDataNameContentReplacer.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.fr.design.mod.impl.repalce; - -import com.fr.base.Formula; -import com.fr.design.mod.ContentReplaceUtil; -import com.fr.design.mod.ContentReplacer; -import com.fr.parser.FRFormulaTransformer; - -/** - * @author hades - * @version 10.0 - * Created by hades on 2021/5/28 - */ -public class Formula4TableDataNameContentReplacer implements ContentReplacer { - - @Override - public void replace(Formula formula, String oldName, String newName) { - FRFormulaTransformer frFormulaTransformer = new FRFormulaTransformer(); - frFormulaTransformer.addRenamedDataset(oldName, newName); - formula.setContent(ContentReplaceUtil.EQ_STRING + frFormulaTransformer.transform(formula.getPureContent())); - } - -} diff --git a/designer-base/src/main/java/com/fr/design/mod/impl/repalce/Formula4WidgetNameContentReplacer.java b/designer-base/src/main/java/com/fr/design/mod/impl/repalce/Formula4WidgetNameContentReplacer.java deleted file mode 100644 index 0e0e2e05f..000000000 --- a/designer-base/src/main/java/com/fr/design/mod/impl/repalce/Formula4WidgetNameContentReplacer.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.fr.design.mod.impl.repalce; - -import com.fr.base.Formula; -import com.fr.design.mod.ContentReplaceUtil; -import com.fr.design.mod.ContentReplacer; -import com.fr.parser.FRFormulaTransformer; - -/** - * @author hades - * @version 10.0 - * Created by hades on 2021/5/28 - */ -public class Formula4WidgetNameContentReplacer implements ContentReplacer { - - @Override - public void replace(Formula formula, String oldName, String newName) { - FRFormulaTransformer frFormulaTransformer = new FRFormulaTransformer(); - frFormulaTransformer.addRenamedWidget(oldName, newName); - formula.setContent(ContentReplaceUtil.EQ_STRING + frFormulaTransformer.transform(formula.getPureContent())); - } -} diff --git a/designer-base/src/main/java/com/fr/design/mod/impl/repalce/FormulaReplacer.java b/designer-base/src/main/java/com/fr/design/mod/impl/repalce/FormulaReplacer.java new file mode 100644 index 000000000..7ed57b284 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mod/impl/repalce/FormulaReplacer.java @@ -0,0 +1,247 @@ +package com.fr.design.mod.impl.repalce; + +import com.fr.base.Formula; +import com.fr.base.headerfooter.FormulaHFElement; +import com.fr.base.present.FormulaPresent; +import com.fr.data.condition.FormulaCondition; +import com.fr.data.impl.FormulaDictionary; +import com.fr.design.mod.ContentReplaceUtil; +import com.fr.design.mod.ContentReplacer; +import com.fr.form.ui.CardSwitchButton; +import com.fr.form.ui.WidgetTitle; +import com.fr.report.cell.cellattr.CellExpandAttr; +import com.fr.report.cell.cellattr.CellGUIAttr; +import com.fr.report.cell.cellattr.core.RichChar; +import com.fr.report.cell.cellattr.core.group.FunctionGrouper; +import com.fr.report.cell.cellattr.core.group.SelectCount; + +/** + * 持有公式内容对象汇总 + * + * @author hades + * @version 10.0 + * Created by hades on 2021/6/2 + */ +public class FormulaReplacer { + + /** + * 扩展后排序公式 + */ + public static final ContentReplacer CellExpandAttr4TableDataNameContentReplacer = new ContentReplacer() { + @Override + public void replace(CellExpandAttr cellExpandAttr, String oldName, String newName) { + cellExpandAttr.setSortFormula(ContentReplaceUtil.replaceFormulaContent4TableDataName(cellExpandAttr.getSortFormula(), oldName, newName)); + } + }; + + public static final ContentReplacer CellExpandAttr4WidgetNameContentReplacer = new ContentReplacer() { + @Override + public void replace(CellExpandAttr cellExpandAttr, String oldName, String newName) { + cellExpandAttr.setSortFormula(ContentReplaceUtil.replaceFormulaContent4WidgetName(cellExpandAttr.getSortFormula(), oldName, newName)); + } + }; + + /** + * 典型单元格公式 + */ + public static final ContentReplacer Formula4TableDataNameContentReplacer = new ContentReplacer() { + @Override + public void replace(Formula formula, String oldName, String newName) { + formula.setContent(ContentReplaceUtil.replaceFormulaContent4TableDataName(formula.getPureContent(), oldName, newName)); + } + }; + + + public static final ContentReplacer Formula4WidgetNameContentReplacer = new ContentReplacer() { + @Override + public void replace(Formula formula, String oldName, String newName) { + formula.setContent(ContentReplaceUtil.replaceFormulaContent4WidgetName(formula.getPureContent(), oldName, newName)); + } + }; + + /** + * 公式条件 + */ + public static final ContentReplacer FormulaCondition4TableDataNameContentReplacer = new ContentReplacer() { + @Override + public void replace(FormulaCondition formulaCondition, String oldName, String newName) { + formulaCondition.setFormula(ContentReplaceUtil.replaceFormulaContent4TableDataName(formulaCondition.getFormula(), oldName, newName)); + } + }; + + public static final ContentReplacer FormulaCondition4WidgetNameContentReplacer = new ContentReplacer() { + @Override + public void replace(FormulaCondition formulaCondition, String oldName, String newName) { + formulaCondition.setFormula(ContentReplaceUtil.replaceFormulaContent4WidgetName(formulaCondition.getFormula(), oldName, newName)); + } + }; + + /** + * 数据字典——公式 + */ + + public static final ContentReplacer FormulaDictionary4TableDataNameContentReplacer = new ContentReplacer() { + @Override + public void replace(FormulaDictionary formulaDictionary, String oldName, String newName) { + formulaDictionary.setExcuteFormula(ContentReplaceUtil.replaceFormulaContent4TableDataName(formulaDictionary.getExcuteFormula(), oldName, newName)); + formulaDictionary.setProduceFormula(ContentReplaceUtil.replaceFormulaContent4TableDataName(formulaDictionary.getProduceFormula(), oldName, newName)); + } + }; + + public static final ContentReplacer FormulaDictionary4WidgetNameContentReplacer = new ContentReplacer() { + @Override + public void replace(FormulaDictionary formulaDictionary, String oldName, String newName) { + formulaDictionary.setExcuteFormula(ContentReplaceUtil.replaceFormulaContent4WidgetName(formulaDictionary.getExcuteFormula(), oldName, newName)); + formulaDictionary.setProduceFormula(ContentReplaceUtil.replaceFormulaContent4WidgetName(formulaDictionary.getProduceFormula(), oldName, newName)); + } + }; + + /** + * 页面/页脚——公式 + */ + + public static final ContentReplacer FormulaHFElement4TableDataNameContentReplacer = new ContentReplacer() { + @Override + public void replace(FormulaHFElement formulaHFElement, String oldName, String newName) { + formulaHFElement.setFormulaContent(ContentReplaceUtil.replaceFormulaContent4TableDataName(formulaHFElement.getFormulaContent(), oldName, newName)); + } + }; + + public static final ContentReplacer FormulaHFElement4WidgetNameContentReplacer = new ContentReplacer() { + @Override + public void replace(FormulaHFElement formulaHFElement, String oldName, String newName) { + formulaHFElement.setFormulaContent(ContentReplaceUtil.replaceFormulaContent4WidgetName(formulaHFElement.getFormulaContent(), oldName, newName)); + } + }; + + /** + * 公式形态 + */ + + public static final ContentReplacer FormulaPresent4TableDataNameContentReplacer = new ContentReplacer() { + @Override + public void replace(FormulaPresent formulaPresent, String oldName, String newName) { + formulaPresent.setFormulaContent(ContentReplaceUtil.replaceFormulaContent4TableDataName(formulaPresent.getFormulaContent(), oldName, newName)); + } + }; + + public static final ContentReplacer FormulaPresent4WidgetNameContentReplacer = new ContentReplacer() { + @Override + public void replace(FormulaPresent formulaPresent, String oldName, String newName) { + formulaPresent.setFormulaContent(ContentReplaceUtil.replaceFormulaContent4WidgetName(formulaPresent.getFormulaContent(), oldName, newName)); + } + }; + + /** + * 富文本公式 + */ + public static final ContentReplacer RichChar4TableDataNameContentReplacer = new ContentReplacer() { + @Override + public void replace(RichChar richChar, String oldName, String newName) { + if (richChar.isFormula()) { + richChar.setText(ContentReplaceUtil.replaceRichCharFormulaContent4TableDataName(richChar.getText(), oldName, newName)); + } + } + }; + + public static final ContentReplacer RichChar4WidgetNameContentReplacer = new ContentReplacer() { + @Override + public void replace(RichChar richChar, String oldName, String newName) { + if (richChar.isFormula()) { + richChar.setText(ContentReplaceUtil.replaceRichCharFormulaContent4WidgetName(richChar.getText(), oldName, newName)); + } + } + }; + + /** + * 公式分组 + * + */ + public static final ContentReplacer FunctionGrouper4TableDataNameContentReplacer = new ContentReplacer() { + @Override + public void replace(FunctionGrouper functionGrouper, String oldName, String newName) { + functionGrouper.setFormulaContent(ContentReplaceUtil.replacePureFormula4TableDataName(functionGrouper.getFormulaContent(), oldName, newName)); + } + }; + + public static final ContentReplacer FunctionGrouper4WidgetNameContentReplacer = new ContentReplacer() { + @Override + public void replace(FunctionGrouper functionGrouper, String oldName, String newName) { + functionGrouper.setFormulaContent(ContentReplaceUtil.replacePureFormula4WidgetName(functionGrouper.getFormulaContent(), oldName, newName)); + } + }; + + /** + * 结果集筛选 + */ + public static final ContentReplacer SelectCount4TableDataNameContentReplacer = new ContentReplacer() { + @Override + public void replace(SelectCount selectCount, String oldName, String newName) { + selectCount.setFormulaCount(ContentReplaceUtil.replacePureFormula4TableDataName(selectCount.getFormulaCount(), oldName, newName)); + } + }; + public static final ContentReplacer SelectCount4WidgetNameContentReplacer = new ContentReplacer() { + @Override + public void replace(SelectCount selectCount, String oldName, String newName) { + selectCount.setFormulaCount(ContentReplaceUtil.replacePureFormula4WidgetName(selectCount.getFormulaCount(), oldName, newName)); + } + }; + + /** + * tab块标题 + */ + public static final ContentReplacer CardSwitchButton4TableDataNameContentReplacer = new ContentReplacer() { + @Override + public void replace(CardSwitchButton cardSwitchButton, String oldName, String newName) { + cardSwitchButton.setText(ContentReplaceUtil.replaceFormulaString4TableDataName(cardSwitchButton.getText(), oldName, newName)); + } + }; + + public static final ContentReplacer CardSwitchButton4WidgetNameContentReplacer = new ContentReplacer() { + @Override + public void replace(CardSwitchButton cardSwitchButton, String oldName, String newName) { + cardSwitchButton.setText(ContentReplaceUtil.replaceFormulaString4WidgetName(cardSwitchButton.getText(), oldName, newName)); + } + }; + + /** + * 悬浮提示 + */ + public static final ContentReplacer CellGUIAttr4TableDataNameContentReplacer = new ContentReplacer() { + @Override + public void replace(CellGUIAttr cellGUIAttr, String oldName, String newName) { + cellGUIAttr.setTooltipText(ContentReplaceUtil.replaceFormulaString4TableDataName(cellGUIAttr.getTooltipText(), oldName, newName)); + } + }; + + public static final ContentReplacer CellGUIAttr4WidgetNameContentReplacer = new ContentReplacer() { + @Override + public void replace(CellGUIAttr cellGUIAttr, String oldName, String newName) { + cellGUIAttr.setTooltipText(ContentReplaceUtil.replaceFormulaString4WidgetName(cellGUIAttr.getTooltipText(), oldName, newName)); + } + }; + + /** + * 图表/报表块等标题 + */ + public static final ContentReplacer WidgetTitle4TableDataNameContentReplacer = new ContentReplacer() { + @Override + public void replace(WidgetTitle widgetTitle, String oldName, String newName) { + if (widgetTitle.getTextObject() instanceof String) { + String content = (String) widgetTitle.getTextObject(); + widgetTitle.setTextObject(ContentReplaceUtil.replaceFormulaString4TableDataName(content, oldName, newName)); + } + } + }; + + public static final ContentReplacer WidgetTitle4WidgetNameContentReplacer = new ContentReplacer() { + @Override + public void replace(WidgetTitle widgetTitle, String oldName, String newName) { + if (widgetTitle.getTextObject() instanceof String) { + String content = (String) widgetTitle.getTextObject(); + widgetTitle.setTextObject(ContentReplaceUtil.replaceFormulaString4WidgetName(content, oldName, newName)); + } + } + }; + +} diff --git a/designer-base/src/test/java/com/fr/design/mod/ContentReplaceUtilTest.java b/designer-base/src/test/java/com/fr/design/mod/ContentReplaceUtilTest.java new file mode 100644 index 000000000..cf67c69b6 --- /dev/null +++ b/designer-base/src/test/java/com/fr/design/mod/ContentReplaceUtilTest.java @@ -0,0 +1,65 @@ +package com.fr.design.mod; + +import junit.framework.TestCase; +import org.junit.Assert; + +/** + * @author hades + * @version 10.0 + * Created by hades on 2021/6/2 + */ +public class ContentReplaceUtilTest extends TestCase { + + public void testReplaceContent() { + String text = "setTimeout(function() {\n" + + "\n" + + "\t$(\"div[widgetname=DATEEDITOR0]\").css({\n" + + "\n" + + "\t\t'opacity': '0.3'\n" + + "\n" + + "\t});\n" + + "\n" + + "}, 50);\n" + + "var a = \"dateEditor0\""; + String oldName = "dateEditor0"; + String newName = "dateEditor00"; + String result = "setTimeout(function() {\n" + + "\n" + + "\t$(\"div[widgetname=DATEEDITOR00]\").css({\n" + + "\n" + + "\t\t'opacity': '0.3'\n" + + "\n" + + "\t});\n" + + "\n" + + "}, 50);\n" + + "var a = \"dateEditor00\""; + Assert.assertEquals(result, ContentReplaceUtil.replaceContent(text, oldName, newName)); + + String text1 = "setInterval(function() {\n" + + "\t//获取当前body中tab的索引位置\n" + + " var aa = _g().getWidgetByName(\"tabpane00\").getShowIndex();\n" + + " //根据tab索引轮播tab块,索引从0开始,到最后一个tab块后跳转到第一个\n" + + "\tif(aa == TAB轮播-测试-2) {\n" + + " _g().getWidgetByName('tabpane00').showCardByIndex(0);\n" + + " } else {\n" + + "\n" + + " _g().getWidgetByName('tabpane00').showCardByIndex(aa + TAB轮播-测试-1);\n" + + " }\n" + + "}, TAB轮播-测试-2000);"; + String oldName1 = "tabpane00"; + String newName1 = "tabpane0"; + String result1 = "setInterval(function() {\n" + + "\t//获取当前body中tab的索引位置\n" + + " var aa = _g().getWidgetByName(\"tabpane0\").getShowIndex();\n" + + " //根据tab索引轮播tab块,索引从0开始,到最后一个tab块后跳转到第一个\n" + + "\tif(aa == TAB轮播-测试-2) {\n" + + " _g().getWidgetByName('tabpane0').showCardByIndex(0);\n" + + " } else {\n" + + "\n" + + " _g().getWidgetByName('tabpane0').showCardByIndex(aa + TAB轮播-测试-1);\n" + + " }\n" + + "}, TAB轮播-测试-2000);"; + Assert.assertEquals(result1, ContentReplaceUtil.replaceContent(text1, oldName1, newName1)); + } + +} \ No newline at end of file diff --git a/designer-realize/src/main/java/com/fr/design/share/ui/config/ShareConfigPane.java b/designer-realize/src/main/java/com/fr/design/share/ui/config/ShareConfigPane.java index fa5606fe8..81d91c471 100644 --- a/designer-realize/src/main/java/com/fr/design/share/ui/config/ShareConfigPane.java +++ b/designer-realize/src/main/java/com/fr/design/share/ui/config/ShareConfigPane.java @@ -17,6 +17,7 @@ import com.fr.design.mainframe.DesignerFrame; import com.fr.design.mainframe.share.collect.ComponentCollector; import com.fr.design.mainframe.share.ui.base.PlaceholderTextArea; import com.fr.design.mainframe.share.util.ShareComponentUtils; +import com.fr.design.share.SharableManager; import com.fr.design.share.effect.EffectItemGroup; import com.fr.design.share.utils.EffectItemUtils; import com.fr.design.share.utils.ShareDialogUtils; @@ -201,6 +202,7 @@ public class ShareConfigPane extends BasicPane { } HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().saveTemplate(); ComponentCollector.getInstance().setHelpConfigUseInfo(ShareComponentUtils.getCurrentTemplateID(), ShareComponentUtils.getWidgetId(widget)); + SharableManager.saveTemplate(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate()); } }); dialog.setVisible(true);