diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ActionSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ActionSearchManager.java index 0956fbc18..6bf8a9185 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ActionSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ActionSearchManager.java @@ -22,16 +22,20 @@ import java.util.List; * Created by XiaXiang on 2017/3/27. */ public class ActionSearchManager implements AlphaFineSearchProvider { - private static ActionSearchManager actionSearchManager = null; + private static ActionSearchManager instance; private SearchResult filterModelList; private SearchResult lessModelList; private SearchResult moreModelList; - public synchronized static ActionSearchManager getInstance() { - if (actionSearchManager == null) { - actionSearchManager = new ActionSearchManager(); + public static ActionSearchManager getInstance() { + if (instance == null) { + synchronized (ActionSearchManager.class) { + if (instance == null) { + instance = new ActionSearchManager(); + } + } } - return actionSearchManager; + return instance; } /** diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java index 2fa777f03..a305d1341 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java @@ -8,28 +8,31 @@ 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.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.general.http.HttpClient; import com.fr.json.JSONArray; import com.fr.json.JSONException; import com.fr.json.JSONObject; +import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; /** * Created by XiaXiang on 2017/3/27. */ public class DocumentSearchManager implements AlphaFineSearchProvider { - private static DocumentSearchManager documentSearchManager = null; + private static DocumentSearchManager instance; private SearchResult lessModelList; private SearchResult moreModelList; - public synchronized static DocumentSearchManager getInstance() { - if (documentSearchManager == null) { - documentSearchManager = new DocumentSearchManager(); - + public static DocumentSearchManager getInstance() { + if (instance == null) { + synchronized (DocumentSearchManager.class) { + if (instance == null) { + instance = new DocumentSearchManager(); + } + } } - return documentSearchManager; + return instance; } /** 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 82d98f962..0427a1393 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 @@ -35,7 +35,7 @@ public class FileSearchManager implements AlphaFineSearchProvider { private static final String DS_NAME = "dsname=\""; private static final String FRM_PREFIX = "k:frm "; private static final String CPT_PREFIX = "k:cpt "; - private static FileSearchManager fileSearchManager = null; + private static FileSearchManager instance; private SearchResult filterModelList; private SearchResult lessModelList; private SearchResult moreModelList; @@ -47,15 +47,19 @@ public class FileSearchManager implements AlphaFineSearchProvider { private boolean isContainCpt = true; private boolean isContainFrm = true; - public synchronized static FileSearchManager getInstance() { - init(); - return fileSearchManager; + public static FileSearchManager getInstance() { + if (instance == null) { + synchronized (FileSearchManager.class) { + if (instance == null) { + instance = new FileSearchManager(); + } + } + } + return instance; } public synchronized static void init() { - if (fileSearchManager == null) { - fileSearchManager = new FileSearchManager(); - } + } /** @@ -114,7 +118,7 @@ public class FileSearchManager implements AlphaFineSearchProvider { moreModelList.addAll(filterModelList.subList(AlphaFineConstants.SHOW_SIZE, filterModelList.size())); return moreModelList; } - + private void doSearch(String searchText, boolean needMore) { for (FileNode node : fileNodes) { boolean isAlreadyContain = false; @@ -230,7 +234,7 @@ public class FileSearchManager implements AlphaFineSearchProvider { * @throws Exception */ private void listAll(String rootFilePath, List nodeList, boolean recurse) throws Exception { - + FileNode[] fns = FRContext.getFileNodes().list(rootFilePath); for (int i = 0; i < fns.length; i++) { FileNode fileNode = fns[i]; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java index ab3ce080d..c0d6f796a 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java @@ -9,12 +9,12 @@ 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.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.general.http.HttpClient; import com.fr.json.JSONArray; import com.fr.json.JSONException; import com.fr.json.JSONObject; +import com.fr.log.FineLoggerFactory; import com.fr.plugin.basic.version.Version; import com.fr.plugin.basic.version.VersionIntervalFactory; import com.fr.stable.StringUtils; @@ -26,20 +26,24 @@ import java.net.URLEncoder; * Created by XiaXiang on 2017/3/27. */ public class PluginSearchManager implements AlphaFineSearchProvider { - private static PluginSearchManager pluginSearchManager = null; + private static PluginSearchManager instance; private SearchResult lessModelList; private SearchResult moreModelList; - public synchronized static PluginSearchManager getInstance() { - if (pluginSearchManager == null) { - pluginSearchManager = new PluginSearchManager(); + public static PluginSearchManager getInstance() { + if (instance == null) { + synchronized (PluginSearchManager.class) { + if (instance == null) { + instance = new PluginSearchManager(); + } + } } - return pluginSearchManager; + return instance; } - private static boolean isCompatibleCurrentEnv(String envVersion){ + private static boolean isCompatibleCurrentEnv(String envVersion) { return VersionIntervalFactory.create(envVersion).contain(Version.currentEnvVersion()); } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java index 38df0fa0c..64d22b99d 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java @@ -45,7 +45,7 @@ import java.util.List; */ public class RecentSearchManager implements AlphaFineSearchProvider { private static final int MAX_SIZE = 3; - private static RecentSearchManager recentSearchManager = null; + private static RecentSearchManager instance; IndexReader indexReader = null; IndexSearcher indexSearcher = null; //索引存储路径 @@ -59,11 +59,16 @@ public class RecentSearchManager implements AlphaFineSearchProvider { private SearchResult recentModelList; private SearchResult modelList; - public synchronized static RecentSearchManager getInstance() { - if (recentSearchManager == null) { - recentSearchManager = new RecentSearchManager(); + public static RecentSearchManager getInstance() { + if (instance == null) { + synchronized (RecentSearchManager.class) { + if (instance == null) { + instance = new RecentSearchManager(); + instance.initWriter(); + } + } } - return recentSearchManager; + return instance; } @Override @@ -94,17 +99,11 @@ public class RecentSearchManager implements AlphaFineSearchProvider { * 初始化indexWriter */ private void initWriter() { - if (indexWriter == null) { - try { - directory = FSDirectory.open(new File(path)); - } catch (IOException e) { - FineLoggerFactory.getLogger().error("cannot open directory " + path); - } - try { - indexWriter = new IndexWriter(directory, config); - } catch (IOException e) { - FineLoggerFactory.getLogger().error("not privilege to write to" + path); - } + try { + directory = FSDirectory.open(new File(path)); + indexWriter = new IndexWriter(directory, config); + } catch (IOException e) { + FineLoggerFactory.getLogger().error(e.getMessage()); } } @@ -113,20 +112,18 @@ public class RecentSearchManager implements AlphaFineSearchProvider { * 初始化indexReader */ private void initReader() { - if (indexReader == null) { - try { - directory = FSDirectory.open(new File(path)); - indexReader = DirectoryReader.open(directory); - } catch (IOException e) { - FineLoggerFactory.getLogger().error("not privilege to read " + path); - } + try { + indexWriter.close(); + indexReader = DirectoryReader.open(directory); indexSearcher = new IndexSearcher(indexReader); + } catch (IOException e) { + FineLoggerFactory.getLogger().error(e.getMessage()); } - } /** * 添加模型 + * * @param searchKey * @param cellModel * @param searchCount @@ -146,6 +143,7 @@ public class RecentSearchManager implements AlphaFineSearchProvider { /** * 写文档,建立索引 + * * @param doc */ private void writeDoc(Document doc) { @@ -160,12 +158,14 @@ public class RecentSearchManager implements AlphaFineSearchProvider { /** * 按序搜索 + * * @param key * @return */ private synchronized SearchResult searchBySort(String key) { recentModelList = new SearchResult(); try { + initReader(); IndexSearcher searcher = new IndexSearcher(indexReader); //构建排序字段 diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java index 2dc1ee9c0..4099cadbf 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java @@ -10,12 +10,12 @@ 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.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.general.http.HttpClient; import com.fr.json.JSONArray; import com.fr.json.JSONException; import com.fr.json.JSONObject; +import com.fr.log.FineLoggerFactory; import com.fr.stable.CodeUtils; import com.fr.stable.StringUtils; @@ -26,15 +26,19 @@ import java.util.List; * Created by XiaXiang on 2017/3/31. */ public class RecommendSearchManager implements AlphaFineSearchProvider { - private static RecommendSearchManager recommendSearchManager = null; + private static RecommendSearchManager instance; private SearchResult modelList; private SearchResult recommendModelList; - public synchronized static RecommendSearchManager getInstance() { - if (recommendSearchManager == null) { - recommendSearchManager = new RecommendSearchManager(); + public static RecommendSearchManager getInstance() { + if (instance == null) { + synchronized (RecentSearchManager.class) { + if (instance == null) { + instance = new RecommendSearchManager(); + } + } } - return recommendSearchManager; + return instance; } @Override