Browse Source

Merge pull request #8941 in DESIGN/design from bugfix/10.0 to feature/10.0

* commit 'bdb7d83dbbbdf25cfe7008604919dea0c3a0c56b':
  REPORT-70681 超长文本搜索问题 同步10.0
feature/10.0
superman 3 years ago
parent
commit
8bc257cf66
  1. 11
      designer-realize/src/main/java/com/fr/design/mainframe/alphafine/AlphaFineConstants.java
  2. 59
      designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java
  3. 9
      designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ActionSearchManager.java
  4. 11
      designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java

11
designer-realize/src/main/java/com/fr/design/mainframe/alphafine/AlphaFineConstants.java

@ -48,6 +48,17 @@ public class AlphaFineConstants {
public static final int HOT_ITEMS = 6; public static final int HOT_ITEMS = 6;
/**
* 限制搜索字符长度
*/
public static final int LEN_LIMIT = 50;
/**
* 帮助文档搜索间隔ms api限制了1s之内只能搜索一次
*
*/
public static final long DOCUMENT_SEARCH_GAP = 1000;
public static final Dimension FULL_SIZE = new Dimension(680, 460); public static final Dimension FULL_SIZE = new Dimension(680, 460);

59
designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java

@ -146,6 +146,8 @@ public class AlphaFineFrame extends JFrame {
private UILabel clearLabel; private UILabel clearLabel;
private JPanel tabPane;
private CellType selectedType; private CellType selectedType;
private String beforeSearchStr = StringUtils.EMPTY; private String beforeSearchStr = StringUtils.EMPTY;
@ -365,7 +367,7 @@ public class AlphaFineFrame extends JFrame {
labelPane.add(labelContentPane); labelPane.add(labelContentPane);
labelPane.setPreferredSize(new Dimension(AlphaFineConstants.FULL_SIZE.width, 30)); labelPane.setPreferredSize(new Dimension(AlphaFineConstants.FULL_SIZE.width, 30));
JPanel tabPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 20, 10)); tabPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 20, 10));
tabPane.setBackground(Color.WHITE); tabPane.setBackground(Color.WHITE);
List<SelectedLabel> selectedLabelList = createSelectedLabelList(); List<SelectedLabel> selectedLabelList = createSelectedLabelList();
selectedType = selectedLabelList.get(0).getCellType(); selectedType = selectedLabelList.get(0).getCellType();
@ -624,6 +626,7 @@ public class AlphaFineFrame extends JFrame {
clearLabel.setVisible(true); clearLabel.setVisible(true);
SearchTooltipPopup.getInstance().show(searchTextFieldWrapperPane); SearchTooltipPopup.getInstance().show(searchTextFieldWrapperPane);
} }
tabPane.repaint();
}); });
timer.start(); timer.start();
@ -644,26 +647,56 @@ public class AlphaFineFrame extends JFrame {
beforeSearchStr = StringUtils.EMPTY; beforeSearchStr = StringUtils.EMPTY;
return; return;
} }
String lowerCaseSearchText = preProcessSearchText(searchTextField.getText().toLowerCase());
if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isNeedSegmentationCheckbox()) { if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isNeedSegmentationCheckbox()) {
dealSegmentationSearch(lowerCaseSearchText);
} else {
dealNormalSearch();
}
DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().getHistorySearch().push(searchTextField.getText());
doSearch(lowerCaseSearchText);
beforeSearchStr = searchTextField.getText();
SearchTooltipPopup.getInstance().hide();
}
/**
* 普通搜索
*/
private void dealNormalSearch() {
String searchText = preProcessSearchText(searchTextField.getText());
if (StringUtils.isEmpty(getRealSearchText(searchText))) {
segmentationResult = null;
} else {
segmentationResult = new String[]{getRealSearchText(searchText)};
}
}
/**
* 分词搜索
*/
private void dealSegmentationSearch(String lowerCaseSearchText) {
//是高级搜索 //是高级搜索
if (searchTextField.getText().toLowerCase().startsWith(ADVANCED_SEARCH_MARK)) { if (searchTextField.getText().toLowerCase().startsWith(ADVANCED_SEARCH_MARK)) {
segmentationResult = SegmentationManager.getInstance().startSegmentation(getStoreText(searchTextField.getText().toLowerCase())); segmentationResult = SegmentationManager.getInstance().startSegmentation(getStoreText(lowerCaseSearchText));
} }
//是普通搜索 //是普通搜索
else { else {
segmentationResult = SegmentationManager.getInstance().startSegmentation(searchTextField.getText().toLowerCase()); segmentationResult = SegmentationManager.getInstance().startSegmentation(lowerCaseSearchText);
} }
} else {
if (StringUtils.isEmpty(getRealSearchText(searchTextField.getText()))) {
segmentationResult = null;
} else {
segmentationResult = new String[]{getRealSearchText(searchTextField.getText())};
} }
/**
* 文本预处理 限制长度
*
* @param text
* @return
*/
private String preProcessSearchText(String text) {
if (text.length() > AlphaFineConstants.LEN_LIMIT) {
return text.substring(0, AlphaFineConstants.LEN_LIMIT);
} else {
return text;
} }
DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().getHistorySearch().push(searchTextField.getText());
doSearch(searchTextField.getText().toLowerCase());
beforeSearchStr = searchTextField.getText();
SearchTooltipPopup.getInstance().hide();
} }
private void dealWithSearchResult() { private void dealWithSearchResult() {
@ -717,7 +750,7 @@ public class AlphaFineFrame extends JFrame {
* *
*/ */
private void reSearch() { private void reSearch() {
String text = this.searchTextField.getText().toLowerCase(); String text = preProcessSearchText(this.searchTextField.getText().toLowerCase());
if (StringUtils.isEmpty(text)) { if (StringUtils.isEmpty(text)) {
return; return;
} }

9
designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ActionSearchManager.java

@ -17,7 +17,9 @@ import com.fr.json.JSONObject;
import com.fr.stable.ArrayUtils; import com.fr.stable.ArrayUtils;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* Created by XiaXiang on 2017/3/27. * Created by XiaXiang on 2017/3/27.
@ -68,12 +70,17 @@ public class ActionSearchManager implements AlphaFineSearchProvider {
return lessModelList; return lessModelList;
} }
List<UpdateActionModel> updateActions = UpdateActionManager.getUpdateActionManager().getUpdateActions(); List<UpdateActionModel> updateActions = UpdateActionManager.getUpdateActionManager().getUpdateActions();
Set<String> searchKeySet = new HashSet<>();
for (UpdateActionModel updateActionModel : updateActions) { for (UpdateActionModel updateActionModel : updateActions) {
for (int j = 0; j < searchText.length; j++) { for (int j = 0; j < searchText.length; j++) {
AlphaFineHelper.checkCancel(); AlphaFineHelper.checkCancel();
if (StringUtils.isNotBlank(updateActionModel.getSearchKey())) { if (StringUtils.isNotBlank(updateActionModel.getSearchKey())) {
if (updateActionModel.getSearchKey().contains(searchText[j]) && updateActionModel.getAction().isEnabled()) { if (updateActionModel.getSearchKey().contains(searchText[j])
&& updateActionModel.getAction().isEnabled()
// 老alphaFine就有问题 加个去重
&& !searchKeySet.contains(updateActionModel.getSearchKey())) {
filterModelList.add(new ActionModel(updateActionModel.getActionName(), updateActionModel.getParentName(), updateActionModel.getAction())); filterModelList.add(new ActionModel(updateActionModel.getActionName(), updateActionModel.getParentName(), updateActionModel.getAction()));
searchKeySet.add(updateActionModel.getSearchKey());
} }
} }
} }

11
designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java

@ -15,6 +15,7 @@ import com.fr.json.JSONException;
import com.fr.json.JSONObject; import com.fr.json.JSONObject;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.stable.ArrayUtils; import com.fr.stable.ArrayUtils;
import java.util.concurrent.TimeUnit;
/** /**
@ -67,6 +68,7 @@ public class DocumentSearchManager implements AlphaFineSearchProvider {
} }
searchResult = new SearchResult(); searchResult = new SearchResult();
for (int j = 0; j < searchText.length; j++) { for (int j = 0; j < searchText.length; j++) {
long start = System.currentTimeMillis();
String url = AlphaFineConstants.DOCUMENT_SEARCH_URL + searchText[j]; String url = AlphaFineConstants.DOCUMENT_SEARCH_URL + searchText[j];
try { try {
String result = HttpToolbox.get(url); String result = HttpToolbox.get(url);
@ -88,6 +90,15 @@ public class DocumentSearchManager implements AlphaFineSearchProvider {
} catch (Exception e) { } catch (Exception e) {
FineLoggerFactory.getLogger().error("document search error: " + e.getMessage()); FineLoggerFactory.getLogger().error("document search error: " + e.getMessage());
} }
// 计算等待时间 防止1s内搜索多次
long spentTime = (System.currentTimeMillis() - start);
long waitTime = AlphaFineConstants.DOCUMENT_SEARCH_GAP - spentTime;
if (waitTime > 0 && j != searchText.length - 1) {
try {
TimeUnit.MILLISECONDS.sleep(waitTime);
} catch (Exception ignored) {
}
}
} }
lessModelList.clear(); lessModelList.clear();
moreModelList.clear(); moreModelList.clear();

Loading…
Cancel
Save