diff --git a/designer-base/src/main/java/com/fr/file/FileNodeFILE.java b/designer-base/src/main/java/com/fr/file/FileNodeFILE.java index c77ce334f..66a3c03bd 100644 --- a/designer-base/src/main/java/com/fr/file/FileNodeFILE.java +++ b/designer-base/src/main/java/com/fr/file/FileNodeFILE.java @@ -198,7 +198,6 @@ public class FileNodeFILE implements FILE { return FRContext.getFileNodes().listWebRootFile(rootFilePath); } else { return FRContext.getFileNodes().list(rootFilePath); - } } catch (Exception e) { FRContext.getLogger().error(e.getMessage(), e); 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 diff --git a/designer-realize/src/main/java/com/fr/start/fx/FastGifImage.java b/designer-realize/src/main/java/com/fr/start/fx/FastGifImage.java index 69d74c8a4..9eb3ecef2 100644 --- a/designer-realize/src/main/java/com/fr/start/fx/FastGifImage.java +++ b/designer-realize/src/main/java/com/fr/start/fx/FastGifImage.java @@ -114,7 +114,7 @@ public class FastGifImage extends WritableImage { private static final class Animation { final WeakReference imageRef; final Timeline timeline; - final ImageLoader loader; + private ImageLoader loader; public Animation(final FastGifImage image, final ImageLoader loader) { this.loader = loader; @@ -141,6 +141,7 @@ public class FastGifImage extends WritableImage { public void stop() { timeline.stop(); + loader = null; } private void updateImage(final int frameIndex) { @@ -197,4 +198,11 @@ public class FastGifImage extends WritableImage { finishImage(new PrismImageLoader2(url, gifCount, (int) getRequestedWidth(), (int) getRequestedHeight(), isPreserveRatio(), isSmooth())); } + /** + * 销毁gif动画 + */ + public void destroy() { + animation.stop(); + } + } diff --git a/designer-realize/src/main/java/com/fr/start/fx/SplashFxWindow.java b/designer-realize/src/main/java/com/fr/start/fx/SplashFxWindow.java index 5b65ac882..e86384669 100644 --- a/designer-realize/src/main/java/com/fr/start/fx/SplashFxWindow.java +++ b/designer-realize/src/main/java/com/fr/start/fx/SplashFxWindow.java @@ -9,7 +9,6 @@ import javafx.application.Application; import javafx.application.Platform; import javafx.geometry.Rectangle2D; import javafx.scene.Scene; -import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.AnchorPane; import javafx.scene.paint.Color; @@ -51,6 +50,7 @@ public class SplashFxWindow extends Application { private Text moduleInfo; private Text thanks; + private FastGifImage image; private List listeners = new ArrayList(); private static int uiScale(int i) { @@ -84,7 +84,7 @@ public class SplashFxWindow extends Application { public void start(Stage primaryStage) { AnchorPane root = new AnchorPane(); primaryStage.initStyle(StageStyle.TRANSPARENT); - Image image = new FastGifImage(SplashContext.SPLASH_PATH, FRAME_COUNT, WINDOW_WIDTH, WINDOW_HEIGHT); + image = new FastGifImage(SplashContext.SPLASH_PATH, FRAME_COUNT, WINDOW_WIDTH, WINDOW_HEIGHT); ImageView gif = new ImageView(image); @@ -129,6 +129,7 @@ public class SplashFxWindow extends Application { public void run() { try { ((Stage) moduleInfo.getScene().getWindow()).close(); + image.destroy(); fireSplashClose(); } catch (Exception e) { FRContext.getLogger().error(e.getMessage(), e); @@ -181,8 +182,10 @@ public class SplashFxWindow extends Application { }); } + /** * 添加一个动画状态监听 + * * @param listener */ public void addSplashActionListener(SplashFxActionListener listener) {