git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorRendek Róbert <robert.rendek@userrendszerhaz.hu>
Fri, 13 Oct 2017 15:01:16 +0000 (15:01 +0000)
committerRendek Róbert <robert.rendek@userrendszerhaz.hu>
Fri, 13 Oct 2017 15:01:16 +0000 (15:01 +0000)
server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioClipEventDispatcher.java
server/user.jobengine.osgi.commons/src/user/commons/nexio/api/Mediabase.java
server/user.jobengine.osgi.commons/src/user/commons/nexio/api/MediabaseImpl.java

index 262d6bba327e3815bcc1d867e17a2a478657dffe..62d090f51b341039f584f53702b6a5279113b051 100644 (file)
@@ -98,7 +98,7 @@ public class NexioClipEventDispatcher implements ClipEventListener {
                        //nexio init\r
                        this.controller = new Controller(NEXIO_HOST);\r
                        this.controller.connect();\r
-                       this.controller.getMediabase().getMediaListener().addClipEventListener(this);\r
+                       //this.controller.getMediabase().getMediaListener().addClipEventListener(this);\r
                        logger.info("NexioClipEventDispatcher nexio server is connected.");\r
 \r
                        this.progressListenerList = new EventListenerList();\r
@@ -109,18 +109,21 @@ public class NexioClipEventDispatcher implements ClipEventListener {
                        //load clips into mongo\r
 \r
                        Thread importThread = new Thread(new Runnable() {\r
-\r
                                @Override\r
                                public void run() {\r
                                        try {\r
+                                               //1. kezdeti masolas\r
                                                copyClipsIntoMongo();\r
+                                               //2. esemeny feliratkozas\r
+                                               NexioClipEventDispatcher.this.controller.getMediabase().startMediaListener();\r
+                                               NexioClipEventDispatcher.this.controller.getMediabase().getMediaListener().addClipEventListener(NexioClipEventDispatcher.this);\r
                                        } catch (Exception e) {\r
                                                logger.catching(e);\r
                                        }\r
                                }\r
                        });\r
-\r
                        importThread.start();\r
+                       \r
 \r
                } catch (Exception exc) {\r
                        logger.error("", exc);\r
@@ -138,9 +141,19 @@ public class NexioClipEventDispatcher implements ClipEventListener {
                        if (evt.getEventType() == ClipEventType.CLIP_ADDED) {\r
                                //                              if (isValidClip(evt.getClip())) {\r
                                BasicDBObject jsClip = convertClipToJSON(evt.getClip());\r
-                               //cache???\r
-                               Map<String, BasicDBObject> mongoClips = loadClipsFromMongo();\r
-                               saveClipIntoMongo(jsClip, mongoClips);\r
+                               \r
+                               String fileName = jsClip.getString(LONGNAMEID);\r
+                               if(fileName != null && !"".equals(fileName)){\r
+                                       logger.debug("clipEventPerformed clip: {} {}", evt.getClip().getId(), fileName);\r
+                                       //cache???\r
+                                       \r
+                                       HashMap<String, BasicDBObject> clipsForId = new HashMap<String, BasicDBObject>();\r
+                                       Map<String, BasicDBObject> clipsForXID = loadClipsFromMongo(clipsForId);\r
+                                       saveClipIntoMongo(jsClip, clipsForXID, clipsForId);     \r
+                               }else{\r
+                                       logger.debug("clipEventPerformed clip: {}", evt.getClip() == null ? "null" : evt.getClip().getId());\r
+                               }\r
+                               \r
                                //                              }\r
                        } else if (evt.getEventType() == ClipEventType.CLIP_DELETED) {\r
                                BasicDBObject jsClip = new BasicDBObject();\r
@@ -239,10 +252,20 @@ public class NexioClipEventDispatcher implements ClipEventListener {
                Map<String, BasicDBObject> emptyMap = new HashMap<String, BasicDBObject>();\r
                Iterator<Clip> clips = controller.getMediabase().getClips();\r
                while (clips.hasNext()) {\r
-                       Clip clip = clips.next();\r
-                       BasicDBObject jsonClip = convertClipToJSON(clip);\r
-                       logger.debug("Found NEXIO clip: {} {}", clip.getId(), clip.getXid());\r
-                       this.saveClipIntoMongo(jsonClip, emptyMap);\r
+                       Clip clip = null;\r
+                       try{\r
+                               clip = clips.next();\r
+                               BasicDBObject jsonClip = convertClipToJSON(clip);\r
+                               String fileName = jsonClip.getString(LONGNAMEID);\r
+                               if(fileName != null && !"".equals(fileName)){\r
+                                       logger.debug("Found NEXIO clip: {} {}", clip.getId(), fileName);        //clip.getXid() hibat dob\r
+                                       this.saveClipIntoMongo(jsonClip, emptyMap, emptyMap);\r
+                               }else{\r
+                                       logger.debug("Found NEXIO clip: {} XID IS MISSING!!", clip.getId());\r
+                               }\r
+                       }catch(Exception e){\r
+                               logger.error("", e);\r
+                       }\r
                }\r
                logger.info("NEXIO metadata import completed.");\r
        }\r
@@ -305,15 +328,19 @@ public class NexioClipEventDispatcher implements ClipEventListener {
                return ret;\r
        }\r
 \r
-       private Map<String, BasicDBObject> loadClipsFromMongo() {\r
+       private Map<String, BasicDBObject> loadClipsFromMongo(Map<String, BasicDBObject> clipsForId) {\r
                Map<String, BasicDBObject> result = new HashMap<>();\r
                DBCollection collection = db.getCollection(NexioClipEventDispatcher.CLIP_COLLECTION_NAME);\r
                DBCursor find = collection.find();\r
                if (find.hasNext()) {\r
                        List<BasicDBObject> clips = ListUtils.cast(find.toArray());\r
                        result = ListUtils.map(clips, item -> item.getString(LONGNAMEID));\r
-                       for (BasicDBObject clip : clips)\r
+                       for (BasicDBObject clip : clips){\r
                                result.put(clip.getString(LONGNAMEID), clip);\r
+                               if(clipsForId != null){\r
+                                       clipsForId.put(clip.getString(ID), clip);\r
+                               }\r
+                       }\r
                }\r
                return result;\r
        }\r
@@ -363,18 +390,25 @@ public class NexioClipEventDispatcher implements ClipEventListener {
        }\r
        */\r
 \r
-       private void saveClipIntoMongo(BasicDBObject clip, Map<String, BasicDBObject> localClips) {\r
+       private void saveClipIntoMongo(BasicDBObject clip, Map<String, BasicDBObject> clipsForXID,  Map<String, BasicDBObject> clipsForID) {\r
                DBCollection collection = db.getCollection(CLIP_COLLECTION_NAME);\r
-               String name = clip.getString(LONGNAMEID);\r
-               BasicDBObject localClip = localClips.get(name);\r
-               if (localClip == null) {\r
+               String xid = clip.getString(LONGNAMEID);\r
+               String id = clip.getString(ID);\r
+               \r
+               BasicDBObject clipForXID = clipsForXID.get(xid);\r
+               BasicDBObject clipForID = clipsForID.get(id);\r
+               \r
+               //rename-nel a clipForXID null lesz de a clipForID nem ezert nem kell create \r
+               if (clipForXID == null && clipForID == null) {\r
                        collection.save(clip);\r
                        onCreate(clip);\r
                } else {\r
-                       clip.put("_id", localClip.get("_id"));\r
-                       if (!clip.equals(localClip)) {\r
-                               collection.save(clip);\r
-                               onUpdate(clip);\r
+                       if(clipForID != null){\r
+                               clip.put("_id", clipForID.get("_id"));\r
+                               if (!clip.equals(clipForID)) {\r
+                                       collection.save(clip);\r
+                                       onUpdate(clip);\r
+                               }\r
                        }\r
                }\r
        }\r
index d16c3bbdec834872fedda30eaa72afe230af3c5a..a5f8a6e74d7f9b555e682b881af908710426b04f 100644 (file)
@@ -14,5 +14,8 @@ public interface Mediabase {
 
        public MediaListener getMediaListener();
        
+       public void startMediaListener();
+       
        public NexioServerProtocol getProtocol();
+       
 }
index 67a36a4a636e0975cd2550b7ecc71b058959e500..801e12a7abb33b52b5e8fa2ce18d9b18ce307d7b 100644 (file)
@@ -16,9 +16,21 @@ class MediabaseImpl implements Mediabase {
        //KONSTRUKTOR
        public MediabaseImpl(NexioServerProtocol protocol) {
                this.protocol = protocol;
-               this.mediaListener = new MediaListener(this, protocol.getConnection().getHost(), protocol.getConnection().getPort());
        }
 
+       public MediabaseImpl(NexioServerProtocol protocol, boolean startMediaListener) {
+               this.protocol = protocol;
+               if(startMediaListener){
+                       this.mediaListener = new MediaListener(this, protocol.getConnection().getHost(), protocol.getConnection().getPort());   
+               }
+       }
+
+       public void startMediaListener(){
+               if(this.mediaListener == null){
+                       this.mediaListener = new MediaListener(this, protocol.getConnection().getHost(), protocol.getConnection().getPort());
+               }
+       }
+       
        @Override
        public Clip getClip(Id id) throws IOException, ProtocolException {
                if (id == null) {