Author: wkeil Date: Sun Jun 19 01:10:33 2016 New Revision: 1749117 URL: http://svn.apache.org/viewvc?rev=1749117&view=rev Log: DMAP-166: New device: Sony Xperia E1
Task-Url: https://issues.apache.org/jira/browse/DMAP-166 Modified: devicemap/trunk/clients/1.0/java/client/src/main/java/org/apache/devicemap/DeviceFixer.java devicemap/trunk/clients/1.0/java/client/src/main/java/org/apache/devicemap/data/UserAgent.java devicemap/trunk/data/1.0/device-data/src/main/resources/devicedata/BuilderDataSource.xml devicemap/trunk/data/1.0/device-data/src/main/resources/devicedata/DeviceDataSource.xml devicemap/trunk/data/1.0/device-data/src/main/resources/devicedata/oddrVocabulary.xml Modified: devicemap/trunk/clients/1.0/java/client/src/main/java/org/apache/devicemap/DeviceFixer.java URL: http://svn.apache.org/viewvc/devicemap/trunk/clients/1.0/java/client/src/main/java/org/apache/devicemap/DeviceFixer.java?rev=1749117&r1=1749116&r2=1749117&view=diff ============================================================================== --- devicemap/trunk/clients/1.0/java/client/src/main/java/org/apache/devicemap/DeviceFixer.java (original) +++ devicemap/trunk/clients/1.0/java/client/src/main/java/org/apache/devicemap/DeviceFixer.java Sun Jun 19 01:10:33 2016 @@ -24,114 +24,153 @@ import static org.apache.devicemap.data. import java.util.HashMap; import java.util.Map; import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.apache.devicemap.data.DeviceType; import org.apache.devicemap.data.UserAgent; /** * @author Werner Keil - * @version 0.1 + * @version 0.2 */ abstract class DeviceFixer { - private static final Logger LOG = Logger.getLogger(DeviceFixer.class - .getName()); + private static final Logger LOG = Logger.getLogger(DeviceFixer.class + .getName()); - private static final String DEVICE_OS = "device_os"; - private static final String DEVICE_OS_VERSION = "device_os_version"; -// private static final String VENDOR = "vendor"; - private static final String LIKE_MAC = "like Mac OS X"; - - static final DeviceType fixFromUserAgent(final DeviceType device, - final UserAgent userAgent) { - String pattern = userAgent.getPatternElementsInside(); - if (pattern != null && pattern.contains(";")) { - Map<String, String> attributes; - if (device.isLocked()) { - // clone map - attributes = new HashMap<String, String>(); - - attributes.putAll(device.getAttributes()); - } else { - attributes = device.getAttributes(); + private static final String DEVICE_OS = "device_os"; + private static final String DEVICE_OS_VERSION = "device_os_version"; + // private static final String VENDOR = "vendor"; + private static final String LIKE_MAC = "like Mac OS X"; + + private static final String CHROME = "Chrome"; + private static final String SAFARI = "Safari"; + + private static final String CHROME_VERSION_REGEXP = "Chrome.([0-9a-z\\.b]+).*"; + private static final String SAFARI_REGEXP = ".*Safari/([0-9\\.]+).*?"; + + private static final String BROWSER = "mobile_browser"; + private static final String BROWSER_VERSION = "mobile_browser_version"; + + static final DeviceType fixFromUserAgent(final DeviceType device, + final UserAgent userAgent) { + Map<String, String> attributes; + if (device.isLocked()) { + // clone map + attributes = new HashMap<String, String>(); + + attributes.putAll(device.getAttributes()); + } else { + attributes = device.getAttributes(); + } + + // OS + String pattern = userAgent.getPatternElementsInside(); + if (pattern != null && pattern.contains(";")) { + String[] parts = pattern.split(";"); + + for (String part : parts) { + if (part != null) { + if (part.trim().startsWith(ANDROID)) { + final String versionPart = part.trim() + .substring(ANDROID.length()).trim(); + final String versionExisting = attributes + .get(DEVICE_OS_VERSION); + if (!versionPart.equals(versionExisting)) { + LOG.fine("Fixing '" + versionExisting + "' to '" + + versionPart + "'"); + attributes.put(DEVICE_OS_VERSION, versionPart); + device.setAttributes(attributes); } - String[] parts = pattern.split(";"); - - for (String part : parts) { - if (part != null) { - if (part.trim().startsWith(ANDROID)) { - final String versionPart = part.trim() - .substring(ANDROID.length()).trim(); - final String versionExisting = attributes - .get(DEVICE_OS_VERSION); - if (!versionPart.equals(versionExisting)) { - LOG.fine("Fixing '" + versionExisting + "' to '" - + versionPart + "'"); - attributes.put(DEVICE_OS_VERSION, versionPart); - device.setAttributes(attributes); - } - } - if (part.trim().endsWith(LIKE_MAC)) { - final String versionCandidate = part - .trim().substring(0, - part.trim().length() - LIKE_MAC.length()).trim(); - if (versionCandidate.contains("OS")) { - final String versionPart = versionCandidate - .substring( - versionCandidate.indexOf("OS") + 2) - .trim().replaceAll("_", "."); - final String versionExisting = attributes - .get(DEVICE_OS_VERSION); - if (!versionPart.equals(versionExisting)) { - LOG.fine("Fixing '" + versionExisting - + "' to '" + versionPart + "'"); - attributes.put(DEVICE_OS_VERSION, versionPart); - device.setAttributes(attributes); - } - } - } - if (part.trim().startsWith(WINDOWS)) { - final String versionCandidate = part.trim(); - DeviceHints.WindowsVersion version = DeviceHints.WindowsVersion - .ofToken(versionCandidate); - if (version != null) { - final String osExisting = attributes.get(DEVICE_OS); - LOG.fine("Fixing '" + osExisting + "' to '" - + version.getDescription() + "'"); - attributes.put(DEVICE_OS, version.getDescription()); - final String versionExisting = attributes - .get(DEVICE_OS_VERSION); - if (!version.getVersion().equals(versionExisting)) { - LOG.fine("Fixing '" + versionExisting - + "' to '" + version.getVersion() + "'"); - attributes.put(DEVICE_OS_VERSION, - version.getVersion()); - } - // final String vendorExisting = - // attributes.get(VENDOR); - // if (vendorExisting == null || - // vendorExisting.length()==0 || - // "-".equals(vendorExisting) ) { - // LOG.finer("Desktop" + - // attributes.get("is_desktop")); - // if - // (Boolean.parseBoolean(attributes.get("is_desktop"))) - // { - // attributes.put(VENDOR, "Microsoft"); - // } - // } - device.setAttributes(attributes); - } - } /* - * else { String versionCandidate = part.trim(); - * System.out.println(versionCandidate); } - */ - } + } + if (part.trim().endsWith(LIKE_MAC)) { + final String versionCandidate = part + .trim() + .substring( + 0, + part.trim().length() + - LIKE_MAC.length()).trim(); + if (versionCandidate.contains("OS")) { + final String versionPart = versionCandidate + .substring( + versionCandidate.indexOf("OS") + 2) + .trim().replaceAll("_", "."); + final String versionExisting = attributes + .get(DEVICE_OS_VERSION); + if (!versionPart.equals(versionExisting)) { + LOG.fine("Fixing '" + versionExisting + + "' to '" + versionPart + "'"); + attributes.put(DEVICE_OS_VERSION, versionPart); + device.setAttributes(attributes); + } } + } + if (part.trim().startsWith(WINDOWS)) { + final String versionCandidate = part.trim(); + DeviceHints.WindowsVersion version = DeviceHints.WindowsVersion + .ofToken(versionCandidate); + if (version != null) { + final String osExisting = attributes.get(DEVICE_OS); + LOG.fine("Fixing '" + osExisting + "' to '" + + version.getDescription() + "'"); + attributes.put(DEVICE_OS, version.getDescription()); + final String versionExisting = attributes + .get(DEVICE_OS_VERSION); + if (!version.getVersion().equals(versionExisting)) { + LOG.fine("Fixing '" + versionExisting + + "' to '" + version.getVersion() + "'"); + attributes.put(DEVICE_OS_VERSION, + version.getVersion()); + } + // final String vendorExisting = + // attributes.get(VENDOR); + // if (vendorExisting == null || + // vendorExisting.length()==0 || + // "-".equals(vendorExisting) ) { + // LOG.finer("Desktop" + + // attributes.get("is_desktop")); + // if + // (Boolean.parseBoolean(attributes.get("is_desktop"))) + // { + // attributes.put(VENDOR, "Microsoft"); + // } + // } + } + } /* + * else { String versionCandidate = part.trim(); + * System.out.println(versionCandidate); } + */ + } + } + } + + // Browser + pattern = userAgent.getPatternElementsPost(); + if (pattern != null) { + if (pattern.contains(CHROME)) { + String parts = pattern.substring(pattern.indexOf(CHROME)); + String version = parts.substring(CHROME.length() + 1, + parts.indexOf(" ")); +// System.out.println(version); + // Matcher chromeVersionMatcher = + // chromeVersionPattern.matcher(pattern); + // System.out.println(chromeVersionMatcher); + final String versionExisting = attributes + .get(BROWSER_VERSION); + if (!version.equals(versionExisting)) { + LOG.fine("Fixing '" + versionExisting + "' to '" + + version + "'"); + attributes.put(BROWSER_VERSION, version); } - - - // logger.info("Device: " + device.getId() + " - " + - // device.getPropertiesMap()); - return device; + } + // Pattern safariPattern = Pattern.compile(SAFARI_REGEXP); + } + + device.setAttributes(attributes); + + // logger.info("Device: " + device.getId() + " - " + + // device.getPropertiesMap()); + return device; + } } Modified: devicemap/trunk/clients/1.0/java/client/src/main/java/org/apache/devicemap/data/UserAgent.java URL: http://svn.apache.org/viewvc/devicemap/trunk/clients/1.0/java/client/src/main/java/org/apache/devicemap/data/UserAgent.java?rev=1749117&r1=1749116&r2=1749117&view=diff ============================================================================== --- devicemap/trunk/clients/1.0/java/client/src/main/java/org/apache/devicemap/data/UserAgent.java (original) +++ devicemap/trunk/clients/1.0/java/client/src/main/java/org/apache/devicemap/data/UserAgent.java Sun Jun 19 01:10:33 2016 @@ -23,7 +23,7 @@ import java.util.regex.Pattern; /** * @author Werner Keil - * @version 0.3 + * @version 0.4 */ public class UserAgent { public static final String ANDROID = "Android"; @@ -79,12 +79,10 @@ public class UserAgent { operaVersion = result2.group(1); } } - } else { mozillaPattern = true; mozillaVersion = version; } - } else { mozillaPattern = false; operaPattern = false; @@ -98,34 +96,27 @@ public class UserAgent { if (userAgent.contains(ANDROID)) { containsAndroid = true; - } else { containsAndroid = false; if (userAgent.matches(".*(?!like).iPad.*") || userAgent.matches(".*(?!like).iPod.*") || userAgent.matches(".*(?!like).iPhone.*")) { containsIOSDevices = true; - } else { containsIOSDevices = false; if (userAgent.matches(".*[Bb]lack.?[Bb]erry.*|.*RIM.?Tablet.?OS.*")) { containsBlackBerryOrRim = true; - } else { containsBlackBerryOrRim = false; if (userAgent.matches(".*Symbian.*|.*SymbOS.*|.*Series.?60.*")) { containsSymbian = true; - } else { containsSymbian = false; if (userAgent.matches(".*Windows.?(?:(?:CE)|(?:Phone)|(?:NT)|(?:Mobile)).*")) { containsWindowsPhone = true; - } else { containsWindowsPhone = false; } - if (userAgent.matches(".*MSIE.([0-9\\.b]+).*")) { containsMSIE = true; - } else { containsMSIE = false; } Modified: devicemap/trunk/data/1.0/device-data/src/main/resources/devicedata/BuilderDataSource.xml URL: http://svn.apache.org/viewvc/devicemap/trunk/data/1.0/device-data/src/main/resources/devicedata/BuilderDataSource.xml?rev=1749117&r1=1749116&r2=1749117&view=diff ============================================================================== --- devicemap/trunk/data/1.0/device-data/src/main/resources/devicedata/BuilderDataSource.xml (original) +++ devicemap/trunk/data/1.0/device-data/src/main/resources/devicedata/BuilderDataSource.xml Sun Jun 19 01:10:33 2016 @@ -18,7 +18,7 @@ <ODDR> <version> <ver>1.0.4-SNAPSHOT</ver> - <last_updated>2015-06-19 17:00:00</last_updated> + <last_updated>2016-06-19 03:00:00</last_updated> <official_url>http://devicemap.apache.org</official_url> <statement>Licensed under http://www.apache.org/licenses/LICENSE-2.0</statement> </version> Modified: devicemap/trunk/data/1.0/device-data/src/main/resources/devicedata/DeviceDataSource.xml URL: http://svn.apache.org/viewvc/devicemap/trunk/data/1.0/device-data/src/main/resources/devicedata/DeviceDataSource.xml?rev=1749117&r1=1749116&r2=1749117&view=diff ============================================================================== --- devicemap/trunk/data/1.0/device-data/src/main/resources/devicedata/DeviceDataSource.xml (original) +++ devicemap/trunk/data/1.0/device-data/src/main/resources/devicedata/DeviceDataSource.xml Sun Jun 19 01:10:33 2016 @@ -12,7 +12,7 @@ <ODDR> <version> <ver>1.0.4-SNAPSHOT</ver> - <last_updated>2016-02-20 19:00:00</last_updated> + <last_updated>2016-06-19 03:00:00</last_updated> <official_url>http://devicemap.apache.org</official_url> <statement>Licensed under http://www.apache.org/licenses/LICENSE-2.0 </statement> @@ -42983,6 +42983,7 @@ <property name="ajax_support_event_listener" value="true" /> <property name="image_inlining" value="true" /> <property name="inputDevices" value="touchscreen" /> + <property name="multiTouch" value="true" /> <property name="from" value="oddr" /> </device> <device id="D2005" parentId="genericSony"> @@ -42990,7 +42991,7 @@ <property name="marketing_name" value="Xperia E1" /> <property name="displayWidth" value="480" /> <property name="displayHeight" value="800" /> - <property name="mobile_browser" value="Android Webkit" /> + <property name="mobile_browser" value="Chrome" /> <property name="device_os" value="Android" /> <property name="device_os_version" value="4.3" /> <property name="dual_orientation" value="true" /> @@ -43003,6 +43004,9 @@ <property name="ajax_support_event_listener" value="true" /> <property name="image_inlining" value="true" /> <property name="inputDevices" value="touchscreen" /> + <property name="multiTouch" value="true" /> + <property name="weight" value="120 g"/> + <property name="sim" value="Mini-SIM"/> <property name="from" value="devicemap" /> </device> <device id="SM-P605V" parentId="genericSamsung"> Modified: devicemap/trunk/data/1.0/device-data/src/main/resources/devicedata/oddrVocabulary.xml URL: http://svn.apache.org/viewvc/devicemap/trunk/data/1.0/device-data/src/main/resources/devicedata/oddrVocabulary.xml?rev=1749117&r1=1749116&r2=1749117&view=diff ============================================================================== --- devicemap/trunk/data/1.0/device-data/src/main/resources/devicedata/oddrVocabulary.xml (original) +++ devicemap/trunk/data/1.0/device-data/src/main/resources/devicedata/oddrVocabulary.xml Sun Jun 19 01:10:33 2016 @@ -12,7 +12,7 @@ <ODDR> <version> <ver>1.0.4-SNAPSHOT</ver> - <last_updated>2016-02-20 19:10:00</last_updated> + <last_updated>2016-06-19 03:00:00</last_updated> <official_url>http://devicemap.apache.org</official_url> <statement>Licensed under http://www.apache.org/licenses/LICENSE-2.0 </statement> @@ -137,8 +137,14 @@ defaultAspect="device" name="video" /> <Property aspects="device" datatype="dmap:deviceOrientation" defaultAspect="device" name="default_orientation" /> + <Property aspects="device" datatype="xs:boolean" + defaultAspect="device" name="multiTouch" /> <Property aspects="device" datatype="xs:string" defaultAspect="device" name="released" /> + <Property aspects="device" datatype="xs:string" + defaultAspect="device" name="sim" /> + <Property aspects="device" datatype="xs:string" + defaultAspect="device" name="weight" /> </Properties> </VocabularyDescription> </ODDR>
