SynchronizeCampaignCommand.java 3.85 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  javax.servlet.ServletException
 *  org.apache.commons.lang.StringUtils
 *  org.apache.felix.scr.annotations.Component
 *  org.apache.felix.scr.annotations.Reference
 *  org.apache.felix.scr.annotations.Service
 *  org.apache.sling.api.SlingHttpServletRequest
 *  org.apache.sling.api.SlingHttpServletResponse
 *  org.apache.sling.api.servlets.HtmlResponse
 *  org.apache.sling.commons.json.JSONException
 *  org.apache.sling.commons.json.JSONObject
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 */
package com.day.cq.analytics.testandtarget.impl.servlets.commands;

import com.day.cq.analytics.testandtarget.TargetMediator;
import com.day.cq.analytics.testandtarget.TestandtargetCommand;
import com.day.cq.analytics.testandtarget.TestandtargetException;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import org.apache.commons.lang.StringUtils;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.HtmlResponse;
import org.apache.sling.commons.json.JSONException;
import org.apache.sling.commons.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Component
@Service
public class SynchronizeCampaignCommand
implements TestandtargetCommand {
    private static Logger LOGGER = LoggerFactory.getLogger(SynchronizeCampaignCommand.class);
    private static final String PARAM_CAMPAIGN_PATH = "campaignPath";
    @Reference
    private TargetMediator mediator;

    @Override
    public String getName() {
        return "synchronizeCampaign";
    }

    @Override
    public HtmlResponse performCommand(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
        String campaignPath = request.getParameter("campaignPath");
        try {
            if (StringUtils.isEmpty((String)campaignPath)) {
                String msg = "Required parameter campaignPath not found";
                this.sendError(response, 400, msg);
                return null;
            }
            LOGGER.debug("Received command to synchronize campaign at {}", (Object)campaignPath);
            this.mediator.syncAuthorCampaign(campaignPath);
            LOGGER.debug("Campaign synchronized successfully");
            this.sendOk(response, "Succes");
        }
        catch (TestandtargetException e) {
            LOGGER.error(e.getMessage());
            this.sendError(response, 500, e.getMessage());
        }
        return null;
    }

    private void sendOk(SlingHttpServletResponse response, String msg) throws IOException {
        response.setContentType("application/json");
        response.setStatus(200);
        PrintWriter out = response.getWriter();
        out.print(this.buildMessageObject(msg));
    }

    private void sendError(SlingHttpServletResponse response, int status, String msg) throws IOException {
        response.setContentType("application/json");
        response.setStatus(status);
        PrintWriter out = response.getWriter();
        out.print(this.buildMessageObject(msg));
    }

    private String buildMessageObject(String msg) {
        JSONObject messageObject = new JSONObject();
        try {
            messageObject.put("message", (Object)msg);
            return messageObject.toString();
        }
        catch (JSONException e) {
            return msg;
        }
    }

    protected void bindMediator(TargetMediator targetMediator) {
        this.mediator = targetMediator;
    }

    protected void unbindMediator(TargetMediator targetMediator) {
        if (this.mediator == targetMediator) {
            this.mediator = null;
        }
    }
}