/*
* WPCleaner: A tool to help on Wikipedia maintenance tasks.
* Copyright (C) 2013 Nicolas Vervelle
*
* See README.txt file for licensing information.
*/
package org.wikipediacleaner.api.request.delete;
import java.util.Map;
import org.wikipediacleaner.api.APIException;
import org.wikipediacleaner.api.constants.EnumWikipedia;
import org.wikipediacleaner.api.data.Page;
import org.wikipediacleaner.api.impl.CommentDecorator;
import org.wikipediacleaner.api.request.ApiRequest;
/**
* MediaWiki API delete requests.
*/
public class ApiDeleteRequest extends ApiRequest {
// ==========================================================================
// API properties
// ==========================================================================
/**
* Property for Old image.
*/
public final static String PROPERTY_OLDIMAGE = "oldimage";
/**
* Property for Page identifier.
*/
public final static String PROPERTY_PAGEID = "pageid";
/**
* Property for Reason.
*/
public final static String PROPERTY_REASON = "reason";
/**
* Property for Title.
*/
public final static String PROPERTY_TITLE = "title";
/**
* Property for Token.
*/
public final static String PROPERTY_TOKEN = "token";
/**
* Property for Unwatch.
*/
public final static String PROPERTY_UNWATCH = "unwatch";
/**
* Property for Watch.
*/
public final static String PROPERTY_WATCH = "watch";
// ==========================================================================
// Request management
// ==========================================================================
private final ApiDeleteResult result;
/**
* @param wiki Wiki.
* @param result Parser for result depending on chosen format.
*/
public ApiDeleteRequest(EnumWikipedia wiki, ApiDeleteResult result) {
super(wiki);
this.result = result;
}
/**
* Delete one page.
*
* @param page Page to be deleted.
* @param reason Reason for deletion.
* @param automatic True if the modification is automatic.
*/
public void deletePage(
Page page, String reason,
boolean automatic) throws APIException {
Map<String, String> properties = getProperties(ACTION_DELETE, result.getFormat());
if (reason != null) {
properties.put(PROPERTY_REASON, reason);
}
properties.put(PROPERTY_TITLE, page.getTitle());
properties.put(PROPERTY_TOKEN, getWiki().getConnection().getDeleteToken());
CommentDecorator decorator = getWiki().getCommentDecorator();
if (decorator != null) {
decorator.manageComment(properties, PROPERTY_REASON, "tags", automatic);
}
result.executeDelete(properties);
}
}