From e5db574c466690c7fd3bf404cc35e90d1f7a528a Mon Sep 17 00:00:00 2001 From: Yyming Date: Tue, 15 Sep 2020 14:43:06 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-39757=20AlphaFine=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E5=90=AB=E7=A9=BA=E6=A0=BC=E7=9A=84=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/DesignerEnvManager.java | 11 +-- .../tabledatapane/DBTableDataPane.java | 2 +- .../alphafine/cell/model/BottomModel.java | 4 +- .../alphafine/component/AlphaFineDialog.java | 80 +++++++++---------- .../manager/impl/FileSearchManager.java | 5 +- .../manager/impl/FileSearchManagerTest.java | 79 ++++++++++++++++++ 6 files changed, 125 insertions(+), 56 deletions(-) create mode 100644 designer-realize/src/test/java/com.fr/design/mainframe/alphafine/search/manager/impl/FileSearchManagerTest.java diff --git a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java index 68bb91711..da2f0e0dc 100644 --- a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java +++ b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java @@ -218,14 +218,9 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { if (needCheckEnv) { checkNameEnvMap(); } - - GeneralContext.addEnvChangedListener(new EnvChangedListener() { - @Override - public void envChanged() { - - designerEnvManager.setCurrentDirectoryPrefix(FILEFactory.ENV_PREFIX); - designerEnvManager.setDialogCurrentDirectory(ProjectConstants.REPORTLETS_NAME); - } + GeneralContext.addEnvChangedListener(() -> { + designerEnvManager.setCurrentDirectoryPrefix(FILEFactory.ENV_PREFIX); + designerEnvManager.setDialogCurrentDirectory(ProjectConstants.REPORTLETS_NAME); }); } diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java b/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java index 23e6f4613..d1beacb1d 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java @@ -218,7 +218,7 @@ public class DBTableDataPane extends AbstractTableDataPane { paramTexts[0] = SqlUtils.tryPureSqlText(sqlTextPane.getText()); paramTexts[1] = SqlUtils.tryPureSqlText(pageQuery); List existParameterList = editorPane.update(); - Parameter[] ps = existParameterList == null ? new Parameter[0] : existParameterList.toArray(new Parameter[existParameterList.size()]); + Parameter[] ps = existParameterList == null ? new Parameter[0] : existParameterList.toArray(new Parameter[0]); editorPane.populate(ParameterUtils.analyzeAndUnionParameters(paramTexts, ps)); } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/BottomModel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/BottomModel.java index c8f92721c..503a4f413 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/BottomModel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/BottomModel.java @@ -49,9 +49,7 @@ public class BottomModel extends AlphaCellModel { public void doAction() { try { Desktop.getDesktop().browse(new URI(AlphaFineConstants.ALPHA_GO_TO_FORUM)); - } catch (IOException e) { - FineLoggerFactory.getLogger().error(e.getMessage()); - } catch (URISyntaxException e) { + } catch (IOException | URISyntaxException e) { FineLoggerFactory.getLogger().error(e.getMessage()); } } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java index 044a484b1..2654aca90 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java @@ -819,56 +819,52 @@ public class AlphaFineDialog extends UIDialog { } }); - Timer timer = new Timer(TIMER_DELAY, new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - if (!alreadyInitHot && StringUtils.isEmpty(searchTextField.getText())) { - alreadyInitHot = true; + Timer timer = new Timer(TIMER_DELAY, e -> { + if (!alreadyInitHot && StringUtils.isEmpty(searchTextField.getText())) { + alreadyInitHot = true; + removeSearchResult(); + refreshContainer(); + if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isNeedIntelligentCustomerService()) { + initHotPane(); + setSize(AlphaFineConstants.FULL_SIZE); + } else { + setSize(AlphaFineConstants.FIELD_SIZE); + } + refreshContainer(); + return; + } else if (beforeSearchStr.equals(searchTextField.getText()) && StringUtils.isNotEmpty(beforeSearchStr)) { + if (alreadySearch) { + return; + } else { + removeHotPane(); removeSearchResult(); refreshContainer(); - if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isNeedIntelligentCustomerService()) { - initHotPane(); - setSize(AlphaFineConstants.FULL_SIZE); - } else { - setSize(AlphaFineConstants.FIELD_SIZE); - } - refreshContainer(); - return; - } else if (beforeSearchStr.equals(searchTextField.getText()) && StringUtils.isNotEmpty(beforeSearchStr)) { - if (alreadySearch) { - return; + if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isNeedSegmentationCheckbox()) { + //是高级搜索 + if (searchTextField.getText().toLowerCase().startsWith(ADVANCED_SEARCH_MARK)) { + segmentationResult = SegmentationManager.getInstance().startSegmentation(getStoreText(searchTextField.getText().toLowerCase())); + } + //是普通搜索 + else { + segmentationResult = SegmentationManager.getInstance().startSegmentation(searchTextField.getText().toLowerCase()); + } } else { - removeHotPane(); - removeSearchResult(); - refreshContainer(); - if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isNeedSegmentationCheckbox()) { - //是高级搜索 - if (searchTextField.getText().toLowerCase().startsWith(ADVANCED_SEARCH_MARK)) { - segmentationResult = SegmentationManager.getInstance().startSegmentation(getStoreText(searchTextField.getText().toLowerCase())); - } - //是普通搜索 - else { - segmentationResult = SegmentationManager.getInstance().startSegmentation(searchTextField.getText().toLowerCase()); - } + if (StringUtils.isEmpty(getRealSearchText(searchTextField.getText()))) { + segmentationResult = null; } else { - if (StringUtils.isEmpty(getRealSearchText(searchTextField.getText()))) { - segmentationResult = null; - } else { - segmentationResult = new String[]{getRealSearchText(searchTextField.getText())}; - } + segmentationResult = new String[]{getRealSearchText(searchTextField.getText())}; } - doSearch(searchTextField.getText().toLowerCase()); - alreadySearch = true; } - } else { - beforeSearchStr = searchTextField.getText(); - alreadySearch = false; - } - if (beforeSearchStr.equals(searchTextField.getText()) && beforeSearchStr.length() != 0) { - alreadyInitHot = false; + doSearch(searchTextField.getText().toLowerCase()); + alreadySearch = true; } + } else { + beforeSearchStr = searchTextField.getText(); + alreadySearch = false; + } + if (beforeSearchStr.equals(searchTextField.getText()) && beforeSearchStr.length() != 0) { + alreadyInitHot = false; } - }); timer.start(); } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java index 17c58998d..c86739070 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java @@ -108,14 +108,15 @@ public class FileSearchManager implements AlphaFineSearchProvider { private void doSearch(String searchText) { if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isContainTemplate()) { for (FileNode node : fileNodes) { - if (node.getName().toLowerCase().contains(searchText)) { + String name = node.getName().toLowerCase(); + name = name.replaceAll(StringUtils.BLANK,StringUtils.EMPTY); + if (name.contains(searchText)) { FileModel model = new FileModel(node.getName(), node.getEnvPath()); if (!AlphaFineHelper.getFilterResult().contains(model)) { AlphaFineHelper.checkCancel(); filterModelList.add(model); } } - } } } diff --git a/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/search/manager/impl/FileSearchManagerTest.java b/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/search/manager/impl/FileSearchManagerTest.java new file mode 100644 index 000000000..093fb533c --- /dev/null +++ b/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/search/manager/impl/FileSearchManagerTest.java @@ -0,0 +1,79 @@ +package com.fr.design.mainframe.alphafine.search.manager.impl; + +import com.fr.base.FRContext; +import com.fr.base.extension.FileExtension; +import com.fr.design.DesignerEnvManager; +import com.fr.design.actions.help.alphafine.AlphaFineConfigManager; +import com.fr.design.mainframe.alphafine.AlphaFineHelper; +import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel; +import com.fr.design.mainframe.alphafine.model.SearchResult; +import com.fr.file.filetree.FileNode; +import com.fr.invoke.Reflect; +import com.fr.stable.project.ProjectConstants; +import com.fr.web.core.SessionPoolManager; +import com.fr.web.utils.WebUtils; +import org.easymock.EasyMock; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.api.easymock.PowerMock; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor; +import org.powermock.modules.junit4.PowerMockRunner; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.Assert.*; + +/** + * @author Yyming + * @version 10.0 + * Created by Yyming on 2020/9/15 + */ +@RunWith(PowerMockRunner.class) +@PrepareForTest({AlphaFineHelper.class,DesignerEnvManager.class}) +@SuppressStaticInitializationFor("com.fr.design.mainframe.alphafine.AlphaFineHelper") +public class FileSearchManagerTest { + + @Test + public void doSearch() { + String searchText = "workb"; + FileSearchManager instance = FileSearchManager.getInstance(); + FileNode fileNode1 = EasyMock.createMock(FileNode.class); + FileNode fileNode2 = EasyMock.createMock(FileNode.class); + EasyMock.expect(fileNode1.getName()).andReturn("workbook").anyTimes(); + EasyMock.expect(fileNode2.getName()).andReturn("work book").anyTimes(); + EasyMock.expect(fileNode1.getEnvPath()).andReturn("").anyTimes(); + EasyMock.expect(fileNode2.getEnvPath()).andReturn("").anyTimes(); + EasyMock.replay(fileNode1,fileNode2); + FileNode[] fileNodes = { fileNode1, fileNode2 }; + Reflect.on(instance).set("fileNodes",fileNodes); + + AlphaFineConfigManager configManager = EasyMock.createMock(AlphaFineConfigManager.class); + EasyMock.expect(configManager.isContainTemplate()).andReturn(true).anyTimes(); + EasyMock.replay(configManager); + + DesignerEnvManager manager = EasyMock.createMock(DesignerEnvManager.class); + EasyMock.expect(manager.getAlphaFineConfigManager()).andReturn(configManager).anyTimes(); + EasyMock.replay(manager); + PowerMock.mockStatic(DesignerEnvManager.class); + DesignerEnvManager.getEnvManager(); + PowerMock.expectLastCall().andReturn(manager).anyTimes(); + PowerMock.replay(DesignerEnvManager.class); + + List list = new ArrayList<>(); + PowerMock.mockStatic(AlphaFineHelper.class); + AlphaFineHelper.getFilterResult(); + PowerMock.expectLastCall().andReturn(list).anyTimes(); + AlphaFineHelper.findFolderName(""); + PowerMock.expectLastCall().andReturn("").anyTimes(); + AlphaFineHelper.checkCancel(); + PowerMock.expectLastCall().andVoid().anyTimes(); + PowerMock.replay(AlphaFineHelper.class); + + SearchResult alphaCellModels = new SearchResult(); + Reflect.on(instance).set("filterModelList",alphaCellModels); + Reflect.on(instance).call("doSearch",searchText); + assertEquals(alphaCellModels.size(),2); + } +} \ No newline at end of file