Browse Source

REPORT-6000 搜索性能优化

XiaXiang 8 years ago
parent
commit
7d1955a17c
  1. 7
      designer/src/com/fr/design/mainframe/alphafine/AlphaFineConstants.java
  2. 8
      designer/src/com/fr/design/mainframe/alphafine/AlphaFineHelper.java
  3. 8
      designer/src/com/fr/design/mainframe/alphafine/cell/CellModelHelper.java
  4. 77
      designer/src/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java
  5. 58
      designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java
  6. 6
      designer/src/com/fr/design/mainframe/alphafine/search/manager/fun/AlphaFineSearchProvider.java
  7. 10
      designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/ActionSearchManager.java
  8. 9
      designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java
  9. 104
      designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java
  10. 16
      designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java
  11. 32
      designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java
  12. 18
      designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java

7
designer/src/com/fr/design/mainframe/alphafine/AlphaFineConstants.java

@ -70,9 +70,10 @@ public class AlphaFineConstants {
public static final String PLUGIN_SEARCH_URL = SiteCenter.getInstance().acquireUrlByKind("plugin.searchAPI");
public static final String PLUGIN_URL = SiteCenter.getInstance().acquireUrlByKind("af.plugin");
public static final String PLUGIN_URL = SiteCenter.getInstance().acquireUrlByKind("af.pluginInfo");
public static final String REUSE_URL = SiteCenter.getInstance().acquireUrlByKind("af.reuseInfo");
public static final String REUSE_URL = SiteCenter.getInstance().acquireUrlByKind("af.reuse");
public static final String DOCUMENT_DOC_URL = SiteCenter.getInstance().acquireUrlByKind("af.doc_view");
@ -87,4 +88,6 @@ public class AlphaFineConstants {
public static final String SEARCH_API = SiteCenter.getInstance().acquireUrlByKind("af.cloud_search");
}

8
designer/src/com/fr/design/mainframe/alphafine/AlphaFineHelper.java

@ -7,8 +7,8 @@ import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel;
import com.fr.design.mainframe.alphafine.cell.model.NoResultModel;
import com.fr.design.mainframe.alphafine.component.AlphaFineDialog;
import com.fr.design.mainframe.alphafine.model.SearchResult;
import com.fr.design.mainframe.alphafine.search.manager.RecentSearchManager;
import com.fr.design.mainframe.alphafine.search.manager.RecommendSearchManager;
import com.fr.design.mainframe.alphafine.search.manager.impl.RecentSearchManager;
import com.fr.design.mainframe.alphafine.search.manager.impl.RecommendSearchManager;
import com.fr.general.Inter;
import com.fr.general.ProcessCanceledException;
import com.fr.stable.StringUtils;
@ -89,8 +89,8 @@ public class AlphaFineHelper {
}
public static List<AlphaCellModel> getFilterResult() {
List<AlphaCellModel> recentList = RecentSearchManager.getRecentSearchManger().getRecentModelList();
List<AlphaCellModel> recommendList = RecommendSearchManager.getRecommendSearchManager().getRecommendModelList();
List<AlphaCellModel> recentList = RecentSearchManager.getInstance().getRecentModelList();
List<AlphaCellModel> recommendList = RecommendSearchManager.getInstance().getRecommendModelList();
SearchResult filterResult = new SearchResult();
filterResult.addAll(recentList);
filterResult.addAll(recommendList);

8
designer/src/com/fr/design/mainframe/alphafine/cell/CellModelHelper.java

@ -2,10 +2,10 @@ package com.fr.design.mainframe.alphafine.cell;
import com.fr.design.mainframe.alphafine.CellType;
import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel;
import com.fr.design.mainframe.alphafine.search.manager.ActionSearchManager;
import com.fr.design.mainframe.alphafine.search.manager.DocumentSearchManager;
import com.fr.design.mainframe.alphafine.search.manager.FileSearchManager;
import com.fr.design.mainframe.alphafine.search.manager.PluginSearchManager;
import com.fr.design.mainframe.alphafine.search.manager.impl.ActionSearchManager;
import com.fr.design.mainframe.alphafine.search.manager.impl.DocumentSearchManager;
import com.fr.design.mainframe.alphafine.search.manager.impl.FileSearchManager;
import com.fr.design.mainframe.alphafine.search.manager.impl.PluginSearchManager;
import com.fr.json.JSONObject;
/**

77
designer/src/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java

@ -1,53 +1,48 @@
package com.fr.design.mainframe.alphafine.cell.model;
import com.fr.base.FRContext;
import com.fr.design.extra.WebViewDlgHelper;
import com.fr.design.mainframe.alphafine.AlphaFineConstants;
import com.fr.design.mainframe.alphafine.CellType;
import com.fr.env.RemoteEnv;
import com.fr.general.FRLogger;
import com.fr.json.JSONException;
import com.fr.json.JSONObject;
import java.awt.*;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import com.fr.stable.StringUtils;
/**
* Created by XiaXiang on 2017/4/20.
*/
public class PluginModel extends AlphaCellModel {
private static final String PLUGIN_INFORMATION_URL = "http://shop.finereport.com/ShopServer?pg=plugin&pid=";
private static final String REUSE_INFORMATION_URL = "http://shop.finereport.com/reuses/";
private String pluginUrl;
private String imageUrl;
private String version;
private String jartime;
private String link;
private String informationUrl;
private int pluginId;
private String pluginId;
private int id;
private int price;
public PluginModel(String name, String content, String imageUrl, String version, String jartime, String link, CellType type, int price, int pluginId, int serchCount) {
this(name, content, imageUrl, version, jartime, link, type, price, pluginId);
public PluginModel(String name, String content, String imageUrl, String version, String jartime, String link, String pluginId, CellType type, int price, int id, int serchCount) {
this(name, content, imageUrl, version, jartime, link, pluginId, type, price, id);
setSearchCount(serchCount);
}
public PluginModel(String name, String content, String imageUrl, String version, String jartime, String link, CellType type, int price, int pluginId) {
public PluginModel(String name, String content, String imageUrl, String version, String jartime, String link, String pluginId, CellType type, int price, int id) {
super(name, content);
this.link = link;
setType(type);
this.pluginId = pluginId;
if (getType() == CellType.PLUGIN) {
this.pluginUrl = AlphaFineConstants.PLUGIN_URL + pluginId;
this.informationUrl = PLUGIN_INFORMATION_URL + this.pluginId;
} else {
this.pluginUrl = AlphaFineConstants.REUSE_URL + pluginId;
this.informationUrl = REUSE_INFORMATION_URL + this.pluginId;
}
this.id = id;
this.imageUrl = imageUrl;
this.jartime = jartime;
this.version = version;
this.price = price;
this.pluginId = pluginId;
if (getType() == CellType.PLUGIN) {
this.informationUrl = AlphaFineConstants.PLUGIN_URL + id;
} else {
this.informationUrl = AlphaFineConstants.REUSE_URL + id;
}
}
public String getImageUrl() {
@ -58,14 +53,6 @@ public class PluginModel extends AlphaCellModel {
this.imageUrl = imageUrl;
}
public String getPluginUrl() {
return pluginUrl;
}
public void setPluginUrl(String pluginUrl) {
this.pluginUrl = pluginUrl;
}
public String getVersion() {
return version;
}
@ -103,7 +90,7 @@ public class PluginModel extends AlphaCellModel {
JSONObject object = JSONObject.create();
try {
JSONObject modelObject = JSONObject.create();
modelObject.put("name", getName()).put("description", getContent()).put("pic", getImageUrl()).put("version", getVersion()).put("jartime", getJartime()).put("type", getType().getTypeValue()).put("price", getPrice()).put("id", getPluginId()).put("link", getLink()).put("searchCount", getSearchCount());
modelObject.put("name", getName()).put("description", getContent()).put("pic", getImageUrl()).put("version", getVersion()).put("jartime", getJartime()).put("id", getId()).put("pluginid", getPluginId()).put("type", getType().getTypeValue()).put("price", getPrice()).put("link", getLink()).put("searchCount", getSearchCount());
object.put("result", modelObject).put("cellType", getType().getTypeValue());
} catch (JSONException e) {
FRLogger.getLogger().error(e.getMessage());
@ -119,16 +106,12 @@ public class PluginModel extends AlphaCellModel {
@Override
public void doAction() {
try {
Desktop.getDesktop().browse(new URI(getPluginUrl()));
} catch (IOException e) {
FRLogger.getLogger().error(e.getMessage());
} catch (URISyntaxException e) {
FRLogger.getLogger().error(e.getMessage());
if (StringUtils.isBlank(this.pluginId) || FRContext.getCurrentEnv() instanceof RemoteEnv) {
return;
}
WebViewDlgHelper.showPluginInStore(getName(), "[" + ModelToJson().optString("result") + "]");
}
@Override
public boolean equals(Object o) {
if (this == o) {
@ -139,21 +122,21 @@ public class PluginModel extends AlphaCellModel {
}
PluginModel that = (PluginModel) o;
return pluginUrl != null ? pluginUrl.equals(that.pluginUrl) : that.pluginUrl == null;
return pluginId != null ? pluginId.equals(that.pluginId) : that.pluginId == null;
}
@Override
public int hashCode() {
return pluginUrl != null ? pluginUrl.hashCode() : 0;
return pluginId != null ? pluginId.hashCode() : 0;
}
public int getPluginId() {
return pluginId;
public int getId() {
return id;
}
public void setPluginId(int pluginId) {
this.pluginId = pluginId;
public void setId(int id) {
this.id = id;
}
public String getInformationUrl() {
@ -163,4 +146,12 @@ public class PluginModel extends AlphaCellModel {
public void setInformationUrl(String informationUrl) {
this.informationUrl = informationUrl;
}
public String getPluginId() {
return pluginId;
}
public void setPluginId(String pluginId) {
this.pluginId = pluginId;
}
}

58
designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java

@ -23,12 +23,12 @@ import com.fr.design.mainframe.alphafine.preview.DocumentPreviewPane;
import com.fr.design.mainframe.alphafine.preview.FilePreviewPane;
import com.fr.design.mainframe.alphafine.preview.NoResultPane;
import com.fr.design.mainframe.alphafine.preview.PluginPreviewPane;
import com.fr.design.mainframe.alphafine.search.manager.ActionSearchManager;
import com.fr.design.mainframe.alphafine.search.manager.DocumentSearchManager;
import com.fr.design.mainframe.alphafine.search.manager.FileSearchManager;
import com.fr.design.mainframe.alphafine.search.manager.PluginSearchManager;
import com.fr.design.mainframe.alphafine.search.manager.RecentSearchManager;
import com.fr.design.mainframe.alphafine.search.manager.RecommendSearchManager;
import com.fr.design.mainframe.alphafine.search.manager.impl.ActionSearchManager;
import com.fr.design.mainframe.alphafine.search.manager.impl.DocumentSearchManager;
import com.fr.design.mainframe.alphafine.search.manager.impl.FileSearchManager;
import com.fr.design.mainframe.alphafine.search.manager.impl.PluginSearchManager;
import com.fr.design.mainframe.alphafine.search.manager.impl.RecentSearchManager;
import com.fr.design.mainframe.alphafine.search.manager.impl.RecommendSearchManager;
import com.fr.form.main.Form;
import com.fr.form.main.FormIO;
import com.fr.general.ComparatorUtils;
@ -445,47 +445,35 @@ public class AlphaFineDialog extends UIDialog {
}
private void buildDocumentList(final String searchText) {
SearchResult documentModelList = DocumentSearchManager.getDocumentSearchManager().getLessSearchResult(searchText);
for (AlphaCellModel object : documentModelList) {
searchListModel.addElement(object);
}
addSearchResult(DocumentSearchManager.getInstance().getLessSearchResult(searchText));
}
private void buildFileList(final String searchText) {
SearchResult fileModelList = FileSearchManager.getFileSearchManager().getLessSearchResult(searchText);
for (AlphaCellModel object : fileModelList) {
AlphaFineHelper.checkCancel();
searchListModel.addElement(object);
}
addSearchResult(FileSearchManager.getInstance().getLessSearchResult(searchText));
}
private void buildActionList(final String searchText) {
SearchResult actionModelList = ActionSearchManager.getActionSearchManager().getLessSearchResult(searchText);
for (AlphaCellModel object : actionModelList) {
searchListModel.addElement(object);
}
addSearchResult(ActionSearchManager.getInstance().getLessSearchResult(searchText));
}
private void buildPluginList(final String searchText) {
SearchResult pluginModelList = PluginSearchManager.getPluginSearchManager().getLessSearchResult(searchText);
for (AlphaCellModel object : pluginModelList) {
searchListModel.addElement(object);
}
addSearchResult(PluginSearchManager.getInstance().getLessSearchResult(searchText));
}
private void buildRecommendList(final String searchText) {
SearchResult recommendModelList = RecommendSearchManager.getRecommendSearchManager().getLessSearchResult(searchText);
for (AlphaCellModel object : recommendModelList) {
searchListModel.addElement(object);
}
addSearchResult(RecommendSearchManager.getInstance().getLessSearchResult(searchText));
}
private void buildRecentList(final String searchText) {
SearchResult recentModelList = RecentSearchManager.getRecentSearchManger().getLessSearchResult(searchText);
for (AlphaCellModel object : recentModelList) {
addSearchResult(RecentSearchManager.getInstance().getLessSearchResult(searchText));
}
private synchronized void addSearchResult(SearchResult searchResult) {
for (AlphaCellModel object : searchResult) {
AlphaFineHelper.checkCancel();
searchListModel.addElement(object);
}
}
/**
@ -758,7 +746,7 @@ public class AlphaFineDialog extends UIDialog {
* @param cellModel
*/
private void saveLocalHistory(AlphaCellModel cellModel) {
RecentSearchManager recentSearchManager = RecentSearchManager.getRecentSearchManger();
RecentSearchManager recentSearchManager = RecentSearchManager.getInstance();
recentSearchManager.addRecentModel(storeText, cellModel);
recentSearchManager.saveXMLFile();
sendDataToServer(storeText, cellModel);
@ -824,16 +812,16 @@ public class AlphaFineDialog extends UIDialog {
SearchResult moreResult;
switch (selectedValue.getContentType()) {
case PLUGIN:
moreResult = PluginSearchManager.getPluginSearchManager().getMoreSearchResult();
moreResult = PluginSearchManager.getInstance().getMoreSearchResult(searchTextField.getText());
break;
case DOCUMENT:
moreResult = DocumentSearchManager.getDocumentSearchManager().getMoreSearchResult();
moreResult = DocumentSearchManager.getInstance().getMoreSearchResult(searchTextField.getText());
break;
case FILE:
moreResult = FileSearchManager.getFileSearchManager().getMoreSearchResult();
moreResult = FileSearchManager.getInstance().getMoreSearchResult(searchTextField.getText());
break;
case ACTION:
moreResult = ActionSearchManager.getActionSearchManager().getMoreSearchResult();
moreResult = ActionSearchManager.getInstance().getMoreSearchResult(searchTextField.getText());
break;
default:
moreResult = new SearchResult();

6
designer/src/com/fr/design/mainframe/alphafine/search/manager/AlphaFineSearchProcessor.java → designer/src/com/fr/design/mainframe/alphafine/search/manager/fun/AlphaFineSearchProvider.java

@ -1,11 +1,11 @@
package com.fr.design.mainframe.alphafine.search.manager;
package com.fr.design.mainframe.alphafine.search.manager.fun;
import com.fr.design.mainframe.alphafine.model.SearchResult;
/**
* Created by XiaXiang on 2017/3/27.
*/
public interface AlphaFineSearchProcessor {
public interface AlphaFineSearchProvider {
/**
* 获取默认显示条数
*
@ -19,5 +19,5 @@ public interface AlphaFineSearchProcessor {
*
* @return
*/
SearchResult getMoreSearchResult();
SearchResult getMoreSearchResult(String searchText);
}

10
designer/src/com/fr/design/mainframe/alphafine/search/manager/ActionSearchManager.java → designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/ActionSearchManager.java

@ -1,4 +1,4 @@
package com.fr.design.mainframe.alphafine.search.manager;
package com.fr.design.mainframe.alphafine.search.manager.impl;
import com.fr.design.DesignerEnvManager;
import com.fr.design.mainframe.alphafine.AlphaFineConstants;
@ -8,6 +8,7 @@ import com.fr.design.mainframe.alphafine.cell.model.ActionModel;
import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel;
import com.fr.design.mainframe.alphafine.cell.model.MoreModel;
import com.fr.design.mainframe.alphafine.model.SearchResult;
import com.fr.design.mainframe.alphafine.search.manager.fun.AlphaFineSearchProvider;
import com.fr.design.mainframe.toolbar.UpdateActionManager;
import com.fr.design.mainframe.toolbar.UpdateActionModel;
import com.fr.general.ComparatorUtils;
@ -20,13 +21,13 @@ import java.util.List;
/**
* Created by XiaXiang on 2017/3/27.
*/
public class ActionSearchManager implements AlphaFineSearchProcessor {
public class ActionSearchManager implements AlphaFineSearchProvider {
private static ActionSearchManager actionSearchManager = null;
private SearchResult filterModelList;
private SearchResult lessModelList;
private SearchResult moreModelList;
public synchronized static ActionSearchManager getActionSearchManager() {
public synchronized static ActionSearchManager getInstance() {
if (actionSearchManager == null) {
actionSearchManager = new ActionSearchManager();
}
@ -63,6 +64,7 @@ public class ActionSearchManager implements AlphaFineSearchProcessor {
if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isContainAction()) {
List<UpdateActionModel> updateActions = UpdateActionManager.getUpdateActionManager().getUpdateActions();
for (UpdateActionModel updateActionModel : updateActions) {
AlphaFineHelper.checkCancel();
if (StringUtils.isNotBlank(updateActionModel.getSearchKey())) {
if (updateActionModel.getSearchKey().contains(searchText) && updateActionModel.getAction().isEnabled()) {
filterModelList.add(new ActionModel(updateActionModel.getActionName(), updateActionModel.getParentName(), updateActionModel.getAction()));
@ -91,7 +93,7 @@ public class ActionSearchManager implements AlphaFineSearchProcessor {
}
@Override
public SearchResult getMoreSearchResult() {
public SearchResult getMoreSearchResult(String searchText) {
return moreModelList;
}
}

9
designer/src/com/fr/design/mainframe/alphafine/search/manager/DocumentSearchManager.java → designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java

@ -1,4 +1,4 @@
package com.fr.design.mainframe.alphafine.search.manager;
package com.fr.design.mainframe.alphafine.search.manager.impl;
import com.fr.design.DesignerEnvManager;
import com.fr.design.mainframe.alphafine.AlphaFineConstants;
@ -7,6 +7,7 @@ import com.fr.design.mainframe.alphafine.CellType;
import com.fr.design.mainframe.alphafine.cell.model.DocumentModel;
import com.fr.design.mainframe.alphafine.cell.model.MoreModel;
import com.fr.design.mainframe.alphafine.model.SearchResult;
import com.fr.design.mainframe.alphafine.search.manager.fun.AlphaFineSearchProvider;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import com.fr.general.http.HttpClient;
@ -18,12 +19,12 @@ import com.fr.stable.StringUtils;
/**
* Created by XiaXiang on 2017/3/27.
*/
public class DocumentSearchManager implements AlphaFineSearchProcessor {
public class DocumentSearchManager implements AlphaFineSearchProvider {
private static DocumentSearchManager documentSearchManager = null;
private SearchResult lessModelList;
private SearchResult moreModelList;
public synchronized static DocumentSearchManager getDocumentSearchManager() {
public synchronized static DocumentSearchManager getInstance() {
if (documentSearchManager == null) {
documentSearchManager = new DocumentSearchManager();
@ -106,7 +107,7 @@ public class DocumentSearchManager implements AlphaFineSearchProcessor {
}
@Override
public SearchResult getMoreSearchResult() {
public SearchResult getMoreSearchResult(String searchText) {
return moreModelList;
}

104
designer/src/com/fr/design/mainframe/alphafine/search/manager/FileSearchManager.java → designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java

@ -1,4 +1,4 @@
package com.fr.design.mainframe.alphafine.search.manager;
package com.fr.design.mainframe.alphafine.search.manager.impl;
import com.fr.base.Env;
import com.fr.base.FRContext;
@ -6,10 +6,10 @@ import com.fr.design.DesignerEnvManager;
import com.fr.design.mainframe.alphafine.AlphaFineConstants;
import com.fr.design.mainframe.alphafine.AlphaFineHelper;
import com.fr.design.mainframe.alphafine.CellType;
import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel;
import com.fr.design.mainframe.alphafine.cell.model.FileModel;
import com.fr.design.mainframe.alphafine.cell.model.MoreModel;
import com.fr.design.mainframe.alphafine.model.SearchResult;
import com.fr.design.mainframe.alphafine.search.manager.fun.AlphaFineSearchProvider;
import com.fr.file.filetree.FileNode;
import com.fr.general.ComparatorUtils;
import com.fr.general.FRLogger;
@ -31,7 +31,7 @@ import java.util.List;
/**
* Created by XiaXiang on 2017/3/27.
*/
public class FileSearchManager implements AlphaFineSearchProcessor {
public class FileSearchManager implements AlphaFineSearchProvider {
private static final int MARK_LENGTH = 6;
private static final String DS_NAME = "dsname=\"";
private static final String FRM_PREFIX = "k:frm ";
@ -39,13 +39,14 @@ public class FileSearchManager implements AlphaFineSearchProcessor {
private static FileSearchManager fileSearchManager = null;
private SearchResult filterModelList;
private SearchResult lessModelList;
private SearchResult moreModelList;
private List<FileNode> fileNodes = null;
//停止搜索
private boolean stopSearch = false;
//隐藏的搜索功能,可根据特殊的字符标记判断搜索分类
private boolean isContainCpt = true;
private boolean isContainFrm = true;
public synchronized static FileSearchManager getFileSearchManager() {
public synchronized static FileSearchManager getInstance() {
init();
return fileSearchManager;
}
@ -72,52 +73,66 @@ public class FileSearchManager implements AlphaFineSearchProcessor {
public synchronized SearchResult getLessSearchResult(String searchText) {
this.filterModelList = new SearchResult();
this.lessModelList = new SearchResult();
this.moreModelList = new SearchResult();
if (searchText.startsWith(FRM_PREFIX)) {
isContainCpt = false;
searchText = searchText.substring(MARK_LENGTH, searchText.length());
} else if (searchText.startsWith(CPT_PREFIX)) {
isContainFrm = false;
searchText = searchText.substring(MARK_LENGTH, searchText.length());
}
searchText = dealWithSearchText(searchText);
if (StringUtils.isBlank(searchText) || ComparatorUtils.equals(searchText, DS_NAME)) {
lessModelList.add(new MoreModel(Inter.getLocText("FR-Designer_Templates")));
return lessModelList;
}
Env env = FRContext.getCurrentEnv();
fileNodes = new ArrayList<>();
fileNodes = listTpl(env, ProjectConstants.REPORTLETS_NAME, true);
AlphaFineHelper.checkCancel();
isContainCpt = true;
isContainFrm = true;
doSearch(searchText, true, env);
if (stopSearch) {
lessModelList.add(0, new MoreModel(Inter.getLocText("FR-Designer_Templates"), Inter.getLocText("FR-Designer_AlphaFine_ShowAll"), true, CellType.FILE));
lessModelList.addAll(filterModelList.subList(0, AlphaFineConstants.SHOW_SIZE));
stopSearch = false;
return this.lessModelList;
}
if (filterModelList.isEmpty()) {
return new SearchResult();
}
lessModelList.add(0, new MoreModel(Inter.getLocText("FR-Designer_Templates"), Inter.getLocText("FR-Designer_AlphaFine_ShowAll"), false, CellType.FILE));
lessModelList.addAll(filterModelList);
return lessModelList;
}
@Override
public SearchResult getMoreSearchResult(String searchText) {
this.filterModelList = new SearchResult();
this.lessModelList = new SearchResult();
searchText = dealWithSearchText(searchText);
Env env = FRContext.getCurrentEnv();
AlphaFineHelper.checkCancel();
isContainCpt = true;
isContainFrm = true;
doSearch(searchText, false, env);
lessModelList.addAll(filterModelList.subList(AlphaFineConstants.SHOW_SIZE, filterModelList.size()));
return lessModelList;
}
private void doSearch(String searchText, boolean needMore, Env env) {
for (FileNode node : fileNodes) {
boolean isAlreadyContain = false;
String fileEnvPath = node.getEnvPath();
String filePath = StableUtils.pathJoin(env.getPath(), fileEnvPath);
isAlreadyContain = searchFile(searchText, node, isAlreadyContain);
searchFileContent(searchText, node, isAlreadyContain, filePath);
isAlreadyContain = searchFile(searchText, node, isAlreadyContain, needMore);
searchFileContent(searchText, node, isAlreadyContain, filePath, needMore);
}
SearchResult result = new SearchResult();
for (AlphaCellModel object : filterModelList) {
if (!AlphaFineHelper.getFilterResult().contains(object)) {
result.add(object);
}
}
private String dealWithSearchText(String searchText) {
if (searchText.startsWith(FRM_PREFIX)) {
isContainCpt = false;
searchText = searchText.substring(MARK_LENGTH, searchText.length());
} else if (searchText.startsWith(CPT_PREFIX)) {
isContainFrm = false;
searchText = searchText.substring(MARK_LENGTH, searchText.length());
}
if (result.isEmpty()) {
return lessModelList;
} else if (result.size() < AlphaFineConstants.SHOW_SIZE + 1) {
lessModelList.add(0, new MoreModel(Inter.getLocText("FR-Designer_Templates")));
lessModelList.addAll(result);
} else {
lessModelList.add(0, new MoreModel(Inter.getLocText("FR-Designer_Templates"), Inter.getLocText("FR-Designer_AlphaFine_ShowAll"), true, CellType.FILE));
lessModelList.addAll(result.subList(0, AlphaFineConstants.SHOW_SIZE));
moreModelList.addAll(result.subList(AlphaFineConstants.SHOW_SIZE, result.size()));
}
return this.lessModelList;
return searchText;
}
/**
@ -128,7 +143,7 @@ public class FileSearchManager implements AlphaFineSearchProcessor {
* @param isAlreadyContain
* @param filePath
*/
private void searchFileContent(String searchText, FileNode node, boolean isAlreadyContain, String filePath) {
private void searchFileContent(String searchText, FileNode node, boolean isAlreadyContain, String filePath, boolean needMore) {
if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isContainFileContent()) {
try {
@ -146,7 +161,12 @@ public class FileSearchManager implements AlphaFineSearchProcessor {
}
if (isFoundInContent && !isAlreadyContain) {
FileModel model = new FileModel(node.getName(), node.getEnvPath());
this.filterModelList.add(model);
if (!AlphaFineHelper.getFilterResult().contains(model)) {
filterModelList.add(model);
}
if (this.filterModelList.size() > AlphaFineConstants.SHOW_SIZE && needMore) {
stopSearch = true;
}
}
isr.close();
reader.close();
@ -166,22 +186,22 @@ public class FileSearchManager implements AlphaFineSearchProcessor {
* @param isAlreadyContain
* @return
*/
private boolean searchFile(String searchText, FileNode node, boolean isAlreadyContain) {
private boolean searchFile(String searchText, FileNode node, boolean isAlreadyContain, boolean needMore) {
if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isContainTemplate()) {
if (node.getName().toLowerCase().contains(searchText)) {
FileModel model = new FileModel(node.getName(), node.getEnvPath());
this.filterModelList.add(model);
if (!AlphaFineHelper.getFilterResult().contains(model)) {
filterModelList.add(model);
}
if (filterModelList.size() > AlphaFineConstants.SHOW_SIZE && needMore) {
stopSearch = true;
}
isAlreadyContain = true;
}
}
return isAlreadyContain;
}
@Override
public SearchResult getMoreSearchResult() {
return moreModelList;
}
/**
* 获取工作目录下所有符合要求的模板
*

16
designer/src/com/fr/design/mainframe/alphafine/search/manager/PluginSearchManager.java → designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java

@ -1,4 +1,4 @@
package com.fr.design.mainframe.alphafine.search.manager;
package com.fr.design.mainframe.alphafine.search.manager.impl;
import com.fr.design.DesignerEnvManager;
import com.fr.design.mainframe.alphafine.AlphaFineConstants;
@ -7,6 +7,7 @@ import com.fr.design.mainframe.alphafine.CellType;
import com.fr.design.mainframe.alphafine.cell.model.MoreModel;
import com.fr.design.mainframe.alphafine.cell.model.PluginModel;
import com.fr.design.mainframe.alphafine.model.SearchResult;
import com.fr.design.mainframe.alphafine.search.manager.fun.AlphaFineSearchProvider;
import com.fr.general.ComparatorUtils;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
@ -22,13 +23,13 @@ import java.net.URLEncoder;
/**
* Created by XiaXiang on 2017/3/27.
*/
public class PluginSearchManager implements AlphaFineSearchProcessor {
public class PluginSearchManager implements AlphaFineSearchProvider {
private static PluginSearchManager pluginSearchManager = null;
private SearchResult lessModelList;
private SearchResult moreModelList;
public synchronized static PluginSearchManager getPluginSearchManager() {
public synchronized static PluginSearchManager getInstance() {
if (pluginSearchManager == null) {
pluginSearchManager = new PluginSearchManager();
}
@ -39,13 +40,14 @@ public class PluginSearchManager implements AlphaFineSearchProcessor {
private static PluginModel getPluginModel(JSONObject object, boolean isFromCloud) {
String name = object.optString("name");
String content = object.optString("description");
int pluginId = object.optInt("id");
String pluginId = object.optString("pluginid");
int id = object.optInt("id");
int searchCount = object.optInt("searchCount");
String imageUrl = null;
try {
imageUrl = isFromCloud ? AlphaFineConstants.PLUGIN_IMAGE_URL + URLEncoder.encode(object.optString("pic").toString().substring(AlphaFineConstants.PLUGIN_IMAGE_URL.length()), "utf8") : object.optString("pic");
} catch (UnsupportedEncodingException e) {
FRLogger.getLogger().error(e.getMessage());
FRLogger.getLogger().error("plugin icon error: " + e.getMessage());
}
String version = null;
String jartime = null;
@ -59,7 +61,7 @@ public class PluginSearchManager implements AlphaFineSearchProcessor {
type = CellType.REUSE;
}
int price = object.optInt("price");
return new PluginModel(name, content, imageUrl, version, jartime, link, type, price, pluginId, searchCount);
return new PluginModel(name, content, imageUrl, version, jartime, link, pluginId, type, price, id, searchCount);
}
/**
@ -137,7 +139,7 @@ public class PluginSearchManager implements AlphaFineSearchProcessor {
}
@Override
public SearchResult getMoreSearchResult() {
public SearchResult getMoreSearchResult(String searchText) {
return this.moreModelList;
}
}

32
designer/src/com/fr/design/mainframe/alphafine/search/manager/RecentSearchManager.java → designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java

@ -1,7 +1,8 @@
package com.fr.design.mainframe.alphafine.search.manager;
package com.fr.design.mainframe.alphafine.search.manager.impl;
import com.fr.base.FRContext;
import com.fr.base.Utils;
import com.fr.design.actions.UpdateAction;
import com.fr.design.mainframe.alphafine.AlphaFineConstants;
import com.fr.design.mainframe.alphafine.AlphaFineHelper;
import com.fr.design.mainframe.alphafine.CellType;
@ -10,6 +11,7 @@ import com.fr.design.mainframe.alphafine.cell.model.ActionModel;
import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel;
import com.fr.design.mainframe.alphafine.cell.model.MoreModel;
import com.fr.design.mainframe.alphafine.model.SearchResult;
import com.fr.design.mainframe.alphafine.search.manager.fun.AlphaFineSearchProvider;
import com.fr.design.mainframe.toolbar.UpdateActionManager;
import com.fr.file.XMLFileManager;
import com.fr.general.ComparatorUtils;
@ -42,9 +44,9 @@ import java.util.Map;
/**
* Created by XiaXiang on 2017/5/15.
*/
public class RecentSearchManager extends XMLFileManager implements AlphaFineSearchProcessor {
public class RecentSearchManager extends XMLFileManager implements AlphaFineSearchProvider {
private static final String XML_TAG = "AlphaFineRecent";
private static final String XML_TAG = "AFSearch_Recent";
private static final int MAX_SIZE = 3;
private static RecentSearchManager recentSearchManager = null;
private static File recentFile = null;
@ -52,7 +54,7 @@ public class RecentSearchManager extends XMLFileManager implements AlphaFineSear
private SearchResult recentModelList;
private Map<String, SearchResult> recentKVModelMap = new HashMap<>();
public synchronized static RecentSearchManager getRecentSearchManger() {
public synchronized static RecentSearchManager getInstance() {
if (recentSearchManager == null) {
recentSearchManager = new RecentSearchManager();
try {
@ -140,7 +142,7 @@ public class RecentSearchManager extends XMLFileManager implements AlphaFineSear
@Override
public String fileName() {
return "AlphaFine_Recent.xml";
return "AFSearch_Recent.xml";
}
@ -156,8 +158,16 @@ public class RecentSearchManager extends XMLFileManager implements AlphaFineSear
return recentFile;
}
private File getOldFile() {
return new File(ProductConstants.getEnvHome() + File.separator + "AlphaFine_Recent.xml");
}
private File getRecentEnvFile() {
File envFile = getRecentFile();
File oldFile = getOldFile();
if (oldFile.exists()) {
StableUtils.deleteFile(oldFile);
}
if (!envFile.exists()) {
createRecentFile(envFile);
}
@ -172,7 +182,7 @@ public class RecentSearchManager extends XMLFileManager implements AlphaFineSear
private void createRecentFile(File envFile) {
try {
FileWriter fileWriter = new FileWriter(envFile);
StringReader stringReader = new StringReader("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><AlphaFineRecent></AlphaFineRecent>");
StringReader stringReader = new StringReader("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><AFSearch_Recent></AFSearch_Recent>");
Utils.copyCharTo(stringReader, fileWriter);
stringReader.close();
fileWriter.close();
@ -233,8 +243,12 @@ public class RecentSearchManager extends XMLFileManager implements AlphaFineSear
SearchResult searchResult = new SearchResult();
while (modelIterator.hasNext()) {
AlphaCellModel model = modelIterator.next();
if (model.getType() == CellType.ACTION && !UpdateActionManager.getUpdateActionManager().isEnable(((ActionModel) model).getAction())) {
continue;
if (model.getType() == CellType.ACTION) {
UpdateAction action = UpdateActionManager.getUpdateActionManager().getActionByName(model.getName());
if (action != null) {
((ActionModel) model).setAction(action);
searchResult.add(model);
}
} else {
searchResult.add(model);
}
@ -296,7 +310,7 @@ public class RecentSearchManager extends XMLFileManager implements AlphaFineSear
}
@Override
public SearchResult getMoreSearchResult() {
public SearchResult getMoreSearchResult(String searchText) {
return new SearchResult();
}

18
designer/src/com/fr/design/mainframe/alphafine/search/manager/RecommendSearchManager.java → designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java

@ -1,7 +1,6 @@
package com.fr.design.mainframe.alphafine.search.manager;
package com.fr.design.mainframe.alphafine.search.manager.impl;
import com.fr.design.DesignerEnvManager;
import com.fr.design.mainframe.SiteCenterToken;
import com.fr.design.mainframe.alphafine.AlphaFineConstants;
import com.fr.design.mainframe.alphafine.AlphaFineHelper;
import com.fr.design.mainframe.alphafine.CellType;
@ -10,6 +9,7 @@ import com.fr.design.mainframe.alphafine.cell.model.ActionModel;
import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel;
import com.fr.design.mainframe.alphafine.cell.model.MoreModel;
import com.fr.design.mainframe.alphafine.model.SearchResult;
import com.fr.design.mainframe.alphafine.search.manager.fun.AlphaFineSearchProvider;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import com.fr.general.http.HttpClient;
@ -25,12 +25,12 @@ import java.util.List;
/**
* Created by XiaXiang on 2017/3/31.
*/
public class RecommendSearchManager implements AlphaFineSearchProcessor {
public class RecommendSearchManager implements AlphaFineSearchProvider {
private static RecommendSearchManager recommendSearchManager = null;
private SearchResult modelList;
private SearchResult recommendModelList;
public synchronized static RecommendSearchManager getRecommendSearchManager() {
public synchronized static RecommendSearchManager getInstance() {
if (recommendSearchManager == null) {
recommendSearchManager = new RecommendSearchManager();
}
@ -44,14 +44,12 @@ public class RecommendSearchManager implements AlphaFineSearchProcessor {
this.recommendModelList = new SearchResult();
if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isContainRecommend()) {
String result;
String url = AlphaFineConstants.SEARCH_API + CodeUtils.cjkEncode(searchText);
url = String.format("%s?token=%s", url, SiteCenterToken.generateToken());
HttpClient httpClient = new HttpClient(url);
HttpClient httpClient = new HttpClient(AlphaFineConstants.SEARCH_API + CodeUtils.cjkEncode(searchText));
httpClient.asGet();
if (!httpClient.isServerAlive()) {
return getNoConnectList();
}
httpClient.setTimeout(5000);
httpClient.setTimeout(3000);
result = httpClient.getResponseText();
AlphaFineHelper.checkCancel();
try {
@ -93,7 +91,7 @@ public class RecommendSearchManager implements AlphaFineSearchProcessor {
* @return
*/
private boolean alreadyContain(AlphaCellModel cellModel) {
return RecentSearchManager.getRecentSearchManger().getRecentModelList().contains(cellModel) || this.recommendModelList.contains(cellModel);
return RecentSearchManager.getInstance().getRecentModelList().contains(cellModel) || this.recommendModelList.contains(cellModel);
}
private SearchResult getNoConnectList() {
@ -104,7 +102,7 @@ public class RecommendSearchManager implements AlphaFineSearchProcessor {
}
@Override
public SearchResult getMoreSearchResult() {
public SearchResult getMoreSearchResult(String searchText) {
return new SearchResult();
}
Loading…
Cancel
Save