/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.content;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import android.text.TextUtils;
import com.galaxy.meetup.client.android.content.cache.CachedImageRequest;
import com.galaxy.meetup.client.util.ImageUtils;
/**
*
* @author sihai
*
*/
public class MediaImageRequest extends CachedImageRequest {
private static Matcher sCanonicalMatcher = Pattern.compile("http://images\\d+-focus-opensocial.googleusercontent.com/gadgets/proxy").matcher("");
private String mCanonicalUrl;
private final boolean mCropAndResize;
private String mDownloadUrl;
private int mHashCode;
private final int mHeight;
private final int mMediaType;
private final String mUrl;
private final int mWidth;
public MediaImageRequest() {
this(null, 0, 0, 0, false);
}
public MediaImageRequest(String url, int i, int j) {
this(url, 3, j, j, true);
}
public MediaImageRequest(String url, int mediaType, int width, int height, boolean cropAndResize) {
if(url == null) {
throw new NullPointerException();
} else {
mUrl = url;
mMediaType = mediaType;
mWidth = width;
mHeight = height;
mCropAndResize = cropAndResize;
return;
}
}
public static boolean areCanonicallyEqual(MediaImageRequest mediaimagerequest, MediaImageRequest mediaimagerequest1)
{
return TextUtils.equals(mediaimagerequest.getCanonicalUrl(), mediaimagerequest1.getCanonicalUrl());
}
public static boolean areCanonicallyEqual(MediaImageRequest mediaimagerequest, String s)
{
return TextUtils.equals(mediaimagerequest.getCanonicalUrl(), canonicalize(s));
}
public static boolean areCanonicallyEqual(String s, String s1)
{
return TextUtils.equals(canonicalize(s), canonicalize(s1));
}
private static String canonicalize(String s) {
if (!TextUtils.isEmpty(s))
synchronized (sCanonicalMatcher) {
sCanonicalMatcher.reset(s);
s = sCanonicalMatcher
.replaceFirst("http://images1-focus-opensocial.googleusercontent.com/gadgets/proxy");
}
return s;
}
private String getCanonicalUrl() {
if (mCanonicalUrl == null)
mCanonicalUrl = canonicalize(mUrl);
return mCanonicalUrl;
}
private String getDownloadUrl(String s)
{
if(mDownloadUrl == null)
{
mDownloadUrl = s.replace("&google_plus:card_type=nonsquare", "").replace("&google_plus:widget", "");
if(mCropAndResize && mWidth != 0)
if(mWidth == mHeight)
mDownloadUrl = ImageUtils.getCroppedAndResizedUrl(mWidth, mDownloadUrl);
else
mDownloadUrl = ImageUtils.getCenterCroppedAndResizedUrl(mWidth, mHeight, mDownloadUrl);
if(mDownloadUrl.startsWith("//"))
mDownloadUrl = (new StringBuilder("http:")).append(mDownloadUrl).toString();
}
return mDownloadUrl;
}
public boolean equals(Object obj) {
if(!(obj instanceof MediaImageRequest)) {
return false;
}
MediaImageRequest mediaimagerequest = (MediaImageRequest)obj;
if(mediaimagerequest.mWidth != mWidth || mediaimagerequest.mHeight != mHeight || mediaimagerequest.mMediaType != mMediaType || !areCanonicallyEqual(this, mediaimagerequest)) {
return false;
}
return true;
}
protected final String getCacheFilePrefix() {
return "M";
}
public final String getCanonicalDownloadUrl() {
return getDownloadUrl(getCanonicalUrl());
}
public String getDownloadUrl() {
return getDownloadUrl(mUrl);
}
public final int getHeight() {
return mHeight;
}
public final int getMediaType() {
return mMediaType;
}
public final String getUrl() {
return mUrl;
}
public final int getWidth() {
return mWidth;
}
public int hashCode() {
if (mHashCode == 0) {
String s = getCanonicalUrl();
if (s != null)
mHashCode = s.hashCode();
else
mHashCode = 1;
}
return mHashCode;
}
public final boolean isEmpty() {
boolean flag;
if (mUrl == null)
flag = true;
else
flag = false;
return flag;
}
public String toString() {
return (new StringBuilder("MediaImageRequest: type="))
.append(mMediaType).append(" ").append(mUrl).append(" (")
.append(mWidth).append(", ").append(mHeight).append(")")
.toString();
}
}