package hu.user.mediacube.executors.tests;\r
\r
+import static org.junit.Assert.assertNotNull;\r
+\r
import java.io.File;\r
import java.nio.file.DirectoryStream;\r
import java.nio.file.Files;\r
import org.apache.commons.lang.StringUtils;\r
import org.junit.Test;\r
\r
+import com.ibm.nosql.json.api.BasicDBList;\r
+\r
import user.jobengine.db.Media;\r
+import user.jobengine.server.steps.ArchiveItem;\r
import user.jobengine.server.steps.EscortFiles;\r
import user.jobengine.server.steps.FFMpeg;\r
import user.jobengine.server.steps.TSMExtendedRetrieveStep;\r
System.out.println(modifiedHours);\r
System.out.println(DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(ldt));\r
}\r
+\r
+ //mv missing from tsm\r
+ @Test\r
+ public void test993() throws Exception {\r
+ //List<String> missing = Files.readAllLines(Paths.get("/opt/mv-missing.txt"));\r
+ List<String> missing = Files.readAllLines(Paths.get("/opt/mv-mc-all.txt"));\r
+ String tsm = new String(Files.readAllBytes(Paths.get("/opt/mv-tsm.txt")));\r
+ String polc = new String(Files.readAllBytes(Paths.get("/opt/mv-polc.txt")));\r
+ String rd = new String(Files.readAllBytes(Paths.get("/opt/mv-rundown.txt")));\r
+ String om = new String(Files.readAllBytes(Paths.get("/opt/mv-omarchive.txt")));\r
+ int fCount = 0;\r
+ int pCount = 0;\r
+ int oCount = 0;\r
+\r
+ int promo = 0;\r
+ int ad = 0;\r
+ int material = 0;\r
+ int other = 0;\r
+ int inrd = 0;\r
+\r
+ System.out.println("Start");\r
+ for (String fileName : missing) {\r
+ String onlyId = fileName.trim();\r
+ onlyId = onlyId.substring(0, onlyId.lastIndexOf("."));\r
+\r
+ boolean tsmContains = tsm.contains(fileName);\r
+\r
+ if (tsmContains)\r
+ continue;\r
+\r
+ boolean omContains = om.contains(fileName);\r
+ if (omContains) {\r
+ oCount++;\r
+ continue;\r
+ }\r
+ boolean polcContains = polc.contains(fileName);\r
+ if (polcContains) {\r
+ pCount++;\r
+ continue;\r
+ }\r
+\r
+ fCount++;\r
+ System.out.println(fileName + " " + fCount);\r
+\r
+ // if (rd.contains(onlyId))\r
+ // inrd++;\r
+\r
+ if (fileName.startsWith("R")) {\r
+ ad++;\r
+ } else if (fileName.startsWith("P"))\r
+ promo++;\r
+ else if (fileName.startsWith("M")) {\r
+ material++;\r
+ } else {\r
+ //System.out.println(onlyId);\r
+ other++;\r
+ }\r
+ }\r
+ System.out.println(String.format("TSM hiány %d, polcon van %d, omben van %d", fCount, pCount, oCount));\r
+ System.out.println(String.format("Egyéb %d, Reklám %d, Promó %d, Anyag %d, Adásban volt %d", other, ad, promo, material, inrd));\r
+ // Files.write(Paths.get("/opt/AMC/mcmissing.txt"), mcmissing);\r
+ }\r
+\r
+ //archiveitem+tags\r
+ @Test\r
+ public void test994() throws Exception {\r
+ ArchiveItem archiveItem = ArchiveItem.fromFile(Paths.get("/opt1/.STATUS/0409_2032_UJ_OVI_OVB_MIX.MXF.json"));\r
+ assertNotNull(archiveItem.getTags());\r
+\r
+ BasicDBList tags = archiveItem.getTags();\r
+ if (tags != null) {\r
+ for (Object tag : tags) {\r
+ System.out.println(String.valueOf(tag));\r
+ }\r
+ }\r
+\r
+ }\r
}\r
import org.apache.logging.log4j.Logger;\r
import org.apache.logging.log4j.Marker;\r
\r
-import com.ibm.nosql.json.JSONUtil;\r
-import com.ibm.nosql.json.api.BasicDBObject;\r
-\r
-import user.commons.nosql.NoSQLUtils;\r
import user.jobengine.server.IJobEngine;\r
import user.jobengine.server.IJobRuntime;\r
\r
public static final String MEDIA_TYPE = "mediaType";\r
private static final String DURATION = "duration";\r
private static final String EXISTING_MEDIAID = "existingMediaId";\r
+ private static final String TAGS = "tags";\r
\r
private Marker marker;\r
\r
private ArchiveItem createArchiveItem(Path jsonFilePath, Path mediaFilePath, Path catchedFilePath) {\r
ArchiveItem result = null;\r
- byte[] readAllBytes = null;\r
try {\r
- readAllBytes = Files.readAllBytes(jsonFilePath);\r
- BasicDBObject dbObject = (BasicDBObject) JSONUtil.jsonToDbObject(new String(readAllBytes));\r
- if (dbObject == null)\r
- throw new NullPointerException("Can not parse JSON file: " + jsonFilePath);\r
- result = new ArchiveItem();\r
- result.setItemHouseId(getMetadata(dbObject, ITEM_HOUSEID));\r
- result.setItemTitle(getMetadata(dbObject, ITEM_TITLE));\r
- result.setItemDescription(getMetadata(dbObject, ITEM_DESCRIPTION));\r
- result.setMediaHouseId(getMetadata(dbObject, MEDIA_HOUSEID));\r
- result.setMediaTitle(getMetadata(dbObject, MEDIA_TITLE));\r
- result.setMediaDescription(getMetadata(dbObject, MEDIA_DESCRIPTION));\r
- result.setMediaType(getMetadata(dbObject, MEDIA_TYPE));\r
+ result = ArchiveItem.fromFile(jsonFilePath);\r
result.setMediaFile(mediaFilePath.toString());\r
result.setCatchedFile(catchedFilePath.toString());\r
- result.setDuration(NoSQLUtils.asLong(dbObject, DURATION));\r
- result.setExistingMediaId(NoSQLUtils.asLong(dbObject, EXISTING_MEDIAID));\r
- } catch (IOException e) {\r
+ } catch (Exception e) {\r
logger.catching(e);\r
- return null;\r
}\r
\r
return result;\r
return new Object[] { archiveList };\r
}\r
\r
- private String getMetadata(BasicDBObject dbObject, String fieldName) {\r
- String result = null;\r
- if (dbObject.containsKey(fieldName))\r
- result = dbObject.getString(fieldName);\r
- return result;\r
- }\r
-\r
private boolean processPathItem(Path mediaFilePath, final List<ArchiveItem> archiveList) {\r
File mediaFile = mediaFilePath.toFile();\r
\r
import org.apache.logging.log4j.Logger;\r
import org.apache.logging.log4j.Marker;\r
\r
+import com.ibm.nosql.json.api.BasicDBList;\r
+\r
import user.jobengine.db.Item;\r
import user.jobengine.db.ItemManager;\r
import user.jobengine.db.ItemType;\r
private ItemManager itemManager;\r
private Marker marker;\r
\r
+ private void addTags(ArchiveItem archiveItem, Media mediaCubeMedia) {\r
+ BasicDBList tags = archiveItem.getTags();\r
+ if (tags != null) {\r
+ for (Object tag : tags) {\r
+\r
+ try {\r
+ String tagText = String.valueOf(tag);\r
+ itemManager.addMediaTag(tagText, mediaCubeMedia.getId());\r
+ System.out.println();\r
+\r
+ } catch (Exception e) {\r
+ logger.catching(e);\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
private void checkDuplicates(ArchiveItem archiveItem, String sourceFileName) throws Exception {\r
if (itemManager.isMediaFileExists(sourceFileName)) {\r
try {\r
mediaCubeMedia = itemManager.createMedia(mediaType, archiveItem.getMediaTitle(), archiveItem.getMediaDescription(), archiveItem.getMediaHouseId());\r
mediaCubeMedia.setLength(archiveItem.getDuration());\r
mediaCubeItem.appendMedia(mediaCubeMedia);\r
+\r
return mediaCubeMedia;\r
}\r
\r
jobRuntime.incrementProgress(50);\r
String mediaType = getCreateType(archiveItem);\r
mediaCubeMedia = createMedia(archiveItem, mediaCubeItem, mediaType);\r
- //ha itemid 0 akkor merge, egyebkent media insert \r
+ //ha itemid 0 akkor merge, egyebkent media insert\r
\r
if (mediaCubeItem.getId() == 0)\r
itemManager.mergeItemStructure(mediaCubeItem);\r
mediaCubeMedia.add();\r
}\r
\r
+ addTags(archiveItem, mediaCubeMedia);\r
+\r
} catch (Exception e) {\r
logger.catching(e);\r
String fileName = new File(archiveItem.getMediaFile()).getName();\r
}\r
\r
@Override\r
- public void close() {\r
+ public void close() throws IOException {\r
try {\r
- client.finishSend();\r
+ client.commit();\r
} catch (Exception e) {\r
- e.printStackTrace();\r
+ throw new IOException(e);\r
}\r
client.disconnect();\r
}\r
--- /dev/null
+--
+-- Copyright 2010-2016 the original author or authors.
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+
+-- // Create TAG TAG2MEDIA tables
+-- Migration SQL that makes the change goes here.
+
+--ID;NAME;ONTSM;EXPIRATION;CREATED;PID;FILENAME;LASTMODIFIED;SIZE;PARTS;MEDIASTORE;NOF_FRAMES;ORIGMEDIASTORE;ORIGTSMFILENAME
+--1937;DK_20027300_02;Y;2109-03-02 17:27:34.765;2009-08-05 16:59:05.39;1937;DK_20027300_02;2009-08-05 16:57:25.0;2430599168;1;user.pasa.server.MSFTPK2;;;
+
+CREATE TABLE PASA
+(
+ ID BIGINT,
+ NAME VARCHAR(100),
+ ONTSM VARCHAR(1),
+ EXPIRATION TIMESTAMP,
+ CREATED TIMESTAMP,
+ PID BIGINT,
+ FILENAME VARCHAR(100),
+ LASTMODIFIED TIMESTAMP,
+ PARTS INT,
+ MEDIASTORE VARCHAR(100),
+ NOF_FRAMES VARCHAR(100),
+ ORIGMEDIASTORE VARCHAR(100),
+ ORIGTSMFILENAME VARCHAR(100)
+)@
+
+-- //@UNDO
+-- SQL to undo the change goes here.
+
+DROP TABLE PASA
+@
if (criteria.endsWith("*"))\r
criteria = criteria.replace("*", "");\r
criteria = criteria.trim();\r
- if (criteria != null && criteria.trim().length() > 0)\r
- sql.append(" AND m.title LIKE('%" + criteria + "%')");\r
+ if (criteria != null && criteria.trim().length() > 0) {\r
+ sql.append(" AND (");\r
+ sql.append(" m.title LIKE('%" + criteria + "%')");\r
+ sql.append(" OR i.title LIKE('%" + criteria + "%')");\r
+ sql.append(" OR mf.relativepath LIKE('%" + criteria + "%')");\r
+ sql.append(")");\r
+ }\r
} else {\r
criteria = formatSearchValue(criteria);\r
if (criteria != null && criteria.trim().length() > 0)\r
<menuitem sclass="whitemenu" label="Keresés" onClick="@command('navigate', action='/')" disabled="false" />\r
<menuitem sclass="whitemenu" label="Folyamatok" onClick="@command('navigate', action='jobs')" disabled="${not sessionScope.userPrincipal.submitter or sessionScope.userPrincipal.anonymous}" />\r
<menuitem sclass="whitemenu" label="Maestro" onClick="@command('navigate', action='maestro')" visible="${lm.maestroAvailable}" />\r
- <menu sclass="whitemenu" label="Egyéb" visible="${sessionScope.userPrincipal.admin}">\r
- <menupopup>\r
- <menuitem sclass="rozsda" label="Jelszógeneátor" onClick="@command('navigate', action='pwdgen')" />\r
- <menuitem sclass="rozsda" label="Hiányzó anyagok" onClick="@command('navigate', action='missingmaterials')" disabled="${not sessionScope.userPrincipal.submitter or sessionScope.userPrincipal.anonymous}" />\r
- <menuitem sclass="rozsda" label="Folyamat tevékenységek" onClick="@command('navigate', action='statistics')" disabled="${not sessionScope.userPrincipal.admin or sessionScope.userPrincipal.anonymous}" />\r
- <menuitem sclass="rozsda" label="Híranyag gyártás" onClick="@command('navigate', action='newshistory')" disabled="${not sessionScope.userPrincipal.admin or sessionScope.userPrincipal.anonymous}" />\r
- </menupopup>\r
- </menu>\r
<menu sclass="whitemenu" label="Statisztikák" visible="${not sessionScope.guiStatisticsDisable}">\r
<menupopup>\r
<menuitem sclass="rozsda" label="Folyamat tevékenységek" onClick="@command('navigate', action='statistics')" disabled="${not sessionScope.userPrincipal.admin or sessionScope.userPrincipal.anonymous}" />\r
<menuitem sclass="rozsda" label="Híranyag gyártás" onClick="@command('navigate', action='newshistory')" disabled="${not sessionScope.userPrincipal.admin or sessionScope.userPrincipal.anonymous}" />\r
</menupopup>\r
</menu>\r
+ <menu sclass="whitemenu" label="Továbbiak" visible="${sessionScope.userPrincipal.submitter}">\r
+ <menupopup>\r
+ <menuitem sclass="rozsda" label="Jelszógeneátor" onClick="@command('navigate', action='pwdgen')" disabled="${not sessionScope.userPrincipal.admin or sessionScope.userPrincipal.anonymous}" />\r
+ <menuitem sclass="rozsda" label="Hiányzó anyagok" onClick="@command('navigate', action='missingmaterials')" disabled="${not sessionScope.userPrincipal.submitter or sessionScope.userPrincipal.anonymous}" />\r
+ </menupopup>\r
+ </menu>\r
<menu sclass="whitemenu" label="${labels.menu_help}" visible="${not sessionScope.guiHelpDisable}">\r
<menupopup>\r
<menuitem sclass="rozsda" label="${labels.menu_content}" href="http://10.10.1.27:90/docs" target="_blank" />\r
package user.jobengine.server.steps;\r
\r
import java.io.File;\r
+import java.io.IOException;\r
import java.io.Serializable;\r
+import java.nio.file.Files;\r
+import java.nio.file.Path;\r
+\r
+import com.ibm.nosql.json.JSONUtil;\r
+import com.ibm.nosql.json.api.BasicDBList;\r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
+import user.commons.nosql.NoSQLUtils;\r
\r
public class ArchiveItem implements Serializable {\r
private static final long serialVersionUID = -7278747969491719357L;\r
+ public static final String ITEM_TITLE = "itemTitle";\r
+ public static final String ITEM_HOUSEID = "itemHouseId";\r
+ public static final String ITEM_DESCRIPTION = "itemDescription";\r
+ public static final String MEDIA_HOUSEID = "mediaHouseId";\r
+ public static final String MEDIA_TITLE = "mediaTitle";\r
+ public static final String MEDIA_DESCRIPTION = "mediaDescription";\r
+ public static final String MEDIA_TYPE = "mediaType";\r
+ private static final String DURATION = "duration";\r
+ private static final String EXISTING_MEDIAID = "existingMediaId";\r
+ private static final String TAGS = "tags";\r
+\r
+ public static ArchiveItem fromFile(Path jsonFilePath) throws IOException {\r
+ ArchiveItem result = null;\r
+ byte[] readAllBytes = null;\r
+ readAllBytes = Files.readAllBytes(jsonFilePath);\r
+ BasicDBObject dbObject = (BasicDBObject) JSONUtil.jsonToDbObject(new String(readAllBytes));\r
+ if (dbObject == null)\r
+ throw new NullPointerException("Can not parse JSON file: " + jsonFilePath);\r
+ result = new ArchiveItem();\r
+ result.setItemHouseId(getMetadata(dbObject, ITEM_HOUSEID));\r
+ result.setItemTitle(getMetadata(dbObject, ITEM_TITLE));\r
+ result.setItemDescription(getMetadata(dbObject, ITEM_DESCRIPTION));\r
+ result.setMediaHouseId(getMetadata(dbObject, MEDIA_HOUSEID));\r
+ result.setMediaTitle(getMetadata(dbObject, MEDIA_TITLE));\r
+ result.setMediaDescription(getMetadata(dbObject, MEDIA_DESCRIPTION));\r
+ result.setMediaType(getMetadata(dbObject, MEDIA_TYPE));\r
+ result.setDuration(NoSQLUtils.asLong(dbObject, DURATION));\r
+ result.setExistingMediaId(NoSQLUtils.asLong(dbObject, EXISTING_MEDIAID));\r
+ result.setTags(getMetadatas(dbObject, TAGS));\r
+\r
+ return result;\r
+ }\r
+\r
+ private static String getMetadata(BasicDBObject dbObject, String fieldName) {\r
+ String result = null;\r
+ if (dbObject.containsKey(fieldName))\r
+ result = dbObject.getString(fieldName);\r
+ return result;\r
+ }\r
+\r
+ private static BasicDBList getMetadatas(BasicDBObject dbObject, String fieldName) {\r
+ BasicDBList result = null;\r
+ if (dbObject.containsKey(fieldName))\r
+ result = (BasicDBList) dbObject.get(fieldName);\r
+ return result;\r
+ }\r
+\r
private String itemTitle;\r
private String itemHouseId;\r
private String itemDescription;\r
private long duration;\r
private long existingMediaId;\r
\r
+ private BasicDBList tags;\r
+\r
public String getCatchedFile() {\r
return catchedFile;\r
}\r
return mediaType;\r
}\r
\r
+ public BasicDBList getTags() {\r
+ return tags;\r
+ }\r
+\r
public boolean removeCatchedFile() {\r
boolean result = false;\r
if (catchedFile != null) {\r
public void setMediaType(String mediaType) {\r
this.mediaType = mediaType;\r
}\r
+\r
+ public void setTags(BasicDBList tags) {\r
+ this.tags = tags;\r
+ }\r
+\r
}\r
public static final String ERROR = "error";
private static final String NO_ACTION_SPECIFIED = "Missing action type.";
private static final String TEMPLATE = "template";
+ private static final String NAME = "name";
private static final String PARAMETERS = "parameters";
+ private static final String NO_NAME_SPECIFIED = "Missing job name.";
private static final String NO_TEMPLATE_SPECIFIED = "Missing template name.";
private static final String NO_PARAMETERS_SPECIFIED = "Missing job parameters.";
private static ObjectMapper mapper;
IJobRuntime job = event.getJob();
if (job.getId() != runtime.getId())
return;
- BasicDBObject response = new BasicDBObject("jobID", job.getId()).append("status", job.getStatus()).append("signal", event.getSignalType())
+ BasicDBObject response = new BasicDBObject("jobID", job.getId()).append("status", job.getStatus())
+ .append("signal", event.getSignalType())
.append("progress", job.getProgress());
if (JobStatus.SUSPENDED.equals(job.getStatus()))
if (!data.containsKey(PARAMETERS))
throw new Exception(NO_PARAMETERS_SPECIFIED);
BasicDBObject parameters = (BasicDBObject) data.get(PARAMETERS);
+
+ if (!data.containsKey(NAME))
+ throw new Exception(NO_NAME_SPECIFIED);
+ String name = data.getString(NAME);
+
IJobEngine jobengine = ComponentBinder.getJobengine();
if (parameters != null)
deserializeParameters(parameters);
- IJobRuntime runtime = jobengine.submit(template, null, parameters);
+ IJobRuntime runtime = jobengine.submit(template, name, parameters);
IJobChangedListener jobChangedListener = createListener(runtime);
jobengine.addJobChangedEventListener(jobChangedListener);
jobChangedListeners.put(runtime.getId(), jobChangedListener);
super(nodeName);\r
}\r
\r
+ public void abort() throws TSMException, JNIException {\r
+\r
+ }\r
+\r
+ public void commit() throws TSMException, JNIException {\r
+ if (dataBlk != null) {\r
+ try {\r
+ rc = TSMAPI.dsmEndSendObj(dsmHandle);\r
+ if (rc != TSMAPIConstants.DSM_RC_OK)\r
+ throw new TSMException(dsmHandle, rc);\r
+\r
+ rc = vote(TSMAPIConstants.DSM_VOTE_COMMIT);\r
+ } catch (Exception e) {\r
+ // rc = vote(TSMAPIConstants.DSM_VOTE_ABORT);\r
+ throw e;\r
+ }\r
+ }\r
+ }\r
+\r
public void finishReceive() throws TSMException {\r
// dsmEndGetObj\r
rc = TSMAPI.dsmEndGetObj(dsmHandle);\r
if (rc != TSMAPIConstants.DSM_RC_OK) {\r
TSMAPI.dsmEndGetData(dsmHandle);\r
+\r
throw new TSMException(dsmHandle, rc);\r
}\r
// dsmEndGetData\r
dataBlk = null;\r
}\r
\r
- public void finishSend() throws TSMException, JNIException {\r
- if (dataBlk != null) {\r
- rc = TSMAPI.dsmEndSendObj(dsmHandle);\r
- if (rc != TSMAPIConstants.DSM_RC_OK)\r
- throw new TSMException(dsmHandle, rc);\r
- rc = vote(TSMAPIConstants.DSM_VOTE_COMMIT);\r
- }\r
- }\r
-\r
public int recievePartial(byte[] buffer, TSMObject object, PartialObjData partialObjData)\r
throws NullPointerException, FileNotFoundException, IOException, TSMException {\r
int result = 0;\r
logger.catching(e);\r
}\r
\r
- if (result == TSMAPIConstants.DSM_RC_CHECK_REASON_CODE) {\r
- logger.error("dsmEndTxnEx error, reason code {}", endTxnExOut.getReason());\r
- } else {\r
- if (result != TSMAPIConstants.DSM_RC_OK)\r
- throw new TSMException(dsmHandle, rc, endTxnExOut.getReason());\r
- }\r
+ // if (result == TSMAPIConstants.DSM_RC_CHECK_REASON_CODE) {\r
+ // logger.error("dsmEndTxnEx error, reason code {}", endTxnExOut.getReason());\r
+ // } else {\r
+ // if (result != TSMAPIConstants.DSM_RC_OK)\r
+ // throw new TSMException(dsmHandle, rc, endTxnExOut.getReason());\r
+ // }\r
+\r
+ if (result != TSMAPIConstants.DSM_RC_OK)\r
+ throw new TSMException(dsmHandle, rc, endTxnExOut.getReason());\r
\r
return result;\r
}\r