private static final String RECORDDATE = "recorddate";\r
private static final String LONGNAMEID = "longnameid";\r
private static final String ID = "id";\r
- public static final String CLIP_COLLECTION_NAME = "nexioclips";\r
private static final String VIDEOBITRATE = "videobitrate";\r
private static final String VIDEOFORMAT = "videoformat";\r
private static final String KILLDATE = "killdate";\r
}\r
\r
private void ensureIndexes() {\r
- DBCollection collection = db.getCollection(CLIP_COLLECTION_NAME);\r
+ DBCollection collection = db.getCollection(NexioDispatcher.CLIP_COLLECTION_NAME);\r
if (collection.count() == 0)\r
collection.ensureIndex(LONGNAMEID);\r
}\r
\r
private Map<String, BasicDBObject> readClips() {\r
Map<String, BasicDBObject> result = new HashMap<>();\r
- DBCollection collection = db.getCollection(NexioDataMiner.CLIP_COLLECTION_NAME);\r
+ DBCollection collection = db.getCollection(NexioDispatcher.CLIP_COLLECTION_NAME);\r
DBCursor find = collection.find();\r
if (find.hasNext()) {\r
List<BasicDBObject> clips = ListUtils.cast(find.toArray());\r
if (localNames.isEmpty())\r
logger.debug("Nothing to remove");\r
\r
- DBCollection collection = db.getCollection(NexioDataMiner.CLIP_COLLECTION_NAME);\r
+ DBCollection collection = db.getCollection(NexioDispatcher.CLIP_COLLECTION_NAME);\r
for (String name : localNames) {\r
logger.debug("Removing {}", name);\r
\r
}\r
\r
public void reset() {\r
- db.getCollection(CLIP_COLLECTION_NAME).drop();\r
+ db.getCollection(NexioDispatcher.CLIP_COLLECTION_NAME).drop();\r
}\r
\r
@Override\r
\r
private void storeClip(BasicDBObject clip, Map<String, BasicDBObject> localClips) {\r
logger.trace("Enter");\r
- DBCollection collection = db.getCollection(CLIP_COLLECTION_NAME);\r
+ DBCollection collection = db.getCollection(NexioDispatcher.CLIP_COLLECTION_NAME);\r
String name = clip.getString(LONGNAMEID);\r
BasicDBObject localClip = localClips.get(name);\r
if (localClip == null) {\r
\r
public void transferClips() {\r
try (Connection con = getSQLConnection()) {\r
- DBCollection collection = db.getCollection(CLIP_COLLECTION_NAME);\r
+ DBCollection collection = db.getCollection(NexioDispatcher.CLIP_COLLECTION_NAME);\r
collection.drop();\r
transferClips(con, collection);\r
} catch (Exception e) {\r
package user.commons.nexio;\r
\r
import java.util.Iterator;\r
-import java.util.concurrent.ExecutorService;\r
-import java.util.concurrent.Executors;\r
\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
private static final String ID = "id";\r
private static final String VIDEO_FORMAT = "videoformat";\r
private static final String VIDEO_BITRATE = "videobitrate";\r
- private static final String FILESIZE = "filesize";\r
private static final String KILLDATE = "killdate";\r
private static final String DURATION = "duration";\r
private static final String MODIFIEDTIMESTAMP = "modifiedtimestamp";\r
private static final String EXTAGENCY = "extagency";\r
private static final String RECORDDATE = "recorddate";\r
private static final String LONGNAMEID = "longnameid";\r
- public static final String CLIP_COLLECTION_NAME = "nexioclips";\r
+ public static final String CLIP_COLLECTION_NAME = System.getProperty("jobengine.nexio.name");\r
static private final byte[] GET_SPECIAL_ID_ATTRIBUTES_REQ = { (byte) 0xC8, (byte) 0x84 };\r
static private final char[] hexArray = "0123456789ABCDEF".toCharArray();\r
- private static final ExecutorService executor = Executors.newFixedThreadPool(1);\r
\r
public static String bytesToBin(byte[] bytes) {\r
StringBuilder result = new StringBuilder();\r
return str;\r
}\r
\r
+ private boolean restartInProgress;\r
+\r
private INexioChangeListener nexioChangeListener;\r
private DB db;\r
\r
logger.debug("Found NEXIO clip: {} XID IS MISSING!!", clip.getId());\r
}\r
} catch (Exception e) {\r
- logger.catching(e);\r
+ logger.error(e.getMessage());\r
+ //logger.catching(e);\r
}\r
}\r
logger.info("NEXIO metadata import completed.");\r
logger.info("Initial clip import completed");\r
Mediabase mediabase = NexioDispatcher.this.controller.getMediabase();\r
mediaListener = mediabase.createMediaListener(disabled, NexioDispatcher.this);\r
+ setRestartInProgress(false);\r
mediaListener.startListener();\r
+\r
} catch (Exception e) {\r
logger.catching(e);\r
}\r
worker.start();\r
}\r
\r
+ synchronized public boolean isRestartInProgress() {\r
+ return restartInProgress;\r
+ }\r
+\r
/*\r
Nem foglalkozunk a clippel ha:\r
C8 84 Get Special ID Attributes\r
}\r
\r
/*\r
- \r
+\r
int c = connection.read(buffer, 0, 2);\r
//2 bytes hosszan az idokozben hozzaadott id-k szamossaga\r
if (c < 2) {\r
throw new ProtocolException("c, 2, 2");\r
}\r
//MSB, LSB\r
- \r
+\r
return nofIds;\r
*/\r
return ret;\r
\r
@Override\r
public void restart() {\r
+ logger.info("Restart (already in progress {})", restartInProgress);\r
shutdown();\r
- startup();\r
}\r
\r
private void saveClipIntoMongo(BasicDBObject clip) {\r
this.nexioChangeListener = nexioChangeListener;\r
}\r
\r
+ synchronized public void setRestartInProgress(boolean restartInProgress) {\r
+ this.restartInProgress = restartInProgress;\r
+ logger.info("Restart in progress {}", isRestartInProgress());\r
+ }\r
+\r
public void shutdown() {\r
- if (!disabled) {\r
- if (mediaListener != null) {\r
- mediaListener.disconnect();\r
- mediaListener = null;\r
- }\r
- if (controller != null) {\r
- controller.disconnect();\r
- controller = null;\r
- }\r
- try {\r
- worker.join();\r
- } catch (InterruptedException e) {\r
- logger.catching(e);\r
- }\r
+ if (disabled)\r
+ return;\r
+ if (isRestartInProgress()) {\r
+ return;\r
+ }\r
+\r
+ logger.info("Shutting down Nexio service");\r
+ setRestartInProgress(true);\r
+ if (mediaListener != null) {\r
+ mediaListener.disconnect();\r
+ mediaListener = null;\r
+ }\r
+ if (controller != null) {\r
+ controller.disconnect();\r
+ controller = null;\r
}\r
}\r
\r
public void startup() {\r
- if (!disabled) {\r
- this.controller = new Controller(NEXIO_HOST);\r
- try {\r
- this.controller.connect();\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- return;\r
- }\r
- dropAllClipsFromMongo();\r
- ensureIndexes();\r
- innerStartup();\r
- } else\r
+ if (disabled) {\r
logger.info("Nexio service is disabled");\r
+ return;\r
+ }\r
+\r
+ logger.info("Starting up Nexio service");\r
+ setRestartInProgress(true);\r
+ this.controller = new Controller(NEXIO_HOST);\r
+ try {\r
+ this.controller.connect();\r
+ } catch (Exception e) {\r
+ logger.catching(e);\r
+ return;\r
+ }\r
+ dropAllClipsFromMongo();\r
+ ensureIndexes();\r
+ innerStartup();\r
+\r
}\r
\r
}\r