git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Mon, 20 Nov 2017 16:36:28 +0000 (16:36 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Mon, 20 Nov 2017 16:36:28 +0000 (16:36 +0000)
17 files changed:
client/Maestro/Configuration/configuration-nle.json
client/Maestro/Configuration/configuration-playout-ingest.json
client/Maestro/Configuration/configuration-studio.json
client/Maestro/MaestroForm.Designer.cs
client/Maestro/MaestroForm.Metadata.cs
client/Maestro/MaestroForm.Target.cs
client/Maestro/MaestroForm.cs
client/Maestro/MaestroForm.resx
client/MaestroShared/Configuration/ConfigurationInfo.cs
client/OctopusClient/OctopusIDSelector.Designer.cs
client/OctopusClient/OctopusIDSelector.cs
client/PlanAIRClient/TrafficIDSelector.cs
server/-configuration/run-mediacube-server-bsh.launch
server/-configuration/scheduledjobs.json
server/user.jobengine.osgi.commons/src/user/commons/nosql/NoSQLUtils.java
server/user.jobengine.osgi.commons/src/user/commons/octopus/OctopusAPI.java
server/user.jobengine.osgi.commons/src/user/commons/octopus/OctopusDataMiner.java

index 78e56c0cb1e30dac4bc58d3e7def86bae34e4042..aa4440e83a2ffb0df7c8f805e4db19b8ef3a3138 100644 (file)
         "userName": "MAM",\r
         "password": "7RKZYBzumKjL40SJwuwiFCvX57xuCN8zay6OttUm2wbrgImyYZBHyZTUUYrXX31Ge2Uwew07HYsqh2uzdJeDBDwcVntxaHg3nIpv9Dyq/odVoiC4tUF/K+lgvKWANcrZ",\r
         "timeout": 1000\r
+      },\r
+      "local": {\r
+        "address": "file://10.10.1.100/OCTOPUS",\r
+        "userName": "mediacube",\r
+        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
+        "timeout": 1000\r
       }\r
     },\r
     {\r
index aa818ef78d9a56e12fce43f666f94ee12d06375c..ddd13040318565787876b4f4db0d6b43d9a535d9 100644 (file)
@@ -1,6 +1,6 @@
 {\r
   "title": "Lebony betöltő",\r
-  "active": true,\r
+  "active": false,\r
   "startInTray": false,\r
   "enableCustomMetadataId": true,\r
   "player": {\r
index a159bf7bc3039347744666edace2df2e2f702cfb..a3db7e9421fe30875103e5e7f5970f2fc9fc264f 100644 (file)
@@ -1,6 +1,6 @@
 {\r
   "title": "Stúdió",\r
-  "active": true,\r
+  "active": false,\r
   "startInTray": false,\r
   "enableCustomMetadataId": true,\r
   "filter": "avi",\r
index 69214110151f97b6942edb5cd29351f9d82be249..b4b037ee8b09229702662aa441ed3e4d371ad33d 100644 (file)
@@ -213,12 +213,13 @@ namespace Maestro {
             this.treeFolders.Visible = false;\r
             this.treeFolders.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.OnBeforeExpandFolder);\r
             this.treeFolders.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.OnAfterSelectFolder);\r
+            this.treeFolders.MouseDown += new System.Windows.Forms.MouseEventHandler(this.OnFolderMouseDown);\r
             // \r
             // ilFolders\r
             // \r
             this.ilFolders.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ilFolders.ImageStream")));\r
             this.ilFolders.TransparentColor = System.Drawing.Color.Transparent;\r
-            this.ilFolders.Images.SetKeyName(0, "ic_folder_open_black_24dp_1x.png");\r
+            this.ilFolders.Images.SetKeyName(0, "ic_folder_open_black_24dp_1x.jpg");\r
             // \r
             // pSourceFilter\r
             // \r
index b1a442a60c3aa188e21e5c377042b134771b5b84..c5b5546c2d0bb67f5e855a860409060289e5674a 100644 (file)
@@ -429,12 +429,23 @@ namespace Maestro {
             MetadataProvider config = null;\r
             MetadataType metadataType = GuessMetadataType(id);\r
             switch (metadataType) {\r
-                case MetadataType.TrafficAD:\r
                 case MetadataType.TrafficMaterial:\r
+                    config = Configuration.GetMetadataProvider<TrafficMetadata>();\r
+                    if (config == null)\r
+                        return;\r
+                    trafficIDSelector.LookupByMaterialID(id);\r
+                    break;\r
                 case MetadataType.TrafficPromo:\r
                     config = Configuration.GetMetadataProvider<TrafficMetadata>();\r
                     if (config == null)\r
                         return;\r
+                    trafficIDSelector.LookupByPromoID(id);\r
+                    break;\r
+                case MetadataType.TrafficAD:\r
+                    config = Configuration.GetMetadataProvider<TrafficMetadata>();\r
+                    if (config == null)\r
+                        return;\r
+                    trafficIDSelector.LookupByADID(id);\r
                     break;\r
                 case MetadataType.OctopusPlaceHolder:\r
                     config = Configuration.GetMetadataProvider<OctopusMetadata>();\r
index 8d1a646ffa9a5bfac79150a0ad4786545c9b6b0d..c78a12e32dc0e2070dc2fb55a42951c6aca4d7fe 100644 (file)
@@ -77,7 +77,6 @@ namespace Maestro {
         private List<ITargetProcessor> CreateProcessors(Target target, CheckBox checkBox) {\r
             List<ITargetProcessor> result = null;\r
             foreach (ISourceItem sourceItem in selectedSourceItems) {\r
-                //ISourceItem sourceItem = actualRow.DataBoundItem as ISourceItem;\r
                 if (sourceItem == null)\r
                     continue;\r
                 if (!EnsureSegments(target)) {\r
@@ -96,9 +95,7 @@ namespace Maestro {
                     result = new List<ITargetProcessor>();\r
                 result.Add(processor);\r
 \r
-                //var beforeProcessors = new Dictionary<CheckBox, List<ITargetProcessor>>(currentProcessors);\r
                 HandleCheckBoxReferences(target.Reference, true);\r
-                //var diff = beforeProcessors.Except(currentProcessors).Concat(currentProcessors.Except(beforeProcessors));\r
             }\r
             return result;\r
         }\r
index 860ec07c2c7d439a037f22ac84ebd8033dfd6ebb..ad9d46afd1b622378bc6d9a7f20cc16de5390ce8 100644 (file)
@@ -246,5 +246,9 @@ namespace Maestro {
             }\r
         }\r
 \r
+        private void OnFolderMouseDown(object sender, MouseEventArgs e) {\r
+            if (e.Button == MouseButtons.Right)\r
+                treeFolders.SelectedNode = treeFolders.GetNodeAt(e.X, e.Y);\r
+        }\r
     }\r
 }\r
index cd7a57169e7d1ffc7213b68b12c686cdba847396..f09802db14a35a011c3b66fa9dd2e577a2e3b0b5 100644 (file)
     <value>\r
         AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w\r
         LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0\r
-        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACc\r
-        BwAAAk1TRnQBSQFMAwEBAAFAAQABQAEAARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA\r
+        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACU\r
+        BwAAAk1TRnQBSQFMAwEBAAFYAQABWAEAARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA\r
         AUADAAEQAwABAQEAAQgGAAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA\r
         AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA\r
         AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm\r
         AQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEAAv8BMwEA\r
         AcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEAAv8BZgEA\r
         ASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4AQAB8AH7\r
-        Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA/+CAAH/AQcK7wEHAfQyAAEH\r
-        DAABETIAAe8LAAHvMwAB7wsAAe8zAAHvCwAB7zMAAe8LAAHvMwAB7wsAAe8zAAHvCwAB7zMAAe8BAArv\r
-        AW0BDjIAAe8LAAEOAfEyAAHxAQ4EAAHv+AABQgFNAT4HAAE+AwABKAMAAUADAAEQAwABAQEAAQEFAAGA\r
-        FwAD/wEAAv8GAAL/BgABgAEBBgABgAEBBgABnwH5BgABnwH5BgABnwH5BgABnwH5BgABnwH5BgABnwH5\r
-        BgABgAEBBgABgAEBBgABgAH/BgAC/wYAAv8GAAL/BgAL\r
+        Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA/8BABD/MAAQ/zAAAf8B8wzv\r
+        AfMB/zAAAf8B7AwAAewB/zAAAf8B6gEPChIBDwHqAf8wAAH/AhIK/wISAf8wAAH/AhIK/wISAf8wAAH/\r
+        AhIK/wISAf8wAAH/AhIK/wISAf8wAAH/AhIK/wISAf8wAAH/AhIK/wISAf8wAAH/ARIBDwoSAQ8B6gH/\r
+        MAAB/wHqBQABDwUSAeoB8QH/MAAB/wH3AQ4DAAEPAe8I/zAAEP8wABD/MAABQgFNAT4HAAE+AwABKAMA\r
+        AUADAAEQAwABAQEAAQEFAAGAFwAD/4EACw==\r
 </value>\r
   </data>\r
   <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />\r
index 5f3cf2b056b545842afcd47679682b204298e3a8..978f87b8b8afa672b9a3e8b17d28038fdfb878d3 100644 (file)
@@ -109,6 +109,7 @@ namespace MaestroShared.Configuration {
     public class OctopusMetadata : MetadataProvider {\r
         public bool DisablePlaceHolderCheck { get; set; }\r
         public bool DisableStoryCheck { get; set; }\r
+        public Connection Local { get; set; }\r
     }\r
 \r
     public class TrafficMetadata : MetadataProvider {\r
index 3d92bff057882f0824cbe3f679b661c0bd301e8d..af3b5c4b82ada6c2f0b42b5d48ec17201be92588 100644 (file)
@@ -48,6 +48,7 @@
             this.treeOctopus.Size = new System.Drawing.Size(300, 322);\r
             this.treeOctopus.TabIndex = 5;\r
             this.treeOctopus.KeyDown += new System.Windows.Forms.KeyEventHandler(this.treeContent_KeyDown);\r
+            this.treeOctopus.MouseDown += new System.Windows.Forms.MouseEventHandler(this.treeOctopus_MouseDown);\r
             // \r
             // pSearch\r
             // \r
index cc6de4d90e3f7baa519c5863a7c8251fbd73e93b..8d046f1d5d9ba5ae57f0bf666cb8090d5c81806f 100644 (file)
@@ -148,6 +148,7 @@ namespace OctopusClient {
                         if (lookupPlaceHolderId != null && lookupPlaceHolderId.Equals(mosObject.ObjID)) {\r
                             placeHolderNode.Checked = true;\r
                             storyNode.Expand();\r
+                            placeHolderNode.EnsureVisible();\r
                         }\r
                     }\r
                 }\r
@@ -203,9 +204,9 @@ namespace OctopusClient {
             SendMessage(tvw.Handle, TVM_SETITEM, IntPtr.Zero, ref tvi);\r
         }\r
 \r
-        public bool LookupByStory(string storyId) {\r
+        public void LookupByStory(string storyId) {\r
             if (String.IsNullOrEmpty(storyId))\r
-                return false;\r
+                return;\r
             var rundown = client.GetRundownsByStoryID(storyId)?.FirstOrDefault();\r
             if (rundown == null) {\r
                 var storyFolder = client.GetStoryFoldersByStoryID(storyId)?.FirstOrDefault();\r
@@ -238,12 +239,11 @@ namespace OctopusClient {
             lookupStoryId = null;\r
             if (selectedNode == null)\r
                 MessageBox.Show("Nincs találat.");\r
-            return selectedNode != null;\r
         }\r
 \r
-        public bool LookupByPlaceHolder(string placeHolderId) {\r
+        public void LookupByPlaceHolder(string placeHolderId) {\r
             if (String.IsNullOrEmpty(placeHolderId))\r
-                return false;\r
+                return;\r
             var rundown = client.GetRundownsByPlaceHolderId(placeHolderId)?.FirstOrDefault();\r
             if (rundown == null) {\r
                 var storyFolder = client.GetStoryFoldersByPlaceHolderId(placeHolderId)?.FirstOrDefault();\r
@@ -278,7 +278,6 @@ namespace OctopusClient {
             lookupPlaceHolderId = null;\r
             if (selectedNode == null)\r
                 MessageBox.Show("Nincs találat.");\r
-            return selectedNode != null;\r
         }\r
 \r
         private void OnTypeCheckChanged(object sender, EventArgs e) {\r
@@ -356,6 +355,11 @@ namespace OctopusClient {
             else\r
                 LookupByStory(txtFilter.Text);\r
         }\r
+\r
+        private void treeOctopus_MouseDown(object sender, MouseEventArgs e) {\r
+            if (e.Button == MouseButtons.Right)\r
+                treeOctopus.SelectedNode = treeOctopus.GetNodeAt(e.X, e.Y);\r
+        }\r
     }\r
 \r
     public class OctopusAPIMessage : IMessage {\r
index 2b1d005db8dba7934a7704c64a19630aa47453e1..81dc0c070e9109975aa8e0f5bdfdc17ec18d94d9 100644 (file)
@@ -139,6 +139,19 @@ namespace TrafficClient {
         private void tableLayoutPanelSearch_Paint(object sender, PaintEventArgs e) {\r
             ControlPaint.DrawBorder(e.Graphics, e.ClipRectangle, Color.LightGray, ButtonBorderStyle.Solid); // dotted border\r
         }\r
+\r
+        public bool LookupByMaterialID(string id) {\r
+            //TrafficItem result = trafficAPI.GetMaterials(id, false);\r
+            return false;\r
+        }\r
+\r
+        public bool LookupByPromoID(string id) {\r
+            return false;\r
+        }\r
+\r
+        public bool LookupByADID(string id) {\r
+            return false;\r
+        }\r
     }\r
 \r
     public class TrafficItem {\r
index d0240306aea67a41d5e3a0ce5a4bdd2cf38cc942..f957593d008b3d20ebf4c01eb927d5eefa9fa181 100644 (file)
@@ -19,7 +19,7 @@
 <stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>\r
 <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console"/>\r
 <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>\r
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory&#13;&#10;-Dorg.eclipse.equinox.http.jetty.http.port=8080&#13;&#10;-Dorg.eclipse.epp.logging.aeri.skipReports=true &#13;&#10;-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-Djobengine.jobsteps.root=&quot;${workspace_loc}/user.jobengine.executors/config&quot;&#13;&#10;-Djobengine.jobtemplates.root=&quot;${workspace_loc}/user.jobengine.executors/jobtemplates&quot;&#13;&#10;-Djobengine.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.db.user=db2admin&#13;&#10;-Djobengine.db.password=password&#13;&#10;-Djobengine.loglevel=INFO&#13;&#10;-Dlog4j.configurationFile=&quot;${workspace_loc}/-configuration/log4j2.xml&quot;&#13;&#10;-Djobengine.jobsteps.alternate.root=&quot;${workspace_loc}/user.jobengine.executors/bin/user/jobengine/server/steps&quot;&#13;&#10;-Djetty.home=&quot;${workspace_loc:}/-configuration/jetty&quot;&#13;&#10;-Djetty.etc.config.urls=etc/user-jetty.xml,etc/user-jetty-ssl.xml,etc/user-jetty-ssl-context.xml,,etc/user-jetty-http.xml,etc/user-jetty-https.xml&#13;&#10;-Djobengine.octopus.api.address=http://10.10.1.11/api/v1&#13;&#10;-Djobengine.octopus.api.user=mam&#13;&#10;-Djobengine.octopus.api.password=napocska&#13;&#10;-Djobengine.nosql.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.nosql.db.user=db2admin&#13;&#10;-Djobengine.nosql.db.password=password&#13;&#10;-Djobengine.nosql.db.schema=test&#13;&#10;-Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl&#13;&#10;-Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC_v4.zenium&#13;&#10;-Djobengine.jobscheduling.config=&quot;${workspace_loc}/-configuration/scheduledjobs.json&quot;&#13;&#10;-Dnexio.host=10.10.1.55"/>\r
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory&#13;&#10;-Dorg.eclipse.equinox.http.jetty.http.port=8080&#13;&#10;-Dorg.eclipse.epp.logging.aeri.skipReports=true &#13;&#10;-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-Djobengine.jobsteps.root=&quot;${workspace_loc}/user.jobengine.executors/config&quot;&#13;&#10;-Djobengine.jobtemplates.root=&quot;${workspace_loc}/user.jobengine.executors/jobtemplates&quot;&#13;&#10;-Djobengine.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.db.user=db2admin&#13;&#10;-Djobengine.db.password=password&#13;&#10;-Djobengine.loglevel=INFO&#13;&#10;-Dlog4j.configurationFile=&quot;${workspace_loc}/-configuration/log4j2.xml&quot;&#13;&#10;-Djobengine.jobsteps.alternate.root=&quot;${workspace_loc}/user.jobengine.executors/bin/user/jobengine/server/steps&quot;&#13;&#10;-Djetty.home=&quot;${workspace_loc:}/-configuration/jetty&quot;&#13;&#10;-Djetty.etc.config.urls=etc/user-jetty.xml,etc/user-jetty-ssl.xml,etc/user-jetty-ssl-context.xml,,etc/user-jetty-http.xml,etc/user-jetty-https.xml&#13;&#10;-Djobengine.octopus.api.address=http://10.10.1.11/api/v1&#13;&#10;-Djobengine.octopus.api.user=mam&#13;&#10;-Djobengine.octopus.api.password=napocska&#13;&#10;-Djobengine.nosql.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.nosql.db.user=db2admin&#13;&#10;-Djobengine.nosql.db.password=password&#13;&#10;-Djobengine.nosql.db.schema=test&#13;&#10;-Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl&#13;&#10;-Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC_v4.zenium&#13;&#10;-Djobengine.jobscheduling.config=&quot;${workspace_loc}/-configuration/scheduledjobs.json&quot;&#13;&#10;-Dnexio.host=10.10.1.555"/>\r
 <stringAttribute key="pde.version" value="3.3"/>\r
 <booleanAttribute key="show_selected_only" value="false"/>\r
 <stringAttribute key="target_bundles" value="cglib@default:default,com.auth0.java-jwt@default:default,com.fasterxml.jackson.core.jackson-annotations@default:default,com.fasterxml.jackson.core.jackson-core@default:default,com.fasterxml.jackson.core.jackson-databind@default:default,com.fasterxml.jackson.datatype.jackson-datatype-joda@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-base@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider@default:default,com.fasterxml.jackson.module.jackson-module-jaxb-annotations@default:default,com.google.guava@default:default,com.ibm.db2jcc4@default:default,com.ibm.nosql@default:default,com.microsoft.sqlserver.sqljdbc@default:default,com.sun.el.javax.el@default:default,commons-logging@default:default,javassist@default:default,javax.annotation-api@default:default,javax.inject@default:default,javax.mail@default:default,javax.servlet-api@default:default,javax.servlet.jsp-api@default:default,javax.validation.api@default:default,javax.ws.rs-api@default:default,jcifs@default:default,joda-time@default:default,org.apache.aries.spifly.dynamic.bundle@default:default,org.apache.aries.util@default:default,org.apache.commons.beanutils@default:default,org.apache.commons.codec@default:default,org.apache.commons.collections@default:default,org.apache.commons.digester@default:default,org.apache.commons.io@default:default,org.apache.commons.lang3@default:default,org.apache.commons.lang@default:default,org.apache.commons.logging@default:default,org.apache.commons.net@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.apache.jasper.glassfish@default:default,org.apache.logging.log4j.api@1:true,org.apache.logging.log4j.core@default:default,org.apache.logging.log4j.slf4j-impl@default:default,org.apache.servicemix.bundles.quartz@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.util@default:default,org.eclipse.jdt.core.compiler.batch@default:default,org.eclipse.jetty.client@default:default,org.eclipse.jetty.deploy@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.jsp@default:default,org.eclipse.jetty.osgi.boot.jsp@default:false,org.eclipse.jetty.osgi.boot@default:true,org.eclipse.jetty.schemas@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jetty.webapp@default:default,org.eclipse.jetty.websocket.api@default:default,org.eclipse.jetty.websocket.client@default:default,org.eclipse.jetty.websocket.common@default:default,org.eclipse.jetty.websocket.server@default:default,org.eclipse.jetty.websocket.servlet@default:default,org.eclipse.jetty.xml@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.hamcrest.core@default:default,org.jboss.resteasy.client@default:default,org.jboss.resteasy.jaxrs@default:default,org.jmock.junit4@default:default,org.jmock@default:default,org.junit@default:default,org.jvnet.mimepull@default:default,org.objectweb.asm.commons@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,org.reflections@default:default,slf4j.api@default:default,slf4j.simple@default:false"/>\r
index 3b28b6bc25355a3946d0a49691a0eb7613b479f5..452149c313668ed775fb7e2592e7f274d0cf741e 100644 (file)
@@ -66,7 +66,7 @@
       ]\r
        },      \r
        {\r
-      "active": true,\r
+      "active": false,\r
          "name" : "OCTOPUS adatok szinkronizálása",\r
       "template": "sync-octopus.xml",\r
       "executeimmediate": true,\r
index 74b22230de33f78e6e378f2888a8939899994363..3852a6108538e5bd4fe52264024c90294b78bd0b 100644 (file)
@@ -22,17 +22,17 @@ public class NoSQLUtils {
                Pass = System.getProperty("jobengine.nosql.db.password");\r
        }\r
 \r
-       public static DB getNoSQLDB(String url, String user, String pass) {\r
-               return NoSQLClient.getDB(Url, User, Pass);\r
+       public static BasicDBList asDBList(BasicDBObject obj, String name) {\r
+               BasicDBList result = null;\r
+               if (obj.containsKey(name) && (obj.get(name) instanceof BasicDBList))\r
+                       result = (BasicDBList) obj.get(name);\r
+               return result;\r
        }\r
 \r
-       public static DB getDB() {\r
-               DB result = null;\r
-               try {\r
-                       result = NoSQLClient.getDB(NoSQLUtils.Url, NoSQLUtils.User, NoSQLUtils.Pass);\r
-               } catch (Exception e) {\r
-                       logger.error(e);\r
-               }\r
+       public static BasicDBObject asDBObject(BasicDBObject obj, String name) {\r
+               BasicDBObject result = null;\r
+               if (obj.containsKey(name) && (obj.get(name) instanceof BasicDBObject))\r
+                       result = (BasicDBObject) obj.get(name);\r
                return result;\r
        }\r
 \r
@@ -46,4 +46,28 @@ public class NoSQLUtils {
                return result;\r
        }\r
 \r
+       public static List<BasicDBObject> asList(BasicDBObject obj, String name) {\r
+               List<BasicDBObject> result = null;\r
+               if (obj != null) {\r
+                       BasicDBList dbList = asDBList(obj, name);\r
+                       if (dbList != null)\r
+                               result = Arrays.asList(dbList.toArray(new BasicDBObject[obj.size()]));\r
+               }\r
+               return result;\r
+       }\r
+\r
+       public static DB getDB() {\r
+               DB result = null;\r
+               try {\r
+                       result = NoSQLClient.getDB(NoSQLUtils.Url, NoSQLUtils.User, NoSQLUtils.Pass);\r
+               } catch (Exception e) {\r
+                       logger.error(e);\r
+               }\r
+               return result;\r
+       }\r
+\r
+       public static DB getNoSQLDB(String url, String user, String pass) {\r
+               return NoSQLClient.getDB(Url, User, Pass);\r
+       }\r
+\r
 }\r
index a6824a92744baec74900add450b04dceda35c6d0..36d4e79219fae4b31de24fb6c844236660f86d0d 100644 (file)
@@ -6,9 +6,6 @@ import java.util.Calendar;
 import java.util.Date;\r
 import java.util.List;\r
 \r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
 import com.ibm.nosql.json.api.BasicDBList;\r
 import com.ibm.nosql.json.api.BasicDBObject;\r
 import com.ibm.nosql.json.api.DB;\r
@@ -21,10 +18,17 @@ import user.commons.CalendarUtils;
 import user.commons.nosql.NoSQLUtils;\r
 \r
 public class OctopusAPI implements IOctopusAPI {\r
-       private static final Logger logger = LogManager.getLogger();\r
+       private static final String _ID = "_id";\r
+       private static final String OBJID = "objId";\r
+       private static final String $DATE = "$date";\r
+       private static final String SCHEDULEDSTART = "scheduledStart";\r
+       private static final String STORYID = "storyId";\r
+       private static final String $ELEMMATCH = "$elemMatch";\r
+       //private static final Logger logger = LogManager.getLogger();\r
+       private static final String SLUGS = "slugs";\r
        private static final String ID = "id";\r
        private static final String STORY_FOLDER = "story_folder";\r
-       private static final String MOS_OBJECTS = "mosObjects";\r
+       private static final String MOSOBJECTS = "mosObjects";\r
        private static final String RUNDOWN = "rundown";\r
        public static final String RUNDOWN_COLLECTION_NAME = "rundowns";\r
        public static final String STORY_COLLECTION_NAME = "stories";\r
@@ -54,7 +58,7 @@ public class OctopusAPI implements IOctopusAPI {
                List<DBObject> mosObjectsResult = new ArrayList<>();\r
                DBCollection collection = db.getCollection(STORY_COLLECTION_NAME);\r
                DBCursor find = collection\r
-                               .find(new BasicDBObject(MOS_OBJECTS, new BasicDBObject("$elemMatch", new BasicDBObject(ID, id))),\r
+                               .find(new BasicDBObject(MOSOBJECTS, new BasicDBObject($ELEMMATCH, new BasicDBObject(ID, id))),\r
                                                new BasicDBObject(ID, 1).append("name", 1).append("modified", 1).append(STORY_FOLDER, 1).append("type", 1).append("mosObjects", 1))\r
                                .sort(new BasicDBObject("name", 1));\r
                if (find.hasNext())\r
@@ -74,28 +78,48 @@ public class OctopusAPI implements IOctopusAPI {
                return mosObjectsResult;\r
        }\r
 \r
-       private List<DBObject> getParentsByReferences(DBCursor find, DBCollection collection, List<DBObject> referenceObjects, String referenceName) {\r
+       private List<DBObject> getParentsByReferences(List<DBObject> references, DBCollection collection, String referenceName) {\r
                List<DBObject> result = null;\r
+               List<Long> rundownIDs = getIDsFromReferences(references, referenceName);\r
+               BasicDBObject query = (BasicDBObject) QueryBuilder.start().put(ID).in(rundownIDs).get();\r
+               DBCursor find = collection.find(query);\r
                if (find.hasNext())\r
-                       referenceObjects = find.toArray();\r
-               if (referenceObjects != null) {\r
-                       List<Long> rundownIDs = getIDsFromReferences(referenceObjects, referenceName);\r
-                       BasicDBObject query = (BasicDBObject) QueryBuilder.start().put("id").in(rundownIDs).get();\r
-                       find = collection.find(query);\r
-                       if (find.hasNext())\r
-                               result = find.toArray();\r
+                       result = find.toArray();\r
+               return result;\r
+       }\r
+\r
+       private List<DBObject> getReferencedObjects(List<DBObject> stories, String referenceCollectionName, String referenceField) {\r
+               List<Long> ids = null;\r
+               for (DBObject story : stories) {\r
+                       List<BasicDBObject> references = NoSQLUtils.asList((BasicDBObject) story, referenceField);\r
+                       if (references == null)\r
+                               continue;\r
+                       for (BasicDBObject reference : references) {\r
+                               if (reference == null || !reference.containsKey(ID))\r
+                                       continue;\r
+                               long id = reference.getLong(ID);\r
+                               if (ids == null)\r
+                                       ids = new ArrayList<>();\r
+                               ids.add(id);\r
+                       }\r
                }\r
+\r
+               List<DBObject> result = null;\r
+               DBCollection rundownCollection = db.getCollection(referenceCollectionName);\r
+               BasicDBObject query = (BasicDBObject) QueryBuilder.start().put(ID).in(ids).get();\r
+               DBCursor findParents = rundownCollection.find(query);\r
+               if (findParents.hasNext())\r
+                       result = findParents.toArray();\r
                return result;\r
        }\r
 \r
        @Override\r
        public List<DBObject> getRundownByStoryID(long storyID) {\r
                List<DBObject> result = null;\r
-               List<DBObject> queryedRundownsFromStoryCollection = null;\r
-               DBCollection storyCollection = db.getCollection(STORY_COLLECTION_NAME);\r
                DBCollection rundownCollection = db.getCollection(RUNDOWN_COLLECTION_NAME);\r
-               DBCursor find = storyCollection.find(new BasicDBObject("id", storyID), new BasicDBObject(RUNDOWN, 1).append("_id", 0));\r
-               result = getParentsByReferences(find, rundownCollection, queryedRundownsFromStoryCollection, RUNDOWN);\r
+               DBCursor find = rundownCollection.find(new BasicDBObject(SLUGS, new BasicDBObject($ELEMMATCH, new BasicDBObject(STORYID, storyID))));\r
+               if (find.hasNext())\r
+                       result = find.toArray();\r
                return result;\r
        }\r
 \r
@@ -112,12 +136,12 @@ public class OctopusAPI implements IOctopusAPI {
                if (scheduledDate == null) {\r
                        query = builder.get();\r
                } else {\r
-                       query = builder.and(QueryBuilder.start("scheduledStart").greaterThanEquals(calStart.getTime()).get(),\r
-                                       QueryBuilder.start("scheduledStart").lessThan(calStop.getTime()).get()).get();\r
+                       query = builder.and(QueryBuilder.start(SCHEDULEDSTART).greaterThanEquals(calStart.getTime()).get(),\r
+                                       QueryBuilder.start(SCHEDULEDSTART).lessThan(calStop.getTime()).get()).get();\r
                }\r
 \r
                //logger.info(query);\r
-               DBCursor find = collection.find(query).sort(new BasicDBObject("scheduledStart", new BasicDBList(1, "$date")));\r
+               DBCursor find = collection.find(query).sort(new BasicDBObject(SCHEDULEDSTART, new BasicDBList(1, $DATE)));\r
                if (find.hasNext())\r
                        result = find.toArray();\r
                return result;\r
@@ -125,17 +149,14 @@ public class OctopusAPI implements IOctopusAPI {
 \r
        @Override\r
        public List<DBObject> getRundownsByPlaceHolderId(String placeHolderID) {\r
-               List<DBObject> result = null;\r
                DBCollection storyCollection = db.getCollection(STORY_COLLECTION_NAME);\r
-               DBCollection rundownCollection = db.getCollection(RUNDOWN_COLLECTION_NAME);\r
-               List<DBObject> queryedRundownsFromStoryCollection = null;\r
-               BasicDBObject id = new BasicDBObject("objId", placeHolderID);\r
-               BasicDBObject elemmatch = new BasicDBObject("$elemMatch", id);\r
-               BasicDBObject mosObjects = new BasicDBObject(MOS_OBJECTS, elemmatch);\r
                //db.testStoryCollection.find({"mosObjects": {$elemMatch: {"globalId": "OCTOPUS-ECHOTV-2429902"}}})\r
-               DBCursor find = storyCollection.find(mosObjects);\r
-               result = getParentsByReferences(find, rundownCollection, queryedRundownsFromStoryCollection, RUNDOWN);\r
-               return result;\r
+               BasicDBObject criteria = new BasicDBObject(MOSOBJECTS, new BasicDBObject($ELEMMATCH, new BasicDBObject(OBJID, placeHolderID)));\r
+               BasicDBObject filter = new BasicDBObject(RUNDOWN, 1).append(_ID, 0);\r
+               DBCursor find = storyCollection.find(criteria, filter);\r
+               if (!find.hasNext())\r
+                       return null;\r
+               return getReferencedObjects(find.toArray(), RUNDOWN_COLLECTION_NAME, RUNDOWN);\r
        }\r
 \r
        @Override\r
@@ -156,7 +177,7 @@ public class OctopusAPI implements IOctopusAPI {
 \r
                // { rundown: { $elemMatch: { id: 44622396 } }}\r
                DBCursor find = collection\r
-                               .find(new BasicDBObject(RUNDOWN, new BasicDBObject("$elemMatch", new BasicDBObject(ID, rundownID))), new BasicDBObject(ID, 1)\r
+                               .find(new BasicDBObject(RUNDOWN, new BasicDBObject($ELEMMATCH, new BasicDBObject(ID, rundownID))), new BasicDBObject(ID, 1)\r
                                                .append("parentStoryId", 1).append("name", 1).append("modified", 1).append(RUNDOWN, 1).append("format", 1).append("mosObjects", 1))\r
                                .sort(new BasicDBObject("name", 1));\r
                if (find.hasNext())\r
@@ -192,9 +213,9 @@ public class OctopusAPI implements IOctopusAPI {
        public List<DBObject> getStoriesByPlaceHolderId(String placeHolderID) {\r
                List<DBObject> result = new ArrayList<>();\r
                DBCollection storyCollection = db.getCollection(STORY_COLLECTION_NAME);\r
-               BasicDBObject globalId = new BasicDBObject("objId", placeHolderID);\r
-               BasicDBObject elemmatch = new BasicDBObject("$elemMatch", globalId);\r
-               BasicDBObject mosObjects = new BasicDBObject(MOS_OBJECTS, elemmatch);\r
+               BasicDBObject globalId = new BasicDBObject(OBJID, placeHolderID);\r
+               BasicDBObject elemmatch = new BasicDBObject($ELEMMATCH, globalId);\r
+               BasicDBObject mosObjects = new BasicDBObject(MOSOBJECTS, elemmatch);\r
                DBCursor find = storyCollection.find(mosObjects);\r
                if (find.hasNext())\r
                        result.add(find.next());\r
@@ -206,7 +227,7 @@ public class OctopusAPI implements IOctopusAPI {
                List<DBObject> result = null;\r
                DBCollection collection = db.getCollection(STORY_COLLECTION_NAME);\r
                DBCursor find = collection\r
-                               .find(new BasicDBObject(STORY_FOLDER, new BasicDBObject("$elemMatch", new BasicDBObject(ID, storyFolderId))), new BasicDBObject(ID, 1)\r
+                               .find(new BasicDBObject(STORY_FOLDER, new BasicDBObject($ELEMMATCH, new BasicDBObject(ID, storyFolderId))), new BasicDBObject(ID, 1)\r
                                                .append("parentStoryId", 1).append("name", 1).append("modified", 1).append(STORY_FOLDER, 1).append("format", 1).append("mosObjects", 1))\r
                                .sort(new BasicDBObject("name", 1));\r
                if (find.hasNext())\r
@@ -226,26 +247,23 @@ public class OctopusAPI implements IOctopusAPI {
 \r
        @Override\r
        public List<DBObject> getStoryFolders(long storyID) {\r
-               List<DBObject> result = null;\r
-               List<DBObject> queryedStory_FoldersFromStoryCollection = null;\r
                DBCollection storyCollection = db.getCollection(STORY_COLLECTION_NAME);\r
-               DBCollection storyFolderCollection = db.getCollection(STORY_FOLDER_COLLECTION_NAME);\r
-               DBCursor find = storyCollection.find(new BasicDBObject("id", storyID), new BasicDBObject(STORY_FOLDER, 1).append("_id", 0));\r
-               result = getParentsByReferences(find, storyFolderCollection, queryedStory_FoldersFromStoryCollection, STORY_FOLDER);\r
-               return result;\r
+               BasicDBObject criteria = new BasicDBObject(ID, storyID);\r
+               BasicDBObject filter = new BasicDBObject(STORY_FOLDER, 1).append(_ID, 0);\r
+               DBCursor find = storyCollection.find(criteria, filter);\r
+               if (!find.hasNext())\r
+                       return null;\r
+               return getReferencedObjects(find.toArray(), STORY_FOLDER_COLLECTION_NAME, STORY_FOLDER);\r
        }\r
 \r
        @Override\r
        public List<DBObject> getStoryFoldersByPlaceHolderId(String placeHolderID) {\r
-               List<DBObject> result = null;\r
                DBCollection storyCollection = db.getCollection(STORY_COLLECTION_NAME);\r
-               DBCollection rundownCollection = db.getCollection(STORY_FOLDER_COLLECTION_NAME);\r
-               List<DBObject> queryedRundownsFromStoryCollection = null;\r
-               BasicDBObject globalId = new BasicDBObject("objId", placeHolderID);\r
-               BasicDBObject elemmatch = new BasicDBObject("$elemMatch", globalId);\r
-               BasicDBObject mosObjects = new BasicDBObject("mosObjects", elemmatch);\r
-               DBCursor find = storyCollection.find(mosObjects, new BasicDBObject(STORY_FOLDER, 1).append("_id", 0));\r
-               result = getParentsByReferences(find, rundownCollection, queryedRundownsFromStoryCollection, STORY_FOLDER);\r
-               return result;\r
+               BasicDBObject criteria = new BasicDBObject(MOSOBJECTS, new BasicDBObject($ELEMMATCH, new BasicDBObject(OBJID, placeHolderID)));\r
+               BasicDBObject filter = new BasicDBObject(STORY_FOLDER, 1).append(_ID, 0);\r
+               DBCursor find = storyCollection.find(criteria, filter);\r
+               if (!find.hasNext())\r
+                       return null;\r
+               return getReferencedObjects(find.toArray(), STORY_FOLDER_COLLECTION_NAME, STORY_FOLDER);\r
        }\r
 }\r
index 09ab483c13fc74e712a7ebb286389ad6d21140e1..d402724cae0aa44c9f597dcf24c040adf8b46f94 100644 (file)
@@ -123,26 +123,14 @@ public class OctopusDataMiner implements Runnable {
                progressListenerList.add(IProgressEventListener.class, listener);\r
        }\r
 \r
-       private BasicDBList asDBList(BasicDBObject obj, String name) {\r
-               BasicDBList result = null;\r
-               if (obj.containsKey(name) && (obj.get(name) instanceof BasicDBList))\r
-                       result = (BasicDBList) obj.get(name);\r
-               return result;\r
-       }\r
-\r
-       private BasicDBObject asDBObject(BasicDBObject obj, String name) {\r
-               BasicDBObject result = null;\r
-               if (obj.containsKey(name) && (obj.get(name) instanceof BasicDBObject))\r
-                       result = (BasicDBObject) obj.get(name);\r
-               return result;\r
-       }\r
-\r
        private Map<Long, BasicDBList> buildRundownReferences(BasicDBList rundowns) {\r
                Map<Long, BasicDBList> result = new HashMap<>();\r
                List<BasicDBObject> rundownsList = NoSQLUtils.asList(rundowns);\r
                for (BasicDBObject rundown : rundownsList) {\r
                        long rundownId = rundown.getLong(ID);\r
-                       List<BasicDBObject> slugs = NoSQLUtils.asList(asDBList(rundown, SLUGS));\r
+                       List<BasicDBObject> slugs = NoSQLUtils.asList(rundown, SLUGS);\r
+                       if (slugs == null)\r
+                               continue;\r
                        for (BasicDBObject slug : slugs) {\r
                                if (!slug.containsKey(STORYID))\r
                                        continue;\r
@@ -168,20 +156,20 @@ public class OctopusDataMiner implements Runnable {
                        while (cursor.hasNext()) {\r
                                BasicDBObject story = (BasicDBObject) cursor.next();\r
                                long storyId = story.getLong(ID);\r
-                               BasicDBList rundownRef = asDBList(story, REF_RUNDOWN);\r
+                               BasicDBList rundownRef = NoSQLUtils.asDBList(story, REF_RUNDOWN);\r
                                if (rundownRef != null) {\r
                                        if (storedStoryRundowns == null)\r
                                                storedStoryRundowns = new HashMap<>();\r
                                        storedStoryRundowns.put(storyId, rundownRef);\r
                                }\r
-                               BasicDBList storyFolderRef = asDBList(story, REF_STORYFOLDER);\r
+                               BasicDBList storyFolderRef = NoSQLUtils.asDBList(story, REF_STORYFOLDER);\r
                                if (storyFolderRef != null) {\r
                                        if (storedStoryStoryFolders == null)\r
                                                storedStoryStoryFolders = new HashMap<>();\r
                                        storedStoryStoryFolders.put(storyId, storyFolderRef);\r
                                }\r
 \r
-                               BasicDBList storyMosObjects = asDBList(story, MOS_OBJECTS);\r
+                               BasicDBList storyMosObjects = NoSQLUtils.asDBList(story, MOS_OBJECTS);\r
                                if (storyMosObjects != null) {\r
                                        if (storedStoryMosObjects == null)\r
                                                storedStoryMosObjects = new HashMap<>();\r
@@ -201,7 +189,9 @@ public class OctopusDataMiner implements Runnable {
                List<BasicDBObject> storyFolderList = NoSQLUtils.asList(storyFolders);\r
                for (BasicDBObject storyFolder : storyFolderList) {\r
                        long storyFolderId = storyFolder.getLong(ID);\r
-                       List<BasicDBObject> stories = NoSQLUtils.asList(asDBList(storyFolder, STORIES));\r
+                       List<BasicDBObject> stories = NoSQLUtils.asList(storyFolder, STORIES);\r
+                       if (stories == null)\r
+                               continue;\r
                        long position = 1;\r
                        for (BasicDBObject story : stories) {\r
                                long storyId = story.getLong(ID);\r
@@ -290,7 +280,7 @@ public class OctopusDataMiner implements Runnable {
                        break;\r
                }\r
                case MOS: {\r
-                       BasicDBObject mosObject = asDBObject(content, OBJECT);\r
+                       BasicDBObject mosObject = NoSQLUtils.asDBObject(content, OBJECT);\r
                        if (mosObject != null && !mosObject.isEmpty()) {\r
                                if (mosObject.containsKey(OBJ_ID)) {\r
                                        String objID = mosObject.getString(OBJ_ID);\r
@@ -301,10 +291,12 @@ public class OctopusDataMiner implements Runnable {
                }\r
                default: {\r
                        if (content.containsKey(CONTENT)) {\r
-                               List<BasicDBObject> innerContents = NoSQLUtils.asList(asDBList(content, CONTENT));\r
-                               for (BasicDBObject actualInnerContent : innerContents) {\r
-                                       if (actualInnerContent != null && actualInnerContent.isEmpty())\r
-                                               scriptContent += GetContent(actualInnerContent);\r
+                               List<BasicDBObject> innerContents = NoSQLUtils.asList(content, CONTENT);\r
+                               if (innerContents != null) {\r
+                                       for (BasicDBObject actualInnerContent : innerContents) {\r
+                                               if (actualInnerContent != null && actualInnerContent.isEmpty())\r
+                                                       scriptContent += GetContent(actualInnerContent);\r
+                                       }\r
                                }\r
                        }\r
                        break;\r
@@ -322,8 +314,10 @@ public class OctopusDataMiner implements Runnable {
        //      }\r
 \r
        private String GetCustomColumnValue(String columnName, BasicDBObject story) {\r
+               List<BasicDBObject> customColumns = NoSQLUtils.asList(story, CUSTOM_COLUMNS);\r
+               if (customColumns == null)\r
+                       return null;\r
                String result = null;\r
-               List<BasicDBObject> customColumns = NoSQLUtils.asList(asDBList(story, CUSTOM_COLUMNS));\r
                for (BasicDBObject customColumn : customColumns) {\r
                        if (!customColumn.containsKey(LABEL))\r
                                continue;\r
@@ -350,8 +344,10 @@ public class OctopusDataMiner implements Runnable {
        }\r
 \r
        private BasicDBList GetRelevantMOSObjects(BasicDBObject story) {\r
+               List<BasicDBObject> mosObjects = NoSQLUtils.asList(story, MOS_OBJECTS);\r
+               if (mosObjects == null)\r
+                       return null;\r
                BasicDBList result = null;\r
-               List<BasicDBObject> mosObjects = NoSQLUtils.asList(asDBList(story, MOS_OBJECTS));\r
                for (BasicDBObject mosObject : mosObjects) {\r
                        if (!mosObject.containsKey(MOS_ID))\r
                                continue;\r
@@ -366,12 +362,12 @@ public class OctopusDataMiner implements Runnable {
        }\r
 \r
        private String GetScriptContent(BasicDBObject story) {\r
-               BasicDBObject script = asDBObject(story, SCRIPT);\r
+               BasicDBObject script = NoSQLUtils.asDBObject(story, SCRIPT);\r
                if (script == null || script.isEmpty())\r
                        return null;\r
 \r
-               List<BasicDBObject> body = NoSQLUtils.asList(asDBList(script, BODY));\r
-               if (body.size() == 0)\r
+               List<BasicDBObject> body = NoSQLUtils.asList(script, BODY);\r
+               if (body == null || body.size() == 0)\r
                        return null;\r
 \r
                StringBuilder sb = new StringBuilder();\r
@@ -381,7 +377,9 @@ public class OctopusDataMiner implements Runnable {
                                sb.append(bodyItem.getString(LABEL));\r
                                sb.append(LINEFEED);\r
                        }\r
-                       List<BasicDBObject> contents = NoSQLUtils.asList(asDBList(bodyItem, CONTENT));\r
+                       List<BasicDBObject> contents = NoSQLUtils.asList(bodyItem, CONTENT);\r
+                       if (contents == null)\r
+                               continue;\r
                        for (BasicDBObject content : contents) {\r
                                sb.append(GetContent(content));\r
                        }\r
@@ -411,7 +409,7 @@ public class OctopusDataMiner implements Runnable {
                String json = response.readEntity(String.class);\r
                BasicDBObject resultObject = (BasicDBObject) JSONUtil.jsonToDbObject(json);\r
                if (resultObject != null)\r
-                       result = asDBObject(resultObject, RESULT);\r
+                       result = NoSQLUtils.asDBObject(resultObject, RESULT);\r
                logger.trace(EXIT);\r
                return result;\r
        }\r
@@ -423,7 +421,7 @@ public class OctopusDataMiner implements Runnable {
                String json = response.readEntity(String.class);\r
                BasicDBObject resultObject = (BasicDBObject) JSONUtil.jsonToDbObject(json);\r
                if (resultObject != null)\r
-                       result = asDBList(resultObject, RESULT);\r
+                       result = NoSQLUtils.asDBList(resultObject, RESULT);\r
                logger.trace(EXIT);\r
                return result;\r
        }\r
@@ -436,7 +434,7 @@ public class OctopusDataMiner implements Runnable {
                String json = response.readEntity(String.class);\r
                BasicDBObject resultObject = (BasicDBObject) JSONUtil.jsonToDbObject(json);\r
                if (resultObject != null)\r
-                       result = asDBObject(resultObject, RESULT);\r
+                       result = NoSQLUtils.asDBObject(resultObject, RESULT);\r
                logger.trace(EXIT);\r
                return result;\r
        }\r
@@ -448,7 +446,7 @@ public class OctopusDataMiner implements Runnable {
                String json = response.readEntity(String.class);\r
                BasicDBObject resultObject = (BasicDBObject) JSONUtil.jsonToDbObject(json);\r
                if (resultObject != null)\r
-                       result = asDBList(resultObject, RESULT);\r
+                       result = NoSQLUtils.asDBList(resultObject, RESULT);\r
 \r
                /* teszt */\r
                List<BasicDBObject> list = NoSQLUtils.asList(result);\r
@@ -543,7 +541,7 @@ public class OctopusDataMiner implements Runnable {
                String name = rundown.containsKey(NAME) ? rundown.getString(NAME) : null;\r
                logger.info("Checking rundown {} {}", name, rundown.get(SCHEDULED_START));\r
                BasicDBObject rundownWithStories = queryRundown(rundownID);\r
-               BasicDBList stories = asDBList(rundownWithStories, SLUGS);\r
+               BasicDBList stories = NoSQLUtils.asDBList(rundownWithStories, SLUGS);\r
                if (stories != null)\r
                        storeRundownStories(stories, lastUpdateTime);\r
                rundown.put(SCHEDULED_START, toDate(rundown, SCHEDULED_START));\r
@@ -654,7 +652,7 @@ public class OctopusDataMiner implements Runnable {
                long storyFolderID = storyFolder.getLong(ID);\r
 \r
                BasicDBObject storyFoldersWithStories = queryStoryFolder(storyFolderID);\r
-               BasicDBList stories = asDBList(storyFoldersWithStories, STORIES);\r
+               BasicDBList stories = NoSQLUtils.asDBList(storyFoldersWithStories, STORIES);\r
                if (stories != null)\r
                        storeStoryFolderStories(stories, lastUpdateTime);\r
                storyFolder.put(MODIFIED, toDate(storyFolder, MODIFIED));\r