From: Vásáry Dániel Date: Wed, 11 Jul 2018 11:13:23 +0000 (+0000) Subject: git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube... X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=97b35fbd09934bab491d3817661c094d18cc3f9e;p=mediacube.git git-tfs-id: [tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31152 --- diff --git a/client/Maestro/Configuration/UJ-configuration-tqc-check.json b/client/Maestro/Configuration/UJ-configuration-tqc-check.json index d408da9d..112396ab 100644 --- a/client/Maestro/Configuration/UJ-configuration-tqc-check.json +++ b/client/Maestro/Configuration/UJ-configuration-tqc-check.json @@ -12,7 +12,13 @@ "$type": "UNCSource", "filter": "avi,wav,mxf", "local": { - "address": "file://c:\\x", + "address": "file://10.10.1.100/BRAAVOS/TQC/CHECK", + "userName": "mediacube", + "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy", + "timeout": 1000 + }, + "remote": { + "address": "ftp://10.10.1.100/TQC/CHECK", "userName": "mediacube", "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy", "timeout": 1000 @@ -76,7 +82,7 @@ }, { "label": "Archiválás", - "processor": "FXPTargetProcessor", + "processor": "UNCTargetProcessor", "outputFormat": "%ID%", "tag": "Archiválás", "saveArchiveMetadata": true, diff --git a/client/Maestro/MaestroForm.Metadata.cs b/client/Maestro/MaestroForm.Metadata.cs index dec1fb4e..fd68bd59 100644 --- a/client/Maestro/MaestroForm.Metadata.cs +++ b/client/Maestro/MaestroForm.Metadata.cs @@ -202,7 +202,7 @@ namespace Maestro { case MetadataType.OctopusStory: case MetadataType.OctopusPlaceHolder: result = GetOctopusMetadata(metadataType); - result.mediaType = "Octopus nyersanyag"; + result.mediaType = "Hír nyers"; break; case MetadataType.TrafficMaterial: result = GetTrafficMetadata(metadataType); @@ -222,13 +222,13 @@ namespace Maestro { metadataType = MetadataTypeUtil.Guess(SelectedSource.Prefix); switch (metadataType) { case MetadataType.TrafficMaterial: - result.mediaType = "Műsor nyersanyag"; + result.mediaType = "Műsor nyers"; break; case MetadataType.TrafficPromo: - result.mediaType = "Promo nyersanyag"; + result.mediaType = "Promo nyers"; break; case MetadataType.TrafficAD: - result.mediaType = "Reklám nyersanyag"; + result.mediaType = "Reklám nyers"; break; } } diff --git a/client/Maestro/Properties/AssemblyInfo.cs b/client/Maestro/Properties/AssemblyInfo.cs index 8a35b64c..f1fcb969 100644 --- a/client/Maestro/Properties/AssemblyInfo.cs +++ b/client/Maestro/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.0.8.1")] -[assembly: AssemblyFileVersion("2.0.8.1")] +[assembly: AssemblyVersion("2.0.8.2")] +[assembly: AssemblyFileVersion("2.0.8.2")] diff --git a/client/MaestroShared/Targets/FTPTargetProcessor.cs b/client/MaestroShared/Targets/FTPTargetProcessor.cs index d4ba5da2..5c304895 100644 --- a/client/MaestroShared/Targets/FTPTargetProcessor.cs +++ b/client/MaestroShared/Targets/FTPTargetProcessor.cs @@ -14,6 +14,7 @@ namespace MaestroShared.Targets { private const string PATTERN_CONCAT = "{0}{1}"; private const string _226 = "226"; private const string UPLOAD_ERROR = "Feltöltési hiba."; + protected const string UPLOAD_SIZE_ERROR = "Feltöltési hiba, a feltöltött fájl mérete nem egyezik a forrásfájl méretével."; private readonly Logger logger = LogManager.GetCurrentClassLogger(); protected FtpClient targetFTP; @@ -86,9 +87,12 @@ namespace MaestroShared.Targets { } } FtpReply reply = targetFTP.GetReply(); - if (!reply.Success || !_226.Equals(reply.Code)) { + if (!reply.Success || !_226.Equals(reply.Code)) throw new Exception(UPLOAD_ERROR); - } + long sourceSize = inputFile.Length; + long uploadedSize = targetFTP.GetFileSize(OutputName); + if (sourceSize != uploadedSize) + throw new Exception(UPLOAD_SIZE_ERROR); } protected override void UploadContent(string outputPath, byte[] content) { diff --git a/client/MaestroShared/Targets/FXPTargetProcessor.cs b/client/MaestroShared/Targets/FXPTargetProcessor.cs index 88bf98d2..6e235a0e 100644 --- a/client/MaestroShared/Targets/FXPTargetProcessor.cs +++ b/client/MaestroShared/Targets/FXPTargetProcessor.cs @@ -123,6 +123,14 @@ namespace MaestroShared.Targets { Thread.Sleep(1000); } + /* Ezen még agyalni kell + if (!Parameters.TargetConfig.NexioServer) { + //-1 -et ad??? + long uploadedSize = targetFTP.GetFileSize(OutputName); + if (ilength != uploadedSize) + throw new Exception(UPLOAD_SIZE_ERROR); + } + */ } catch (Exception e) { throw e; diff --git a/client/MaestroShared/Targets/UNCTargetProcessor.cs b/client/MaestroShared/Targets/UNCTargetProcessor.cs index 547f782c..455fafbc 100644 --- a/client/MaestroShared/Targets/UNCTargetProcessor.cs +++ b/client/MaestroShared/Targets/UNCTargetProcessor.cs @@ -37,6 +37,7 @@ namespace MaestroShared.Targets { protected const string HYPHEN = "-"; protected const string SLASH = "/"; protected const string BACKSLASH = @"\"; + private const string COPY_SIZE_ERROR = "Másolási hiba, a másolt fájl mérete nem egyezik a forrásfájl méretével."; private const string STAR = "*"; protected FileInfo inputFile; protected string workingDir; @@ -381,6 +382,10 @@ namespace MaestroShared.Targets { protected virtual void UploadFile() { int pbCancel = 0; Win32File.CopyFileEx(Input, Output, new CopyProgressRoutine(this.CopyProgressHandler), IntPtr.Zero, ref pbCancel, CopyFileFlags.COPY_FILE_RESTARTABLE); + long sourceSize = inputFile.Length; + long uploadedSize = new FileInfo(Output).Length; + if (sourceSize != uploadedSize) + throw new Exception(COPY_SIZE_ERROR); } protected virtual string GetOutputFilePath(string path, string fileName) { diff --git a/client/PlanAIRClient/Reader.cs b/client/PlanAIRClient/Reader.cs index 68be041d..1b9cf432 100644 --- a/client/PlanAIRClient/Reader.cs +++ b/client/PlanAIRClient/Reader.cs @@ -112,7 +112,6 @@ namespace TrafficClient { clIFsp_EC_SegmentResult item = new clIFsp_EC_SegmentResult(); int f = 0; item.v_SegID = (int)ReadInt(reader, ref f); - //item.v_ClipID = ReadString(reader, ref f); item.v_VariantID = ReadInt(reader, ref f); item.v_SegTitle = ReadString(reader, ref f); item.v_SegKeyWords = ReadString(reader, ref f); diff --git a/server/user.jobengine.executors/config/config.xml b/server/user.jobengine.executors/config/config.xml index be5e7ef0..216ae54f 100644 --- a/server/user.jobengine.executors/config/config.xml +++ b/server/user.jobengine.executors/config/config.xml @@ -16,6 +16,7 @@ + diff --git a/server/user.jobengine.executors/config/scheduledjobs.json b/server/user.jobengine.executors/config/scheduledjobs.json index 765919ef..4577c606 100644 --- a/server/user.jobengine.executors/config/scheduledjobs.json +++ b/server/user.jobengine.executors/config/scheduledjobs.json @@ -17,15 +17,25 @@ ] }, { - "active": false, - "executeimmediate": false, "name" : "sys: MORPHEUS 'missing materials' importálása", - "template": "import-morpheus-missing-materials.xml", - "cronexpression": "0 0 0/1 1/1 * ? *", + "template": "sys-import-morpheus-missing-materials.xml", "parameters": [ {"name": "csvFilePath", "value": "/mnt/MORPHEUS", "type": "java.lang.String"}, {"name": "processedFolder", "value": "DONE", "type": "java.lang.String"}, - {"name": "targetPath", "value": "/mnt/ISILON/ARCHIVE_RESTORE", "type": "java.lang.String"} + {"name": "targetPath", "value": "/mnt/ISILON/PLAYOUT/Video", "type": "java.lang.String"} + ] + }, + { + "name" : "sys: MORPHEUS 'missing material' visszatöltése", + "template": "sys-retrieve-missing-material.xml", + "parameters": [ + {"name": "targetPath", "value": "/mnt/ISILON/PLAYOUT/Video", "type": "java.lang.String"}, + {"name": "globalRetrievePath", "value": "\\\\10.10.1.100\\BRAAVOS\\PLAYOUT\\Video", "type": "java.lang.String"}, + {"name": "morpheusDeviceID", "value": "ISILON", "type": "java.lang.String"}, + {"name": "dbUrl", "value": "jdbc:sqlserver://10.10.1.45;databaseName=PA_Echo;", "type": "java.lang.String"}, + {"name": "userName", "value": "MAM", "type": "java.lang.String"}, + {"name": "password", "value": "Echotv.hu", "type": "java.lang.String"}, + {"name": "targetMetadataPath", "value": "/mnt/ISILON/PLAYOUT/MorpheusGateway/Input", "type": "java.lang.String"} ] }, { diff --git a/server/user.jobengine.executors/jobtemplates/sys-retrieve-missing-material.xml b/server/user.jobengine.executors/jobtemplates/sys-retrieve-missing-material.xml index afff5429..35b4436e 100644 --- a/server/user.jobengine.executors/jobtemplates/sys-retrieve-missing-material.xml +++ b/server/user.jobengine.executors/jobtemplates/sys-retrieve-missing-material.xml @@ -1,10 +1,15 @@ - + + + + + + @@ -21,5 +26,27 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/CopyForArchiveNEXIOMaterialsStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/CopyForArchiveNEXIOMaterialsStep.java index 916cd88b..518beb98 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/CopyForArchiveNEXIOMaterialsStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/CopyForArchiveNEXIOMaterialsStep.java @@ -185,7 +185,7 @@ public class CopyForArchiveNEXIOMaterialsStep extends JobStep { private FileArchive processMosObject(BasicDBObject rundown, BasicDBObject story, BasicDBObject mosObject) throws Exception { String mosID = mosObject.getString(IOctopusAPI.OBJ_ID); - if (MetadataTypeDetector.GuessMetadataType(mosID) != MetadataType.OCTOPUSPLACEHOLDER) { + if (MetadataTypeDetector.GuessMetadataType(mosID) != MetadataType.OctopusPlaceholder) { logger.trace("Skipping MOS object {}", mosID); return null; } diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/GenerateMorpheusMetadataStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/GenerateMorpheusMetadataStep.java new file mode 100644 index 00000000..c1ab0af0 --- /dev/null +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/GenerateMorpheusMetadataStep.java @@ -0,0 +1,30 @@ +package user.jobengine.server.steps; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import com.ibm.nosql.json.api.BasicDBObject; + +import user.commons.morpheus.MorpheusStrings; +import user.jobengine.server.IJobEngine; +import user.jobengine.server.IJobRuntime; + +public class GenerateMorpheusMetadataStep extends JobStep { + private static final Logger logger = LogManager.getLogger(); + + @StepEntry + public Object[] execute(BasicDBObject material, String morpheusDeviceID, String dbUrl, String userName, String password, String targetMetadataPath, + IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { + try { + String name = material.getString(MorpheusStrings.MATERIALID); + String content = PlanAirExtensions.getMorpeusXML(jobEngine.getItemManager(), dbUrl, userName, password, name, morpheusDeviceID); + EscortFiles.createMorpheusXML(targetMetadataPath, name + ".xml", content); + } catch (Exception e) { + logger.catching(e); + logger.error(jobRuntime.getMarker(), "Hiba a Morpheus kísérő XML létrehozásakor. A rendszer üzenete: {}", e.getMessage()); + throw e; + } + return null; + } + +} diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataTypeDetector.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataTypeDetector.java index bfa97f50..f5b1b0fb 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataTypeDetector.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataTypeDetector.java @@ -4,26 +4,32 @@ import org.apache.commons.lang.StringUtils; public class MetadataTypeDetector { public enum MetadataType { - TRAFFIC, OCTOPUSSTORY, OCTOPUSPLACEHOLDER, GENERIC + TrafficMaterial, TrafficPromo, TrafficAD, OctopusStory, OctopusPlaceholder, Generic } - private static final String REGEXP_TRAFFIC = "^[MRP]{1}[0-9]{6}[A-Z]{1}$"; + private static final String REGEXP_TRAFFICMATERIALID = "^M{1}[0-9]{6}[A-Z]{1}$"; + private static final String REGEXP_TRAFFICADID = "^R{1}[0-9]{6}[A-Z]{1}$"; + private static final String REGEXP_TRAFFICPROMOID = "^P{1}[0-9]{6}[A-Z]{1}$"; private static final String REGEXP_OCTOPUSSTORYID = "^[0-9]+$"; private static final String REGEXP_OCTOPUSPLACEHOLDERID = "^[0-9]+_[0-9]+$"; private static final String REGEXP_OCTOPUSPLACEHOLDERVERSIONEDID = "^[0-9]+_[0-9]+-[0-9]{3}$"; public static MetadataType GuessMetadataType(String id) { if (StringUtils.isBlank(id)) - return MetadataType.GENERIC; - if (id.matches(REGEXP_TRAFFIC)) - return MetadataType.TRAFFIC; + return MetadataType.Generic; + if (id.matches(REGEXP_TRAFFICMATERIALID)) + return MetadataType.TrafficMaterial; + if (id.matches(REGEXP_TRAFFICPROMOID)) + return MetadataType.TrafficPromo; + if (id.matches(REGEXP_TRAFFICADID)) + return MetadataType.TrafficAD; if (id.matches(REGEXP_OCTOPUSSTORYID)) - return MetadataType.OCTOPUSSTORY; + return MetadataType.OctopusStory; if (id.matches(REGEXP_OCTOPUSPLACEHOLDERID)) - return MetadataType.OCTOPUSPLACEHOLDER; + return MetadataType.OctopusPlaceholder; if (id.matches(REGEXP_OCTOPUSPLACEHOLDERVERSIONEDID)) - return MetadataType.OCTOPUSPLACEHOLDER; - return MetadataType.GENERIC; + return MetadataType.OctopusPlaceholder; + return MetadataType.Generic; } } diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/OctopusDataMiner.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/OctopusDataMiner.java index 49aa17a2..6aa8a384 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/OctopusDataMiner.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/OctopusDataMiner.java @@ -306,7 +306,7 @@ public class OctopusDataMiner { continue; MetadataType metadataType = MetadataTypeDetector.GuessMetadataType(objId); - if (!MetadataType.OCTOPUSPLACEHOLDER.equals(metadataType) && !MetadataType.OCTOPUSSTORY.equals(metadataType)) + if (!MetadataType.OctopusPlaceholder.equals(metadataType) && !MetadataType.OctopusStory.equals(metadataType)) continue; if (result == null) result = new BasicDBList(); diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/OutputPathAndNameSelectorStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/OutputPathAndNameSelectorStep.java index 6e1a7f8d..c4413249 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/OutputPathAndNameSelectorStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/OutputPathAndNameSelectorStep.java @@ -55,14 +55,16 @@ public class OutputPathAndNameSelectorStep extends JobStep { MetadataType mdType = MetadataTypeDetector.GuessMetadataType(id); String targetPath = null; switch (mdType) { - case GENERIC: + case Generic: targetPath = Paths.get(localRetrievePath, genericOutputFolder, id).toString(); break; - case OCTOPUSPLACEHOLDER: - case OCTOPUSSTORY: + case OctopusPlaceholder: + case OctopusStory: targetPath = getPossiblePath(id, Paths.get(localRetrievePath, octopusOutputFolder, id)).toString(); break; - case TRAFFIC: + case TrafficMaterial: + case TrafficPromo: + case TrafficAD: targetPath = getPossiblePath(id, Paths.get(localRetrievePath, trafficOutputFolder, id)).toString(); break; } diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/PlanAirExtensions.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/PlanAirExtensions.java new file mode 100644 index 00000000..7a7bd409 --- /dev/null +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/PlanAirExtensions.java @@ -0,0 +1,263 @@ +package user.jobengine.server.steps; + +import java.io.StringWriter; +import java.sql.Connection; +import java.sql.DriverManager; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + +import org.apache.commons.lang.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.w3c.dom.DOMImplementation; +import org.w3c.dom.Document; +import org.w3c.dom.Node; + +import user.commons.mediatool.Timecode; +import user.commons.mediatool.Timecode.Type; +import user.jobengine.db.IItemManager; +import user.jobengine.db.IResultSetConsumer; +import user.jobengine.server.steps.MetadataTypeDetector.MetadataType; + +public class PlanAirExtensions { + private static final Logger logger = LogManager.getLogger(); + // @Operation int, @@@Options int, @@ItemID int, @@IntParam1 int=Null, @@IntParam2 int=Null, @@IntParam3 int=Null, + // @@StrParam1 varchar(200)=Null, @@StrParam2 varchar(max)=Null, @@DateParam1 datetime=Null, @@DateParam2 datetime=Null + private static final String MATERIAL_SQL = "{call dbo.clIFsp_EC_MAM(1002, Null, Null, Null, Null, Null, ?)}";//musorid + // item.v_ProgrammeID = (int)ReadInt(reader, ref f); + // item.v_Live = (bool)ReadBool(reader, ref f); + // item.v_EpisodeID = ReadString(reader, ref f); + // item.v_VariantID = ReadInt(reader, ref f); + // item.v_MediaID = ReadString(reader, ref f); + // item.v_VariantTypeID = ReadInt(reader, ref f); + // item.v_ProgTitle = ReadString(reader, ref f); + // item.v_EpTitle = ReadString(reader, ref f); + // item.v_Episode = ReadShort(reader, ref f); + // item.v_VariantType = ReadString(reader, ref f); + // item.v_VariantKeywords = ReadString(reader, ref f); + // item.v_VariantLengthTC = ReadString(reader, ref f); + // item.v_VariantLengthFrame = ReadInt(reader, ref f); + // item.v_VariantNrSegments = ReadInt(reader, ref f); + // item.v_FirstBroadcastDate = ReadDateTime(reader, ref f); + // item.v_NextBroadcastDate = ReadDateTime(reader, ref f); + // item.v_OkForAir = ReadBool(reader, ref f); + // item.v_ForTransm = ReadBool(reader, ref f); + + private static final String MATERIAL_SEGMENTS_SQL = "{call dbo.clIFsp_EC_MAM(1010, Null, ?)}";//variantid + // item.v_SegID = (int)ReadInt(reader, ref f); + // item.v_VariantID = ReadInt(reader, ref f); + // item.v_SegTitle = ReadString(reader, ref f); + // item.v_SegKeyWords = ReadString(reader, ref f); + // item.v_SegNumber = ReadInt(reader, ref f); + // item.v_TcIn = ReadInt(reader, ref f); + // item.v_TcOut = ReadInt(reader, ref f); + // item.v_Duration = ReadInt(reader, ref f); + // item.v_TcInTC = ReadString(reader, ref f); + // item.v_TcOutTC = ReadString(reader, ref f); + // item.v_DurationTC = ReadString(reader, ref f); + // item.v_Dropable = ReadBool(reader, ref f); + + private static final String PROMO_SQL = "{call dbo.clIFsp_EC_MAM(2002, Null, Null, Null, Null, Null, ?)}"; + // item.t_SpotID = (int)ReadInt(reader, ref f); + // item.t_MediaID = ReadString(reader, ref f); + // item.v_Title = ReadString(reader, ref f); + // item.v_PromoType = ReadString(reader, ref f); + // item.v_ProgTitle = ReadString(reader, ref f); + // item.v_Episode = ReadShort(reader, ref f); + // item.t_PSStart = ReadDateTime(reader, ref f); + // item.t_PSEnd = ReadDateTime(reader, ref f); + // item.v_EstimatedDuration = ReadInt(reader, ref f); + // item.t_TcIn = ReadInt(reader, ref f); + // item.t_TcOut = ReadInt(reader, ref f); + // item.t_Duration = ReadInt(reader, ref f); + // item.v_TcIn = ReadString(reader, ref f); + // item.v_TcOut = ReadString(reader, ref f); + // item.v_Duration = ReadString(reader, ref f); + // item.v_Stations = ReadString(reader, ref f); + // item.t_OkForAir = ReadBool(reader, ref f); + // item.v_OkForAirs = ReadString(reader, ref f); + // item.v_IsInactive = ReadBool(reader, ref f); + private static final String AD_SQL = "{call dbo.clIFsp_EC_MAM(3002, Null, Null, Null, Null, Null, ?)}"; + // item.t_SpotID = (int)ReadInt(reader, ref f); + // item.t_MediaID = ReadString(reader, ref f); + // item.v_Title = ReadString(reader, ref f); + // item.t_Advertiser = ReadString(reader, ref f); + // item.v_EstimatedDuration = ReadInt(reader, ref f); + // item.t_TcIn = ReadInt(reader, ref f); + // item.t_TcOut = ReadInt(reader, ref f); + // item.t_Duration = ReadInt(reader, ref f); + // item.v_TcIn = ReadString(reader, ref f); + // item.v_TcOut = ReadString(reader, ref f); + // item.v_Duration = ReadString(reader, ref f); + // item.t_OkForAir = ReadBool(reader, ref f); + // item.v_OkForAirs = ReadString(reader, ref f); + + private static final String SQLSERVER_JDBC_SQL_SERVER_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; + private static final String HYPHEN_SPACES = " - "; + + private static void appendInstanceData(Document doc, Node node, String name, String deviceID, Timecode tcIn, Timecode tcOut) { + node.appendChild(doc.createElement("Long_File_Id")).setNodeValue(name); + node.appendChild(doc.createElement("Device_Id")).setNodeValue(deviceID); + node.appendChild(doc.createElement("Timecode_In")).setNodeValue(tcIn.toString("")); + node.appendChild(doc.createElement("Timecode_Out")).setNodeValue(tcOut.toString("")); + node.appendChild(doc.createElement("Quality_Check")).setNodeValue(new SimpleDateFormat("dd/MM/yyyy").format(new Date())); + } + + private static void appendItemData(Document doc, Node node, String name, String title, Timecode duration, String type) { + node.appendChild(doc.createElement("Material_Id")).setNodeValue(name); + node.appendChild(doc.createElement("Title")).setNodeValue(title); + node.appendChild(doc.createElement("On_Air_Duration")).setNodeValue(duration.toString("")); + node.appendChild(doc.createElement("Material_Type")).setNodeValue(type); + } + + private static Document createXMLDocument() throws ParserConfigurationException { + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + DocumentBuilder db = dbf.newDocumentBuilder(); + DOMImplementation impl = db.getDOMImplementation(); + Document xmlDocument = impl.createDocument(null, null, null); + return xmlDocument; + } + + public static long getExistingRundownMedia(IItemManager manager, String houseid) { + final long[] result = { 0 }; + StringBuilder query = new StringBuilder(); + query.append("select mediaid, mediafilehouseid, filename"); + query.append(" "); + query.append(String.format("from vw_rundown_items where mediafilehouseid like '%s%%'", houseid)); + query.append(" "); + query.append("order by filename, mediaid"); + IResultSetConsumer consumer = rs -> { + String fileName = rs.getString("filename"); + if (houseid.equals(fileName)) { + result[0] = rs.getLong("mediaid"); + return false; + } else + return true; + }; + manager.executeQuery(query.toString(), consumer, null); + return result[0]; + } + + /* + + + + + XMLTEST011 + Teszt Mozi + 00000914 + PROGRAMME //PROGRAMME, COMMERCIAL, JUNCTION + + + ISILON + 09/11/2017 + XMLTEST011 + + + + */ + public static String getMorpeusXML(IItemManager manager, String dbUrl, String userName, String password, String name, String deviceID) throws Exception { + String result = null; + final Connection connection = DriverManager.getConnection(dbUrl, userName, password); + try { + MetadataType type = MetadataTypeDetector.GuessMetadataType(name); + + Document doc = createXMLDocument(); + Node rootNode = doc.appendChild(doc.createElement("ImportItems")); + Node importItemNode = rootNode.appendChild(doc.createElement("ImportItem")); + Node itemNode = importItemNode.appendChild(doc.createElement("Item")); + Node instanceNode = importItemNode.appendChild(doc.createElement("Instance")); + + //TODO hiba esetén exception + switch (type) { + case TrafficMaterial: + manager.executeQuery(connection, MATERIAL_SQL, rs -> { + String progTitle = rs.getString("v_ProgTitle"); + String epTitle = rs.getString("v_EpTitle"); + String title = progTitle; + if (StringUtils.isNotBlank(epTitle)) + title += HYPHEN_SPACES + epTitle; + int variantID = rs.getInt("v_VariantID"); + List segments = new ArrayList<>(); + manager.executeQuery(connection, MATERIAL_SEGMENTS_SQL, rs1 -> { + int[] segment = { rs.getInt("v_TcIn"), rs.getInt("v_TcOut") }; + segments.add(segment); + return true; + }, st -> { + st.setInt(1, variantID); + }); + int out = segments.get(segments.size() - 1)[1]; + int in = segments.get(0)[0]; + appendItemData(doc, itemNode, name, title, new Timecode(out - in, Type.PAL), "PROGRAMME"); + appendInstanceData(doc, instanceNode, name, deviceID, new Timecode(in, Type.PAL), new Timecode(out, Type.PAL)); + return false; + }, st -> { + st.setString(1, name); + }); + break; + case TrafficPromo: + manager.executeQuery(connection, PROMO_SQL, rs -> { + String title = rs.getString("v_Title"); + int in = rs.getInt("v_TcIn"); + int out = rs.getInt("v_TcOut"); + appendItemData(doc, itemNode, name, title, new Timecode(out - in, Type.PAL), "COMMERCIAL"); + appendInstanceData(doc, instanceNode, name, deviceID, new Timecode(in, Type.PAL), new Timecode(out, Type.PAL)); + return false; + }, st -> { + st.setString(1, name); + }); + break; + case TrafficAD: + manager.executeQuery(connection, AD_SQL, rs -> { + String title = rs.getString("v_Title"); + int in = rs.getInt("v_TcIn"); + int out = rs.getInt("v_TcOut"); + appendItemData(doc, itemNode, name, title, new Timecode(out - in, Type.PAL), "JUNCTION"); + appendInstanceData(doc, instanceNode, name, deviceID, new Timecode(in, Type.PAL), new Timecode(out, Type.PAL)); + return false; + }, st -> { + st.setString(1, name); + }); + break; + default: + return null; + } + result = XMLtoString(doc); + } catch (Exception e) { + logger.catching(e); + throw e; + } finally { + if (connection != null) + connection.close(); + } + return result; + } + + private static String XMLtoString(Document doc) throws TransformerException { + DOMSource domSource = new DOMSource(doc); + TransformerFactory tf = TransformerFactory.newInstance(); + Transformer transformer = tf.newTransformer(); + //transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); + transformer.setOutputProperty(OutputKeys.METHOD, "xml"); + transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); + //transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + StringWriter sw = new StringWriter(); + StreamResult sr = new StreamResult(sw); + transformer.transform(domSource, sr); + return sw.toString(); + } + +} diff --git a/server/user.jobengine.osgi.commons/src/user/commons/mediatool/Timecode.java b/server/user.jobengine.osgi.commons/src/user/commons/mediatool/Timecode.java new file mode 100644 index 00000000..1d0b1925 --- /dev/null +++ b/server/user.jobengine.osgi.commons/src/user/commons/mediatool/Timecode.java @@ -0,0 +1,444 @@ +package user.commons.mediatool; + +public class Timecode { + public class TimecodeException extends Exception { + private static final long serialVersionUID = 1L; + + public TimecodeException(String message) { + super(message); + } + } + + public static class Type { + /** 29.97 frames/sec, 29,970 samples/sec */ + public static final Type NTSC = new Type(29.970F); + /** 25 frames/sec, 25,000 samples/sec */ + public static final Type PAL = new Type(25.000F); + /** 24 frames/sec, 24,000 samples/sec */ + public static final Type FILM = new Type(24.000F); + /** 75 frames/sec, 44,100 samples/sec */ + public static final Type CD = new Type(75.000F, 44100.000F); + + public static Type getInstance(float framesPerSecond) throws NumberFormatException { + float maxDelta = .031f; + if (Math.abs(framesPerSecond - NTSC.getFramesPerSecond()) < maxDelta) + return NTSC; + if (Math.abs(framesPerSecond - PAL.getFramesPerSecond()) < maxDelta) + return PAL; + if (Math.abs(framesPerSecond - FILM.getFramesPerSecond()) < maxDelta) + return FILM; + if (Math.abs(framesPerSecond - CD.getFramesPerSecond()) < maxDelta) + return CD; + throw new NumberFormatException("Cannot map " + framesPerSecond + " frames/sec to a defined timecode format."); + } + + private float framesPerSecond; + private float samplesPerSecond; + + private boolean usesSamples = false; + + private Type(float framesPerSecond) { + this.framesPerSecond = framesPerSecond; + this.samplesPerSecond = framesPerSecond * 1000; + } + + private Type(float framesPerSecond, float samplesPerSecond) { + this.framesPerSecond = framesPerSecond; + this.samplesPerSecond = samplesPerSecond; + this.usesSamples = true; + } + + public float getFramesPerSecond() { + return framesPerSecond; + } + + public float getSamplesPerSecond() { + return samplesPerSecond; + } + + public boolean usesSamples() { + return usesSamples; + } + } + + private int hours = 0; + private int minutes = 0; + private int seconds = 0; + private int frames = 0; + private float framesPerSecond = 25; + private long samples = -1; + + private float samplesPerSecond = 44100; + + private boolean useSamples = true; + + /** Creates a new timecode of the given type based on seconds. */ + public Timecode(float seconds, Type type) { + setType(type); + setCode(seconds); + } + + public Timecode(int frames, Type type) { + setType(type); + float reminder = frames; + float frameRate = framesPerSecond; + int hour = (int) (reminder / (60 * 60 * frameRate)); + setHours(hour); + reminder = reminder % (60 * 60 * frameRate); + int minute = (int) (reminder / (60 * frameRate)); + setMinutes(minute); + reminder = reminder % (60 * frameRate); + int sec = (int) (reminder / frameRate); + setSeconds(sec); + reminder = reminder % frameRate; + int frame = (int) reminder; + setFrames(frame); + } + + /** Creates a new CD timecode based on a string in the form HH:MM:SS:FF */ + public Timecode(String timecode) throws Timecode.TimecodeException { + this(timecode, Type.CD); + } + + /** + * Creates a new timecode of the given type based on a string in the form HH:MM:SS:FF + */ + public Timecode(String timecode, Type type) throws Timecode.TimecodeException { + setType(type); + setCode(timecode); + } + + /** Creates a new blank timecode of the given type set at 00:00:00:00 */ + public Timecode(Type type) { + setType(type); + setCode(0); + } + + public void clear() { + setHours(0); + setMinutes(0); + setSeconds(0); + setFrames(0); + setSamples(-1); + } + + @Override + public boolean equals(Object obj) { + return this.getCode().equals(obj.toString()); + } + + public String getCode() { + String outString = ""; + outString += (getHours() < 10 ? "0" + getHours() : "" + getHours()) + ":"; + outString += (getMinutes() < 10 ? "0" + getMinutes() : "" + getMinutes()) + ":"; + outString += (getSeconds() < 10 ? "0" + getSeconds() : "" + getSeconds()) + ":"; + outString += (getFrames() < 10 ? "0" + getFrames() : "" + getFrames()); + return outString; + } + + public String getCodeWithSamples() { + String outString = ""; + outString += (getHours() < 10 ? "0" + getHours() : "" + getHours()) + "|"; + outString += (getMinutes() < 10 ? "0" + getMinutes() : "" + getMinutes()) + "|"; + outString += (getSeconds() < 10 ? "0" + getSeconds() : "" + getSeconds()) + "|"; + outString += (getFrames() < 10 ? "0" + getFrames() : "" + getFrames()) + "|"; + if (getSamples() < 0) { + outString += "0000"; + } else { + String _samples = "000" + getSamples(); + outString += _samples.substring(_samples.length() - 4); + } + return outString; + } + + public int getFrames() { + return frames; + } + + public float getFramesPerSecond() { + return framesPerSecond; + } + + public int getHours() { + return hours; + } + + public int getMinutes() { + return minutes; + } + + public long getSamples() { + return samples; + } + + public float getSamplesPerSecond() { + return samplesPerSecond; + } + + public int getSeconds() { + return seconds; + } + + /** + * Breaks a string on any non-numeric character and returns the index token, zero indexed + */ + private int getToken(String inString, int index) throws Timecode.TimecodeException { + inString = inString.trim(); + String valid = "0123456789"; + String token = ""; + int count = 0; + for (int i = 0; i < inString.length(); i++) { + char current = inString.charAt(i); + if (valid.indexOf(current) > -1) { + token += current; + } else { + count++; + if (count > index) + break; // Found the token. + token = ""; // Start reading the next token + } + } + if (count < index || token.equals("")) + throw new Timecode.TimecodeException("Malformed timecode '" + inString + "', can't get index=" + index); + try { + return Integer.parseInt(token); + } catch (NumberFormatException ex) { + throw new Timecode.TimecodeException("Malformed timecode '" + inString + "', '" + token + "' is not an integer"); + } + } + + /** + * Goes through the system and sanitizes badly formed values : 00:00:60:00 will become 00:01:00:00, etc. + */ + @SuppressWarnings("all") + public void normalize() { + // Start on samples + int samplesPerFrame = (int) (getSamplesPerSecond() / getFramesPerSecond()); + setFrames(getFrames() + (int) (getSamples() * (1.0f / samplesPerFrame))); + setSamples(getSamples() % samplesPerFrame); + + setSeconds(getSeconds() + (int) (getFrames() / getFramesPerSecond())); + setFrames((int) (getFrames() % getFramesPerSecond())); + + while (getSeconds() >= 60) { + setSeconds(getSeconds() - 60); + setMinutes(getMinutes() + 1); + } + while (getMinutes() >= 60) { + setMinutes(getMinutes() - 60); + setHours(getHours() + 1); + } + } + + @SuppressWarnings("all") + public void setCode(double seconds) { + clear(); + setSamples((long) (seconds * getSamplesPerSecond())); + normalize(); + } + + /** + * Sets the object up based on seconds... Will be an approximation as the code will default to 1/75 second accuracy or that set by + * setFramesPerSecond().) + */ + public void setCode(float seconds) { + setCode((double) seconds); + } + + /** + * Set the code based on frames, framesPerSecond defaults to 75. For example, setCode(100) would be '00:00:01:25' + */ + public void setCode(int frames) { + clear(); + setFrames(frames); + normalize(); + } + + /** Sets the object based on a string in the form HH:MM:SS:FF */ + public void setCode(String timecode) throws Timecode.TimecodeException { + clear(); + setHours(getToken(timecode, 0)); + setMinutes(getToken(timecode, 1)); + setSeconds(getToken(timecode, 2)); + setFrames(getToken(timecode, 3)); + if (useSamples()) { + try { + setSamples(getToken(timecode, 4)); + // If we got here, we're parsing a AES31-formatted string... Set our + // frames per sec to 30 instead of 75 + setFramesPerSecond(30); + } catch (Timecode.TimecodeException ignored) { + } // If this fails, it just means the code didn't have samples appended + } + // fix badly formed values : 00:00:60:00 will become 00:01:00:00, etc. + normalize(); + } + + public void setFrames(int value) { + frames = value; + } + + public void setFramesPerSecond(float value) { + framesPerSecond = value; + } + + public void setHours(int value) { + hours = value; + } + + public void setMinutes(int value) { + minutes = value; + } + + public void setSamples(long value) { + samples = value; + } + + public void setSamplesPerSecond(float value) { + samplesPerSecond = value; + } + + public void setSeconds(int value) { + seconds = value; + } + + /** + * Sets this timecodes samplesPerSecond and framesPerSecond based on the given type + */ + private void setType(Type type) { + setSamplesPerSecond(type.getSamplesPerSecond()); + setFramesPerSecond(type.getFramesPerSecond()); + setUseSamples(type.usesSamples()); + } + + /** + * If true, samples per second will be used in computing fractions of frames. If false, frames is the smallest unit. + */ + public void setUseSamples(boolean b) { + useSamples = b; + } + + public double toDoubleSeconds() { + double value = 0; + value += getHours() * 3600; + value += getMinutes() * 60; + value += getSeconds(); + value += getFrames() * (1.0 / getFramesPerSecond()); + if (useSamples() && getSamples() > -1) + value += getSamples() * (1.0 / getSamplesPerSecond()); + return value; + } + + /** + * @return the total number of frames this object represents, so for a 1 second ntsc video timecode, this would return 29.97. + */ + public double toFrames() { + double value = 0; + value += getHours() * 3600 * getFramesPerSecond(); + value += getMinutes() * 60 * getFramesPerSecond(); + value += getSeconds() * getFramesPerSecond(); + value += getFrames(); + if (getSamples() > -1) + value += getSamples() / (getSamplesPerSecond() / getFramesPerSecond()); + return value; + } + + /** + * Uses the default ":" delimiter + * + * @return the code as "HH:MM:SS" + */ + public String toHHMMSS() { + return toHHMMSS(":"); + } + + /** + * Units smaller than seconds are ignored completely. For example the HH:MM:SS:FF string "01:03:05:07" would return "01:03:05" + * + * @param delimiter + * @return the total time in hh:mm:ss format where ":" is specified by the delimiter parameter. + */ + public String toHHMMSS(String delimiter) { + String outString = ""; + outString += (getHours() < 10 ? "0" + getHours() : "" + getHours()) + delimiter; + outString += (getMinutes() < 10 ? "0" + getMinutes() : "" + getMinutes()) + delimiter; + outString += (getSeconds() < 10 ? "0" + getSeconds() : "" + getSeconds()); + return outString; + } + + /** + * Hours are added to the minutes and minutes are added to the seconds value so seconds could be larger than 60. Units smaller than seconds are ignored + * completely. + * + * @return the total time in seconds. + */ + public int toIntSeconds() { + int _minutes = getHours() * 60; + _minutes += getMinutes(); + int _seconds = _minutes * 60; + _seconds += getSeconds(); + return _seconds; + } + + /** + * Uses the default ":" delimiter + * + * @return the code as "MM:SS" + */ + public String toMMSS() { + return toMMSS(":"); + } + + /** + * Hours are added to the minutes value so minutes could be larger than 60. Units smaller than seconds are ignored completely. For example the HH:MM:SS:FF + * string "01:03:05:07" would return "63:05" + * + * @param delimiter + * @return the total time in mm:ss format where ":" is specified by the delimiter parameter. + */ + public String toMMSS(String delimiter) { + String outString = ""; + int _minutes = getHours() * 60; + _minutes += getMinutes(); + outString += (_minutes < 10 ? "0" + _minutes : "" + _minutes) + delimiter; + outString += (getSeconds() < 10 ? "0" + getSeconds() : "" + getSeconds()); + return outString; + } + + /** + * @return the total number of samples this object represents, so for a 1 second timecode, this would return 44100. + */ + public long toSamples() { + long value = 0; + if (getSamples() > -1) + value += getSamples(); + value += getFrames() * (getSamplesPerSecond() / getFramesPerSecond()); + value += getSeconds() * getSamplesPerSecond(); + value += getMinutes() * 60 * getSamplesPerSecond(); + value += getHours() * 60 * 60 * getSamplesPerSecond(); + return value; + } + + public float toSeconds() { + return (float) toDoubleSeconds(); + } + + @Override + public String toString() { + return getCode(); + } + + public String toString(String delimiter) { + String outString = ""; + outString += (getHours() < 10 ? "0" + getHours() : "" + getHours()) + delimiter; + outString += (getMinutes() < 10 ? "0" + getMinutes() : "" + getMinutes()) + delimiter; + outString += (getSeconds() < 10 ? "0" + getSeconds() : "" + getSeconds()) + delimiter; + outString += (getFrames() < 10 ? "0" + getFrames() : "" + getFrames()); + return outString; + } + + public boolean useSamples() { + return useSamples; + } + +} \ No newline at end of file diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java index 0b5f655f..a3353537 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java @@ -1,6 +1,7 @@ package user.jobengine.db; import java.net.URI; +import java.sql.Connection; import java.sql.Timestamp; import java.util.Calendar; import java.util.Date; @@ -98,6 +99,8 @@ public interface IItemManager extends IEntityPersister { void disconnect(); + void executeQuery(Connection connection, String query, IResultSetConsumer consumer, IStatementDecorator decorator); + void executeQuery(String query, IResultSetConsumer consumer, IStatementDecorator decorator); /** @@ -139,6 +142,8 @@ public interface IItemManager extends IEntityPersister { DefaultContext getDbContext(); + // long getExistingRundownMedia(String houseid); + /** * Elkéri az összes dinamikus anyag típust. * @@ -146,8 +151,6 @@ public interface IItemManager extends IEntityPersister { */ List getDynamicItemTypes(); - // long getExistingRundownMedia(String houseid); - /** * Elkéri a FileTypeDAO-tól a bemeneti paraméterként kapott névvel rendelekző FileType-ot. * diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java index 26854aca..0d0514aa 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java @@ -410,11 +410,9 @@ public class ItemManager extends MemoryCache implements IItemManager { } @Override - public void executeQuery(String query, IResultSetConsumer consumer, IStatementDecorator decorator) { + public void executeQuery(Connection connection, String query, IResultSetConsumer consumer, IStatementDecorator decorator) { ResultSet rs = null; PreparedStatement st = null; - DefaultContext context = getDbContext(); - Connection connection = context.getConnection(); try { st = connection.prepareStatement(query); if (decorator != null) @@ -443,6 +441,17 @@ public class ItemManager extends MemoryCache implements IItemManager { st.close(); } catch (Exception e1) { } + } + } + + @Override + public void executeQuery(String query, IResultSetConsumer consumer, IStatementDecorator decorator) { + DefaultContext context = getDbContext(); + Connection connection = context.getConnection(); + try { + executeQuery(connection, query, consumer, decorator); + } catch (Exception e) { + } finally { putDbContext(context); } } diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/EscortFiles.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/EscortFiles.java index 48f99b61..4ad4442c 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/EscortFiles.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/EscortFiles.java @@ -63,6 +63,14 @@ public class EscortFiles { return String.format(KILLDATE_FILENAME, fileName, composeKillDate(days)); } + public static void createMorpheusXML(String filePath, String fileName, String content) throws IOException { + ensureUNCFolder(filePath, STATUSFOLDER); + Path xmlPath = Paths.get(filePath, fileName); + if (Files.exists(xmlPath)) + throw new IOException(String.format("Az '%s' állomány már létezik.", xmlPath)); + Files.write(xmlPath, content.getBytes()); + } + public static byte[] createNEXIOKillDateFile(String fileName, Date killDate, String description, String agency) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MissingMaterialsModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MissingMaterialsModel.java index 735b3dfe..ba744c56 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MissingMaterialsModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MissingMaterialsModel.java @@ -94,7 +94,6 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged ScheduledJob retriveJob = jobEngine.getScheduledJob(RETRIEVE_TEMPLATE); Map parameters = retriveJob.getJobParameters(); parameters.put(MorpheusStrings.MATERIAL, material); - parameters.put(TARGETPATH, String.valueOf(targetPath)); jobEngine.submit(RETRIEVE_TEMPLATE, String.format("%s hiányzó anyag visszatöltése", name), parameters); } catch (Exception e) { logger.catching(e); diff --git a/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/Support.java b/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/Support.java index 1240c31b..e807b30a 100644 --- a/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/Support.java +++ b/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/Support.java @@ -31,7 +31,6 @@ import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; -import com.ibm.nosql.json.JSONUtil; import com.ibm.nosql.json.api.BasicDBObject; import com.ibm.nosql.json.api.DB; import com.ibm.nosql.json.api.DBCollection; @@ -592,11 +591,6 @@ public class Support { @Test public void test1() throws IOException { - byte[] content = Files.readAllBytes(Paths.get("//10.10.1.100/BRAAVOS/ARCHIVE/.STATUS/!!!!!76952087-76828571-CAM02_2070-20180517082324.MXF.json")); - - DBObject o = JSONUtil.jsonToDbObject(new String(content)); - - System.out.println(o); }