From 0be6e87d5e06fcdc9a76cbc43c72e2a3e12fccf2 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Tue, 23 Jul 2013 16:16:42 +0530 Subject: [PATCH] Add Campaign & CampaignContribution classes Change-Id: Ib300e32b0d8146321b661ab5feb20ba9714bfd52 --- .../wikimedia/commons/campaigns/Campaign.java | 63 +++++++++++++++++++ .../campaigns/CampaignContribution.java | 40 ++++++++++++ .../commons/contributions/Contribution.java | 10 ++- 3 files changed, 110 insertions(+), 3 deletions(-) create mode 100644 commons/src/main/java/org/wikimedia/commons/campaigns/Campaign.java create mode 100644 commons/src/main/java/org/wikimedia/commons/campaigns/CampaignContribution.java diff --git a/commons/src/main/java/org/wikimedia/commons/campaigns/Campaign.java b/commons/src/main/java/org/wikimedia/commons/campaigns/Campaign.java new file mode 100644 index 000000000..0eeb1dcef --- /dev/null +++ b/commons/src/main/java/org/wikimedia/commons/campaigns/Campaign.java @@ -0,0 +1,63 @@ +package org.wikimedia.commons.campaigns; + +import org.json.JSONArray; +import org.json.JSONObject; + +import java.util.ArrayList; + +public class Campaign { + private boolean enabled; + + private String autoAddWikitext; + private ArrayList autoAddCategories; + + private String name; + private String ownWorkLicenseDefault; + + private String defaultDescription; + + private JSONObject config; + + public boolean isEnabled() { + return enabled; + } + + public String getAutoAddWikitext() { + return autoAddWikitext; + } + + public ArrayList getAutoAddCategories() { + return autoAddCategories; + } + + public String getName() { + return name; + } + + public String getOwnWorkLicenseDefault() { + return ownWorkLicenseDefault; + } + + public String getDefaultDescription() { + return defaultDescription; + } + + public JSONObject getConfig() { + return config; + } + + public Campaign(String name, JSONObject config) { + this.config = config; + this.name = name; + if(config.has("autoAdd")) { + this.autoAddWikitext = config.optJSONObject("autoAdd").optString("wikitext", null); + if(config.optJSONObject("autoAdd").has("categories")) { + this.autoAddCategories = new ArrayList(); + JSONArray catsArray = config.optJSONObject("autoAdd").optJSONArray("categories"); + for(int i=0; i < catsArray.length(); i++) { + autoAddCategories.add(catsArray.optString(i)); + } + } + } + } +} diff --git a/commons/src/main/java/org/wikimedia/commons/campaigns/CampaignContribution.java b/commons/src/main/java/org/wikimedia/commons/campaigns/CampaignContribution.java new file mode 100644 index 000000000..1566c1430 --- /dev/null +++ b/commons/src/main/java/org/wikimedia/commons/campaigns/CampaignContribution.java @@ -0,0 +1,40 @@ +package org.wikimedia.commons.campaigns; + +import org.wikimedia.commons.contributions.Contribution; + +import java.util.ArrayList; + +public class CampaignContribution extends Contribution { + private Campaign campaign; + + private ArrayList fieldValues; + + public Campaign getCampaign() { + return campaign; + } + + public void setCampaign(Campaign campaign) { + this.campaign = campaign; + } + + @Override + public String getTrackingTemplates() { + StringBuffer buffer = new StringBuffer(); + if(campaign.getAutoAddWikitext() != null) { + buffer.append(campaign.getAutoAddWikitext()).append("\n"); + } + if(campaign.getAutoAddCategories() != null && campaign.getAutoAddCategories().size() != 0) { + for(String cat : campaign.getAutoAddCategories()) { + buffer.append("[[Category:").append(cat).append("]]").append("\n"); + } + } else { + buffer.append("{{subst:unc}}\n"); + } + return buffer.toString(); + } + + @Override + public String getDescription() { + return super.getDescription(); + } +} diff --git a/commons/src/main/java/org/wikimedia/commons/contributions/Contribution.java b/commons/src/main/java/org/wikimedia/commons/contributions/Contribution.java index f0f5a24bf..d482fea41 100644 --- a/commons/src/main/java/org/wikimedia/commons/contributions/Contribution.java +++ b/commons/src/main/java/org/wikimedia/commons/contributions/Contribution.java @@ -117,13 +117,17 @@ public class Contribution extends Media { this.dateUploaded = date; } + public String getTrackingTemplates() { + return "{{subst:unc}}"; // Remove when we have categorization + } + public String getPageContents() { StringBuffer buffer = new StringBuffer(); SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd"); buffer .append("== {{int:filedesc}} ==\n") .append("{{Information\n") - .append("|description=").append(description).append("\n") + .append("|description=").append(getDescription()).append("\n") .append("|source=").append("{{own}}\n") .append("|author=[[User:").append(creator).append("]]\n"); if(dateCreated != null) { @@ -133,9 +137,9 @@ public class Contribution extends Media { buffer .append("}}").append("\n") .append("== {{int:license-header}} ==\n") - .append(Utils.licenseTemplateFor(license)).append("\n\n") + .append(Utils.licenseTemplateFor(getLicense())).append("\n\n") .append("{{Uploaded from Mobile|platform=Android|version=").append(CommonsApplication.APPLICATION_VERSION).append("}}\n") - .append("{{subst:unc}}"); // Remove when we have categorization + .append(getTrackingTemplates()); return buffer.toString(); }