UserAgent.java
package sk.iway.iwcm.doc.ninja;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.stat.BrowserDetector;
import java.util.Hashtable;
import java.util.Map;
import java.util.Properties;
public class UserAgent {
private Ninja ninja;
private Map<String, Integer> minimalBrowserVersion = new Hashtable<>();
BrowserDetector bd = null;
public UserAgent(Ninja ninja) {
this.ninja = ninja;
for (BrowserType browserType : BrowserType.values()) {
minimalBrowserVersion.put(browserType.getBrowser(), Tools.getIntValue(ninja.getConfig("minBrowserVersion."+browserType), browserType.defaultMinimalVersion));
}
Properties config = ninja.getConfig();
if (config != null) {
for (Object key : config.keySet()) {
String keyStr = (String) key;
if (keyStr.startsWith("minBrowserVersion.") && keyStr.length() > 20) {
String browser = keyStr.substring(18);
if (minimalBrowserVersion.containsKey(browser)==false) {
minimalBrowserVersion.put(browser, Tools.getIntValue(ninja.getConfig(keyStr), 0));
}
}
}
}
}
/**
* Funkcia na vratenie verzie prehliadaca. Verzia sa zistuje na zaklade UserAdent
* @return String - verzia prehliadaca
*/
public String getBrowserVersion(){
String browserVersion = getBrowserDetector().getBrowserVersionShort();
return browserVersion;
}
/**
* Funkcia ktora vrati nazov prehliadaca
* @return String - nazov prehliadaca:
* ie
* chrome
* safari
* firefox
* opera
* edge
* webview
* android browser
* maxthon
* blackberry
*/
public String getBrowserName(){
String browserName = getBrowserDetector().getBrowserName();
if (browserName != null) {
return browserName.toLowerCase();
}
return "";
}
/**
* Metoda vracajuca typ zariadenia
* @return String - ketegoria zariadenia:
* game console
* other
* pda
* personal computer
* smart tv
* smartphone
* tablet
* wearable computer
* prazdny string ak nepozna typ
*/
public String getDeviceType(){
String deviceType = getBrowserDetector().getBrowserDeviceType();
if (deviceType == null) deviceType = "desktop";
return deviceType.toLowerCase();
}
public String getDeviceOS(){
String deviceOs = getBrowserDetector().getBrowserPlatform();
if (Tools.isNotEmpty(getBrowserDetector().getBrowserSubplatform())) deviceOs += " "+getBrowserDetector().getBrowserSubplatform();
return deviceOs.toLowerCase();
}
public boolean isBrowserOutdated()
{
int browserVersion = getMinimalBrowserVersion(getBrowserName());
//pre nezdetekovany browser vratime false, zhodni sme sa na tom s MHO ze to je lepsie
if (browserVersion < 1) return false;
return Tools.getIntValue(getBrowserVersion(), 999) < browserVersion;
}
public int getMinimalBrowserVersion(String browser){
Integer version = minimalBrowserVersion.get(browser);
if (version == null || version <1) return -1;
return version;
}
public boolean isBlind(){
BrowserDetector instance = BrowserDetector.getInstance(ninja.getRequest());
boolean isBlind = false;
if("blind".equals(instance.getBrowserDeviceType())){
isBlind = true;
}
return isBlind;
}
private BrowserDetector getBrowserDetector()
{
if (bd == null) bd = BrowserDetector.getInstance(ninja.getRequest());
return bd;
}
}