//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
//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
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
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
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
}\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