Browse Source

Merge pull request #4474 in DESIGN/design from feature/10.0 to feature/big-screen

* commit '85ed9da973da267bac0a387a356706c77d4ff6ea':
  REPORT-53211 && REPORT-53208 && REPORT-53209 && REPORT-53207 几个使用公式的场景未联动修改
  REPORT-52928 快捷配置使用埋点的数据没保存
  REPORT-53169 【智能联动】组件拖入时,公式多个使用的地方不会被替换
  REPORT-52987  修复kerberos认证下暴露的throwable和驱动加载优先级问题
  REPORT-53163 图表超链联动
  REPORT-53159 【智能联动】组件拖入时,tab中的js引用多个组件,只会替换一次
feature/big-screen
superman 4 years ago
parent
commit
3c1f0304c2
  1. 4
      designer-base/src/main/java/com/fr/design/data/datapane/connect/DatabaseConnectionPane.java
  2. 24
      designer-base/src/main/java/com/fr/design/mod/ContentObjectManager.java
  3. 154
      designer-base/src/main/java/com/fr/design/mod/ContentReplaceUtil.java
  4. 26
      designer-base/src/main/java/com/fr/design/mod/ContentReplacerCenter.java
  5. 6
      designer-base/src/main/java/com/fr/design/mod/impl/change/DSColumnContentChange.java
  6. 34
      designer-base/src/main/java/com/fr/design/mod/impl/change/FormHyperlinkContentChange.java
  7. 36
      designer-base/src/main/java/com/fr/design/mod/impl/change/formula/CardSwitchButtonContentChange.java
  8. 37
      designer-base/src/main/java/com/fr/design/mod/impl/change/formula/CellExpandAttrContentChange.java
  9. 35
      designer-base/src/main/java/com/fr/design/mod/impl/change/formula/CellGUIAttrContentChange.java
  10. 37
      designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FormulaConditionContentChange.java
  11. 9
      designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FormulaContentChange.java
  12. 37
      designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FormulaDictionaryContentChange.java
  13. 38
      designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FormulaHFElementContentChange.java
  14. 38
      designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FormulaPresentContentChange.java
  15. 35
      designer-base/src/main/java/com/fr/design/mod/impl/change/formula/FunctionGrouperContentChange.java
  16. 37
      designer-base/src/main/java/com/fr/design/mod/impl/change/formula/RichCharContentChange.java
  17. 35
      designer-base/src/main/java/com/fr/design/mod/impl/change/formula/SelectCountContentChange.java
  18. 35
      designer-base/src/main/java/com/fr/design/mod/impl/change/formula/WidgetTitleContentChange.java
  19. 5
      designer-base/src/main/java/com/fr/design/mod/impl/repalce/DSColumn4TableDataNameContentReplacer.java
  20. 19
      designer-base/src/main/java/com/fr/design/mod/impl/repalce/DSColumn4WidgetNameContentReplacer.java
  21. 20
      designer-base/src/main/java/com/fr/design/mod/impl/repalce/FormHyperlinkContentReplacer.java
  22. 22
      designer-base/src/main/java/com/fr/design/mod/impl/repalce/Formula4TableDataNameContentReplacer.java
  23. 21
      designer-base/src/main/java/com/fr/design/mod/impl/repalce/Formula4WidgetNameContentReplacer.java
  24. 247
      designer-base/src/main/java/com/fr/design/mod/impl/repalce/FormulaReplacer.java
  25. 65
      designer-base/src/test/java/com/fr/design/mod/ContentReplaceUtilTest.java
  26. 2
      designer-realize/src/main/java/com/fr/design/share/ui/config/ShareConfigPane.java

4
designer-base/src/main/java/com/fr/design/data/datapane/connect/DatabaseConnectionPane.java

@ -136,8 +136,8 @@ public abstract class DatabaseConnectionPane<E extends com.fr.data.impl.Connecti
okButton.setEnabled(true); okButton.setEnabled(true);
uiLabel.setIcon(UIManager.getIcon("OptionPane.errorIcon")); uiLabel.setIcon(UIManager.getIcon("OptionPane.errorIcon"));
message.setText(Toolkit.i18nText("Fine-Design_Basic_Connection_Failed")); message.setText(Toolkit.i18nText("Fine-Design_Basic_Connection_Failed"));
Connection database = DatabaseConnectionPane.this.updateBean();
SolutionProcessor select = ExceptionSolutionSelector.get().select(e); SolutionProcessor select = ExceptionSolutionSelector.get().select(e, database);
if (select instanceof ClassNotFoundExceptionSolutionProcessor) { if (select instanceof ClassNotFoundExceptionSolutionProcessor) {
JPanel gridJpanel = new JPanel(); JPanel gridJpanel = new JPanel();
gridJpanel.setLayout(new GridLayout(5, 1, 0, 5)); gridJpanel.setLayout(new GridLayout(5, 1, 0, 5));

24
designer-base/src/main/java/com/fr/design/mod/ContentObjectManager.java

@ -1,14 +1,26 @@
package com.fr.design.mod; package com.fr.design.mod;
import com.fr.base.Formula; import com.fr.base.Formula;
import com.fr.base.headerfooter.FormulaHFElement;
import com.fr.base.present.FormulaPresent;
import com.fr.chart.web.ChartHyperRelateCellLink; import com.fr.chart.web.ChartHyperRelateCellLink;
import com.fr.chart.web.ChartHyperRelateFloatLink; import com.fr.chart.web.ChartHyperRelateFloatLink;
import com.fr.data.SimpleDSColumn; import com.fr.data.SimpleDSColumn;
import com.fr.data.condition.FormulaCondition;
import com.fr.data.impl.FormulaDictionary;
import com.fr.data.impl.NameTableData; import com.fr.data.impl.NameTableData;
import com.fr.form.main.FormHyperlink;
import com.fr.form.ui.CardSwitchButton;
import com.fr.form.ui.WidgetTitle;
import com.fr.invoke.ClassHelper; import com.fr.invoke.ClassHelper;
import com.fr.js.JavaScriptImpl; import com.fr.js.JavaScriptImpl;
import com.fr.plugin.chart.base.VanChartHtmlLabel; import com.fr.plugin.chart.base.VanChartHtmlLabel;
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.DSColumn; import com.fr.report.cell.cellattr.core.group.DSColumn;
import com.fr.report.cell.cellattr.core.group.FunctionGrouper;
import com.fr.report.cell.cellattr.core.group.SelectCount;
import com.fr.stable.Filter; import com.fr.stable.Filter;
import java.util.HashSet; import java.util.HashSet;
import java.util.Map; import java.util.Map;
@ -46,6 +58,18 @@ public class ContentObjectManager {
set.add(NameTableData.class.getName()); set.add(NameTableData.class.getName());
set.add(SimpleDSColumn.class.getName()); set.add(SimpleDSColumn.class.getName());
set.add(DSColumn.class.getName()); set.add(DSColumn.class.getName());
set.add(FormHyperlink.class.getName());
set.add(CellExpandAttr.class.getName());
set.add(FormulaCondition.class.getName());
set.add(FormulaDictionary.class.getName());
set.add(FormulaHFElement.class.getName());
set.add(FormulaPresent.class.getName());
set.add(RichChar.class.getName());
set.add(CardSwitchButton.class.getName());
set.add(CellGUIAttr.class.getName());
set.add(SelectCount.class.getName());
set.add(WidgetTitle.class.getName());
set.add(FunctionGrouper.class.getName());
} }
public void searchObject(Object ob) { public void searchObject(Object ob) {

154
designer-base/src/main/java/com/fr/design/mod/ContentReplaceUtil.java

@ -1,5 +1,10 @@
package com.fr.design.mod; package com.fr.design.mod;
import com.fr.parser.FRFormulaTransformer;
import com.fr.stable.StringUtils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/** /**
* @author hades * @author hades
* @version 10.0 * @version 10.0
@ -9,12 +14,159 @@ public class ContentReplaceUtil {
public static final String EQ_STRING = "="; public static final String EQ_STRING = "=";
public static final String LEFT_BRACKET = "${";
public static final String RIGHT_BRACKET = "}";
public static String replaceContent(String content, String oldName, String newName) { public static String replaceContent(String content, String oldName, String newName) {
return content.replaceAll(generateStr(oldName), generateStr(newName)); String oldNameUpper = oldName.toUpperCase();
Matcher m = Pattern.compile(oldName + "|" + oldNameUpper).matcher(content);
StringBuilder sb = new StringBuilder();
int last = 0;
while (m.find()) {
sb.append(content, last, m.start());
if (oldNameUpper.equals(m.group())) {
// 处理大写情况
sb.append(newName.toUpperCase());
} else {
// 默认情况
sb.append(newName);
}
last = m.end();
}
sb.append(content.substring(last));
return sb.toString();
} }
private static String generateStr(String str) { private static String generateStr(String str) {
return "\"" + str + "\""; return "\"" + str + "\"";
} }
public static String getFormulaPureContent(String content) {
if (content.startsWith(EQ_STRING)) {
return content.substring(1);
} else {
return content;
}
}
/**
* 通过公式编辑框框输入的且带有"="
*
* @param content
* @param oldName
* @param newName
* @return
*/
public static String replaceFormulaContent4WidgetName(String content, String oldName, String newName) {
if (StringUtils.isNotEmpty(content)) {
return replaceFormulaContent4WidgetName0(content, oldName, newName);
}
return content;
}
public static String replaceFormulaContent4TableDataName(String content, String oldName, String newName) {
if (StringUtils.isNotEmpty(content)) {
return replaceFormulaContent4TableDataName0(content, oldName, newName);
}
return content;
}
private static String replaceFormulaContent4WidgetName0(String content, String oldName, String newName) {
content = getFormulaPureContent(content);
FRFormulaTransformer frFormulaTransformer = new FRFormulaTransformer();
frFormulaTransformer.addRenamedWidget(oldName, newName);
return EQ_STRING + frFormulaTransformer.transform(content);
}
private static String replaceFormulaContent4TableDataName0(String content, String oldName, String newName) {
content = getFormulaPureContent(content);
FRFormulaTransformer frFormulaTransformer = new FRFormulaTransformer();
frFormulaTransformer.addRenamedWidget(oldName, newName);
return EQ_STRING + frFormulaTransformer.transform(content);
}
public static String getRichCharFormulaPureContent(String content) {
if (content.startsWith(LEFT_BRACKET)) {
return content.substring(LEFT_BRACKET.length() + 1, content.length() - 1);
} else {
return content;
}
}
public static String replaceRichCharFormulaContent4TableDataName(String content, String oldName, String newName) {
if (StringUtils.isNotEmpty(content)) {
content = getRichCharFormulaPureContent(content);
FRFormulaTransformer frFormulaTransformer = new FRFormulaTransformer();
frFormulaTransformer.addRenamedDataset(oldName, newName);
return LEFT_BRACKET + EQ_STRING + frFormulaTransformer.transform(content) + RIGHT_BRACKET;
}
return content;
}
public static String replaceRichCharFormulaContent4WidgetName(String content, String oldName, String newName) {
if (StringUtils.isNotEmpty(content)) {
content = getRichCharFormulaPureContent(content);
FRFormulaTransformer frFormulaTransformer = new FRFormulaTransformer();
frFormulaTransformer.addRenamedWidget(oldName, newName);
return LEFT_BRACKET + EQ_STRING + frFormulaTransformer.transform(content) + RIGHT_BRACKET;
}
return content;
}
private static boolean isFormula(String content) {
return StringUtils.isNotEmpty(content) && content.startsWith(EQ_STRING);
}
/**
* 适用于替换非显示使用的公式的地方 有可能只是文本 需要先判断下
* 可通过使用位置是否使用公式编辑框区分
*
* @param content
* @param oldName
* @param newName
* @return
*/
public static String replaceFormulaString4WidgetName(String content, String oldName, String newName) {
if (isFormula(content)) {
return replaceFormulaContent4WidgetName0(content, oldName, newName);
}
return content;
}
public static String replaceFormulaString4TableDataName(String content, String oldName, String newName ) {
if (isFormula(content)) {
return replaceFormulaContent4TableDataName0(content, oldName, newName);
}
return content;
}
/**
* 替换纯公式内容 "="
*
* @param content
* @param oldName
* @param newName
* @return
*/
public static String replacePureFormula4WidgetName(String content, String oldName, String newName ) {
if (StringUtils.isNotEmpty(content)) {
FRFormulaTransformer frFormulaTransformer = new FRFormulaTransformer();
frFormulaTransformer.addRenamedWidget(oldName, newName);
return frFormulaTransformer.transform(content);
}
return content;
}
public static String replacePureFormula4TableDataName(String content, String oldName, String newName ) {
if (StringUtils.isNotEmpty(content)) {
FRFormulaTransformer frFormulaTransformer = new FRFormulaTransformer();
frFormulaTransformer.addRenamedDataset(oldName, newName);
return frFormulaTransformer.transform(content);
}
return content;
}
} }

26
designer-base/src/main/java/com/fr/design/mod/ContentReplacerCenter.java

@ -7,11 +7,23 @@ import com.fr.design.mod.event.WidgetNameModifyEvent;
import com.fr.design.mod.impl.change.ChartHyperRelateCellLinkContentChange; import com.fr.design.mod.impl.change.ChartHyperRelateCellLinkContentChange;
import com.fr.design.mod.impl.change.ChartHyperRelateFloatLinkContentChange; import com.fr.design.mod.impl.change.ChartHyperRelateFloatLinkContentChange;
import com.fr.design.mod.impl.change.DSColumnContentChange; import com.fr.design.mod.impl.change.DSColumnContentChange;
import com.fr.design.mod.impl.change.FormulaContentChange; import com.fr.design.mod.impl.change.FormHyperlinkContentChange;
import com.fr.design.mod.impl.change.formula.CardSwitchButtonContentChange;
import com.fr.design.mod.impl.change.formula.CellExpandAttrContentChange;
import com.fr.design.mod.impl.change.formula.CellGUIAttrContentChange;
import com.fr.design.mod.impl.change.formula.FormulaConditionContentChange;
import com.fr.design.mod.impl.change.formula.FormulaContentChange;
import com.fr.design.mod.impl.change.JavaScriptContentChange; import com.fr.design.mod.impl.change.JavaScriptContentChange;
import com.fr.design.mod.impl.change.NameTableDataContentChange; import com.fr.design.mod.impl.change.NameTableDataContentChange;
import com.fr.design.mod.impl.change.SimpleDSColumnContentChange; import com.fr.design.mod.impl.change.SimpleDSColumnContentChange;
import com.fr.design.mod.impl.change.VanChartHtmlLabelContentChange; import com.fr.design.mod.impl.change.VanChartHtmlLabelContentChange;
import com.fr.design.mod.impl.change.formula.FormulaDictionaryContentChange;
import com.fr.design.mod.impl.change.formula.FormulaHFElementContentChange;
import com.fr.design.mod.impl.change.formula.FormulaPresentContentChange;
import com.fr.design.mod.impl.change.formula.FunctionGrouperContentChange;
import com.fr.design.mod.impl.change.formula.RichCharContentChange;
import com.fr.design.mod.impl.change.formula.SelectCountContentChange;
import com.fr.design.mod.impl.change.formula.WidgetTitleContentChange;
import com.fr.event.Event; import com.fr.event.Event;
import com.fr.event.EventDispatcher; import com.fr.event.EventDispatcher;
import com.fr.event.Listener; import com.fr.event.Listener;
@ -79,6 +91,18 @@ public class ContentReplacerCenter {
contentChangeList.add(new NameTableDataContentChange()); contentChangeList.add(new NameTableDataContentChange());
contentChangeList.add(new SimpleDSColumnContentChange()); contentChangeList.add(new SimpleDSColumnContentChange());
contentChangeList.add(new DSColumnContentChange()); contentChangeList.add(new DSColumnContentChange());
contentChangeList.add(new FormHyperlinkContentChange());
contentChangeList.add(new CellExpandAttrContentChange());
contentChangeList.add(new FormulaConditionContentChange());
contentChangeList.add(new FormulaDictionaryContentChange());
contentChangeList.add(new FormulaHFElementContentChange());
contentChangeList.add(new FormulaPresentContentChange());
contentChangeList.add(new RichCharContentChange());
contentChangeList.add(new CardSwitchButtonContentChange());
contentChangeList.add(new CellGUIAttrContentChange());
contentChangeList.add(new SelectCountContentChange());
contentChangeList.add(new WidgetTitleContentChange());
contentChangeList.add(new FunctionGrouperContentChange());
} }
private void onRename(List<ContentChangeItem> contentChangeItemList, List<ContentChange> contentChangeList) { private void onRename(List<ContentChangeItem> contentChangeItemList, List<ContentChange> contentChangeList) {

6
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.ContentChange;
import com.fr.design.mod.ContentReplacer; import com.fr.design.mod.ContentReplacer;
import com.fr.design.mod.bean.ChangeItem; 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 com.fr.report.cell.cellattr.core.group.DSColumn;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -19,7 +20,8 @@ public class DSColumnContentChange implements ContentChange<DSColumn> {
public DSColumnContentChange() { public DSColumnContentChange() {
map = new HashMap<>(); 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 @Override

34
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<FormHyperlink> {
private final Map<ChangeItem, ContentReplacer<FormHyperlink>> map;
public FormHyperlinkContentChange() {
map = new HashMap<>();
map.put(ChangeItem.WIDGET_NAME, new FormHyperlinkContentReplacer());
}
@Override
public String type() {
return FormHyperlink.class.getName();
}
@Override
public Map<ChangeItem, ContentReplacer<FormHyperlink>> changeInfo() {
return map;
}
}

36
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<CardSwitchButton> {
private final Map<ChangeItem, ContentReplacer<CardSwitchButton>> 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<ChangeItem, ContentReplacer<CardSwitchButton>> changeInfo() {
return map;
}
}

37
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<CellExpandAttr> {
private final Map<ChangeItem, ContentReplacer<CellExpandAttr>> 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<ChangeItem, ContentReplacer<CellExpandAttr>> changeInfo() {
return map;
}
}

35
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<CellGUIAttr> {
private Map<ChangeItem, ContentReplacer<CellGUIAttr>> 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<ChangeItem, ContentReplacer<CellGUIAttr>> changeInfo() {
return map;
}
}

37
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<FormulaCondition> {
private final Map<ChangeItem, ContentReplacer<FormulaCondition>> 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<ChangeItem, ContentReplacer<FormulaCondition>> changeInfo() {
return map;
}
}

9
designer-base/src/main/java/com/fr/design/mod/impl/change/FormulaContentChange.java → 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.base.Formula;
import com.fr.design.mod.ContentChange; import com.fr.design.mod.ContentChange;
import com.fr.design.mod.ContentReplacer; import com.fr.design.mod.ContentReplacer;
import com.fr.design.mod.bean.ChangeItem; import com.fr.design.mod.bean.ChangeItem;
import com.fr.design.mod.impl.repalce.Formula4TableDataNameContentReplacer; import com.fr.design.mod.impl.repalce.FormulaReplacer;
import com.fr.design.mod.impl.repalce.Formula4WidgetNameContentReplacer;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -20,8 +19,8 @@ public class FormulaContentChange implements ContentChange<Formula> {
public FormulaContentChange() { public FormulaContentChange() {
map = new HashMap<>(); map = new HashMap<>();
map.put(ChangeItem.WIDGET_NAME, new Formula4WidgetNameContentReplacer()); map.put(ChangeItem.WIDGET_NAME, FormulaReplacer.Formula4WidgetNameContentReplacer);
map.put(ChangeItem.TABLE_DATA_NAME, new Formula4TableDataNameContentReplacer()); map.put(ChangeItem.TABLE_DATA_NAME, FormulaReplacer.Formula4TableDataNameContentReplacer);
} }
@Override @Override

37
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<FormulaDictionary> {
private final Map<ChangeItem, ContentReplacer<FormulaDictionary>> 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<ChangeItem, ContentReplacer<FormulaDictionary>> changeInfo() {
return map;
}
}

38
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<FormulaHFElement> {
private final Map<ChangeItem, ContentReplacer<FormulaHFElement>> 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<ChangeItem, ContentReplacer<FormulaHFElement>> changeInfo() {
return map;
}
}

38
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<FormulaPresent> {
private final Map<ChangeItem, ContentReplacer<FormulaPresent>> 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<ChangeItem, ContentReplacer<FormulaPresent>> changeInfo() {
return map;
}
}

35
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<FunctionGrouper> {
private final Map<ChangeItem, ContentReplacer<FunctionGrouper>> 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<ChangeItem, ContentReplacer<FunctionGrouper>> changeInfo() {
return map;
}
}

37
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<RichChar> {
private final Map<ChangeItem, ContentReplacer<RichChar>> 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<ChangeItem, ContentReplacer<RichChar>> changeInfo() {
return map;
}
}

35
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<SelectCount> {
private final Map<ChangeItem, ContentReplacer<SelectCount>> 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<ChangeItem, ContentReplacer<SelectCount>> changeInfo() {
return map;
}
}

35
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<WidgetTitle> {
private final Map<ChangeItem, ContentReplacer<WidgetTitle>> 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<ChangeItem, ContentReplacer<WidgetTitle>> changeInfo() {
return map;
}
}

5
designer-base/src/main/java/com/fr/design/mod/impl/repalce/DSColumnContentReplacer.java → designer-base/src/main/java/com/fr/design/mod/impl/repalce/DSColumn4TableDataNameContentReplacer.java

@ -1,5 +1,6 @@
package com.fr.design.mod.impl.repalce; package com.fr.design.mod.impl.repalce;
import com.fr.design.mod.ContentReplaceUtil;
import com.fr.design.mod.ContentReplacer; import com.fr.design.mod.ContentReplacer;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.report.cell.cellattr.core.group.DSColumn; 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 * @version 10.0
* Created by hades on 2021/6/2 * Created by hades on 2021/6/2
*/ */
public class DSColumnContentReplacer implements ContentReplacer<DSColumn> { public class DSColumn4TableDataNameContentReplacer implements ContentReplacer<DSColumn> {
@Override @Override
public void replace(DSColumn dsColumn, String oldName, String newName) { public void replace(DSColumn dsColumn, String oldName, String newName) {
if (ComparatorUtils.equals(dsColumn.getDSName(), oldName)) { if (ComparatorUtils.equals(dsColumn.getDSName(), oldName)) {
dsColumn.setDSName(newName); dsColumn.setDSName(newName);
} }
dsColumn.setResult(ContentReplaceUtil.replacePureFormula4TableDataName(dsColumn.getResult(), oldName, newName));
dsColumn.setSortFormula(ContentReplaceUtil.replacePureFormula4TableDataName(dsColumn.getSortFormula(), oldName, newName));
} }
} }

19
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<DSColumn> {
@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));
}
}

20
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<FormHyperlink> {
@Override
public void replace(FormHyperlink formHyperlink, String oldName, String newName) {
if (ComparatorUtils.equals(formHyperlink.getRelateEditorName(), oldName)) {
formHyperlink.setRelateEditorName(newName);
}
}
}

22
designer-base/src/main/java/com/fr/design/mod/impl/repalce/Formula4TableDataNameContentReplacer.java

@ -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<Formula> {
@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()));
}
}

21
designer-base/src/main/java/com/fr/design/mod/impl/repalce/Formula4WidgetNameContentReplacer.java

@ -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<Formula> {
@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()));
}
}

247
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<CellExpandAttr> CellExpandAttr4TableDataNameContentReplacer = new ContentReplacer<CellExpandAttr>() {
@Override
public void replace(CellExpandAttr cellExpandAttr, String oldName, String newName) {
cellExpandAttr.setSortFormula(ContentReplaceUtil.replaceFormulaContent4TableDataName(cellExpandAttr.getSortFormula(), oldName, newName));
}
};
public static final ContentReplacer<CellExpandAttr> CellExpandAttr4WidgetNameContentReplacer = new ContentReplacer<CellExpandAttr>() {
@Override
public void replace(CellExpandAttr cellExpandAttr, String oldName, String newName) {
cellExpandAttr.setSortFormula(ContentReplaceUtil.replaceFormulaContent4WidgetName(cellExpandAttr.getSortFormula(), oldName, newName));
}
};
/**
* 典型单元格公式
*/
public static final ContentReplacer<Formula> Formula4TableDataNameContentReplacer = new ContentReplacer<Formula>() {
@Override
public void replace(Formula formula, String oldName, String newName) {
formula.setContent(ContentReplaceUtil.replaceFormulaContent4TableDataName(formula.getPureContent(), oldName, newName));
}
};
public static final ContentReplacer<Formula> Formula4WidgetNameContentReplacer = new ContentReplacer<Formula>() {
@Override
public void replace(Formula formula, String oldName, String newName) {
formula.setContent(ContentReplaceUtil.replaceFormulaContent4WidgetName(formula.getPureContent(), oldName, newName));
}
};
/**
* 公式条件
*/
public static final ContentReplacer<FormulaCondition> FormulaCondition4TableDataNameContentReplacer = new ContentReplacer<FormulaCondition>() {
@Override
public void replace(FormulaCondition formulaCondition, String oldName, String newName) {
formulaCondition.setFormula(ContentReplaceUtil.replaceFormulaContent4TableDataName(formulaCondition.getFormula(), oldName, newName));
}
};
public static final ContentReplacer<FormulaCondition> FormulaCondition4WidgetNameContentReplacer = new ContentReplacer<FormulaCondition>() {
@Override
public void replace(FormulaCondition formulaCondition, String oldName, String newName) {
formulaCondition.setFormula(ContentReplaceUtil.replaceFormulaContent4WidgetName(formulaCondition.getFormula(), oldName, newName));
}
};
/**
* 数据字典公式
*/
public static final ContentReplacer<FormulaDictionary> FormulaDictionary4TableDataNameContentReplacer = new ContentReplacer<FormulaDictionary>() {
@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<FormulaDictionary> FormulaDictionary4WidgetNameContentReplacer = new ContentReplacer<FormulaDictionary>() {
@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<FormulaHFElement> FormulaHFElement4TableDataNameContentReplacer = new ContentReplacer<FormulaHFElement>() {
@Override
public void replace(FormulaHFElement formulaHFElement, String oldName, String newName) {
formulaHFElement.setFormulaContent(ContentReplaceUtil.replaceFormulaContent4TableDataName(formulaHFElement.getFormulaContent(), oldName, newName));
}
};
public static final ContentReplacer<FormulaHFElement> FormulaHFElement4WidgetNameContentReplacer = new ContentReplacer<FormulaHFElement>() {
@Override
public void replace(FormulaHFElement formulaHFElement, String oldName, String newName) {
formulaHFElement.setFormulaContent(ContentReplaceUtil.replaceFormulaContent4WidgetName(formulaHFElement.getFormulaContent(), oldName, newName));
}
};
/**
* 公式形态
*/
public static final ContentReplacer<FormulaPresent> FormulaPresent4TableDataNameContentReplacer = new ContentReplacer<FormulaPresent>() {
@Override
public void replace(FormulaPresent formulaPresent, String oldName, String newName) {
formulaPresent.setFormulaContent(ContentReplaceUtil.replaceFormulaContent4TableDataName(formulaPresent.getFormulaContent(), oldName, newName));
}
};
public static final ContentReplacer<FormulaPresent> FormulaPresent4WidgetNameContentReplacer = new ContentReplacer<FormulaPresent>() {
@Override
public void replace(FormulaPresent formulaPresent, String oldName, String newName) {
formulaPresent.setFormulaContent(ContentReplaceUtil.replaceFormulaContent4WidgetName(formulaPresent.getFormulaContent(), oldName, newName));
}
};
/**
* 富文本公式
*/
public static final ContentReplacer<RichChar> RichChar4TableDataNameContentReplacer = new ContentReplacer<RichChar>() {
@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<RichChar> RichChar4WidgetNameContentReplacer = new ContentReplacer<RichChar>() {
@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<FunctionGrouper> FunctionGrouper4TableDataNameContentReplacer = new ContentReplacer<FunctionGrouper>() {
@Override
public void replace(FunctionGrouper functionGrouper, String oldName, String newName) {
functionGrouper.setFormulaContent(ContentReplaceUtil.replacePureFormula4TableDataName(functionGrouper.getFormulaContent(), oldName, newName));
}
};
public static final ContentReplacer<FunctionGrouper> FunctionGrouper4WidgetNameContentReplacer = new ContentReplacer<FunctionGrouper>() {
@Override
public void replace(FunctionGrouper functionGrouper, String oldName, String newName) {
functionGrouper.setFormulaContent(ContentReplaceUtil.replacePureFormula4WidgetName(functionGrouper.getFormulaContent(), oldName, newName));
}
};
/**
* 结果集筛选
*/
public static final ContentReplacer<SelectCount> SelectCount4TableDataNameContentReplacer = new ContentReplacer<SelectCount>() {
@Override
public void replace(SelectCount selectCount, String oldName, String newName) {
selectCount.setFormulaCount(ContentReplaceUtil.replacePureFormula4TableDataName(selectCount.getFormulaCount(), oldName, newName));
}
};
public static final ContentReplacer<SelectCount> SelectCount4WidgetNameContentReplacer = new ContentReplacer<SelectCount>() {
@Override
public void replace(SelectCount selectCount, String oldName, String newName) {
selectCount.setFormulaCount(ContentReplaceUtil.replacePureFormula4WidgetName(selectCount.getFormulaCount(), oldName, newName));
}
};
/**
* tab块标题
*/
public static final ContentReplacer<CardSwitchButton> CardSwitchButton4TableDataNameContentReplacer = new ContentReplacer<CardSwitchButton>() {
@Override
public void replace(CardSwitchButton cardSwitchButton, String oldName, String newName) {
cardSwitchButton.setText(ContentReplaceUtil.replaceFormulaString4TableDataName(cardSwitchButton.getText(), oldName, newName));
}
};
public static final ContentReplacer<CardSwitchButton> CardSwitchButton4WidgetNameContentReplacer = new ContentReplacer<CardSwitchButton>() {
@Override
public void replace(CardSwitchButton cardSwitchButton, String oldName, String newName) {
cardSwitchButton.setText(ContentReplaceUtil.replaceFormulaString4WidgetName(cardSwitchButton.getText(), oldName, newName));
}
};
/**
* 悬浮提示
*/
public static final ContentReplacer<CellGUIAttr> CellGUIAttr4TableDataNameContentReplacer = new ContentReplacer<CellGUIAttr>() {
@Override
public void replace(CellGUIAttr cellGUIAttr, String oldName, String newName) {
cellGUIAttr.setTooltipText(ContentReplaceUtil.replaceFormulaString4TableDataName(cellGUIAttr.getTooltipText(), oldName, newName));
}
};
public static final ContentReplacer<CellGUIAttr> CellGUIAttr4WidgetNameContentReplacer = new ContentReplacer<CellGUIAttr>() {
@Override
public void replace(CellGUIAttr cellGUIAttr, String oldName, String newName) {
cellGUIAttr.setTooltipText(ContentReplaceUtil.replaceFormulaString4WidgetName(cellGUIAttr.getTooltipText(), oldName, newName));
}
};
/**
* 图表/报表块等标题
*/
public static final ContentReplacer<WidgetTitle> WidgetTitle4TableDataNameContentReplacer = new ContentReplacer<WidgetTitle>() {
@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<WidgetTitle> WidgetTitle4WidgetNameContentReplacer = new ContentReplacer<WidgetTitle>() {
@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));
}
}
};
}

65
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));
}
}

2
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.collect.ComponentCollector;
import com.fr.design.mainframe.share.ui.base.PlaceholderTextArea; import com.fr.design.mainframe.share.ui.base.PlaceholderTextArea;
import com.fr.design.mainframe.share.util.ShareComponentUtils; 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.effect.EffectItemGroup;
import com.fr.design.share.utils.EffectItemUtils; import com.fr.design.share.utils.EffectItemUtils;
import com.fr.design.share.utils.ShareDialogUtils; import com.fr.design.share.utils.ShareDialogUtils;
@ -201,6 +202,7 @@ public class ShareConfigPane extends BasicPane {
} }
HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().saveTemplate(); HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().saveTemplate();
ComponentCollector.getInstance().setHelpConfigUseInfo(ShareComponentUtils.getCurrentTemplateID(), ShareComponentUtils.getWidgetId(widget)); ComponentCollector.getInstance().setHelpConfigUseInfo(ShareComponentUtils.getCurrentTemplateID(), ShareComponentUtils.getWidgetId(widget));
SharableManager.saveTemplate(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate());
} }
}); });
dialog.setVisible(true); dialog.setVisible(true);

Loading…
Cancel
Save