litesoft
@ 961
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
package org.litesoft.useragent; public class UserAgentFormFactorDeterminerImpl implements UserAgentFormFactorDeterminer { @Override public UserAgentFormFactor determine( String pUserAgent ) { return ((pUserAgent.length() > 15) && containsAnyOf( pUserAgent, "iPhone", "iPod", "Mobile", "Android", "iPad", "IEMobile", "Tablet", "Kindle", "Silk", "SymbianOS", "Symbian", "Opera Mini", "Opera Mobi", "Fennec" )) ? UserAgentFormFactor.SingleViewOnly : UserAgentFormFactor.MultiViewable; } /** * Look for the Find Words (where the Word may not start the User Agent). */ private boolean containsAnyOf( String pUserAgent, String... pFindWords ) { for ( String zWord : pFindWords ) { if ( containsWord( pUserAgent, zWord ) ) { return true; } } return false; } /** * Look for the Find Word (where the Word may not start the User Agent). */ private boolean containsWord( String pUserAgent, String pWord ) { for ( int zAt, zFrom = 1; -1 != (zAt = pUserAgent.indexOf( pWord, zFrom )); ) { zFrom = zAt + pWord.length(); if ( isWordSep( pUserAgent, zAt - 1 ) && isWordSep( pUserAgent, zFrom ) ) { return true; } } return false; } private boolean isWordSep( String pUserAgent, int pAt ) { return (pAt == pUserAgent.length()) || !Character.isLetterOrDigit( pUserAgent.charAt( pAt ) ); } } |