git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 21 Dec 2017 16:44:59 +0000 (16:44 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 21 Dec 2017 16:44:59 +0000 (16:44 +0000)
20 files changed:
client/DxPlay/DxPlayer.cs
client/Maestro/Configuration/-configuration-playout-ingest.json [moved from client/Maestro/Configuration/configuration-playout-ingest.json with 100% similarity]
client/Maestro/Configuration/configuration-tqc-check.json [new file with mode: 0644]
client/Maestro/Maestro.csproj
server/-product/log4j2.xml
server/-product/mediacube.product
server/user.jobengine.executors/config/scheduledjobs.json
server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveListBuilderStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/CopyForArchiveNEXIOMaterialsStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/CreateMissingLowresStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/OctopusDataMiner.java
server/user.jobengine.executors/src/user/jobengine/server/steps/TranscodeSELENIOStep.java
server/user.jobengine.osgi.commons/test/user/common/octopus/test/OctopusDataMinerTest.java
server/user.jobengine.osgi.db/.classpath
server/user.jobengine.osgi.db/.settings/org.eclipse.jdt.core.prefs
server/user.jobengine.osgi.db/.settings/org.hibernate.eclipse.console.prefs [new file with mode: 0644]
server/user.jobengine.osgi.db/src/user/jobengine/db/ItemDAOEx.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/util/AuthInitiator.java
server/user.jobengine.osgi.server/test/user/jobengine/server/steps/General.java [new file with mode: 0644]

index 3d8d3247808ac556d38a408c06d9e21ba1521a76..9cbe9d8e837a0a48c1128abfc994d4130881fb05 100644 (file)
@@ -14,10 +14,12 @@ using System.Drawing.Drawing2D;
 using System.Collections.Generic;\r
 using Myriadbits.MXF;\r
 using MaestroShared.Metadata;\r
+using NLog;\r
 \r
 namespace DxPlay {\r
 \r
     internal class DxPlayer : ISampleGrabberCB, IDisposable {\r
+        private static readonly Logger logger = LogManager.GetCurrentClassLogger();\r
 \r
         [DllImport("Kernel32.dll", EntryPoint = "RtlMoveMemory")]\r
         private static extern void CopyMemory(IntPtr Destination, IntPtr Source, [MarshalAs(UnmanagedType.U4)] uint Length);\r
@@ -86,7 +88,6 @@ namespace DxPlay {
                 int hr;\r
                 IntPtr hEvent;\r
                 MediaDescription = mediaDesc;\r
-                Debug.WriteLine("SetupGraph");\r
                 // Set up the graph\r
                 playerWindow = hWin;\r
 \r
@@ -145,7 +146,7 @@ namespace DxPlay {
         public void Play() {\r
             // If we aren't already playing (or shutting down)\r
             if (State == GraphState.Completed)\r
-                 Stop();\r
+                Stop();\r
             if (State == GraphState.Stopped || State == GraphState.Paused) {\r
                 int hr = m_mediaCtrl.Run();\r
                 DsError.ThrowExceptionForHR(hr);\r
@@ -243,6 +244,7 @@ namespace DxPlay {
 #if DEBUG\r
                 m_DsRot = new DsROTEntry(m_FilterGraph);\r
 #endif\r
+                logger.Debug("Add SourceFilter to graph");\r
                 IBaseFilter sourceFilter = null;\r
                 hr = m_FilterGraph.AddSourceFilter(MediaDescription.FileName, MediaDescription.FileName, out sourceFilter);\r
                 DsError.ThrowExceptionForHR(hr);\r
@@ -252,10 +254,12 @@ namespace DxPlay {
                 //m_FilterGraph.AddFilter(splitter, "MXF Splitter");\r
                 //splitter = FilterGraphTools.AddFilterByName(graphBuilder, FilterCategory.LegacyAmFilterCategory, "Sony MXF Splitter");\r
 \r
+                logger.Debug("Add LAVSplitter to graph");\r
                 IBaseFilter splitter = LoadSplitter(graphBuilder);\r
                 if (splitter == null)\r
                     throw new Exception("No splitter!");\r
 \r
+                logger.Debug("Connect SourceFilter -> LAVSplitter");\r
                 FilterGraphTools.ConnectFilters(graphBuilder, sourceFilter, "Output", splitter, "Input", true);\r
 \r
                 //IAMStreamSelect amStreamSelect = (IAMStreamSelect)splitter;\r
@@ -286,44 +290,69 @@ namespace DxPlay {
                 //    Debug.WriteLine("Audio count: " + audioCount);\r
                 //}\r
 \r
+                logger.Debug("Add LAVVideo to graph");\r
                 IBaseFilter videoDecoder = LoadVideoDecoder(graphBuilder);\r
 \r
                 if (videoDecoder == null)\r
                     throw new Exception("No video decoder!");\r
 \r
+                logger.Debug("Connect LAVSplitter -> LAVVideo");\r
                 FilterGraphTools.ConnectFilters(graphBuilder, splitter, "Video", videoDecoder, "Input", true);\r
 \r
+                logger.Debug("Add SampleGrabber to graph");\r
                 IBaseFilter sampGrabber = (IBaseFilter)new SampleGrabber();\r
                 ConfigureSampleGrabber((ISampleGrabber)sampGrabber);\r
                 hr = m_FilterGraph.AddFilter(sampGrabber, "Sample Grabber");\r
                 DsError.ThrowExceptionForHR(hr);\r
 \r
+                logger.Debug("Connect LAVVideo -> SampleGrabber");\r
                 FilterGraphTools.ConnectFilters(graphBuilder, videoDecoder, "Output", sampGrabber, "Input", true);\r
 \r
+                logger.Debug("Add VideoMixingRenderer9 to graph");\r
                 m_videoRenderer = (IBaseFilter)new VideoMixingRenderer9();\r
                 hr = m_FilterGraph.AddFilter(m_videoRenderer, "Video Mixing Renderer 9");\r
                 DsError.ThrowExceptionForHR(hr);\r
 \r
-                IVMRDeinterlaceControl9 deinterlace = (IVMRDeinterlaceControl9)m_videoRenderer;\r
-                Guid interlaceMode;\r
-                deinterlace.GetActualDeinterlaceMode(0, out interlaceMode);\r
+                //logger.Debug("Add VideoMixingRenderer9 to graph");\r
+                //IVMRDeinterlaceControl9 deinterlace = (IVMRDeinterlaceControl9)m_videoRenderer;\r
+                //Guid interlaceMode;\r
+                //deinterlace.GetActualDeinterlaceMode(0, out interlaceMode);\r
 \r
-                FilterGraphTools.ConnectFilters(graphBuilder, sampGrabber, "Output", m_videoRenderer, "VMR Input0", true);\r
-\r
-                if (DsFindPin.ByName(splitter, "Audio") != null) {\r
-                    IBaseFilter audioDecoder = null;\r
-                    audioDecoder = LoadAudioDecoder(graphBuilder);\r
-                    if (audioDecoder == null)\r
-                        throw new Exception("No audio decoder!");\r
+                try {\r
+                    logger.Debug("Connect SampleGrabber -> VideoMixingRenderer9");\r
+                    FilterGraphTools.ConnectFilters(graphBuilder, sampGrabber, "Output", m_videoRenderer, "VMR Input0", true);\r
+                }\r
+                catch (Exception e) {\r
+                    logger.Error(e);\r
+                }\r
 \r
-                    FilterGraphTools.ConnectFilters(graphBuilder, splitter, "Audio", audioDecoder, "Input", true);\r
-                    FilterGraphTools.RenderPin(graphBuilder, audioDecoder, "Output");\r
+                try {\r
+                    if (DsFindPin.ByName(splitter, "Audio") != null) {\r
+                        logger.Debug("Add LAVAudio to graph");\r
+                        IBaseFilter audioDecoder = null;\r
+                        audioDecoder = LoadAudioDecoder(graphBuilder);\r
+                        if (audioDecoder == null)\r
+                            throw new Exception("No audio decoder!");\r
+\r
+                        logger.Debug("Connect LAVSplitter -> LAVAudio");\r
+                        FilterGraphTools.ConnectFilters(graphBuilder, splitter, "Audio", audioDecoder, "Input", true);\r
+                        FilterGraphTools.RenderPin(graphBuilder, audioDecoder, "Output");\r
+                    } else {\r
+                        logger.Warn("Audio pin not available");\r
+                    }\r
+                }\r
+                catch (Exception ex) {\r
+                    logger.Warn("Audio pin not available");\r
                 }\r
 \r
+                logger.Debug("SaveSizeInfo");\r
                 SaveSizeInfo(sampGrabber as ISampleGrabber);\r
+                logger.Debug("SetTimeCodes");\r
                 SetTimeCodes();\r
+                logger.Debug("ConfigureVideoWindow");\r
                 ConfigureVideoWindow();\r
 \r
+                logger.Debug("Enable YADIF deinterlace");\r
                 ILAVVideoSettings settings = (ILAVVideoSettings)videoDecoder;\r
                 //settings.SetSWDeintMode(LAVSWDeintModes.SWDeintMode_None);\r
                 settings.SetSWDeintMode(LAVSWDeintModes.SWDeintMode_YADIF);\r
@@ -389,11 +418,11 @@ namespace DxPlay {
                     MXFFile mxf = new MXFFile(MediaDescription.FileName);\r
                     mxf.Inspect();\r
                     //MediaDescription.firstFrame = new Timecode(mxf.FirstSystemItem?.UserDateFullFrameNb, MediaDescription.FrameRate);\r
-                    MediaDescription.firstFrame = new Timecode((int) mxf.TimecodeComponent.StartTimecode,(float) mxf.TimecodeComponent.RoundedTimecodeBase);\r
+                    MediaDescription.firstFrame = new Timecode((int)mxf.TimecodeComponent.StartTimecode, (float)mxf.TimecodeComponent.RoundedTimecodeBase);\r
                 }\r
                 catch (Exception ex) {\r
                     MediaDescription.firstFrame = new Timecode();\r
-                } \r
+                }\r
             }\r
             //MediaDescription.firstFrame = new Timecode();\r
             CurrentTC = new Timecode(MediaDescription.FirstFrame);\r
diff --git a/client/Maestro/Configuration/configuration-tqc-check.json b/client/Maestro/Configuration/configuration-tqc-check.json
new file mode 100644 (file)
index 0000000..6989f70
--- /dev/null
@@ -0,0 +1,98 @@
+{\r
+  "title": "TQC check",\r
+  "active": true,\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/TQC/CHECK",\r
+      "userName": "mediacube",\r
+      "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
+      "timeout": 1000\r
+    },\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
+  "metadatas": [\r
+    {\r
+      "$type": "TrafficMetadata",\r
+      "server": {\r
+        "address": "Data Source=10.10.1.45\\sql16;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": "Adáskész",\r
+      "processor": "FXPTargetProcessor",\r
+      "outputFormat": "%ID%",\r
+      "saveSegments": true,\r
+      "tag": "Adáskész",\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
+        "userName": "mediacube",\r
+        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
+        "timeout": 1000\r
+      }\r
+    },\r
+    {\r
+      "label": "Újravágás",\r
+      "processor": "FXPTargetProcessor",\r
+      "subFolderFormat": "%IDROOT%-%TEXT%",\r
+      "outputFormat": "%ID%-%TEXT%",\r
+      "tag": "Újravágás",\r
+      "disableFileVersioning": true,\r
+      "enableOverride": true,\r
+      "remote": {\r
+        "address": "ftp://10.10.1.100/PLAYOUT_NLE",\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
+      "label": "Archiválás",\r
+      "processor": "FXPTargetProcessor",\r
+      "outputFormat": "%ID%",\r
+      "tag": "Archiválás",\r
+      "saveArchiveMetadata": true,\r
+      "disableFileVersioning": true,\r
+      "enableOverride": true,\r
+      "remote": {\r
+        "address": "ftp://10.10.1.100/ARCHIVE",\r
+        "userName": "mediacube",\r
+        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
+        "timeout": 1000\r
+      }\r
+    }\r
+  ]\r
+}\r
index ee0d9d0b51f8c428273220177b3086b8806db7a6..69d690b4e5de104fb0ed43798a220c2d061c4311 100644 (file)
     <None Include="Configuration\-configuration-grafika.json">\r
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
     </None>\r
+    <None Include="Configuration\configuration-tqc-check.json">\r
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
+    </None>\r
     <None Include="Configuration\global.json">\r
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
     </None>\r
     <None Include="Configuration\-configuration-nle.json">\r
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
     </None>\r
-    <None Include="Configuration\configuration-playout-ingest.json">\r
+    <None Include="Configuration\-configuration-playout-ingest.json">\r
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
     </None>\r
     <None Include="Configuration\-configuration-tqc-check.json">\r
index 08bb456eabcc5a4b8af6dbe83fb0fa90ffd59866..6080b7668f0adc77b7dc03f3d60814a3f7c0af35 100644 (file)
@@ -1,12 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 <Configuration status="ERROR" monitorInterval="10" packages="user.commons.log4j2.appender">\r
        <Properties>\r
-               <Property name="fileName">/opt/mediacube/log/mediacube.log</Property>\r
-               <Property name="filePattern">/opt/mediacube/log/$${date:yyyy-MM}/mediacube-%d{MM-dd-yyyy}-%i.log.gz</Property>\r
-               <Property name="markeredFileName">/opt/mediacube/log/markered-mediacube.log</Property>\r
-               <Property name="markeredFilePattern">/opt/mediacube/log/$${date:yyyy-MM}/markered-mediacube-%d{MM-dd-yyyy}-%i.log.gz</Property>\r
-               <Property name="fileName.err">/opt/mediacube/log/mediacube-err.log</Property>\r
-               <Property name="filePattern.err">/opt/mediacube/log/$${date:yyyy-MM}/mediacube-err-%d{MM-dd-yyyy}-%i.log.gz</Property>\r
+               <Property name="logPath">/opt/mediacube/log</Property>\r
+               <Property name="fileName">${logPath}/mediacube.log</Property>\r
+               <Property name="filePattern">${logPath}/$${date:yyyy-MM}/mediacube-%d{MM-dd-yyyy}-%i.log.gz</Property>\r
+               <Property name="markeredFileName">${logPath}/markered-mediacube.log</Property>\r
+               <Property name="markeredFilePattern">${logPath}/$${date:yyyy-MM}/markered-mediacube-%d{MM-dd-yyyy}-%i.log.gz</Property>\r
+               <Property name="fileName.err">${logPath}/mediacube-err.log</Property>\r
+               <Property name="filePattern.err">${logPath}/$${date:yyyy-MM}/mediacube-err-%d{MM-dd-yyyy}-%i.log.gz</Property>\r
        </Properties>\r
        <Appenders>\r
                <Console name="Console" target="SYSTEM_OUT">\r
index 02f309505cab019f9607647f77bd4bc7c422fd75..8aff6869582dc18e220ad91047ce2e7926802ca2 100644 (file)
 -Djobengine.loglevel=INFO
 -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\r
       </vmArgs>\r
-      <vmArgsLin>#Database
--Djobengine.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;
--Djobengine.db.user=db2admin
--Djobengine.db.password=password
--Djobengine.nosql.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;
--Djobengine.nosql.db.user=db2admin
--Djobengine.nosql.db.password=password
--Djobengine.nosql.db.schema=test
-
-#Octopus
--Djobengine.octopus.api.address=http://10.10.1.11/api/v1
--Djobengine.octopus.api.user=mam
--Djobengine.octopus.api.password=napocska
--Djobengine.octopus.rundowns.name=test_rundowns
--Djobengine.octopus.storyfolders.name=test_storyfolders
--Djobengine.octopus.stories.name=test_stories
-
-#Selenio
--Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl
--Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC.zenium
-
-#Nexio
--Djobengine.nexio.db.url=jdbc:sqlserver://10.10.1.59:1433;databaseName=NXDB;
--Djobengine.nexio.db.user=sa
--Djobengine.nexio.db.password=resolve
--Dnexio.useMOSGateway=true
--Dnexio.host=10.10.1.55
--Dnexio.disable=true\r
+      <vmArgsLin>#Database\r
+-Djobengine.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;\r
+-Djobengine.db.user=db2admin\r
+-Djobengine.db.password=password\r
+-Djobengine.nosql.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;\r
+-Djobengine.nosql.db.user=db2admin\r
+-Djobengine.nosql.db.password=password\r
+-Djobengine.nosql.db.schema=test\r
+\r
+#Octopus\r
+-Djobengine.octopus.api.address=http://10.10.1.11/api/v1\r
+-Djobengine.octopus.api.user=mam\r
+-Djobengine.octopus.api.password=napocska\r
+-Djobengine.octopus.rundowns.name=rundowns\r
+-Djobengine.octopus.storyfolders.name=storyfolders\r
+-Djobengine.octopus.stories.name=stories\r
+\r
+#Selenio\r
+-Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl\r
+-Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC.zenium\r
+\r
+#Nexio\r
+-Djobengine.nexio.db.url=jdbc:sqlserver://10.10.1.59:1433;databaseName=NXDB;\r
+-Djobengine.nexio.db.user=sa\r
+-Djobengine.nexio.db.password=resolve\r
+-Dnexio.useMOSGateway=true\r
+-Dnexio.host=10.10.1.55\r
+-Dnexio.disable=false\r
       </vmArgsLin>\r
       <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts\r
       </vmArgsMac>\r
index 044007dd922d9d795f2a113ab78288a89ce71945..87fb76602a2766f87fa6c2f93d94f06aa027a11c 100644 (file)
@@ -1,26 +1,16 @@
 {"joblist":[\r
        {\r
-      "active": false,\r
+      "active": true,\r
+      "executeimmediate": true,\r
          "name" : "OCTOPUS adatok szinkronizálása",\r
       "template": "sync-octopus.xml",\r
-      "executeimmediate": false,\r
       "cronexpression": "0/30 * * * * ?",\r
       "parameters": [\r
        {"name": "includeArchived", "value": false, "type": "java.lang.Boolean"}\r
       ]\r
        },      \r
        {\r
-      "active": false,\r
-         "name" : "OCTOPUS adatok szinkronizálása (archivált tükrök is)",\r
-      "template": "sync-octopus.xml",\r
-      "executeimmediate": true,\r
-      "cronexpression": "0/30 * * * * ?",\r
-      "parameters": [\r
-       {"name": "includeArchived", "value": true, "type": "java.lang.Boolean"}\r
-      ]\r
-       },      \r
-       {\r
-      "active": false,\r
+      "active": true,\r
       "executeimmediate": false,\r
          "name" : "Archiválás az ISILON/ARCHIVE mappából",\r
       "template": "archive-ondemand.xml",\r
       ]\r
        },\r
        {\r
-      "active": false,\r
+      "active": true,\r
+      "executeimmediate": false,\r
          "name" : "Lejárt ISISLON/ARCHIVE anyagok törlése",\r
       "template": "delete-materials.xml",\r
-      "executeimmediate": false,\r
       "cronexpression": "0 0 5 * * ?",\r
       "parameters": [ \r
        {"name": "sourcePath", "value": "/mnt/ISILON/ARCHIVE", "type": "java.lang.String"}\r
@@ -45,9 +35,9 @@
        },      \r
        {\r
       "active": false,\r
+      "executeimmediate": true,\r
          "name" : "NEXIO anyagok másolása az ISILON/ARCHIVE mappába",\r
       "template": "copyforarchive-nexio-materials.xml",\r
-      "executeimmediate": true,\r
       "cronexpression": "0 0 0/1 1/1 * ? *",\r
       "parameters": [ \r
        {"name": "nexioPort", "value": 2098, "type": "java.lang.Integer"},\r
@@ -63,9 +53,9 @@
        },      \r
        {\r
       "active": false,\r
+      "executeimmediate": true,\r
          "name" : "Archiválás az ISILON/ARCHIVE/ONE mappából",\r
       "template": "archive-ondemand.xml",\r
-      "executeimmediate": true,\r
       "cronexpression": "0 0 0/1 1/1 * ? *",\r
       "parameters": [ \r
        {"name": "sourcePath", "value": "/mnt/ISILON/ARCHIVE/ONE", "type": "java.lang.String"},\r
@@ -77,9 +67,9 @@
        },\r
        {\r
       "active": false,\r
+      "executeimmediate": true,\r
          "name" : "TRAFFIC anyagok visszatöltése",\r
       "template": "retrieve-traffic-missing-materials.xml",\r
-      "executeimmediate": true,\r
       "cronexpression": "0 0 0/1 1/1 * ? *",\r
       "parameters": [\r
        {"name": "dbUrl", "value": "jdbc:sqlserver://10.10.1.45\\sql16;databaseName=PA_Echo;", "type": "java.lang.String"},\r
@@ -92,9 +82,9 @@
        },      \r
        {\r
       "active": false,\r
+      "executeimmediate": true,\r
          "name" : "MORPHEUS anyagok visszatöltése",\r
       "template": "retrieve-morpheus-missing-materials.xml",\r
-      "executeimmediate": true,\r
       "cronexpression": "0 0 0/1 1/1 * ? *",\r
       "parameters": [\r
        {"name": "sourcePath", "value": "/mnt/MORPHEUS", "type": "java.lang.String"},\r
        },      \r
        {\r
       "active": false,\r
+      "executeimmediate": true,\r
          "name" : "Lejárt ISISLON/ARCHIVE_TEMP anyagok törlése",\r
       "template": "delete-materials.xml",\r
-      "executeimmediate": true,\r
       "cronexpression": "0 0 0/1 1/1 * ? *",\r
       "parameters": [ \r
        {"name": "sourcePath", "value": "/mnt/ISILON/ARCHIVE_TEMP", "type": "java.lang.String"}\r
        },      \r
        {\r
       "active": false,\r
+      "executeimmediate": true,\r
          "name" : "NEXIO anyagok törlése",\r
       "template": "delete-nexio-materials.xml",\r
-      "executeimmediate": true,\r
       "cronexpression": "0 0 0/1 1/1 * ? *",\r
       "parameters": [ \r
        {"name": "port", "value": 2098, "type": "java.lang.Integer"},\r
        },      \r
        {\r
       "active": false,\r
+      "executeimmediate": false,\r
          "name" : "Párhuzamosított teszt folyamat",\r
       "template": "fake-concurrent.xml",\r
-      "executeimmediate": false,\r
       "cronexpression": "0/10 * * ? * *",\r
       "parameters": [ {"name": "itemID", "value": 1, "type": "java.lang.Long"} ]\r
        },\r
        {\r
       "active": false,\r
+      "executeimmediate": false,\r
          "name" : "Teszt folyamat",\r
       "template": "fake.xml",\r
-      "executeimmediate": false,\r
       "cronexpression": "0/10 * * ? * *",\r
       "parameters": [ {"name": "itemID", "value": 1, "type": "java.lang.Long"} ]\r
        }\r
index 8f68e6fa437e7f1ec002fd9d6744b607e64dab7d..01aba298c62d930ded706491d41e5bad745c9581 100644 (file)
@@ -30,7 +30,8 @@ public class ArchiveListBuilderStep extends JobStep {
        private static final Logger logger = LogManager.getLogger();\r
        //      private static final String UTF8 = "utf-8";\r
        private static final String STATUSFOLDER = ".STATUS";\r
-       private static final String MEDIAEXT = ".mxf";\r
+       private static final String MXFEXT = ".mxf";\r
+       private static final String WAVEXT = ".wav";\r
        private static final String JSONEXT = ".json";\r
        private static final String CATCHEDEXT = ".catched";\r
 \r
@@ -109,7 +110,8 @@ public class ArchiveListBuilderStep extends JobStep {
        private void processPathItem(Path mediaFilePath, final List<ArchiveItem> archiveList) {\r
                File mediaFile = mediaFilePath.toFile();\r
 \r
-               if (mediaFile.isDirectory() || !mediaFile.getName().toLowerCase().endsWith(MEDIAEXT.toLowerCase())) {\r
+               if (mediaFile.isDirectory() || !mediaFile.getName().toLowerCase().endsWith(MXFEXT.toLowerCase())\r
+                               || mediaFile.getName().toLowerCase().endsWith(WAVEXT.toLowerCase())) {\r
                        return;\r
                }\r
 \r
index 655e8cf8c69604be6ea4bba9c9070ab20d4ad672..ad38685fab999f9175f71aef25b591161e21fcb9 100644 (file)
@@ -107,7 +107,7 @@ public class CopyForArchiveNEXIOMaterialsStep extends JobStep {
                //                        "userName": "echotest"\r
                //              }\r
                BasicDBObject result = new BasicDBObject();\r
-               result.put("itemHouseID", rundownArchive.getItemHouseId());\r
+               result.put("itemHouseId", rundownArchive.getItemHouseId());\r
                result.put("itemTitle", rundownArchive.getItemTitle());\r
                result.put("itemDescription", rundownArchive.getItemDesc());\r
                result.put("userName", "mediacube");\r
@@ -193,7 +193,8 @@ public class CopyForArchiveNEXIOMaterialsStep extends JobStep {
                BasicDBObject clip = (BasicDBObject) clips.findOne(new BasicDBObject(LONGNAMEID, mosID));\r
                if (clip == null) {\r
                        logger.debug("File NOT exists {}", mosID);\r
-                       throw new Exception(String.format("File NOT exists %s", mosID));\r
+                       return null;\r
+                       //throw new Exception(String.format("File NOT exists %s", mosID));\r
                } else {\r
                        logger.debug("File exists {}", mosID);\r
                }\r
@@ -245,10 +246,10 @@ public class CopyForArchiveNEXIOMaterialsStep extends JobStep {
                for (DBObject r : rundowns) {\r
                        BasicDBObject rundown = (BasicDBObject) r;\r
                        setProgress(index * 100 / rundowns.size());\r
+                       long rundownID = NoSQLUtils.asLong(rundown, IOctopusAPI.ID);\r
+                       String rundownName = NoSQLUtils.asString(rundown, IOctopusAPI.NAME);\r
                        try {\r
-                               long rundownID = NoSQLUtils.asLong(rundown, IOctopusAPI.ID);\r
                                BasicDBObject currentRundownID = new BasicDBObject(IOctopusAPI.ID, rundownID);\r
-                               String rundownName = rundown.getString(IOctopusAPI.NAME);\r
                                if (archivedRundowns != null && archivedRundowns.contains(currentRundownID)) {\r
                                        logger.info("Skipping archived rundown {} {}", rundownID, rundownName);\r
                                        continue;\r
@@ -256,7 +257,7 @@ public class CopyForArchiveNEXIOMaterialsStep extends JobStep {
 \r
                                RundownArchive rundownArchive = processRundow(r);\r
                                if (rundownArchive == null || rundownArchive.isEmpty()) {\r
-                                       logger.info("Skipping rundown {} {}", NoSQLUtils.asLong(rundown, IOctopusAPI.ID), rundown.getString(IOctopusAPI.NAME));\r
+                                       logger.info("Skipping rundown {} {}", rundownID, rundownName);\r
                                        continue;\r
                                }\r
 \r
@@ -267,7 +268,8 @@ public class CopyForArchiveNEXIOMaterialsStep extends JobStep {
                        } catch (Exception e) {\r
                                logger.catching(e);\r
                                logger.error(getMarker(),\r
-                                               "A {} tükör archiválása nem lehetséges, mert a annak ellenőrzése hibát jelzett. A rendszer üzenete: " + e.getMessage());\r
+                                               String.format("A %s %s tükör archiválása nem lehetséges, mert a annak ellenőrzése hibát jelzett. A rendszer üzenete: %s", rundownID,\r
+                                                               rundownName, e.getMessage()));\r
                        }\r
                        index++;\r
                }\r
index cc38abec5699a1c2de0ecdf40c7060d82c1b8871..ca0d2f83b35e464156d6ee30f28066e69a85d44c 100644 (file)
@@ -1,18 +1,55 @@
 package user.jobengine.server.steps;\r
 \r
+import java.nio.file.Files;\r
+import java.nio.file.Paths;\r
+import java.util.List;\r
+\r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
 \r
-import user.jobengine.db.IItemManager;\r
+import user.jobengine.db.ItemDAOEx;\r
+import user.jobengine.db.ItemManager;\r
+import user.jobengine.db.Media;\r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.IJobRuntime;\r
 \r
 public class CreateMissingLowresStep extends JobStep {\r
        private static final Logger logger = LogManager.getLogger();\r
-       private IItemManager manager;\r
+       private static final String targetNamePattern = "%s";\r
+       private String workPath = "/mnt/ISILON/ARCHIVE_RESTORE";\r
+       private String transcoderPath = "/mnt/SELENIO";\r
+       private String webPath = "/mediacube/data/lowres/www/video";\r
 \r
        @StepEntry\r
        public Object[] execute(IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+               ItemDAOEx dao = new ItemDAOEx((ItemManager) jobEngine.getItemManager());\r
+               List<Media> medias = dao.getUntranscodedMedias();\r
+               if (medias == null)\r
+                       return null;\r
+\r
+               int i = 1;\r
+               for (Media media : medias) {\r
+                       String name = media.getMediaFilesName();\r
+                       logger.info("Processing {}", name);\r
+                       restore(jobEngine, jobRuntime, media);\r
+                       transcode(jobEngine, jobRuntime, media);\r
+                       Files.delete(Paths.get(workPath, name));\r
+                       setProgress(i * 100 / medias.size());\r
+                       i++;\r
+               }\r
+\r
                return null;\r
        }\r
+\r
+       private void restore(IJobEngine jobEngine, IJobRuntime jobRuntime, Media media) throws Exception {\r
+               TSMRestoreStep restore = new TSMRestoreStep();\r
+               restore.execute(media, workPath, targetNamePattern, null, 0, jobEngine, jobRuntime);\r
+       }\r
+\r
+       private void transcode(IJobEngine jobEngine, IJobRuntime jobRuntime, Media media) throws Exception {\r
+               TranscodeSELENIOStep selenio = new TranscodeSELENIOStep();\r
+               ArchiveItem archiveItem = new ArchiveItem();\r
+               archiveItem.setMediaFile(media.getMediaFilesName());\r
+               selenio.execute(workPath, archiveItem, media, transcoderPath, webPath, jobEngine, jobRuntime);\r
+       }\r
 }\r
index 307b8dbbcd445760fe3f2212865c416c317162a0..f710e641ce9ceee73e22ff3a8a240601825c3baf 100644 (file)
@@ -73,6 +73,8 @@ public class OctopusDataMiner {
        private String apiUser;\r
        private String apiPwd;\r
        private HashSet<Long> storyIDs = new HashSet<>();\r
+       private HashSet<Long> folderIDs = new HashSet<>();\r
+       private HashSet<Long> rundownIDs = new HashSet<>();\r
        private EventListenerList progressListenerList;\r
        private ProgressEvent progressEvent = new ProgressEvent(this, 0);\r
        private Map<Long, BasicDBList> storyRundowns;\r
@@ -115,9 +117,12 @@ public class OctopusDataMiner {
                        List<BasicDBObject> stories = NoSQLUtils.asList(storyFolderWithStoryIds, IOctopusAPI.STORIES);\r
                        if (stories == null)\r
                                continue;\r
+                       if (!folderIDs.contains(storyFolderId))\r
+                               folderIDs.add(storyFolderId);\r
                        long position = 1;\r
                        for (BasicDBObject story : stories) {\r
                                long storyId = story.getLong(IOctopusAPI.ID);\r
+\r
                                BasicDBList references = result.get(storyId);\r
                                if (references == null) {\r
                                        references = new BasicDBList();\r
@@ -140,6 +145,10 @@ public class OctopusDataMiner {
                        List<BasicDBObject> slugs = NoSQLUtils.asList(rundownWithStoryids, IOctopusAPI.SLUGS);\r
                        if (slugs == null)\r
                                continue;\r
+\r
+                       if (!rundownIDs.contains(rundownId))\r
+                               rundownIDs.add(rundownId);\r
+\r
                        for (BasicDBObject slug : slugs) {\r
                                if (!slug.containsKey(IOctopusAPI.STORYID))\r
                                        continue;\r
@@ -283,9 +292,9 @@ public class OctopusDataMiner {
                processRundowns(rundowns);\r
                processStoryFolders(storyFolders);\r
 \r
-               deleteDiff(currentRundowns.keySet(), storyRundowns.keySet(), RUNDOWN_COLLECTION);\r
-               deleteDiff(currentFolder.keySet(), storyStoryFolders.keySet(), RUNDOWN_COLLECTION);\r
-               deleteDiff(currentStories.keySet(), storyIDs, RUNDOWN_COLLECTION);\r
+               deleteDiff(currentRundowns.keySet(), rundownIDs, RUNDOWN_COLLECTION);\r
+               deleteDiff(currentFolder.keySet(), folderIDs, FOLDER_COLLECTION);\r
+               deleteDiff(currentStories.keySet(), storyIDs, STORY_COLLECTION);\r
                //              deleteOrphanRundowns();\r
                //              deleteOrphanStoryFolders();\r
                //              deleteOrphanStories();\r
@@ -321,7 +330,7 @@ public class OctopusDataMiner {
                //              }\r
 \r
                logger.trace(FINISHED);\r
-               throw new Exception("Mérés");\r
+               //throw new Exception("Mérés");\r
        }\r
 \r
        private String extractContent(BasicDBObject content) {\r
index 5a9dce9192e8c50e0b6bf523f508aff36f69d628..b1cb470167b1d59a72b899cef2795d988e704d31 100644 (file)
@@ -179,14 +179,21 @@ public class TranscodeSELENIOStep extends JobStep {
                List<user.commons.selenio.wsclient.MediaFile> outputs = of.getOutputFiles();\r
                if (outputs.size() != 1)\r
                        throw new IndexOutOfBoundsException("There are more than 1 file in the response: " + transcodeTask.getId());\r
-\r
                user.commons.selenio.wsclient.MediaFile selenioMediaFile = outputs.get(0);\r
                String outFile = selenioMediaFile.getFile();\r
-               outFile = outFile.substring(outFile.lastIndexOf("\\") + 1);\r
-               user.jobengine.db.MediaFile mediaFile = manager.createMediaFile(outFile, fileType, store, mediaCubeMedia);\r
-               mediaFile.add();\r
                try {\r
-                       Files.move(Paths.get(transcoderTargetPath, outFile), Paths.get(webPath, outFile), StandardCopyOption.REPLACE_EXISTING);\r
+\r
+                       outFile = outFile.substring(outFile.lastIndexOf("\\") + 1);\r
+                       if (outFile.indexOf(".") > 2) {\r
+                               Path subdir = Paths.get(outFile.substring(0, 1), outFile.substring(1, 2), outFile.substring(2, 3));\r
+                               manager.createMediaFile(Paths.get(subdir.toString(), outFile).toString(), fileType, store, mediaCubeMedia).add();\r
+                               subdir = Paths.get(webPath, subdir.toString());\r
+                               subdir.toFile().mkdirs();\r
+                               Files.move(Paths.get(transcoderTargetPath, outFile), Paths.get(subdir.toString(), outFile), StandardCopyOption.REPLACE_EXISTING);\r
+                       } else {\r
+                               manager.createMediaFile(outFile, fileType, store, mediaCubeMedia).add();\r
+                               Files.move(Paths.get(transcoderTargetPath, outFile), Paths.get(webPath, outFile), StandardCopyOption.REPLACE_EXISTING);\r
+                       }\r
                } catch (IOException e) {\r
                        logger.catching(e);\r
                        logger.error(getMarker(), "A {} állomány mozgatása a {} mappába nem sikerült.", outFile, webPath);\r
index b2957a2805019a8abc5fbde4b703391779b31e81..9818a7ad56410bb8baae965d4062c2c5eba4ba80 100644 (file)
@@ -101,7 +101,7 @@ public class OctopusDataMinerTest {
 \r
        @Test\r
        public void testClient() {\r
-               ResteasyWebTarget webTarget = new ResteasyClientBuilder().build().target("http://10.10.1.29/services/rest/octopus/");\r
+               ResteasyWebTarget webTarget = new ResteasyClientBuilder().build().target("http://10.10.1.28/services/rest/octopus/");\r
                Response response = null;\r
                for (int i = 0; i < 10000; i++) {\r
                        response = webTarget.path("rundowns").request().get();\r
index cf38f8c6fbf3929f5b63e77da4ca8ae220c14d59..ad20a72aa507086e6229ecca6b487fe4e8fa997a 100644 (file)
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 <classpath>\r
-       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>\r
        <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>\r
        <classpathentry excluding="user/jobengine/remotefiles/jcifs/smb/" kind="src" path="src"/>\r
        <classpathentry kind="src" path="test"/>\r
        <classpathentry kind="src" path="generated"/>\r
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>\r
        <classpathentry kind="output" path="bin"/>\r
 </classpath>\r
index 66737877a6fa6b0bde2ff05dfa72b159a15d5a5d..295926d964165896ea8aa7c1b1b3c9d3d3caa77e 100644 (file)
@@ -1,8 +1,7 @@
-#Mon Feb 06 13:26:25 CET 2012\r
 eclipse.preferences.version=1\r
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\r
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7\r
-org.eclipse.jdt.core.compiler.compliance=1.7\r
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8\r
+org.eclipse.jdt.core.compiler.compliance=1.8\r
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\r
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error\r
-org.eclipse.jdt.core.compiler.source=1.7\r
+org.eclipse.jdt.core.compiler.source=1.8\r
diff --git a/server/user.jobengine.osgi.db/.settings/org.hibernate.eclipse.console.prefs b/server/user.jobengine.osgi.db/.settings/org.hibernate.eclipse.console.prefs
new file mode 100644 (file)
index 0000000..8fdae10
--- /dev/null
@@ -0,0 +1,3 @@
+default.configuration=\r
+eclipse.preferences.version=1\r
+hibernate3.enabled=false\r
index b60264e1dd97d8685ce4acd66514dc5f48880835..aa13dd6f6afe0fccd6028074d547ec12f0fa9afb 100644 (file)
@@ -12,6 +12,7 @@ import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;\r
 \r
 import sqlj.runtime.ref.DefaultContext;\r
+import user.commons.ListUtils;\r
 \r
 public class ItemDAOEx {\r
        private static final Logger logger = LogManager.getLogger();\r
@@ -103,6 +104,47 @@ public class ItemDAOEx {
                return results;\r
        }\r
 \r
+       public List<Media> getUntranscodedMedias() {\r
+               List<Media> result = null;\r
+\r
+               ResultSet rs = null;\r
+               PreparedStatement st = null;\r
+               DefaultContext context = manager.getDbContext();\r
+               Connection connection = context.getConnection();\r
+               try {\r
+\r
+                       String query = "select m.ID, m.TITLE, m.DESCRIPTION, m.ITEMID, m.ITEMTYPEID, m.HOUSEID, m.LENGTH, m.CREATED, m.ARCHIVED, m.POSTER from MEDIA m right outer join VW_MEDIAFILES f on (f.MEDIAID = m.ID) where m.CREATED > '2017-12-14' and f.MEDIAFILECOUNT = 1";\r
+                       st = connection.prepareStatement(query);\r
+                       rs = st.executeQuery();\r
+                       MediaDAO dao = (MediaDAO) manager.getBaseDAO(Media.class);\r
+                       result = ListUtils.cast(dao.entities(context, rs));\r
+                       if (result != null)\r
+                               result.forEach(m -> m.setPersister(manager));\r
+                       connection.commit();\r
+               } catch (Exception e) {\r
+                       try {\r
+                               connection.rollback();\r
+                       } catch (Exception e1) {\r
+                               e1.printStackTrace();\r
+                       }\r
+                       manager.throwError(e);\r
+               } finally {\r
+                       try {\r
+                               if (rs != null)\r
+                                       rs.close();\r
+                       } catch (Exception e1) {\r
+                       }\r
+                       try {\r
+                               if (st != null)\r
+                                       st.close();\r
+                       } catch (Exception e1) {\r
+                       }\r
+                       manager.putDbContext(context);\r
+               }\r
+\r
+               return result;\r
+       }\r
+\r
        @SuppressWarnings("unchecked")\r
        public List<SearchResult> search(QueryObject queryObject) {\r
                manager.traceIn();\r
index f1b6618de539d2808ec606eaf1853d36aad6879b..2c4bf4d6148c8993956e11c0ef79ce60f8e2a92b 100644 (file)
@@ -1,6 +1,6 @@
 package user.jobengine.zk.model;\r
 \r
-import java.io.File;\r
+import java.net.URL;\r
 import java.nio.file.Paths;\r
 import java.util.HashMap;\r
 import java.util.List;\r
@@ -28,6 +28,7 @@ public class SearchModel extends BaseModel {
        private static final Logger logger = LogManager.getLogger();\r
        private static final String MEDIACUBEMEDIA = "mediaCubeMedia";\r
        private static final String PAGES_RETRIEVESELECTOR_ZUL = "/pages/retrieveselector.zul";\r
+       private static final String PAGES_MEDIAPLAYER = "/pages/mediaplayer.jsp?mediaurl=";\r
 \r
        private String searchValue = null;\r
        protected CachedListModel searchResult = null;\r
@@ -100,8 +101,11 @@ public class SearchModel extends BaseModel {
                                        Store store = mf.getStore();\r
                                        if (store.isLowres()) {\r
                                                StoreUri sourceStoreUri = store.getSourceStoreUri(RemoteStoreProtocol.HTTP);\r
-                                               File f = new File("file://" + mf.getRelativePath().replace("\\", "/"));\r
-                                               ret = String.format("%s%s%s", "/pages/mediaplayer.jsp?mediaurl=", sourceStoreUri.toString(), f.getName()).toString();\r
+                                               URL base = new URL(sourceStoreUri.toString());\r
+                                               String relative = mf.getRelativePath().replace("\\", "/");\r
+                                               ret = PAGES_MEDIAPLAYER + new URL(base, relative).toString();\r
+                                               // File f = new File("file://" + mf.getRelativePath().replace("\\", "/"));\r
+                                               // ret = String.format("%s%s%s", "/pages/mediaplayer.jsp?mediaurl=", sourceStoreUri.toString(), f.getName()).toString();\r
                                                break;\r
                                        }\r
                                }\r
index fe803dfeacd94873a69bab229e4ec7da9a81609f..218466b044ac4715a2b622b65b39d833dbe6c2ec 100644 (file)
@@ -1,25 +1,22 @@
 package user.jobengine.zk.util;\r
 \r
-\r
 import java.util.Map;\r
-import org.zkoss.zk.ui.*;\r
-import org.zkoss.zk.ui.util.Initiator;\r
 \r
+import org.zkoss.zk.ui.Page;\r
+import org.zkoss.zk.ui.util.Initiator;\r
 \r
 /**\r
-       Ellenorzi, hogy van e beloginelt user, ha nincs,\r
-       akkor -> login.zul\r
-       Minden oldal belinkeli ezt az ellenorzest.\r
-*/\r
+ * Ellenorzi, hogy van e beloginelt user, ha nincs, akkor -> login.zul Minden oldal belinkeli ezt az ellenorzest.\r
+ */\r
 public class AuthInitiator implements Initiator {\r
-  \r
-    public void doInit(Page page, Map<String, Object> args) throws Exception{\r
-       //nincs beloginelt felhasznalo\r
-//     if(SessionUtil.getAttribute(SessionUtil.PRINCIPALNAME) == null){\r
-//             Executions.sendRedirect("/index.jsp");\r
-//             return;\r
-//     }\r
-    }\r
-    \r
+\r
+       @Override\r
+       public void doInit(Page page, Map<String, Object> args) throws Exception {\r
+               //nincs beloginelt felhasznalo\r
+               //      if(SessionUtil.getAttribute(SessionUtil.PRINCIPALNAME) == null){\r
+               //              Executions.sendRedirect("/index.jsp");\r
+               //              return;\r
+               //      }\r
+       }\r
 \r
 }
\ No newline at end of file
diff --git a/server/user.jobengine.osgi.server/test/user/jobengine/server/steps/General.java b/server/user.jobengine.osgi.server/test/user/jobengine/server/steps/General.java
new file mode 100644 (file)
index 0000000..8ca2ccf
--- /dev/null
@@ -0,0 +1,26 @@
+package user.jobengine.server.steps;\r
+\r
+import java.net.URL;\r
+import java.nio.file.Path;\r
+import java.nio.file.Paths;\r
+\r
+import org.junit.Test;\r
+\r
+import user.jobengine.db.TestBase;\r
+\r
+public class General extends TestBase {\r
+\r
+       @Test\r
+       public void test1() throws Exception {\r
+               String webPath = "c:\\xxxx";\r
+               String outFile = "M012345.MXF";\r
+               Path subdir = Paths.get(outFile.substring(0, 1), outFile.substring(1, 2), outFile.substring(2, 3));\r
+               String rel = Paths.get(subdir.toString(), outFile).toString();\r
+               System.out.println(rel);\r
+               subdir = Paths.get(webPath, subdir.toString());\r
+               System.out.println(subdir.toString());\r
+               //subdir.toFile().mkdirs();\r
+               System.out.println(new URL(new URL("http://host/"), rel.replace("\\", "/")).toString());\r
+       }\r
+\r
+}\r