Bug #99 Targetek végrehajtásának sorrendje esetleges
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Mon, 29 Oct 2018 15:56:36 +0000 (15:56 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Mon, 29 Oct 2018 15:56:36 +0000 (15:56 +0000)
git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31338

18 files changed:
client/Maestro/Configuration/UJ-configuration-tqc-check.json [moved from client/Maestro/Configuration/-UJ-configuration-tqc-check.json with 70% similarity]
client/Maestro/Configuration/configuration-nexio-ingest.json [moved from client/Maestro/Configuration/-configuration-nexio-ingest.json with 100% similarity]
client/Maestro/Configuration/configuration-studio.json [deleted file]
client/Maestro/Configuration/configuration-studio1.json [deleted file]
client/Maestro/Configuration/configuration-tqc-archive.json [deleted file]
client/Maestro/Maestro.csproj
client/Maestro/MaestroForm.Designer.cs
client/Maestro/MaestroForm.Target.cs
client/Maestro/MaestroForm.cs
client/Maestro/MaestroForm.resx
client/Maestro/Properties/AssemblyInfo.cs
client/MaestroShared/Targets/TargetProcessorParameter.cs
server/user.jobengine.executors/config/config.xml
server/user.jobengine.executors/config/scheduledjobs.json
server/user.jobengine.executors/jobtemplates/duplicate-remover.xml [new file with mode: 0644]
server/user.jobengine.executors/src/user/jobengine/server/steps/DuplicateRemoverStep.java [new file with mode: 0644]
server/user.jobengine.osgi.server/test/user/jobengine/server/IT/Support.java
server/user.jobengine.osgi.server/test/user/jobengine/server/IT/SupportRemoveDuplicates.java

similarity index 70%
rename from client/Maestro/Configuration/-UJ-configuration-tqc-check.json
rename to client/Maestro/Configuration/UJ-configuration-tqc-check.json
index e8a3d0852f877c71a9acc96381401cff7854d4db..7180a0dd52c5bc2b497d51ab68fa3af02b1aace3 100644 (file)
@@ -1,5 +1,5 @@
 {\r
-  "title": "TQC check",\r
+  "title": "TESZT TQC TESZT check",\r
   "active": true,\r
   "startInTray": false,\r
   "enableCustomMetadataId": true,\r
     "$type": "UNCSource",\r
     "filter": "avi,wav,mxf",\r
     "local": {\r
-      "address": "file://10.10.1.100/BRAAVOS/ARCHIVE",\r
+      "address": "file://c:\\_video",\r
       "userName": "mediacube",\r
       "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
       "timeout": 1000\r
     },\r
     "remote": {\r
-      "address": "ftp://10.10.1.100/ARCHIVE",\r
+      "address": "ftp://10.10.1.100/TESZT/CHECK",\r
       "userName": "mediacube",\r
       "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
       "timeout": 1000\r
         "timeout": 1000\r
       }\r
     },\r
+    {\r
+      "$type": "OctopusMetadata",\r
+      "server": {\r
+        "address": "http://10.10.1.27/services/rest/octopus/",\r
+        "timeout": 1000\r
+      }\r
+    },\r
     {\r
       "$type": "MediaCubeMetadata",\r
       "server": {\r
   ],\r
   "targets": [\r
     {\r
-      "label": "Adáskész",\r
+      "label": "1",\r
       "processor": "FXPTargetProcessor",\r
-      "outputFormat": "%ID%",\r
-      "killDateDays": 5,\r
-      "saveSegments": true,\r
-      "tag": "Adáskész",\r
+      "subFolderFormat": "%IDROOT%-%TEXT%",\r
+      "outputFormat": "%ID%-%TEXT%",\r
+      "tag": "1",\r
       "disableFileVersioning": true,\r
       "enableOverride": true,\r
-      "saveMorpheusMetadata": true,\r
-      "pathMorpheusMetadata": "/PLAYOUT/MorpheusGateway/Input",\r
-      "deviceIdMorpheus": "ISILON",\r
       "remote": {\r
-        "address": "ftp://10.10.1.100/PLAYOUT/Video",\r
+        "address": "ftp://10.10.1.100/TESZT/1",\r
         "userName": "mediacube",\r
         "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
         "timeout": 1000\r
       }\r
     },\r
     {\r
-      "label": "Újravágás",\r
+      "label": "2",\r
       "processor": "FXPTargetProcessor",\r
       "subFolderFormat": "%IDROOT%-%TEXT%",\r
       "outputFormat": "%ID%-%TEXT%",\r
-      "tag": "Újravágás",\r
+      "tag": "2",\r
       "disableFileVersioning": true,\r
       "enableOverride": true,\r
       "remote": {\r
-        "address": "ftp://10.10.1.100/PLAYOUT_NLE",\r
+        "address": "ftp://10.10.1.100/TESZT/2",\r
         "userName": "mediacube",\r
         "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
         "timeout": 1000\r
-      },\r
-      "sendEmailOnSuccess": true,\r
-      "successEmailRecipient": "vasary@elgekko.net",\r
-      "successEmailPattern": "A %TARGETNAME% újravágása szükséges."\r
-    },\r
+      }\r
+    },  \r
     {\r
-      "label": "Archiválás",\r
+      "label": "KESZ",\r
       "processor": "FXPTargetProcessor",\r
-      "outputFormat": "%ID%",\r
-      "tag": "Archiválás",\r
-      "saveArchiveMetadata": true,\r
+      "subFolderFormat": "%IDROOT%-%TEXT%",\r
+      "outputFormat": "%ID%-%TEXT%",\r
+      "tag": "KESZ",\r
       "disableFileVersioning": true,\r
       "enableOverride": true,\r
+         "deleteAfterCopy": true,\r
       "remote": {\r
-        "address": "ftp://10.10.1.100/ARCHIVE/ONE",\r
+        "address": "ftp://10.10.1.100/TESZT/KESZ",\r
         "userName": "mediacube",\r
         "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
         "timeout": 1000\r
diff --git a/client/Maestro/Configuration/configuration-studio.json b/client/Maestro/Configuration/configuration-studio.json
deleted file mode 100644 (file)
index 61909c4..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-{\r
-  "title": "Stúdió szerverről másolás",\r
-  "active": true,\r
-  "startInTray": true,\r
-  "enableCustomMetadataId": true,\r
-  "filter": "avi",\r
-  "player": {\r
-  },\r
-  "source": {\r
-    "$type": "NEXIOSource",\r
-    "local": {\r
-      "address": "ws://10.10.1.27/services/nexio"\r
-    },\r
-    "remote": {\r
-      "address": "ftp://10.10.1.55:2098",\r
-      "userName": "administrator",\r
-      "password": "+QtkeQdCTiOvZOgK/kUND4pO4/D+//r7ZIyluwMMdiqMEgO8iJErAG10ooWhPfiljQeXrdeyMzo7gWEZtcWpNSomGeDIbdMyQwtpqmMo1VEM3A27ZfzigY09YD46ECRh"\r
-    }\r
-  },\r
-  "metadatas": [\r
-    {\r
-      "$type": "OctopusMetadata",\r
-      "server": {\r
-        "address": "http://10.10.1.27/services/rest/octopus",\r
-        "timeout": 1000\r
-      }\r
-    },\r
-    {\r
-      "$type": "TrafficMetadata",\r
-      "server": {\r
-        "address": "Data Source=10.10.1.45;Initial Catalog=PA_Echo;Persist Security Info=True;",\r
-        "userName": "MAM",\r
-        "password": "7RKZYBzumKjL40SJwuwiFCvX57xuCN8zay6OttUm2wbrgImyYZBHyZTUUYrXX31Ge2Uwew07HYsqh2uzdJeDBDwcVntxaHg3nIpv9Dyq/odVoiC4tUF/K+lgvKWANcrZ",\r
-        "timeout": 1000\r
-      }\r
-    },\r
-    {\r
-      "$type": "MediaCubeMetadata",\r
-      "server": {\r
-        "address": "http://10.10.1.27/services/rest/jobengine",\r
-        "userName": "mediacube",\r
-        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
-        "timeout": 1000\r
-      }\r
-    }\r
-  ],\r
-  "targets": [\r
-    {\r
-    "label": "Octopus mappába küldés",\r
-    "processor": "FXPTargetProcessor",\r
-    "subFolderFormat": "%IDROOT%-%TEXT%",\r
-    "outputFormat": "%ID%-%SOURCENAME%",\r
-    "killDateDays": 15,\r
-    "temporaryCopy": true,\r
-    "remote": {\r
-      "address": "ftp://10.10.1.100/OCTOPUS",\r
-      "userName": "mediacube",\r
-      "password": "H7YCE8gvuGsPvN3bQSf4FTH0/4IRmoe3gKY0QvgG+wlfqS48yLhm/fDoPSRaWpDWa3RKZAnLF3pKs+lLSQX0IRVZDRCkydQP7syEwKhHztbJ+A88W9rKRF2JrQ7W6jA1",\r
-      "timeout": 1000\r
-    },\r
-    "tag": "Betöltés"\r
-    },\r
-    {\r
-      "label": "Traffic mappába küldés",\r
-      "processor": "FXPTargetProcessor",\r
-      "outputFormat": "%ID%-%SOURCENAME%",\r
-      "tag": "Betöltés",\r
-      "subFolderFormat": "%IDROOT%-%TEXT%",\r
-      "killDateDays": 7,\r
-      "temporaryCopy": true,\r
-      "saveArchiveMetadata": false,\r
-      "remote": {\r
-        "address": "ftp://10.10.1.100/PLAYOUT_NLE",\r
-        "userName": "mediacube",\r
-        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
-        "timeout": 1000\r
-      }\r
-    },\r
-    {\r
-      "label": "Promo mappába küldés",\r
-      "processor": "FTPTargetProcessor",\r
-      "outputFormat": "%ID%-%SOURCENAME%",\r
-      "tag": "Betöltés",\r
-      "subFolderFormat": "%IDROOT%-%TEXT%/INGEST-%TIMESTAMP%",\r
-      "killDateDays": 30,\r
-      "temporaryCopy": true,\r
-      "saveArchiveMetadata": false,\r
-      "remote": {\r
-        "address": "ftp://10.10.1.100/PROMO_NLE",\r
-        "userName": "mediacube",\r
-        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
-        "timeout": 1000\r
-      }\r
-    },    \r
-    {\r
-      "label": "Reklám mappába küldés",\r
-      "processor": "FTPTargetProcessor",\r
-      "outputFormat": "%ID%-%SOURCENAME%",\r
-      "tag": "Betöltés",\r
-      "subFolderFormat": "%IDROOT%-%TEXT%/INGEST-%TIMESTAMP%",\r
-      "killDateDays": 14,\r
-      "temporaryCopy": true,\r
-      "saveArchiveMetadata": false,\r
-      "remote": {\r
-        "address": "ftp://10.10.1.100/REKLAM_NLE",\r
-        "userName": "mediacube",\r
-        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
-        "timeout": 1000\r
-      }\r
-    },\r
-    {\r
-      "label": "TQC check",\r
-      "processor": "FXPTargetProcessor",\r
-      "outputFormat": "%ID%-%SOURCENAME%",\r
-      "tag": "Betöltés",\r
-      "killDateDays": 7,\r
-      "temporaryCopy": true,\r
-      "saveArchiveMetadata": false,\r
-      "remote": {\r
-        "address": "ftp://10.10.1.100/TQC/CHECK",\r
-        "userName": "mediacube",\r
-        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
-        "timeout": 1000\r
-      }\r
-    },\r
-    {\r
-      "label": "TQC promo",\r
-      "processor": "FXPTargetProcessor",\r
-      "outputFormat": "%ID%-%SOURCENAME%",\r
-      "tag": "Betöltés",\r
-      "killDateDays": 7,\r
-      "temporaryCopy": true,\r
-      "saveArchiveMetadata": false,\r
-      "remote": {\r
-        "address": "ftp://10.10.1.100/TQC/PROMO",\r
-        "userName": "mediacube",\r
-        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
-        "timeout": 1000\r
-      }\r
-    },\r
-    {\r
-      "label": "TQC reklám",\r
-      "processor": "FXPTargetProcessor",\r
-      "outputFormat": "%ID%-%SOURCENAME%",\r
-      "tag": "Betöltés",\r
-      "killDateDays": 7,\r
-      "temporaryCopy": true,\r
-      "saveArchiveMetadata": false,\r
-      "remote": {\r
-        "address": "ftp://10.10.1.100/TQC/REKLAM",\r
-        "userName": "mediacube",\r
-        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
-        "timeout": 1000\r
-      }\r
-    }]\r
-}\r
diff --git a/client/Maestro/Configuration/configuration-studio1.json b/client/Maestro/Configuration/configuration-studio1.json
deleted file mode 100644 (file)
index 575cc83..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-{\r
-  "title": "NEXIO2UNC_FXP",\r
-  "active": false,\r
-  "startInTray": false,\r
-  "enableCustomMetadataId": true,\r
-  "filter": "avi",\r
-  "player": {\r
-  },\r
-  "source": {\r
-    "$type": "NEXIOSource",\r
-    "local": {\r
-      "address": "ws://10.10.1.27/services/nexio"\r
-    },\r
-    "remote": {\r
-      "address": "ftp://10.10.1.55:2098",\r
-      "userName": "administrator",\r
-      "password": "+QtkeQdCTiOvZOgK/kUND4pO4/D+//r7ZIyluwMMdiqMEgO8iJErAG10ooWhPfiljQeXrdeyMzo7gWEZtcWpNSomGeDIbdMyQwtpqmMo1VEM3A27ZfzigY09YD46ECRh"\r
-    }\r
-  },\r
-  "metadatas": [\r
-    {\r
-      "$type": "OctopusMetadata",\r
-      "server": {\r
-        "address": "http://localhost:8888/services/rest/octopus",\r
-        "timeout": 1000\r
-      }\r
-    },\r
-    {\r
-      "$type": "TrafficMetadata",\r
-      "server": {\r
-        "address": "Data Source=10.10.1.45;Initial Catalog=PA_Echo;Persist Security Info=True;",\r
-        "userName": "MAM",\r
-        "password": "7RKZYBzumKjL40SJwuwiFCvX57xuCN8zay6OttUm2wbrgImyYZBHyZTUUYrXX31Ge2Uwew07HYsqh2uzdJeDBDwcVntxaHg3nIpv9Dyq/odVoiC4tUF/K+lgvKWANcrZ",\r
-        "timeout": 1000\r
-      }\r
-    },\r
-    {\r
-      "$type": "MediaCubeMetadata",\r
-      "server": {\r
-        "address": "http://10.10.1.27/services/rest/jobengine",\r
-        "userName": "mediacube",\r
-        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
-        "timeout": 1000\r
-      }\r
-    }\r
-  ],\r
-  "targets": [\r
-    {\r
-      "label": "Archiválás",\r
-      "processor": "FXPTargetProcessor",\r
-      "outputFormat": "%ID%",\r
-      "tag": "Archiválás",\r
-      "saveArchiveMetadata": true,\r
-      "deleteAfterCopy": false,\r
-      "temporaryCopy": true,\r
-      "killDateDays": 5,\r
-      "remote": {\r
-        "address": "ftp://10.10.1.100:21/ARCHIVE/TESZT",\r
-        "userName": "mediacube",\r
-        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
-        "timeout": 1000\r
-      }\r
-    }\r
-  ]\r
-}\r
diff --git a/client/Maestro/Configuration/configuration-tqc-archive.json b/client/Maestro/Configuration/configuration-tqc-archive.json
deleted file mode 100644 (file)
index 5fcb4d0..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-{\r
-  "title": "Playout_NLE",\r
-  "active": false,\r
-  "startInTray": false,\r
-  "enableCustomMetadataId": true,\r
-  "player": {\r
-    "enabled": true,\r
-    "autoStart": false,\r
-    "segmentEditor": true\r
-  },\r
-  "source": {\r
-    "$type": "UNCSource",\r
-    "filter": "avi,wav,mxf",\r
-    "local": {\r
-      "address": "file://10.10.1.100/BRAAVOS/ARCHIVE",\r
-      "userName": "mediacube",\r
-      "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
-      "timeout": 1000\r
-    },\r
-    "remote": {\r
-      "address": "ftp://10.10.1.100/ARCHIVE",\r
-      "userName": "mediacube",\r
-      "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
-      "timeout": 1000\r
-    }\r
-  },\r
-  "metadatas": [\r
-    {\r
-      "$type": "TrafficMetadata",\r
-      "server": {\r
-        "address": "Data Source=10.10.1.45;Initial Catalog=PA_Echo;Persist Security Info=True;",\r
-        "userName": "MAM",\r
-        "password": "7RKZYBzumKjL40SJwuwiFCvX57xuCN8zay6OttUm2wbrgImyYZBHyZTUUYrXX31Ge2Uwew07HYsqh2uzdJeDBDwcVntxaHg3nIpv9Dyq/odVoiC4tUF/K+lgvKWANcrZ",\r
-        "timeout": 1000\r
-      }\r
-    },\r
-    {\r
-      "$type": "MediaCubeMetadata",\r
-      "server": {\r
-        "address": "http://10.10.1.27/services/rest/jobengine/",\r
-        "timeout": 1000\r
-      }\r
-    }\r
-  ],\r
-  "targets": [\r
-    {\r
-      "label": "Archiválás",\r
-      "processor": "FXPTargetProcessor",\r
-      "subFolderFormat": "%IDROOT%-%TEXT%",\r
-      "outputFormat": "%ID%-%TEXT%",\r
-      "tag": "Újravágás",\r
-      "temporaryCopy": true,\r
-      "remote": {\r
-        "address": "ftp://10.10.1.100/ARCHIVE/TEST",\r
-        "userName": "mediacube",\r
-        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
-        "timeout": 1000\r
-      },\r
-      "sendEmailOnSuccess": true,\r
-      "successEmailRecipient": "vasary@elgekko.net",\r
-      "successEmailPattern": "A %TARGETNAME% újravágása szükséges."\r
-    }\r
-   \r
-  ]\r
-}\r
index 059b858c1bd1138b6274531481a71a40f23cac46..ed1d9b3bb9949135c09a6fe5bcc9fd6a96952239 100644 (file)
     <None Include="Configuration\-configuration-transcoder.json">\r
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
     </None>\r
-    <None Include="Configuration\configuration-studio.json">\r
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
-    </None>\r
     <None Include="Configuration\global.json">\r
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
     </None>\r
-    <None Include="Configuration\-configuration-nexio-ingest.json">\r
+    <None Include="Configuration\configuration-nexio-ingest.json">\r
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
     </None>\r
     <None Include="Configuration\-configuration-editor.json">\r
     <None Include="Configuration\-configuration-tqc-check.json">\r
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
     </None>\r
-    <None Include="Configuration\-UJ-configuration-tqc-check.json">\r
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
-    </None>\r
-    <None Include="Configuration\configuration-tqc-archive.json">\r
+    <None Include="Configuration\UJ-configuration-tqc-check.json">\r
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
     </None>\r
     <None Include="Connected Services\packages.config" />\r
     <None Include="Configuration\-configuration-sxs.json">\r
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
     </None>\r
-    <None Include="Configuration\configuration-studio1.json">\r
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
-    </None>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <WCFMetadata Include="Connected Services\" />\r
index 52bd64c4b6e7294e57fad0757eb5bcb7896177bd..3d0d96b313c120a321a6da0bff67a50a569b2d33 100644 (file)
@@ -32,11 +32,11 @@ namespace Maestro {
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MaestroForm));\r
             System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();\r
             System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle();\r
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();\r
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();\r
             System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle();\r
             System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle10 = new System.Windows.Forms.DataGridViewCellStyle();\r
             System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle();\r
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();\r
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();\r
             this.groupSource = new System.Windows.Forms.GroupBox();\r
             this.dgSource = new System.Windows.Forms.DataGridView();\r
             this.bindingSource = new System.Windows.Forms.BindingSource(this.components);\r
@@ -77,16 +77,7 @@ namespace Maestro {
             this.tabSystem = new System.Windows.Forms.TabControl();\r
             this.tabPage1 = new System.Windows.Forms.TabPage();\r
             this.dgJobs = new System.Windows.Forms.DataGridView();\r
-            this.bindingSourceJobs = new System.Windows.Forms.BindingSource(this.components);\r
-            this.tabPage2 = new System.Windows.Forms.TabPage();\r
-            this.dgMessages = new System.Windows.Forms.DataGridView();\r
-            this.dataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn();\r
-            this.dataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn();\r
-            this.dataGridViewProgressColumn1 = new Maestro.Commons.DataGridViewProgressColumn();\r
-            this.systemMessageBindingSource = new System.Windows.Forms.BindingSource(this.components);\r
-            this.metadataInfoBindingSource = new System.Windows.Forms.BindingSource(this.components);\r
             this.columnInputName = new System.Windows.Forms.DataGridViewTextBoxColumn();\r
-            this.Progress = new Maestro.Commons.DataGridViewProgressColumn();\r
             this.columnLabel = new System.Windows.Forms.DataGridViewTextBoxColumn();\r
             this.columnID = new System.Windows.Forms.DataGridViewTextBoxColumn();\r
             this.columnStatus = new System.Windows.Forms.DataGridViewTextBoxColumn();\r
@@ -96,6 +87,14 @@ namespace Maestro {
             this.columnOutput = new System.Windows.Forms.DataGridViewTextBoxColumn();\r
             this.columnKillDate = new System.Windows.Forms.DataGridViewTextBoxColumn();\r
             this.columnMessage = new System.Windows.Forms.DataGridViewTextBoxColumn();\r
+            this.bindingSourceJobs = new System.Windows.Forms.BindingSource(this.components);\r
+            this.tabPage2 = new System.Windows.Forms.TabPage();\r
+            this.dgMessages = new System.Windows.Forms.DataGridView();\r
+            this.dataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn();\r
+            this.dataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn();\r
+            this.dataGridViewProgressColumn1 = new Maestro.Commons.DataGridViewProgressColumn();\r
+            this.systemMessageBindingSource = new System.Windows.Forms.BindingSource(this.components);\r
+            this.metadataInfoBindingSource = new System.Windows.Forms.BindingSource(this.components);\r
             this.groupSource.SuspendLayout();\r
             ((System.ComponentModel.ISupportInitialize)(this.dgSource)).BeginInit();\r
             ((System.ComponentModel.ISupportInitialize)(this.bindingSource)).BeginInit();\r
@@ -735,7 +734,6 @@ namespace Maestro {
             this.dgJobs.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {\r
             this.columnInputName,\r
             this.columnLabel,\r
-            this.Progress,\r
             this.columnID,\r
             this.columnStatus,\r
             this.columnStarted,\r
@@ -771,6 +769,82 @@ namespace Maestro {
             this.dgJobs.CellToolTipTextNeeded += new System.Windows.Forms.DataGridViewCellToolTipTextNeededEventHandler(this.dgJobs_CellToolTipTextNeeded);\r
             this.dgJobs.MouseClick += new System.Windows.Forms.MouseEventHandler(this.dataGridJobs_MouseClick);\r
             // \r
+            // columnInputName\r
+            // \r
+            this.columnInputName.DataPropertyName = "InputName";\r
+            this.columnInputName.Frozen = true;\r
+            this.columnInputName.HeaderText = "InputName";\r
+            this.columnInputName.Name = "columnInputName";\r
+            this.columnInputName.Width = 93;\r
+            // \r
+            // columnLabel\r
+            // \r
+            this.columnLabel.DataPropertyName = "Label";\r
+            this.columnLabel.Frozen = true;\r
+            this.columnLabel.HeaderText = "Label";\r
+            this.columnLabel.Name = "columnLabel";\r
+            this.columnLabel.Width = 63;\r
+            // \r
+            // columnID\r
+            // \r
+            this.columnID.DataPropertyName = "ID";\r
+            dataGridViewCellStyle4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
+            this.columnID.DefaultCellStyle = dataGridViewCellStyle4;\r
+            this.columnID.HeaderText = "ID";\r
+            this.columnID.Name = "columnID";\r
+            this.columnID.Width = 44;\r
+            // \r
+            // columnStatus\r
+            // \r
+            this.columnStatus.DataPropertyName = "Status";\r
+            dataGridViewCellStyle5.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
+            this.columnStatus.DefaultCellStyle = dataGridViewCellStyle5;\r
+            this.columnStatus.HeaderText = "Status";\r
+            this.columnStatus.Name = "columnStatus";\r
+            this.columnStatus.Width = 66;\r
+            // \r
+            // columnStarted\r
+            // \r
+            this.columnStarted.DataPropertyName = "Started";\r
+            this.columnStarted.HeaderText = "Started";\r
+            this.columnStarted.Name = "columnStarted";\r
+            this.columnStarted.Width = 71;\r
+            // \r
+            // columnFinished\r
+            // \r
+            this.columnFinished.DataPropertyName = "Finished";\r
+            this.columnFinished.HeaderText = "Finished";\r
+            this.columnFinished.Name = "columnFinished";\r
+            this.columnFinished.Width = 79;\r
+            // \r
+            // columnInput\r
+            // \r
+            this.columnInput.DataPropertyName = "Input";\r
+            this.columnInput.HeaderText = "Input";\r
+            this.columnInput.Name = "columnInput";\r
+            this.columnInput.Width = 59;\r
+            // \r
+            // columnOutput\r
+            // \r
+            this.columnOutput.DataPropertyName = "Output";\r
+            this.columnOutput.HeaderText = "Output";\r
+            this.columnOutput.Name = "columnOutput";\r
+            this.columnOutput.Width = 68;\r
+            // \r
+            // columnKillDate\r
+            // \r
+            this.columnKillDate.DataPropertyName = "KillDate";\r
+            this.columnKillDate.HeaderText = "KillDate";\r
+            this.columnKillDate.Name = "columnKillDate";\r
+            this.columnKillDate.Width = 75;\r
+            // \r
+            // columnMessage\r
+            // \r
+            this.columnMessage.DataPropertyName = "Message";\r
+            this.columnMessage.HeaderText = "Message";\r
+            this.columnMessage.Name = "columnMessage";\r
+            this.columnMessage.Width = 83;\r
+            // \r
             // tabPage2\r
             // \r
             this.tabPage2.Controls.Add(this.dgMessages);\r
@@ -853,90 +927,6 @@ namespace Maestro {
             // \r
             this.metadataInfoBindingSource.DataSource = typeof(Maestro.Metadata.MetadataInfo);\r
             // \r
-            // columnInputName\r
-            // \r
-            this.columnInputName.DataPropertyName = "InputName";\r
-            this.columnInputName.Frozen = true;\r
-            this.columnInputName.HeaderText = "InputName";\r
-            this.columnInputName.Name = "columnInputName";\r
-            this.columnInputName.Width = 93;\r
-            // \r
-            // columnLabel\r
-            // \r
-            this.columnLabel.DataPropertyName = "Label";\r
-            this.columnLabel.Frozen = true;\r
-            this.columnLabel.HeaderText = "Label";\r
-            this.columnLabel.Name = "columnLabel";\r
-            this.columnLabel.Width = 63;\r
-            // \r
-            // Progress\r
-            // \r
-            this.Progress.DataPropertyName = "Progress";\r
-            this.Progress.Frozen = true;\r
-            this.Progress.HeaderText = "";\r
-            this.Progress.MinimumWidth = 100;\r
-            this.Progress.Name = "Progress";\r
-            // \r
-            // columnID\r
-            // \r
-            this.columnID.DataPropertyName = "ID";\r
-            dataGridViewCellStyle4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
-            this.columnID.DefaultCellStyle = dataGridViewCellStyle4;\r
-            this.columnID.HeaderText = "ID";\r
-            this.columnID.Name = "columnID";\r
-            this.columnID.Width = 44;\r
-            // \r
-            // columnStatus\r
-            // \r
-            this.columnStatus.DataPropertyName = "Status";\r
-            dataGridViewCellStyle5.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
-            this.columnStatus.DefaultCellStyle = dataGridViewCellStyle5;\r
-            this.columnStatus.HeaderText = "Status";\r
-            this.columnStatus.Name = "columnStatus";\r
-            this.columnStatus.Width = 66;\r
-            // \r
-            // columnStarted\r
-            // \r
-            this.columnStarted.DataPropertyName = "Started";\r
-            this.columnStarted.HeaderText = "Started";\r
-            this.columnStarted.Name = "columnStarted";\r
-            this.columnStarted.Width = 71;\r
-            // \r
-            // columnFinished\r
-            // \r
-            this.columnFinished.DataPropertyName = "Finished";\r
-            this.columnFinished.HeaderText = "Finished";\r
-            this.columnFinished.Name = "columnFinished";\r
-            this.columnFinished.Width = 79;\r
-            // \r
-            // columnInput\r
-            // \r
-            this.columnInput.DataPropertyName = "Input";\r
-            this.columnInput.HeaderText = "Input";\r
-            this.columnInput.Name = "columnInput";\r
-            this.columnInput.Width = 59;\r
-            // \r
-            // columnOutput\r
-            // \r
-            this.columnOutput.DataPropertyName = "Output";\r
-            this.columnOutput.HeaderText = "Output";\r
-            this.columnOutput.Name = "columnOutput";\r
-            this.columnOutput.Width = 68;\r
-            // \r
-            // columnKillDate\r
-            // \r
-            this.columnKillDate.DataPropertyName = "KillDate";\r
-            this.columnKillDate.HeaderText = "KillDate";\r
-            this.columnKillDate.Name = "columnKillDate";\r
-            this.columnKillDate.Width = 75;\r
-            // \r
-            // columnMessage\r
-            // \r
-            this.columnMessage.DataPropertyName = "Message";\r
-            this.columnMessage.HeaderText = "Message";\r
-            this.columnMessage.Name = "columnMessage";\r
-            this.columnMessage.Width = 83;\r
-            // \r
             // MaestroForm\r
             // \r
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\r
index 5824f70eaa17ebac3206084c1c2d12be7a3a47d0..dd52678fe37bee539548c287196ae579057c5409 100644 (file)
@@ -1,15 +1,15 @@
 using Maestro.Sources;\r
-using System;\r
-using System.Linq;\r
-using System.Windows.Forms;\r
-using System.Collections.Generic;\r
+using MaestroShared.Commons;\r
 using MaestroShared.Configuration;\r
 using MaestroShared.Metadata;\r
-using MaestroShared.Targets;\r
 using MaestroShared.Target;\r
-using System.ComponentModel;\r
-using MaestroShared.Commons;\r
+using MaestroShared.Targets;\r
 using Myriadbits.MXF;\r
+using System;\r
+using System.Collections.Generic;\r
+using System.ComponentModel;\r
+using System.Linq;\r
+using System.Windows.Forms;\r
 \r
 namespace Maestro {\r
 \r
@@ -97,8 +97,7 @@ namespace Maestro {
                         MXFFile mxf = new MXFFile(fullName);\r
                         mxf.Inspect();\r
                         sourceItem.Frames = (long)mxf.TimecodeComponent.Duration;\r
-                    }\r
-                    catch (Exception e) {\r
+                    } catch (Exception e) {\r
                         string fullName = (sourceItem as FileSourceItem).FileInfo.FullName;\r
                         logger.Error("Can not detect length of '{0}'. Error message is: {1}", fullName, e.Message);\r
                     }\r
@@ -107,8 +106,7 @@ namespace Maestro {
                 TargetProcessorParameter processorParameter = null;\r
                 try {\r
                     processorParameter = CreateProcessorParameter(target, sourceItem, createDate);\r
-                }\r
-                catch (Exception e) {\r
+                } catch (Exception e) {\r
                     result = null;\r
                     break;\r
                 }\r
@@ -194,7 +192,7 @@ namespace Maestro {
             result.MessageBus = MessageBus;\r
             result.CreateDate = createDate;\r
             result.Frames = sourceItem.Frames;\r
-\r
+            result.TargetOrder = Configuration.Targets.ToList().IndexOf(target);\r
             result.ArchiveMetadata.userName = result.UserName;\r
             if (SelectedMetadata.Kind == MetadataType.MediaCube && result.ArchiveMetadata != null) {\r
                 result.ArchiveMetadata.itemHouseId = PatternNameMaker.Get(result.ArchiveMetadata.itemHouseId, result.ID, result.InputFileName, null, null, result.MetadataText);\r
@@ -257,19 +255,29 @@ namespace Maestro {
         }\r
 \r
         private void OnExecuteClick(object sender, EventArgs e) {\r
-            IEnumerable<CheckBox> keys = currentProcessors.Keys.OrderByDescending(k => (k.Tag as Target).NexioServer);\r
-            if (keys == null)\r
-                return;\r
+            //TODO doksiba, hogy ez miert van igy\r
 \r
-            foreach (var key in keys) {\r
-                List<ITargetProcessor> targetProcessors = currentProcessors[key];\r
-                if (targetProcessors == null)\r
+            //IEnumerable<CheckBox> keys = currentProcessors.Keys.OrderByDescending(k => (k.Tag as Target).NexioServer);\r
+            //if (keys == null)\r
+            //    return;\r
+            List<ITargetProcessor> targetProcessors = new List<ITargetProcessor>();\r
+\r
+            foreach (var key in currentProcessors.Keys) {\r
+                if (currentProcessors[key] == null)\r
                     continue;\r
-                targetProcessors.ForEach(p => {\r
+                targetProcessors.AddRange(currentProcessors[key]);\r
+            }\r
+\r
+            targetProcessors\r
+                .OrderBy(p => p.InputName)\r
+                .ThenByDescending(p => p.Parameters.TargetConfig.NexioServer)\r
+                .ThenBy(p => p.Parameters.TargetOrder)\r
+                .ToList()\r
+                .ForEach(p => {\r
                     jobs.Add(p);\r
                     jobsQueue.Enqueue(p);\r
                 });\r
-            }\r
+\r
 \r
             ClearSelectedProcessors();\r
             if (processorWorkers == null)\r
index 7dc9eef3e1a0dbec6f9301e9a21e6ad4aecfdc8c..3bedf1c530480c5e11987c96aeba3adfd1b108ab 100644 (file)
@@ -1,22 +1,22 @@
-using LinkDotNet.MessageHandling.Contracts;\r
+using LinkDotNet.MessageHandling;\r
+using LinkDotNet.MessageHandling.Contracts;\r
+using MaestroShared.Commons;\r
+using MaestroShared.Configuration;\r
+using MaestroShared.Resources;\r
+using MaestroShared.Targets;\r
+using MediaCubeClient;\r
 using NLog;\r
+using OctopusClient;\r
 using System;\r
 using System.Collections.Concurrent;\r
 using System.Collections.Generic;\r
 using System.ComponentModel;\r
 using System.Drawing;\r
-using System.Windows.Forms;\r
-using System.Threading;\r
+using System.IO;\r
 using System.Linq;\r
+using System.Threading;\r
+using System.Windows.Forms;\r
 using TrafficClient;\r
-using OctopusClient;\r
-using System.IO;\r
-using MediaCubeClient;\r
-using LinkDotNet.MessageHandling;\r
-using MaestroShared.Configuration;\r
-using MaestroShared.Targets;\r
-using MaestroShared.Commons;\r
-using MaestroShared.Resources;\r
 \r
 namespace Maestro {\r
 \r
@@ -117,7 +117,7 @@ namespace Maestro {
 \r
         private void MaestroForm_Resize(object sender, EventArgs e) {\r
             if (WindowState == FormWindowState.Minimized) {\r
-                if (TrayApplicationContext.GlobalConfig.MinimizeToTray) \r
+                if (TrayApplicationContext.GlobalConfig.MinimizeToTray)\r
                     Visible = false;\r
             }\r
         }\r
index 6d44e5c3b491406c02fdafa969e39dd2c046b8f7..d975f3f6247f731a5cc3088e2e7bdb67bf0d8b7c 100644 (file)
         AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w\r
         LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0\r
         ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAS\r
-        CAAAAk1TRnQBSQFMAgEBAgEAAbgBAQG4AQEBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo\r
+        CAAAAk1TRnQBSQFMAgEBAgEAAcgBAQHIAQEBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo\r
         AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA\r
         AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5\r
         AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA\r
index 4655203e0dd1af647837d862334a1db8568442b3..822bd58d8ac8d5585b2fb76c4e86626311714881 100644 (file)
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
 // You can specify all the values or you can default the Build and Revision Numbers\r
 // by using the '*' as shown below:\r
 // [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("2.0.8.4")]\r
-[assembly: AssemblyFileVersion("2.0.8.4")]\r
+[assembly: AssemblyVersion("2.0.8.5")]\r
+[assembly: AssemblyFileVersion("2.0.8.5")]\r
index 7af553e48e74b42e931a653bedfa7c2690e8a2e0..9771fb538f2dd1d9638b59aa3b8cab35376b0031 100644 (file)
@@ -1,9 +1,9 @@
-using System.Collections.Generic;\r
+using LinkDotNet.MessageHandling.Contracts;\r
 using MaestroShared.Configuration;\r
+using MaestroShared.Interfaces;\r
 using MaestroShared.Metadata;\r
-using LinkDotNet.MessageHandling.Contracts;\r
 using System;\r
-using MaestroShared.Interfaces;\r
+using System.Collections.Generic;\r
 \r
 namespace MaestroShared.Target {\r
     public class TargetProcessorParameter {\r
@@ -22,5 +22,7 @@ namespace MaestroShared.Target {
         public IMessageBus MessageBus { get; set; }\r
         public DateTime CreateDate { get; set; }\r
         public long Frames { get; set; }\r
+        public int TargetOrder { get; set; }\r
+\r
     }\r
 }\r
index 16370083869faf37fdd4fbffc333a35943a5cc16..1d7487a9580fb33ef7dc452d720c8a0b32e0f758 100644 (file)
@@ -14,6 +14,7 @@
        <executor className="user.jobengine.server.steps.DetectMissingLengthStep" maxConcurrent="1"/>\r
        <executor className="user.jobengine.server.steps.DeleteFileStep" maxConcurrent="100"/>\r
        <executor className="user.jobengine.server.steps.DownloadRecordingFromNexioStep" maxConcurrent="1"/>\r
+       <executor className="user.jobengine.server.steps.DuplicateRemoverStep" maxConcurrent="1"/>\r
        <executor className="user.jobengine.server.steps.FakeNoParamsStep" maxConcurrent="20"/>\r
        <executor className="user.jobengine.server.steps.FakeStep" maxConcurrent="20"/>\r
        <executor className="user.jobengine.server.steps.GenerateMorpheusMetadataStep" maxConcurrent="10"/>\r
index 4577c6061f849d360b78f56e3eef0c41aaab0167..c08645404a4cdd8a3284e74ddcad79258ae37645 100644 (file)
@@ -1,4 +1,11 @@
 {"joblist":[\r
+       {\r
+         "name" : "sys: Remove duplicates",\r
+      "template": "duplicate-remover.xml",\r
+      "parameters": [ \r
+       {"name": "limit", "value": 1, "type": "java.lang.Integer"}\r
+      ]\r
+       },\r
        {\r
          "name" : "sys: Check LOWRES integrity",\r
       "template": "check-lowres-integrity.xml",\r
diff --git a/server/user.jobengine.executors/jobtemplates/duplicate-remover.xml b/server/user.jobengine.executors/jobtemplates/duplicate-remover.xml
new file mode 100644 (file)
index 0000000..4650acb
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<jobtemplate name="Duplikátumok törlése" multiInstance="true">\r
+       <declarations>\r
+               <parameters>\r
+                       <parameter name="limit" type="java.lang.Integer"/>\r
+               </parameters>\r
+       </declarations>\r
+       <commands>\r
+               <calljobstep id="id1" type="user.jobengine.server.steps.DuplicateRemoverStep" weight="1">\r
+                       <inputs>\r
+                               <input>\r
+                                       <parameter name="limit" />\r
+                               </input>\r
+                       </inputs>\r
+               </calljobstep>\r
+       </commands>\r
+</jobtemplate>
\ No newline at end of file
diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/DuplicateRemoverStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/DuplicateRemoverStep.java
new file mode 100644 (file)
index 0000000..f8c24c5
--- /dev/null
@@ -0,0 +1,100 @@
+package user.jobengine.server.steps;\r
+\r
+import java.nio.file.Files;\r
+import java.nio.file.Path;\r
+import java.nio.file.Paths;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+import org.apache.logging.log4j.Marker;\r
+\r
+import user.jobengine.db.IItemManager;\r
+import user.jobengine.db.IResultSetConsumer;\r
+import user.jobengine.db.IStatementDecorator;\r
+import user.jobengine.db.MediaFile;\r
+import user.jobengine.server.IJobEngine;\r
+import user.jobengine.server.IJobRuntime;\r
+\r
+public class DuplicateRemoverStep extends JobStep {\r
+       private static final Logger logger = LogManager.getLogger();\r
+       private static final String LOWRES_ROOT = "/mediacube/data/lowres/www/video";\r
+       private static final String DUPLICATES_ROOT = "/mediacube/data/lowres/www";\r
+\r
+       private Marker marker;\r
+       private IItemManager manager;\r
+\r
+       @StepEntry\r
+       public Object[] execute(int limit, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+               marker = jobRuntime.getMarker();\r
+               manager = jobEngine.getItemManager();\r
+               processLowresDuplicates(limit);\r
+               return null;\r
+       }\r
+\r
+       public void processLowresDuplicates(int limit) {\r
+               long count[] = { 0, 0 };\r
+\r
+               manager.executeQuery("select count(filecount) from vw_items_rd_dup", rs -> {\r
+                       count[0] = rs.getLong(1);\r
+                       return false;\r
+               }, null);\r
+\r
+               if (count[0] == 0) {\r
+                       setProgress(100);\r
+                       return;\r
+               }\r
+\r
+               if (limit > 0)\r
+                       count[0] = limit;\r
+\r
+               manager.executeQuery("select filename from vw_items_rd_dup order by filecount desc", rs -> {\r
+                       String fileName = rs.getString("filename");\r
+                       processLowresDuplicates(fileName);\r
+                       count[1]++;\r
+                       int progress = (int) ((double) count[1] * 100 / count[0]);\r
+                       setProgress(progress);\r
+                       if (count[0] == count[1])\r
+                               return false;\r
+                       else\r
+                               return true;\r
+               }, null);\r
+       }\r
+\r
+       private void processLowresDuplicates(String fileName) {\r
+               String query = "select mediafileid, mediafilehouseid, relativepath from vw_items_rd_lh where filename = ?";\r
+               IStatementDecorator decorator = st -> {\r
+                       st.setString(1, fileName);\r
+               };\r
+\r
+               MediaFile[] masterMediaFile = { null };\r
+\r
+               IResultSetConsumer consumer = rs -> {\r
+                       long mediaFileId = rs.getLong("mediafileid");\r
+                       MediaFile mediaFile = (MediaFile) manager.get(MediaFile.class, mediaFileId);\r
+                       if (masterMediaFile[0] == null) {\r
+                               masterMediaFile[0] = mediaFile;\r
+                               return true;\r
+                       }\r
+\r
+                       String path = rs.getString("relativepath");\r
+                       boolean moved = false;\r
+                       try {\r
+                               Path target = Paths.get(DUPLICATES_ROOT, path);\r
+                               EscortFiles.ensureUNCFolder(target.getParent());\r
+                               Files.move(Paths.get(LOWRES_ROOT, path), target);\r
+                               moved = true;\r
+                       } catch (Exception e) {\r
+                               logger.catching(e);\r
+                       }\r
+\r
+                       if (moved) {\r
+                               logger.info(marker, "{} {} {}", mediaFile.getMediaId(), mediaFile.getRelativePath(), masterMediaFile[0].getRelativePath());\r
+                               mediaFile.setRelativePath(masterMediaFile[0].getRelativePath());\r
+                               manager.modify(mediaFile);\r
+                       }\r
+                       return true;\r
+               };\r
+               manager.executeQuery(query, consumer, decorator);\r
+       }\r
+\r
+}\r
index b71d720ecccf8de2fe68e67cbce6511e17488c49..d5408eb5dfa599989b6fd4adad1725384e18992f 100644 (file)
@@ -1,6 +1,5 @@
 package user.jobengine.server.IT;\r
 \r
-import java.io.File;\r
 import java.io.IOException;\r
 import java.nio.charset.Charset;\r
 import java.nio.file.Files;\r
@@ -362,65 +361,6 @@ public class Support {
                return String.format("%s %s %s", start, name, channel);\r
        }\r
 \r
-       private void processLowresDuplicateGroup(String fileName) {\r
-               //System.out.println("*** Processing: " + fileName);\r
-               String query = "select mediafileid, mediafilehouseid, relativepath from vw_items_rd_lh where filename = ?";\r
-               IStatementDecorator decorator = st -> {\r
-                       st.setString(1, fileName);\r
-               };\r
-\r
-               MediaFile[] masterMediaFile = { null };\r
-\r
-               IResultSetConsumer consumer = rs -> {\r
-                       long mediaFileId = rs.getLong("mediafileid");\r
-                       MediaFile mediaFile = (MediaFile) manager.get(MediaFile.class, mediaFileId);\r
-                       if (masterMediaFile[0] == null) {\r
-                               masterMediaFile[0] = mediaFile;\r
-                               return true;\r
-                       }\r
-\r
-                       String path = rs.getString("relativepath");\r
-                       File file = Paths.get(LOWRES_ROOT, path).toFile();\r
-                       duplicateLength[0] += file.length();\r
-\r
-                       if (file.delete()) {\r
-                               System.out.println(String.format("%d %s %s", mediaFile.getMediaId(), mediaFile.getRelativePath(), masterMediaFile[0].getRelativePath()));\r
-                               mediaFile.setRelativePath(masterMediaFile[0].getRelativePath());\r
-                               manager.modify(mediaFile);\r
-                       }\r
-                       return true;\r
-               };\r
-               manager.executeQuery(query, consumer, decorator);\r
-       }\r
-\r
-       @Test\r
-       public void processLowresDuplicates() {\r
-               long count[] = { 0, 0 };\r
-               manager.executeQuery("select count(filecount) from vw_items_rd_dup", rs -> {\r
-                       count[0] = rs.getLong(1);\r
-                       return false;\r
-               }, null);\r
-\r
-               int limit[] = { 1, 0 };\r
-               int progress[] = { 0, 0 };\r
-               manager.executeQuery("select filename from vw_items_rd_dup order by filecount desc", rs -> {\r
-                       String fileName = rs.getString("filename");\r
-                       processLowresDuplicateGroup(fileName);\r
-                       count[1]++;\r
-                       progress[1] = (int) ((double) count[1] * 100 / count[0]);\r
-                       if (progress[1] > progress[0]) {\r
-                               progress[0] = progress[1];\r
-                       }\r
-                       System.out.println("Completed " + progress[0] + " " + count[1] + "/" + count[0] + " available " + duplicateLength[0]);\r
-                       limit[1]++;\r
-\r
-                       if (limit[0] == limit[1])\r
-                               return false;\r
-                       else\r
-                               return true;\r
-               }, null);\r
-       }\r
-\r
        @Test\r
        public void processRecordingsSummertime() throws Exception {\r
 \r
index bb5f8c810d5530000f3911d17cb65b92efb32a40..574024d87eb92bcd91a0de54c9a9ed165bac5587 100644 (file)
@@ -2,7 +2,6 @@ package user.jobengine.server.IT;
 \r
 import java.io.File;\r
 import java.nio.file.Paths;\r
-import java.util.Date;\r
 \r
 import org.junit.AfterClass;\r
 import org.junit.BeforeClass;\r
@@ -16,15 +15,8 @@ import user.jobengine.db.ItemManager;
 import user.jobengine.db.MediaFile;\r
 \r
 public class SupportRemoveDuplicates {\r
-       public class BD {\r
-               Date fBD;\r
-               Date nBD;\r
-       }\r
-\r
        protected static IItemManager manager = null;\r
-\r
        private static final String LOWRES_ROOT = "//10.10.1.27/mclowres/www/video";\r
-\r
        private static final long[] duplicateLength = { 0 };\r
 \r
        @BeforeClass\r