All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hpe.caf.services.job.api.generated.JobsApiServiceImpl Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2016-2024 Open Text.
 *
 * 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.
 */
package com.hpe.caf.services.job.api.generated;

import com.hpe.caf.services.job.api.*;
import com.hpe.caf.services.job.api.generated.model.Job;
import com.hpe.caf.services.job.api.generated.model.NewJob;

import jakarta.ws.rs.core.CacheControl;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.UriInfo;
import java.util.Collections;
import java.util.Map;

public class JobsApiServiceImpl implements JobsApi {

    private final UriInfo uriInfo;

    public JobsApiServiceImpl(@Context final UriInfo uriInfo)
    {
        this.uriInfo = uriInfo;
    }

    @Override
    public Response getJobs(final String partitionId, final String jobIdStartsWith, final String statusType,
                            final Integer limit, final Integer offset, final String sort,
                            final String label, final String filter)
            throws Exception {
        final Job[] jobs = JobsGet.getJobs(partitionId, jobIdStartsWith, statusType, limit, offset, sort, label, filter);
        return Response.ok().entity(jobs).build();
    }

    @Override
    public Response getJobsCount(final String partitionId, final String jobIdStartsWith, final String statusType, final String filter)
            throws Exception {
        final Long jobsCount = JobsStatsGetCount.getJobsCount(partitionId, jobIdStartsWith, statusType, filter);
        return Response.ok().entity(jobsCount).build();
    }

    @Override
    public Response getJob(final String partitionId, final String jobId)
            throws Exception {
        Job job = JobsGetById.getJob(partitionId, jobId);
        return Response.ok().entity(job).build();
    }

    @Override
    public Response createOrUpdateJob(final String partitionId, final String jobId, final NewJob newJob)
            throws Exception {
        String createOrUpdate = JobsPut.createOrUpdateJob(partitionId, jobId, newJob);
        if (createOrUpdate.equals("create")) {
            //  Return HTTP 201 for successful create.
            return Response.created(uriInfo.getRequestUri()).build();
        } else {
            //  Must be update - return HTTP 204 for successful update.
            return Response.noContent().build();
        }
    }

    @Override
    public Response deleteJob(final String partitionId, final String jobId)
            throws Exception {
        JobsDelete.deleteJob(partitionId, jobId);
        return Response.noContent().build();
    }

    @Override
    public Response deleteJobs(final String partitionId, final String jobIdStartsWith, final String label, final String filter)
            throws Exception
    {
        final Long value = JobsDelete.deleteJobs(partitionId, jobIdStartsWith, label, filter);
        final Map resultMap = Collections.singletonMap("jobsDeleted", value);

        return Response.ok().entity(resultMap).build();
    }

    @Override
    public Response cancelJob(final String partitionId, final String jobId)
            throws Exception {
        JobsCancel.cancelJob(partitionId, jobId);
        return Response.noContent().build();
    }

    @Override
    public Response cancelJobs(final String partitionId, final String jobIdStartsWith, final String label, final String filter)
            throws Exception
    {
        final Long value = JobsCancel.cancelJobs(partitionId, jobIdStartsWith, label, filter);
        final Map resultMap = Collections.singletonMap("jobsCanceled", value);

        return Response.ok().entity(resultMap).build();
    }

    @Override
    public Response pauseJob(final String partitionId, final String jobId)
            throws Exception {
        JobsPause.pauseJob(partitionId, jobId);
        return Response.noContent().build();
    }

    @Override
    public Response resumeJob(final String partitionId, final String jobId)
            throws Exception {
        JobsResume.resumeJob(partitionId, jobId);
        return Response.noContent().build();
    }

    @Override
    public Response getJobActive(final String partitionId, final String jobId)
            throws Exception {
        JobsActive.JobsActiveResult result = JobsActive.isJobActive(partitionId, jobId);

        CacheControl cc = new CacheControl();
        cc.setMaxAge(result.statusCheckIntervalSecs);

        return Response.ok().header("CacheableJobStatus", true).entity(result.active).cacheControl(cc).build();
    }

    @Override
    public Response getJobStatus(final String partitionId, final String jobId)
            throws Exception {
        final JobsStatus.JobsStatusResult jobStatusResult = JobsStatus.getJobStatus(partitionId, jobId);

        final CacheControl cacheControl = new CacheControl();
        cacheControl.setMaxAge(jobStatusResult.statusCheckIntervalSecs);

        return Response.ok().header("CacheableJobStatus", true).entity(jobStatusResult.jobStatus).cacheControl(cacheControl).build();
    }

    @Override
    public Response ping() throws Exception
    {
        return Response.ok("{\"success\" : true}", MediaType.APPLICATION_JSON).build();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy