org.datacleaner.monitor.scheduling.command.RenameJobCommand.java Source code

Java tutorial

Introduction

Here is the source code for org.datacleaner.monitor.scheduling.command.RenameJobCommand.java

Source

/**
 * DataCleaner (community edition)
 * Copyright (C) 2014 Neopost - Customer Information Management
 *
 * This copyrighted material is made available to anyone wishing to use, modify,
 * copy, or redistribute it subject to the terms and conditions of the GNU
 * Lesser General Public License, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
 * for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this distribution; if not, write to:
 * Free Software Foundation, Inc.
 * 51 Franklin Street, Fifth Floor
 * Boston, MA  02110-1301  USA
 */
package org.datacleaner.monitor.scheduling.command;

import org.datacleaner.monitor.shared.model.JobIdentifier;
import org.datacleaner.monitor.shared.model.TenantIdentifier;
import org.datacleaner.monitor.shared.widgets.DCPopupPanel;
import org.datacleaner.monitor.shared.widgets.LoadingIndicator;
import org.datacleaner.monitor.util.DCRequestBuilder;
import org.datacleaner.monitor.util.DCRequestCallback;
import org.datacleaner.monitor.util.ErrorHandler;
import org.datacleaner.monitor.util.Urls;

import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.Response;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.Window;

public class RenameJobCommand implements Command {

    private TenantIdentifier _tenant;
    private JobIdentifier _job;
    private DCPopupPanel _morePopup;

    public RenameJobCommand(TenantIdentifier tenant, JobIdentifier jobIdentifier, DCPopupPanel morePopup) {
        _tenant = tenant;
        _job = jobIdentifier;
        _morePopup = morePopup;
    }

    @Override
    public void execute() {
        _morePopup.hide();
        final String newName = Window.prompt("Enter job name", _job.getName());
        if (newName == null || newName.trim().length() == 0 || newName.equals(_job.getName())) {
            return;
        }

        final DCPopupPanel popup = new DCPopupPanel("Renaming...");
        popup.setWidget(new LoadingIndicator());
        popup.center();
        popup.show();

        final String url = Urls.createRepositoryUrl(_tenant, "jobs/" + _job.getName() + ".modify");

        final JSONObject payload = new JSONObject();
        payload.put("name", new JSONString(newName));

        final DCRequestBuilder requestBuilder = new DCRequestBuilder(RequestBuilder.POST, url);
        requestBuilder.setHeader("Content-Type", "application/json");
        requestBuilder.send(payload.toString(), new DCRequestCallback() {
            @Override
            protected void onSuccess(Request request, Response response) {
                Window.Location.reload();
            }

            @Override
            public void onNonSuccesfullStatusCode(Request request, Response response, int statusCode,
                    String statusText) {
                popup.hide();
                ErrorHandler.showErrorDialog(response.getText());
            }
        });
    }
}