diff --git a/designer/src/com/fr/design/mainframe/alphafine/AlphaFineConstants.java b/designer/src/com/fr/design/mainframe/alphafine/AlphaFineConstants.java index 67db552a5e..18ae549110 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/AlphaFineConstants.java +++ b/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"); + + } diff --git a/designer/src/com/fr/design/mainframe/alphafine/AlphaFineHelper.java b/designer/src/com/fr/design/mainframe/alphafine/AlphaFineHelper.java index d09a5749a6..d17c3b5012 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/AlphaFineHelper.java +++ b/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 getFilterResult() { - List recentList = RecentSearchManager.getRecentSearchManger().getRecentModelList(); - List recommendList = RecommendSearchManager.getRecommendSearchManager().getRecommendModelList(); + List recentList = RecentSearchManager.getInstance().getRecentModelList(); + List recommendList = RecommendSearchManager.getInstance().getRecommendModelList(); SearchResult filterResult = new SearchResult(); filterResult.addAll(recentList); filterResult.addAll(recommendList); diff --git a/designer/src/com/fr/design/mainframe/alphafine/cell/CellModelHelper.java b/designer/src/com/fr/design/mainframe/alphafine/cell/CellModelHelper.java index ae86cab4d4..d838f50a9d 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/cell/CellModelHelper.java +++ b/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; /** diff --git a/designer/src/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java b/designer/src/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java index 44f1bae056..44c6ae6608 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java +++ b/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; + } } diff --git a/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java b/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java index 995d2d3366..fe7b66aeca 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java +++ b/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(); diff --git a/designer/src/com/fr/design/mainframe/alphafine/search/manager/AlphaFineSearchProcessor.java b/designer/src/com/fr/design/mainframe/alphafine/search/manager/fun/AlphaFineSearchProvider.java similarity index 66% rename from designer/src/com/fr/design/mainframe/alphafine/search/manager/AlphaFineSearchProcessor.java rename to designer/src/com/fr/design/mainframe/alphafine/search/manager/fun/AlphaFineSearchProvider.java index df5b36c09f..9d29433a23 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/search/manager/AlphaFineSearchProcessor.java +++ b/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); } diff --git a/designer/src/com/fr/design/mainframe/alphafine/search/manager/ActionSearchManager.java b/designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/ActionSearchManager.java similarity index 90% rename from designer/src/com/fr/design/mainframe/alphafine/search/manager/ActionSearchManager.java rename to designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/ActionSearchManager.java index 185938ab81..0956fbc185 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/search/manager/ActionSearchManager.java +++ b/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 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; } } \ No newline at end of file diff --git a/designer/src/com/fr/design/mainframe/alphafine/search/manager/DocumentSearchManager.java b/designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java similarity index 93% rename from designer/src/com/fr/design/mainframe/alphafine/search/manager/DocumentSearchManager.java rename to designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java index 11df762762..d4611256c6 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/search/manager/DocumentSearchManager.java +++ b/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; } diff --git a/designer/src/com/fr/design/mainframe/alphafine/search/manager/FileSearchManager.java b/designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java similarity index 76% rename from designer/src/com/fr/design/mainframe/alphafine/search/manager/FileSearchManager.java rename to designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java index 8704e17767..22f4424c9f 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/search/manager/FileSearchManager.java +++ b/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 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; - } - /** * 获取工作目录下所有符合要求的模板 * diff --git a/designer/src/com/fr/design/mainframe/alphafine/search/manager/PluginSearchManager.java b/designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java similarity index 90% rename from designer/src/com/fr/design/mainframe/alphafine/search/manager/PluginSearchManager.java rename to designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java index 2ea8ba0e84..2978eee40e 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/search/manager/PluginSearchManager.java +++ b/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; } } \ No newline at end of file diff --git a/designer/src/com/fr/design/mainframe/alphafine/search/manager/RecentSearchManager.java b/designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java similarity index 89% rename from designer/src/com/fr/design/mainframe/alphafine/search/manager/RecentSearchManager.java rename to designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java index c191c0c11e..e46fafd852 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/search/manager/RecentSearchManager.java +++ b/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 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(""); + StringReader stringReader = new StringReader(""); 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(); } diff --git a/designer/src/com/fr/design/mainframe/alphafine/search/manager/RecommendSearchManager.java b/designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java similarity index 85% rename from designer/src/com/fr/design/mainframe/alphafine/search/manager/RecommendSearchManager.java rename to designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java index 552b0e0268..9bc485287c 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/search/manager/RecommendSearchManager.java +++ b/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(); }