class JobResourceProvider extends
    AbstractJDBCResourceProvider<JobResourceProvider.JobFields> {

  @Override
  public Set<Resource> getResources(Request request, Predicate predicate)
      throws SystemException, UnsupportedPropertyException,
      NoSuchResourceException, NoSuchParentResourceException {

    Set<Resource> resourceSet = new HashSet<>();
    Set<String> requestedIds = getRequestPropertyIds(request, predicate);

    Set<Map<String,Object>> predicatePropertieSet = getPropertyMaps(predicate);
    for (Map<String,Object> predicateProperties : predicatePropertieSet) {
      String clusterName = (String) predicateProperties
          .get(JOB_CLUSTER_NAME_PROPERTY_ID);
      String workflowId = (String) predicateProperties
          .get(JOB_WORKFLOW_ID_PROPERTY_ID);
      String jobId = (String) predicateProperties.get(JOB_ID_PROPERTY_ID);
      resourceSet.addAll(jobFetcher.fetchJobDetails(requestedIds, clusterName,
          workflowId, jobId));
    }
    return resourceSet;
  }

  protected  JobResourceProvider();
  protected  JobResourceProvider(JobFetcher jobFetcher);

}