Search in sources :

Example 6 with Incident

use of org.opencastproject.job.api.Incident in project opencast by opencast.

the class JobEndpoint method flatten.

/**
 * Flatten a tree of incidents.
 *
 * @return a list of incidents
 */
private List<Incident> flatten(IncidentTree incidentsTree) {
    final List<Incident> incidents = new ArrayList<>();
    incidents.addAll(incidentsTree.getIncidents());
    for (IncidentTree descendantTree : incidentsTree.getDescendants()) {
        incidents.addAll(flatten(descendantTree));
    }
    return incidents;
}
Also used : ArrayList(java.util.ArrayList) Incident(org.opencastproject.job.api.Incident) IncidentTree(org.opencastproject.job.api.IncidentTree)

Example 7 with Incident

use of org.opencastproject.job.api.Incident in project opencast by opencast.

the class EmailDataTest method setUp.

@Before
public void setUp() throws Exception {
    MediaPackageBuilder builder = MediaPackageBuilderFactory.newInstance().newMediaPackageBuilder();
    uriMP = EmailDataTest.class.getResource("/email_mediapackage.xml").toURI();
    mp = builder.loadFromXml(uriMP.toURL().openStream());
    URI episodeURI = EmailDataTest.class.getResource("/episode_dublincore.xml").toURI();
    URI seriesURI = EmailDataTest.class.getResource("/series_dublincore.xml").toURI();
    DublinCoreCatalog episodeDc = DublinCores.read(episodeURI.toURL().openStream());
    catalogs.put("episode", buildCatalogHash(episodeDc));
    DublinCoreCatalog seriesDc = DublinCores.read(seriesURI.toURL().openStream());
    catalogs.put("series", buildCatalogHash(seriesDc));
    WorkflowDefinitionImpl def = new WorkflowDefinitionImpl();
    def.setId("wfdef");
    Map<String, String> props = new HashMap<String, String>();
    props.put("emailAddress", "user@domain.com");
    // Create some incidents
    incident1 = EasyMock.createNiceMock(Incident.class);
    List<Tuple<String, String>> details = new LinkedList<Tuple<String, String>>();
    Tuple<String, String> detail = new Tuple<String, String>("detail-type", "error in operation1");
    details.add(detail);
    EasyMock.expect(incident1.getDetails()).andReturn(details);
    incident2 = EasyMock.createNiceMock(Incident.class);
    details = new LinkedList<Tuple<String, String>>();
    detail = new Tuple<String, String>("detail-type", "error in operation2");
    details.add(detail);
    EasyMock.expect(incident2.getDetails()).andReturn(details);
    // Link the incident and the subtree
    incidents = new LinkedList<Incident>();
    incidents.add(incident1);
    incidents.add(incident2);
    workflowInstance = new WorkflowInstanceImpl(def, null, null, null, null, props);
    workflowInstance.setId(1);
    workflowInstance.setState(WorkflowState.RUNNING);
    workflowInstance.setMediaPackage(mp);
    failedOperation = new WorkflowOperationInstanceImpl("operation1", OperationState.FAILED);
    WorkflowOperationInstanceImpl operation = new WorkflowOperationInstanceImpl("email", OperationState.RUNNING);
    List<WorkflowOperationInstance> operationList = new ArrayList<WorkflowOperationInstance>();
    operationList.add(failedOperation);
    operationList.add(operation);
    workflowInstance.setOperations(operationList);
    EasyMock.replay(incident1, incident2);
}
Also used : WorkflowDefinitionImpl(org.opencastproject.workflow.api.WorkflowDefinitionImpl) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) WorkflowOperationInstanceImpl(org.opencastproject.workflow.api.WorkflowOperationInstanceImpl) URI(java.net.URI) LinkedList(java.util.LinkedList) WorkflowInstanceImpl(org.opencastproject.workflow.api.WorkflowInstanceImpl) WorkflowOperationInstance(org.opencastproject.workflow.api.WorkflowOperationInstance) MediaPackageBuilder(org.opencastproject.mediapackage.MediaPackageBuilder) Incident(org.opencastproject.job.api.Incident) DublinCoreCatalog(org.opencastproject.metadata.dublincore.DublinCoreCatalog) Tuple(org.opencastproject.util.data.Tuple) Before(org.junit.Before)

Example 8 with Incident

use of org.opencastproject.job.api.Incident in project opencast by opencast.

the class EmailTemplateServiceImpl method generateIncidentList.

/**
 * Generates list of all incidents in the tree
 *
 * @param tree
 *          the incident tree
 * @return a flat list of incidents
 */
private List<Incident> generateIncidentList(IncidentTree tree) {
    List<Incident> list = new LinkedList<Incident>();
    if (tree != null && tree.getDescendants() != null && tree.getDescendants().size() > 0) {
        for (IncidentTree subtree : tree.getDescendants()) {
            list.addAll(generateIncidentList(subtree));
        }
    }
    list.addAll(tree.getIncidents());
    return list;
}
Also used : Incident(org.opencastproject.job.api.Incident) LinkedList(java.util.LinkedList) IncidentTree(org.opencastproject.job.api.IncidentTree)

Example 9 with Incident

use of org.opencastproject.job.api.Incident in project opencast by opencast.

the class EmailTemplateServiceImplTest method setUp.

@Before
public void setUp() throws Exception {
    MediaPackageBuilder builder = MediaPackageBuilderFactory.newInstance().newMediaPackageBuilder();
    uriMP = EmailTemplateServiceImplTest.class.getResource("/email_mediapackage.xml").toURI();
    mp = builder.loadFromXml(uriMP.toURL().openStream());
    service = new EmailTemplateServiceImpl();
    URI episodeURI = EmailTemplateServiceImplTest.class.getResource("/episode_dublincore.xml").toURI();
    URI seriesURI = EmailTemplateServiceImplTest.class.getResource("/series_dublincore.xml").toURI();
    Workspace workspace = EasyMock.createMock(Workspace.class);
    EasyMock.expect(workspace.get(new URI("episode_dublincore.xml"))).andReturn(new File(episodeURI));
    EasyMock.expect(workspace.get(new URI("series_dublincore.xml"))).andReturn(new File(seriesURI));
    EasyMock.replay(workspace);
    service.setWorkspace(workspace);
    EmailTemplateScanner templateScanner = EasyMock.createMock(EmailTemplateScanner.class);
    EasyMock.expect(templateScanner.getTemplate("templateBasic")).andReturn("Media package id: ${mediaPackage.identifier}, workflow id: ${workflow.id}, " + "title: ${mediaPackage.title}, series title: ${mediaPackage.seriesTitle}, " + "date: ${mediaPackage.date?datetime?iso_utc}");
    EasyMock.expect(templateScanner.getTemplate("templateCatalog")).andReturn("EPISODE creator: ${catalogs[\"episode\"][\"creator\"]}, isPartOf: ${catalogs[\"episode\"][\"isPartOf\"]}, " + "title: ${catalogs[\"episode\"][\"title\"]}, created: ${catalogs[\"episode\"][\"created\"]}, " + "SERIES creator: ${catalogs[\"series\"][\"creator\"]}, description: ${catalogs[\"series\"][\"description\"]}, " + "subject: ${catalogs[\"series\"][\"subject\"]}");
    EasyMock.expect(templateScanner.getTemplate("templateFailed")).andReturn("<#if failedOperation?has_content>Workflow failed in operation: ${failedOperation.template}</#if>, " + "Workflow errors: <#list incident as inc><#list inc.details as de>${de.b} </#list></#list>");
    EasyMock.expect(templateScanner.getTemplate("templateSyntaxError")).andReturn("${mediaPackage");
    EasyMock.replay(templateScanner);
    service.setEmailTemplateScanner(templateScanner);
    WorkflowDefinitionImpl def = new WorkflowDefinitionImpl();
    def.setId("wfdef");
    Map<String, String> props = new HashMap<String, String>();
    props.put("emailAddress", "user@domain.com");
    IncidentService is = EasyMock.createMock(IncidentService.class);
    /*
     * This is what we're building. EasyMock makes it ugly, of course /-------job1Tree / | / incident2 subtree |
     * incident1
     */
    // Create the tree and subtree
    IncidentTree subtree = EasyMock.createNiceMock(IncidentTree.class);
    IncidentTree job1Tree = EasyMock.createNiceMock(IncidentTree.class);
    // Create the incidents
    Incident incident1 = EasyMock.createNiceMock(Incident.class);
    List<Tuple<String, String>> details = new LinkedList<Tuple<String, String>>();
    Tuple<String, String> detail = new Tuple<String, String>("detail-type", "error in operation1");
    details.add(detail);
    EasyMock.expect(incident1.getDetails()).andReturn(details);
    Incident incident2 = EasyMock.createNiceMock(Incident.class);
    details = new LinkedList<Tuple<String, String>>();
    detail = new Tuple<String, String>("detail-type", "error in operation2");
    details.add(detail);
    EasyMock.expect(incident2.getDetails()).andReturn(details);
    // Link the incident and the subtree
    LinkedList<Incident> incidents = new LinkedList<Incident>();
    incidents.add(incident1);
    EasyMock.expect(subtree.getIncidents()).andReturn(incidents).anyTimes();
    // This is what Entwine wrote in the IncidentTree class, so rather than null we're using Immutables.nil()
    List<IncidentTree> subtreeDecendants = Immutables.nil();
    EasyMock.expect(subtree.getDescendants()).andReturn(subtreeDecendants).anyTimes();
    // Link the incident and the parent tree
    incidents = new LinkedList<Incident>();
    incidents.add(incident2);
    EasyMock.expect(job1Tree.getIncidents()).andReturn(incidents).anyTimes();
    // Link the subtree and parent tree
    LinkedList<IncidentTree> subtreeList = new LinkedList<IncidentTree>();
    subtreeList.add(subtree);
    EasyMock.expect(job1Tree.getDescendants()).andReturn(subtreeList).anyTimes();
    service.setIncidentService(is);
    workflowInstance = new WorkflowInstanceImpl(def, null, null, null, null, props);
    workflowInstance.setId(1);
    workflowInstance.setState(WorkflowState.RUNNING);
    workflowInstance.setMediaPackage(mp);
    WorkflowOperationInstanceImpl failedOperation1 = new WorkflowOperationInstanceImpl("operation1", OperationState.FAILED);
    failedOperation1.setFailWorkflowOnException(true);
    failedOperation1.setId(1L);
    EasyMock.expect(is.getIncidentsOfJob(1L, true)).andReturn(subtree).anyTimes();
    WorkflowOperationInstanceImpl failedOperation2 = new WorkflowOperationInstanceImpl("operation2", OperationState.FAILED);
    failedOperation2.setFailWorkflowOnException(false);
    failedOperation1.setId(2L);
    EasyMock.expect(is.getIncidentsOfJob(2L, true)).andReturn(job1Tree).anyTimes();
    WorkflowOperationInstanceImpl operation = new WorkflowOperationInstanceImpl("email", OperationState.RUNNING);
    List<WorkflowOperationInstance> operationList = new ArrayList<WorkflowOperationInstance>();
    operationList.add(failedOperation1);
    operationList.add(failedOperation2);
    operationList.add(operation);
    workflowInstance.setOperations(operationList);
    EasyMock.replay(is, subtree, job1Tree, incident1, incident2);
}
Also used : IncidentService(org.opencastproject.serviceregistry.api.IncidentService) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) WorkflowOperationInstanceImpl(org.opencastproject.workflow.api.WorkflowOperationInstanceImpl) URI(java.net.URI) WorkflowOperationInstance(org.opencastproject.workflow.api.WorkflowOperationInstance) MediaPackageBuilder(org.opencastproject.mediapackage.MediaPackageBuilder) IncidentTree(org.opencastproject.job.api.IncidentTree) WorkflowDefinitionImpl(org.opencastproject.workflow.api.WorkflowDefinitionImpl) LinkedList(java.util.LinkedList) WorkflowInstanceImpl(org.opencastproject.workflow.api.WorkflowInstanceImpl) Incident(org.opencastproject.job.api.Incident) File(java.io.File) Tuple(org.opencastproject.util.data.Tuple) Workspace(org.opencastproject.workspace.api.Workspace) Before(org.junit.Before)

Example 10 with Incident

use of org.opencastproject.job.api.Incident in project opencast by opencast.

the class AbstractIncidentService method getChildIncidents.

private List<IncidentTree> getChildIncidents(long jobId) throws NotFoundException, ServiceRegistryException, IncidentServiceException {
    List<Job> childJobs = getServiceRegistry().getChildJobs(jobId);
    List<IncidentTree> incidentResults = new ArrayList<IncidentTree>();
    for (Job childJob : childJobs) {
        if (childJob.getParentJobId() != jobId)
            continue;
        List<Incident> incidentsForJob = getIncidentsOfJob(childJob.getId());
        IncidentTree incidentTree = new IncidentTreeImpl(incidentsForJob, getChildIncidents(childJob.getId()));
        if (hasIncidents(Collections.list(incidentTree)))
            incidentResults.add(incidentTree);
    }
    return incidentResults;
}
Also used : IncidentTreeImpl(org.opencastproject.job.api.IncidentTreeImpl) ArrayList(java.util.ArrayList) Incident(org.opencastproject.job.api.Incident) Job(org.opencastproject.job.api.Job) IncidentTree(org.opencastproject.job.api.IncidentTree)

Aggregations

Incident (org.opencastproject.job.api.Incident)12 IncidentTree (org.opencastproject.job.api.IncidentTree)7 ArrayList (java.util.ArrayList)6 HashMap (java.util.HashMap)4 Job (org.opencastproject.job.api.Job)4 IncidentServiceException (org.opencastproject.serviceregistry.api.IncidentServiceException)4 WorkflowOperationInstance (org.opencastproject.workflow.api.WorkflowOperationInstance)4 URI (java.net.URI)3 LinkedList (java.util.LinkedList)3 NotFoundException (org.opencastproject.util.NotFoundException)3 Tuple (org.opencastproject.util.data.Tuple)3 Path (javax.ws.rs.Path)2 Produces (javax.ws.rs.Produces)2 WebApplicationException (javax.ws.rs.WebApplicationException)2 Before (org.junit.Before)2 IncidentTreeImpl (org.opencastproject.job.api.IncidentTreeImpl)2 JaxbIncident (org.opencastproject.job.api.JaxbIncident)2 MediaPackageBuilder (org.opencastproject.mediapackage.MediaPackageBuilder)2 RestQuery (org.opencastproject.util.doc.rest.RestQuery)2 WorkflowDefinitionImpl (org.opencastproject.workflow.api.WorkflowDefinitionImpl)2