Package com.discoverydns.dnsapiclient.internal.command.zone

Source Code of com.discoverydns.dnsapiclient.internal.command.zone.ZoneGetQueryUsageCommandHandler

package com.discoverydns.dnsapiclient.internal.command.zone;

import com.discoverydns.dnsapiclient.command.zone.ZoneGetQueryUsageCommand;
import com.discoverydns.dnsapiclient.command.zone.ZoneGetQueryUsageResponse;
import com.discoverydns.dnsapiclient.exception.DNSAPIClientException;
import com.discoverydns.dnsapiclient.framework.command.CommandMetaData;
import com.discoverydns.dnsapiclient.internal.command.*;
import com.discoverydns.dnsapiclient.internal.views.ZoneGetQueryUsageView;

import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

public class ZoneGetQueryUsageCommandHandler extends
        BaseRestCommandHandler<ZoneGetQueryUsageCommand, ZoneGetQueryUsageResponse> {
    private final WebTarget zoneGetQueryUsageTarget;

    public ZoneGetQueryUsageCommandHandler(final WebTarget baseWebTarget) {
        super(Method.GET, Response.Status.OK.getStatusCode(),
                MediaType.APPLICATION_JSON_TYPE);
        this.zoneGetQueryUsageTarget = baseWebTarget.path("zones/{zoneId}/queryUsage");
    }

    @Override
    public WebTarget getWebTarget(ZoneGetQueryUsageCommand command, CommandMetaData commandMetaData) {
        WebTarget webTarget;
        try {
            webTarget = zoneGetQueryUsageTarget
                    .resolveTemplate("zoneId", command.getId());
        } catch (Throwable t) {
            throw new DNSAPIClientException(
                    DNSAPIClientException.DNSAPIClientExceptionCode.requiredParameterMissing, t, "id");
        }
        webTarget = setParameterOnWebTarget("searchStartDate", command.getSearchStartDate(), webTarget);
        webTarget = setParameterOnWebTarget("searchEndDate", command.getSearchEndDate(), webTarget);
        webTarget = setParameterOnWebTarget("searchGranularity", command.getSearchGranularity(), webTarget);
        webTarget = setParameterOnWebTarget("searchGroupUsage", command.isSearchGroupUsage(), webTarget);
        return webTarget;
    }

    private WebTarget setParameterOnWebTarget(String parameterName, Object value, WebTarget webTarget) {
        try {
            if (value == null) {
                throw new IllegalArgumentException();
            }
            webTarget = webTarget.queryParam(parameterName, value);
        } catch (Throwable t) {
            throw new DNSAPIClientException(
                    DNSAPIClientException.DNSAPIClientExceptionCode.requiredParameterMissing, t, parameterName);
        }
        return webTarget;
    }

    @Override
    public InvocationBuildInvoker getInvocationBuildInvoker(
            ZoneGetQueryUsageCommand command, CommandMetaData commandMetaData) {
        return new NoEntityInvocationBuildInvoker();
    }

    @Override
    public InvocationBuilderFactory getInvocationBuilderFactory(
            ZoneGetQueryUsageCommand command, CommandMetaData commandMetaData) {
        return new NoEntityInvocationBuilderFactory();
    }

    @Override
    public ZoneGetQueryUsageResponse getCommandResponse(
            Response restResponse, CommandMetaData commandMetaData) {
        final ZoneGetQueryUsageView zoneGetQueryUsageView = getResponseEntity(ZoneGetQueryUsageView.class,
                restResponse);
        return new ZoneGetQueryUsageResponse(zoneGetQueryUsageView);
    }
}
TOP

Related Classes of com.discoverydns.dnsapiclient.internal.command.zone.ZoneGetQueryUsageCommandHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.