package org.wikipedia.gallery; import android.support.annotation.DrawableRes; import android.support.annotation.NonNull; import org.wikipedia.R; import static org.apache.commons.lang3.StringUtils.defaultString; public class ImageLicense { private static final String CREATIVE_COMMONS_PREFIX = "cc"; private static final String PUBLIC_DOMAIN_PREFIX = "pd"; @NonNull private final String license; @NonNull private final String licenseShortName; @NonNull private final String licenseUrl; public ImageLicense(@NonNull ExtMetadata metadata) { this.license = metadata.license() != null ? metadata.license().value() : ""; this.licenseShortName = metadata.licenseShortName() != null ? metadata.licenseShortName().value() : ""; this.licenseUrl = metadata.licenseUrl() != null ? metadata.licenseUrl().value() : ""; } public ImageLicense(@NonNull String license, @NonNull String licenseShortName, @NonNull String licenseUrl) { this.license = license; this.licenseShortName = licenseShortName; this.licenseUrl = licenseUrl; } public ImageLicense() { this("", "", ""); } @NonNull public String getLicense() { return license; } @NonNull public String getLicenseShortName() { return licenseShortName; } @NonNull public String getLicenseUrl() { return licenseUrl; } public boolean isLicenseCC() { return defaultString(license).toLowerCase().startsWith(CREATIVE_COMMONS_PREFIX) || defaultString(licenseShortName).toLowerCase().startsWith(CREATIVE_COMMONS_PREFIX); } public boolean isLicensePD() { return defaultString(license).toLowerCase().startsWith(PUBLIC_DOMAIN_PREFIX) || defaultString(licenseShortName).toLowerCase().startsWith(PUBLIC_DOMAIN_PREFIX); } /** * Return an icon (drawable resource id) that corresponds to the type of license * under which the specified Gallery item is provided. * @return Resource ID of the icon to display. */ @DrawableRes public int getLicenseIcon() { if (isLicensePD()) { return R.drawable.ic_license_pd; } if (isLicenseCC()) { return R.drawable.ic_license_cc; } return R.drawable.ic_license_cite; } public boolean hasLicenseInfo() { return !(license.isEmpty() && licenseShortName.isEmpty() && licenseUrl.isEmpty()); } }