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

fiftyone.devicedetection.shared.DeviceDataBase Maven / Gradle / Ivy

Go to download

Shared functionality for implementing device detection engine for the 51Degrees Pipeline API

There is a newer version: 4.5.0-alpha.336
Show newest version
/* *********************************************************************
 * This Original Work is copyright of 51 Degrees Mobile Experts Limited.
 * Copyright 2023 51 Degrees Mobile Experts Limited, Davidson House,
 * Forbury Square, Reading, Berkshire, United Kingdom RG1 3EU.
 *
 * This Original Work is licensed under the European Union Public Licence
 * (EUPL) v.1.2 and is subject to its terms as set out below.
 *
 * If a copy of the EUPL was not distributed with this file, You can obtain
 * one at https://opensource.org/licenses/EUPL-1.2.
 *
 * The 'Compatible Licences' set out in the Appendix to the EUPL (as may be
 * amended by the European Commission) shall be deemed incompatible for
 * the purposes of the Work and the provisions of the compatibility
 * clause in Article 5 of the EUPL shall not apply.
 * 
 * If using the Work as, or as part of, a network application, by 
 * including the attribution notice(s) required under Article 5 of the EUPL
 * in the end user terms of the application under an appropriate heading, 
 * such notice(s) shall fulfill the requirements of that article.
 * ********************************************************************* */

/* *********************************************************************
 * This code is auto generated by 51Degrees using the most up to data
 * at the time of release, and should not be changed directly.
 * **********************************************************************/
package fiftyone.devicedetection.shared;
import fiftyone.pipeline.core.data.FlowData;
import fiftyone.pipeline.core.data.types.JavaScript;
import fiftyone.pipeline.engines.data.AspectData;
import fiftyone.pipeline.engines.data.AspectDataBase;
import fiftyone.pipeline.engines.data.AspectPropertyMetaData;
import fiftyone.pipeline.engines.flowelements.AspectEngine;
import fiftyone.pipeline.engines.data.AspectPropertyValue;
import fiftyone.pipeline.engines.services.MissingPropertyService;
import org.slf4j.Logger;
import java.util.List;
public abstract class DeviceDataBase extends AspectDataBase implements DeviceData
{
/**
 * Constructor.
 * @param logger used for logging
 * @param flowData the {@link FlowData} instance this element data will be
 *                 associated with
 * @param engine the engine which created the instance
 * @param missingPropertyService service used to determine the reason for
 *                               a property value being missing
 */
	protected DeviceDataBase(
		Logger logger,
		FlowData flowData,
		AspectEngine engine,
		MissingPropertyService missingPropertyService) {
		super(logger, flowData, engine, missingPropertyService);
	}
	/**
	 * Indicates if the device's primary data connection is wireless and the device is designed to operate mostly by battery power (e.g. mobile phone, smartphone or tablet). This property does not indicate if the device is a mobile phone or not. Laptops are not classified as mobile devices under this definition and so 'IsMobile' will be 'False'.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getIsMobile() { return getAs("ismobile", AspectPropertyValue.class, Boolean.class); }
	/**
	 * Indicates if the device is primarily marketed as a tablet or phablet and has a screen size equal to or greater than 7 inches.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getIsTablet() { return getAs("istablet", AspectPropertyValue.class, Boolean.class); }
	/**
	 * Indicates the width of the device's screen in pixels. This property is not applicable for a device that does not have a screen. For devices such as tablets or TV which are predominantly used in landscape mode, the pixel width will be the larger value compared to the pixel height.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getScreenPixelsWidth() { return getAs("screenpixelswidth", AspectPropertyValue.class, Integer.class); }
	/**
	 * Indicates the height of the device's screen in pixels.This property is not applicable for a device that does not have a screen. For devices such as tablets or TV which are predominantly used in landscape mode, the pixel height will be the smaller value compared to the pixel width.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getScreenPixelsHeight() { return getAs("screenpixelsheight", AspectPropertyValue.class, Integer.class); }
	/**
	 * Indicates if the device has a touch screen. This property will return 'False' for a device that does not have an integrated screen.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getHasTouchScreen() { return getAs("hastouchscreen", AspectPropertyValue.class, Boolean.class); }
	/**
	 * Indicates if the device has a physical qwerty keyboard.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getHasQwertyPad() { return getAs("hasqwertypad", AspectPropertyValue.class, Boolean.class); }
	/**
	 * Indicates the name of the company that manufactures the device or primarily sells it, e.g. Samsung.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getHardwareVendor() { return getAs("hardwarevendor", AspectPropertyValue.class, String.class); }
	/**
	 * Indicates the model name or number used primarily by the hardware vendor to identify the device, e.g.SM-T805S. When a model identifier is not available the HardwareName will be used.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getHardwareModel() { return getAs("hardwaremodel", AspectPropertyValue.class, String.class); }
	/**
	 * Indicates the common marketing names associated with the device, e.g. Xperia Z5.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue> getHardwareName() { return getAs("hardwarename", AspectPropertyValue.class, List.class); }
	/**
	 * Indicates if the device is primarily a game console, such as an Xbox or Playstation.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getIsConsole() { return getAs("isconsole", AspectPropertyValue.class, Boolean.class); }
	/**
	 * Indicates the name of the company that developed the operating system.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getPlatformVendor() { return getAs("platformvendor", AspectPropertyValue.class, String.class); }
	/**
	 * Indicates the name of the operating system the device is using.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getPlatformName() { return getAs("platformname", AspectPropertyValue.class, String.class); }
	/**
	 * Indicates the version or subversion of the software platform.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getPlatformVersion() { return getAs("platformversion", AspectPropertyValue.class, String.class); }
	/**
	 * Refers to the name of the embedded technology the browser uses to display formatted content on the screen.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getLayoutEngine() { return getAs("layoutengine", AspectPropertyValue.class, String.class); }
	/**
	 * Indicates the name of the company which created the browser.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getBrowserVendor() { return getAs("browservendor", AspectPropertyValue.class, String.class); }
	/**
	 * Indicates the name of the browser. Many mobile browsers, by default, come with an operating system (OS). Unless specifically named, these browsers are named after the accompanying OS and/or the layout engine. 
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getBrowserName() { return getAs("browsername", AspectPropertyValue.class, String.class); }
	/**
	 * Refers to the screen width of the device in millimetres. This property will return 'Unknown' for desktops or for devices which do not have an integrated screen. For devices such as tablets or TV which are predominantly used in landscape mode, the screen height will be the smaller value compared to the screen width.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getScreenMMWidth() { return getAs("screenmmwidth", AspectPropertyValue.class, Double.class); }
	/**
	 * Refers to the screen height of the device in millimetres. This property will return 'Unknown' for desktops or for devices which do not have an integrated screen. For devices such as tablets or TV which are predominantly used in landscape mode, the screen height will be the smaller value compared to the screen width.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getScreenMMHeight() { return getAs("screenmmheight", AspectPropertyValue.class, Double.class); }
	/**
	 * Indicates the number of bits used to describe the colour of each individual pixel, also known as bit depth or colour depth.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getBitsPerPixel() { return getAs("bitsperpixel", AspectPropertyValue.class, Integer.class); }
	/**
	 * Indicates the version or subversion of the browser.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getBrowserVersion() { return getAs("browserversion", AspectPropertyValue.class, String.class); }
	/**
	 * Indicates the official name of the CPU within the SoC, e.g. ARM Cortex A9 or Krait (Qualcomm).
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getCPU() { return getAs("cpu", AspectPropertyValue.class, String.class); }
	/**
	 * Stands for Composite Capability/Preference Profiles.  Refers to the list of MIME types supported by the operating system. The list does not include MIME types that are only enabled through the use of 3rd party applications.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue> getCcppAccept() { return getAs("ccppaccept", AspectPropertyValue.class, List.class); }
	/**
	 * Refers to the latest version of HyperText Markup Language (HTML) supported by the browser.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getHtmlVersion() { return getAs("htmlversion", AspectPropertyValue.class, Double.class); }
	/**
	 * Indicates if the browser supports JavaScript.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getJavascript() { return getAs("javascript", AspectPropertyValue.class, Boolean.class); }
	/**
	 * Indicates which JavaScript version the browser uses. The number refers to JavaScript versioning, not ECMAscript or Jscript. If the browser doesn't support JavaScript then 'NotSupported' value is returned.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getJavascriptVersion() { return getAs("javascriptversion", AspectPropertyValue.class, String.class); }
	/**
	 * Indicates the list of wireless data technologies supported by the device, including Bluetooth and Wi-Fi. For example, 4G cellular network technologies includes 'LTE' (Long Term Evolution), and 5G technologies includes 'NR' (New Radio). If the device supports phone calls, the SMS value is also returned.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue> getSupportedBearers() { return getAs("supportedbearers", AspectPropertyValue.class, List.class); }
	/**
	 * Indicates the highest version of Bluetooth the device supports.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getSupportedBluetoothVersion() { return getAs("supportedbluetoothversion", AspectPropertyValue.class, String.class); }
	/**
	 * Indicates the maximum frequency of the CPU of the device in gigahertz (GHz).
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getCPUMaximumFrequency() { return getAs("cpumaximumfrequency", AspectPropertyValue.class, Double.class); }
	/**
	 * Indicates the year in which the device was released or the year in which the device was first seen by 51Degrees (if the release date cannot be identified).
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getReleaseYear() { return getAs("releaseyear", AspectPropertyValue.class, Integer.class); }
	/**
	 * Indicates the month in which the device was released or the month in which the device was first seen by 51Degrees (if the release date cannot be identified).
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getReleaseMonth() { return getAs("releasemonth", AspectPropertyValue.class, String.class); }
	/**
	 * Indicates if the browser supports http Cookies. However, the user may have disabled Cookies in their own configuration. Where data cannot be validated, it is assumed that the browser supports cookies.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getCookiesCapable() { return getAs("cookiescapable", AspectPropertyValue.class, Boolean.class); }
	/**
	 * A list of MIME types the device can stream. The list does not include MIME types that are only supported through the use of 3rd party applications.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue> getStreamingAccept() { return getAs("streamingaccept", AspectPropertyValue.class, List.class); }
	/**
	 * Indicates if the device has a virtual qwerty keyboard capability.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getHasVirtualQwerty() { return getAs("hasvirtualqwerty", AspectPropertyValue.class, Boolean.class); }
	/**
	 * Indicates if the device has a physical numeric keypad.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getHasKeypad() { return getAs("haskeypad", AspectPropertyValue.class, Boolean.class); }
	/**
	 * Indicates if the device has a camera.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getHasCamera() { return getAs("hascamera", AspectPropertyValue.class, Boolean.class); }
	/**
	 * Indicates the resolution of the device's back camera in megapixels. For a device that has a rotating camera the same value is returned for front and back megapixels properties.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getBackCameraMegaPixels() { return getAs("backcameramegapixels", AspectPropertyValue.class, Double.class); }
	/**
	 * Indicates the expansion slot type the device can support.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue> getExpansionSlotType() { return getAs("expansionslottype", AspectPropertyValue.class, List.class); }
	/**
	 * Indicates the maximum amount of memory in gigabytes (GB) the expansion slot of the device can support.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getExpansionSlotMaxSize() { return getAs("expansionslotmaxsize", AspectPropertyValue.class, Integer.class); }
	/**
	 * Indicates the maximum volatile RAM capacity of the device in megabytes (MB). Where a device has different RAM capacity options, the largest option available is returned.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getDeviceRAM() { return getAs("deviceram", AspectPropertyValue.class, Integer.class); }
	/**
	 * Indicates the maximum amount of internal persistent storage (ROM capacity) with which the device is supplied in gigabytes (GB), including the space used by the device's Operating System and bundled applications. This could also be referred to as "Electrically Erasable Programmable Read-Only Memory (EEPROM)" or "Non Volatile Random Access Memory (NVRAM)". Where a device has different internal storage options, the largest option available is returned.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getMaxInternalStorage() { return getAs("maxinternalstorage", AspectPropertyValue.class, Double.class); }
	/**
	 * Refers to the suggested optimum height of a button in millimetres. Ensures the button is touchable on a touch screen and not too large on a non-touch screen. 
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getSuggestedImageButtonHeightPixels() { return getAs("suggestedimagebuttonheightpixels", AspectPropertyValue.class, Double.class); }
	/**
	 * Refers to the suggested optimum height of a button in millimetres. Ensures the button is touchable on a touch screen and not too large on a non-touch screen. Assumes the actual device DPI (Dots Per Inch) is being used. 
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getSuggestedImageButtonHeightMms() { return getAs("suggestedimagebuttonheightmms", AspectPropertyValue.class, Double.class); }
	/**
	 * Refers to the suggested optimum height of a hyperlink in pixels. Ensures the link is touchable on a touch screen and not too large on a non-touch screen. Assumes the actual device DPI is being used.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getSuggestedLinkSizePixels() { return getAs("suggestedlinksizepixels", AspectPropertyValue.class, Double.class); }
	/**
	 * Refers to the suggested optimum height of a hyperlink in points. Ensures the link is touchable on a touch screen and not too large on a non-touch screen. 
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getSuggestedLinkSizePoints() { return getAs("suggestedlinksizepoints", AspectPropertyValue.class, Double.class); }
	/**
	 * Indicates if the device has a trackpad or trackball. Examples of devices that support this property are the Nexus One and Blackberry Curve.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getHasTrackPad() { return getAs("hastrackpad", AspectPropertyValue.class, Boolean.class); }
	/**
	 * Indicates if the device has a click wheel such as found on Apple iPod devices.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getHasClickWheel() { return getAs("hasclickwheel", AspectPropertyValue.class, Boolean.class); }
	/**
	 * Indicates if the device is primarily advertised as an e-reader. If the device type is EReader then the device is not classified as a tablet.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getIsEReader() { return getAs("isereader", AspectPropertyValue.class, Boolean.class); }
	/**
	 * Indicates if the browser supports the JavaScript that can manipulate the Document Object Model on the browser's web page.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getJavascriptCanManipulateDOM() { return getAs("javascriptcanmanipulatedom", AspectPropertyValue.class, Boolean.class); }
	/**
	 * Indicates if the browser supports the JavaScript that can manipulate CSS on the browser's web page.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getJavascriptCanManipulateCSS() { return getAs("javascriptcanmanipulatecss", AspectPropertyValue.class, Boolean.class); }
	/**
	 * Indicates if the browser allows registration of event listeners on event targets by using the addEventListener() method.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getJavascriptSupportsEventListener() { return getAs("javascriptsupportseventlistener", AspectPropertyValue.class, Boolean.class); }
	/**
	 * Indicates if the browser supports the JavaScript events 'onload', 'onclick' and 'onselect'. 
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getJavascriptSupportsEvents() { return getAs("javascriptsupportsevents", AspectPropertyValue.class, Boolean.class); }
	/**
	 * Indicates if the browser supports JavaScript that is able to access HTML elements from their ID using the getElementById method.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getJavascriptGetElementById() { return getAs("javascriptgetelementbyid", AspectPropertyValue.class, Boolean.class); }
	/**
	 * Indicates what ajax request format should be used.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getAjaxRequestType() { return getAs("ajaxrequesttype", AspectPropertyValue.class, String.class); }
	/**
	 * Indicates if the browser supports the JavaScript that is able to insert HTML into a DIV tag.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getJavascriptSupportsInnerHtml() { return getAs("javascriptsupportsinnerhtml", AspectPropertyValue.class, Boolean.class); }
	/**
	 * Indicates which GeoLoc API JavaScript the browser supports. If a browser supports a feature to acquire the user's geographical location, another property called 'GeoLocation' will be set to True.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getJavascriptPreferredGeoLocApi() { return getAs("javascriptpreferredgeolocapi", AspectPropertyValue.class, String.class); }
	/**
	 * Refers to the diagonal size of the screen of the device in millimetres. This property will return 'Unknown' for desktops or for devices which do not have an integrated screen.
	 */
	@SuppressWarnings("unchecked")
	@Override
	public AspectPropertyValue getScreenMMDiagonal() { return getAs("screenmmdiagonal", AspectPropertyValue.class, Double.class); }
	/**
	 * Lists what video formats, if any, the browser supports using the HTLM5 
,




© 2015 - 2025 Weber Informatics LLC | Privacy Policy