package org.wikipedia.gallery;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.google.gson.annotations.SerializedName;
import org.apache.commons.lang3.StringUtils;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
public class ExtMetadata {
@SuppressWarnings("unused") @SerializedName("DateTime") @Nullable private Values dateTime;
@SuppressWarnings("unused") @SerializedName("ObjectName") @Nullable private Values objectName;
@SuppressWarnings("unused") @SerializedName("CommonsMetadataExtension") @Nullable private Values commonsMetadataExtension;
@SuppressWarnings("unused") @SerializedName("Categories") @Nullable private Values categories;
@SuppressWarnings("unused") @SerializedName("Assessments") @Nullable private Values assessments;
@SuppressWarnings("unused") @SerializedName("ImageDescription") @Nullable private Values imageDescription;
@SuppressWarnings("unused") @SerializedName("DateTimeOriginal") @Nullable private Values dateTimeOriginal;
@SuppressWarnings("unused") @SerializedName("Artist") @Nullable private Values artist;
@SuppressWarnings("unused") @SerializedName("Credit") @Nullable private Values credit;
@SuppressWarnings("unused") @SerializedName("Permission") @Nullable private Values permission;
@SuppressWarnings("unused") @SerializedName("AuthorCount") @Nullable private Values authorCount;
@SuppressWarnings("unused") @SerializedName("LicenseShortName") @Nullable private Values licenseShortName;
@SuppressWarnings("unused") @SerializedName("UsageTerms") @Nullable private Values usageTerms;
@SuppressWarnings("unused") @SerializedName("LicenseUrl") @Nullable private Values licenseUrl;
@SuppressWarnings("unused") @SerializedName("AttributionRequired") @Nullable private Values attributionRequired;
@SuppressWarnings("unused") @SerializedName("Copyrighted") @Nullable private Values copyrighted;
@SuppressWarnings("unused") @SerializedName("Restrictions") @Nullable private Values restrictions;
@SuppressWarnings("unused") @SerializedName("License") @Nullable private Values license;
@Nullable public Values licenseShortName() {
return licenseShortName;
}
@Nullable public Values licenseUrl() {
return licenseUrl;
}
@Nullable public Values license() {
return license;
}
public class Values {
@SuppressWarnings("unused,NullableProblems") @NonNull private String value;
@SuppressWarnings("unused,NullableProblems") @NonNull private String source;
@SuppressWarnings("unused,NullableProblems") @NonNull private String hidden;
@NonNull public String value() {
return value;
}
@NonNull public String source() {
return source;
}
}
// TODO: Update consumers to use a ExtMetadata object and remove ASAP
@Deprecated @NonNull Map<String, String> toMap() throws IllegalAccessException {
HashMap<String, String> result = new HashMap<>();
for (Field field : this.getClass().getDeclaredFields()) {
Values values = (Values) field.get(this);
if (values != null) {
result.put(StringUtils.capitalize(field.getName()), values.value());
}
}
return result;
}
}