fixed geolocation cache in web UI
authorVictor Kirhenshtein <victor@netxms.org>
Mon, 26 Sep 2016 15:08:36 +0000 (18:08 +0300)
committerVictor Kirhenshtein <victor@netxms.org>
Mon, 26 Sep 2016 15:08:36 +0000 (18:08 +0300)
webui/webapp/OSM/src/org/netxms/ui/eclipse/osm/GeoLocationCache.java
webui/webapp/OSM/src/org/netxms/ui/eclipse/osm/LoginListener.java

index 004626d..5a5902d 100644 (file)
@@ -25,6 +25,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.widgets.Display;
 import org.netxms.base.GeoLocation;
 import org.netxms.client.NXCSession;
 import org.netxms.client.SessionListener;
@@ -32,6 +33,7 @@ import org.netxms.client.SessionNotification;
 import org.netxms.client.objects.AbstractObject;
 import org.netxms.ui.eclipse.osm.tools.Area;
 import org.netxms.ui.eclipse.osm.tools.QuadTree;
+import org.netxms.ui.eclipse.shared.ConsoleSharedData;
 
 /**
  * Cache for objects' geolocation information
@@ -44,8 +46,6 @@ public class GeoLocationCache implements SessionListener
        
        private static final int TILE_SIZE = 256;
        
-       private static GeoLocationCache instance = new GeoLocationCache();
-       
        private Map<Long, AbstractObject> objects = new HashMap<Long, AbstractObject>();
        private QuadTree<Long> locationTree = new QuadTree<Long>();
        private NXCSession session;
@@ -284,6 +284,18 @@ public class GeoLocationCache implements SessionListener
         */
        public static GeoLocationCache getInstance()
        {
-               return instance;
+          return getInstance(Display.getCurrent());
        }
+
+   /**
+    * @param display
+    * @return
+    */
+   public static GeoLocationCache getInstance(Display display)
+   {
+      GeoLocationCache instance = (GeoLocationCache)ConsoleSharedData.getProperty(display, "GeoLocationCache");
+      if (instance == null)
+         instance = new GeoLocationCache();
+      return instance;
+   }
 }
index 1a1e790..eca6576 100644 (file)
@@ -33,6 +33,6 @@ public class LoginListener implements ConsoleLoginListener
        @Override
        public void afterLogin(NXCSession session, Display display)
        {
-               GeoLocationCache.getInstance().initialize(session);
+               GeoLocationCache.getInstance(display).initialize(session);
        }
 }