diff --git a/src/main/java/org/rundeck/api/domain/RundeckJob.java b/src/main/java/org/rundeck/api/domain/RundeckJob.java index abf62b0..5fc079e 100644 --- a/src/main/java/org/rundeck/api/domain/RundeckJob.java +++ b/src/main/java/org/rundeck/api/domain/RundeckJob.java @@ -37,6 +37,8 @@ public class RundeckJob implements Serializable { private String description; + private long averageDuration = -1L; + /** * @return the fullname : group + name (exact format is : "group/name") */ @@ -92,7 +94,7 @@ public class RundeckJob implements Serializable { @Override public String toString() { return "RundeckJob [id=" + id + ", name=" + name + ", group=" + group + ", project=" + project - + ", description=" + description + "]"; + + ", description=" + description + ", averageDuration="+averageDuration+"]"; } @Override @@ -104,6 +106,7 @@ public class RundeckJob implements Serializable { result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + ((project == null) ? 0 : project.hashCode()); + result = prime * result + (int) (averageDuration ^ (averageDuration >>> 32)); return result; } @@ -141,7 +144,18 @@ public class RundeckJob implements Serializable { return false; } else if (!project.equals(other.project)) return false; + if (averageDuration != other.averageDuration) { + return false; + } return true; } + + public long getAverageDuration() { + return averageDuration; + } + + public void setAverageDuration(long averageDuration) { + this.averageDuration = averageDuration; + } } diff --git a/src/main/java/org/rundeck/api/parser/JobParser.java b/src/main/java/org/rundeck/api/parser/JobParser.java index 5785d9e..5286984 100644 --- a/src/main/java/org/rundeck/api/parser/JobParser.java +++ b/src/main/java/org/rundeck/api/parser/JobParser.java @@ -58,6 +58,11 @@ public class JobParser implements XmlNodeParser { } job.setId(jobId); + String averageDuration = StringUtils.trimToNull(jobNode.valueOf("@averageDuration")); + if (averageDuration != null) { + job.setAverageDuration(Long.valueOf(averageDuration)); + } + // project is either a nested element of context, or just a child element Node contextNode = jobNode.selectSingleNode("context"); if (contextNode != null) { diff --git a/src/test/java/org/rundeck/api/parser/JobParserTest.java b/src/test/java/org/rundeck/api/parser/JobParserTest.java index 9882570..2a33345 100644 --- a/src/test/java/org/rundeck/api/parser/JobParserTest.java +++ b/src/test/java/org/rundeck/api/parser/JobParserTest.java @@ -42,4 +42,33 @@ public class JobParserTest { Assert.assertEquals("project-name", job.getProject()); } + @Test + public void parseExecutionJob1() throws Exception { + InputStream input = getClass().getResourceAsStream("execution-running.xml"); + Document document = ParserHelper.loadDocument(input); + + RundeckJob job = new JobParser("result/executions/execution/job").parseXmlNode(document); + + Assert.assertEquals("1", job.getId()); + Assert.assertEquals("ls", job.getName()); + Assert.assertEquals("list files", job.getDescription()); + Assert.assertEquals("system", job.getGroup()); + Assert.assertEquals("test", job.getProject()); + Assert.assertEquals(10000L, job.getAverageDuration()); + } + @Test + public void parseExecutionJob2() throws Exception { + InputStream input = getClass().getResourceAsStream("execution-succeeded.xml"); + Document document = ParserHelper.loadDocument(input); + + RundeckJob job = new JobParser("result/executions/execution/job").parseXmlNode(document); + + Assert.assertEquals("1", job.getId()); + Assert.assertEquals("ls", job.getName()); + Assert.assertEquals("list files", job.getDescription()); + Assert.assertEquals("system", job.getGroup()); + Assert.assertEquals("test", job.getProject()); + Assert.assertEquals(-1, job.getAverageDuration()); + } + } diff --git a/src/test/resources/org/rundeck/api/parser/execution-running.xml b/src/test/resources/org/rundeck/api/parser/execution-running.xml index 62b67f3..308bc55 100644 --- a/src/test/resources/org/rundeck/api/parser/execution-running.xml +++ b/src/test/resources/org/rundeck/api/parser/execution-running.xml @@ -1 +1 @@ -admin2011-04-07T13:43:50Zlssystemtestlist filesls ${option.dir}-arg1 value -arg2 value \ No newline at end of file +admin2011-04-07T13:43:50Zlssystemtestlist filesls ${option.dir}-arg1 value -arg2 value \ No newline at end of file