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

com.microsoft.azure.storage.table.EdmType Maven / Gradle / Ivy

/**
 * Copyright Microsoft Corporation
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.microsoft.azure.storage.table;

import java.util.Collections;
import java.util.EnumSet;
import java.util.Set;

import com.microsoft.azure.storage.Constants;
import com.microsoft.azure.storage.core.SR;

/**
 * A enumeration used to represent the primitive types of the Entity Data Model (EDM) in the Open Data Protocol (OData).
 * The EDM is the underlying abstract data model used by OData services. The {@link EdmType} enumeration includes a
 * {@link #parse(String)} method to convert EDM data type names to the enumeration type, and overrides the
 * {@link #toString()} method to produce an EDM data type name.
 * 

* For more information about OData, see the Open Data Protocol website. *

* For an overview of the available EDM primitive data types and names, see the Primitive Data Types section of the * OData Protocol Overview. *

* The Abstract Type System used to define the primitive types supported by OData is defined in detail in [MC-CSDL] (section 2.2.1). */ public enum EdmType { /** * Null Represents the absence of a value */ NULL, /** * Edm.Binary Represents fixed- or variable-length binary data */ BINARY, /** * Edm.Boolean Represents the mathematical concept of binary-valued logic */ BOOLEAN, /** * Edm.Byte Represents a unsigned 8-bit integer value */ BYTE, /** * Edm.DateTime Represents date and time with values ranging from 12:00:00 midnight, January 1, * 1753 A.D. through 11:59:59 P.M, December 9999 A.D. */ DATE_TIME, /** * Edm.DateTimeOffset Represents date and time as an Offset in minutes from GMT, with values * ranging from 12:00:00 midnight, January 1, 1753 A.D. through 11:59:59 P.M, December 9999 A.D */ DATE_TIME_OFFSET, /** * Edm.Decimal Represents numeric values with fixed precision and scale. This type can describe a * numeric value ranging from negative 10^255 + 1 to positive 10^255 -1 */ DECIMAL, /** * Edm.Double Represents a floating point number with 15 digits precision that can represent values * with approximate range of +/- 2.23e -308 through +/- 1.79e +308 */ DOUBLE, /** * Edm.Single Represents a floating point number with 7 digits precision that can represent values * with approximate range of +/- 1.18e -38 through +/- 3.40e +38 */ SINGLE, /** * Edm.Guid Represents a 16-byte (128-bit) unique identifier value */ GUID, /** * Edm.Int16 Represents a signed 16-bit integer value */ INT16, /** * Edm.Int32 Represents a signed 32-bit integer value */ INT32, /** * Edm.Int64 Represents a signed 64-bit integer value */ INT64, /** * Edm.SByte Represents a signed 8-bit integer value */ SBYTE, /** * Edm.String Represents fixed- or variable-length character data */ STRING, /** * Edm.Time Represents the time of day with values ranging from 0:00:00.x to 23:59:59.y, where x * and y depend upon the precision */ TIME; private static final Set UNANNOTATED = Collections.unmodifiableSet(EnumSet.of(BOOLEAN, DOUBLE, INT32, STRING)); protected final boolean mustAnnotateType() { return !UNANNOTATED.contains(this); } /** * Parses an EDM data type name and return the matching {@link EdmType} enumeration value. A null or * empty value parameter is matched as {@link EdmType#STRING}. Note that only the subset of EDM data types * supported in Microsoft Azure Table storage is parsed, consisting of {@link #BINARY}, {@link #BOOLEAN}, * {@link #BYTE} , {@link #DATE_TIME}, {@link #DOUBLE}, {@link #GUID}, {@link #INT32}, {@link #INT64}, and * {@link #STRING}. Any * other type will cause an {@link IllegalArgumentException} to be thrown. * * @param value * A String containing the name of an EDM data type. * @return * The {@link EdmType} enumeration value matching the specified EDM data type. * * @throws IllegalArgumentException * if an EDM data type not supported in Microsoft Azure Table storage is passed as an argument. * */ public static EdmType parse(final String value) { if (value == null || value.length() == 0) { return EdmType.STRING; } else if (value.equals(ODataConstants.EDMTYPE_DATETIME)) { return EdmType.DATE_TIME; } else if (value.equals(ODataConstants.EDMTYPE_INT32)) { return EdmType.INT32; } else if (value.equals(ODataConstants.EDMTYPE_BOOLEAN)) { return EdmType.BOOLEAN; } else if (value.equals(ODataConstants.EDMTYPE_DOUBLE)) { return EdmType.DOUBLE; } else if (value.equals(ODataConstants.EDMTYPE_INT64)) { return EdmType.INT64; } else if (value.equals(ODataConstants.EDMTYPE_GUID)) { return EdmType.GUID; } else if (value.equals(ODataConstants.EDMTYPE_BINARY)) { return EdmType.BINARY; } throw new IllegalArgumentException(String.format(SR.INVALID_EDMTYPE_VALUE, value)); } /** * Returns the name of the EDM data type corresponding to the enumeration value. * * @return * A String containing the name of the EDM data type. */ @Override public String toString() { if (this == EdmType.BINARY) { return ODataConstants.EDMTYPE_BINARY; } else if (this == EdmType.STRING) { return ODataConstants.EDMTYPE_STRING; } else if (this == EdmType.BOOLEAN) { return ODataConstants.EDMTYPE_BOOLEAN; } else if (this == EdmType.DOUBLE) { return ODataConstants.EDMTYPE_DOUBLE; } else if (this == EdmType.GUID) { return ODataConstants.EDMTYPE_GUID; } else if (this == EdmType.INT32) { return ODataConstants.EDMTYPE_INT32; } else if (this == EdmType.INT64) { return ODataConstants.EDMTYPE_INT64; } else if (this == EdmType.DATE_TIME) { return ODataConstants.EDMTYPE_DATETIME; } else { // VNext : Update here if we add to supported edmtypes in the future. return Constants.EMPTY_STRING; } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy