package user.commons;\r
\r
+import java.io.File;\r
import java.util.List;\r
\r
import javax.ws.rs.client.Entity;\r
System.out.println("Progress: " + p);\r
});\r
\r
- String inputFile = "\\\\10.11.1.100\\Promise\\ARCHIVE\\6.MXF";\r
+ String inputFile = "\\\\10.11.1.100\\Promise\\ARCHIVE\\20.MXF";\r
api.submit("MP4", inputFile);\r
try {\r
api.monitor(1000);\r
private ResteasyWebTarget webTarget;\r
private IProgressChangedListener listener;\r
private String jobId;\r
- private BasicDBObject lastJobToSubmit;\r
+ private String inputFile;\r
+ private String workflowName;\r
\r
public FFAStransAPI(String apiAddress, IProgressChangedListener listener) {\r
this.listener = listener;\r
webTarget = new ResteasyClientBuilder().build().target(apiAddress);\r
}\r
\r
- private void doSubmit() throws Exception {\r
+ private void doSubmit(BasicDBObject jobToSubmit) throws Exception {\r
ResteasyWebTarget target = webTarget.path("jobs");\r
- Response apiResponse = target.request().post(Entity.entity(lastJobToSubmit.toString(), MediaType.APPLICATION_JSON));\r
+ Response apiResponse = target.request().post(Entity.entity(jobToSubmit.toString(), MediaType.APPLICATION_JSON));\r
if (apiResponse.getStatus() != 202)\r
throw new Exception("Can not submit, response status is: " + apiResponse.getStatus());\r
String json = apiResponse.readEntity(String.class);\r
}\r
\r
@Override\r
- public BasicDBObject getHistory(String jobStart) {\r
+ public BasicDBObject getHistory() {\r
ResteasyWebTarget target = webTarget.path("history");\r
BasicDBObject result = null;\r
try {\r
String json = apiResponse.readEntity(String.class);\r
BasicDBObject resultObject = (BasicDBObject) JSONUtil.jsonToDbObject(json);\r
List<BasicDBObject> jobs = NoSQLUtils.asList(resultObject, "history");\r
+\r
+ File f = new File(inputFile);\r
+\r
for (BasicDBObject job : jobs) {\r
if (job == null)\r
continue;\r
\r
- String job_start = NoSQLUtils.asString(job, "job_start");\r
- if (jobStart.equals(job_start)) {\r
+ String file = NoSQLUtils.asString(job, "file");\r
+ if (file == null)\r
+ continue;\r
+\r
+ String wf_name = NoSQLUtils.asString(job, "wf_name");\r
+ if (wf_name == null || !workflowName.equals(wf_name))\r
+ continue;\r
+\r
+ if (file.equals(f.getName())) {\r
+ logger.info("Found success history");\r
+ result = job;\r
+ break;\r
+ }\r
+ if (file.equals(inputFile)) {\r
+ logger.info("Found error history");\r
result = job;\r
break;\r
}\r
\r
@Override\r
public void monitor(int pollIntervall) throws InterruptedException, Exception {\r
- String jobStart = null;\r
int progress = 0;\r
while (true) {\r
Thread.sleep(pollIntervall);\r
+ //Status: {"job_id":"20180226-162821-217-A7E91DC625BD","job_start":"2018/02/26 16:28:21","file":"\\\\PROXY-TRANSCODER-01\\MAM-Proxy_input\\20180201-0700_hirado_TEST-_CS.MXF","wf_name":"MAM_proxy","splits":[{"steps":"4 / 5","processor":"Folder","status":"Waiting for next processor resources...","node":"PROXY-TRANSCODE","progress":"78.5"}]}\r
BasicDBObject status = getStatus(jobId);\r
if (status != null) {\r
- //System.out.println("Status: " + status.toPrettyString(null));\r
- if (jobStart == null)\r
- jobStart = status.getString("job_start");\r
-\r
+ logger.info("Status: " + status.toPrettyString(null));\r
List<BasicDBObject> splits = NoSQLUtils.asList(status, "splits");\r
+\r
+ int current = 0;\r
if (splits != null && splits.size() > 0) {\r
- String processor = NoSQLUtils.asString(splits.get(0), "processor");\r
- if (StringUtils.isNotBlank(processor) && "Generate text file".equals(processor))\r
- continue;\r
- String prg = NoSQLUtils.asString(splits.get(0), "progress");\r
- int current = (int) Float.parseFloat(prg);\r
- //System.out.println(String.format("%s %s %s", current, progress, current != progress));\r
- if (current != progress) {\r
- progress = current;\r
- listener.onProgressChanged(progress);\r
+ // String processor = NoSQLUtils.asString(splits.get(0), "processor");\r
+ // if (StringUtils.isNotBlank(processor) && "Generate text file".equals(processor))\r
+ // continue;\r
+ for (BasicDBObject split : splits) {\r
+ String prg = NoSQLUtils.asString(split, "progress");\r
+ current += (int) Float.parseFloat(prg);\r
}\r
+ current = current / splits.size();\r
+ //System.out.println(String.format("%s %s %s", current, progress, current != progress));\r
+ }\r
+ if (current != progress) {\r
+ progress = current;\r
+ listener.onProgressChanged(progress);\r
}\r
- //Status: {"job_id":"20180226-162821-217-A7E91DC625BD","job_start":"2018/02/26 16:28:21","file":"\\\\PROXY-TRANSCODER-01\\MAM-Proxy_input\\20180201-0700_hirado_TEST-_CS.MXF","wf_name":"MAM_proxy","splits":[{"steps":"4 / 5","processor":"Folder","status":"Waiting for next processor resources...","node":"PROXY-TRANSCODE","progress":"78.5"}]}\r
\r
} else {\r
- //System.out.println("Progress: " + 100);\r
listener.onProgressChanged(100);\r
- BasicDBObject history = getHistory(jobStart);\r
-\r
- if (history == null && lastJobToSubmit != null) {\r
- //plusz 1 proba\r
- doSubmit();\r
- lastJobToSubmit = null;\r
- monitor(pollIntervall);\r
- return;\r
- }\r
+ BasicDBObject history = getHistory();\r
+\r
+ // if (history == null && lastJobToSubmit != null) {\r
+ // //plusz 1 proba\r
+ // doSubmit();\r
+ // lastJobToSubmit = null;\r
+ // monitor(pollIntervall);\r
+ // return;\r
+ // }\r
\r
//System.out.println("History: " + history.toPrettyString(null));\r
if (history == null || NoSQLUtils.asLong(history, "state") != 1) {\r
String error = NoSQLUtils.asString(history, "outcome");\r
- throw new Exception("Transcode error: " + error);\r
+ throw new Exception("Transcode error. " + error);\r
} else {\r
//System.out.println("Transcode completed");\r
break;\r
\r
@Override\r
public void submit(String workflowName, String inputFile) throws Exception {\r
+ this.workflowName = workflowName;\r
+ this.inputFile = inputFile;\r
List<BasicDBObject> workflows = getWorkflows();\r
if (workflows == null)\r
throw new Exception("No workflows");\r
if (wfID < 0)\r
throw new Exception("Workflow not exists: " + workflowName);\r
\r
- lastJobToSubmit = new BasicDBObject("wf_id", wfID).append("inputfile", inputFile);\r
- doSubmit();\r
+ BasicDBObject jobToSubmit = new BasicDBObject("wf_id", wfID).append("inputfile", inputFile);\r
+ doSubmit(jobToSubmit);\r
}\r
}\r