All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.googlecode.mgwt.linker.server.propertyprovider.MgwtOsPropertyProvider Maven / Gradle / Ivy

The newest version!
package com.googlecode.mgwt.linker.server.propertyprovider;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;

import com.googlecode.mgwt.linker.server.BindingProperty;

public class MgwtOsPropertyProvider extends PropertyProviderBaseImpl {

	/**
	 * 
	 */
	private static final long serialVersionUID = -3624651858511204668L;
	public static final BindingProperty iPhone = new BindingProperty("mgwt.os", "iphone");
	public static final BindingProperty retina = new BindingProperty("mgwt.os", "retina");
	public static final BindingProperty iPhone_undefined = new BindingProperty("mgwt.os", "iphone_undefined");

	public static final BindingProperty iPad = new BindingProperty("mgwt.os", "ipad");
	public static final BindingProperty iPad_retina = new BindingProperty("mgwt.os", "ipad_retina");
	public static final BindingProperty iPad_undefined = new BindingProperty("mgwt.os", "ipad_undefined");

	@Override
	public String getPropertyName() {
		return "mgwt.os";
	}

	@Override
	public String getPropertyValue(HttpServletRequest req) throws PropertyProviderException {
		String userAgent = getUserAgent(req);

		// android
		if (userAgent.contains("android")) {
			if (userAgent.contains("mobile")) {
				return "android";
			} else {
				return "android_tablet";
			}

		}

		if (userAgent.contains("ipad")) {
			String value = getRetinaCookieValue(req);
			if (value == null) {
				return "ipad_undefined";
			}

			if ("0".equals(value)) {
				return "ipad";
			}

			if ("1".equals(value)) {
				return "ipad_retina";
			}

		}

		if (userAgent.contains("iphone")) {
			String value = getRetinaCookieValue(req);
			if (value == null) {
				return "iphone_undefined";
			}

			if ("0".equals(value)) {
				return "iphone";
			}

			if ("1".equals(value)) {
				return "retina";
			}

		}

		if (userAgent.contains("blackberry")) {
			return "blackberry";
		}

		return "desktop";

	}

	public String getRetinaCookieValue(HttpServletRequest req) {

		Cookie[] cookies = req.getCookies();
		if (cookies == null)
			return null;

		for (int i = 0; i < cookies.length; i++) {
			Cookie cookie = cookies[i];
			if ("mgwt_ios_retina".equals(cookie.getName()))
				return (cookie.getValue());
		}
		return null;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy