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