Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright 2013 SAP AG 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.sap.core.odata.core.edm;
 

Author(s):
SAP AG
 
 public class EdmSimpleTypeFacadeImpl implements EdmSimpleTypeFacade {
 
   @Override
   public EdmLiteral parseUriLiteral(final String uriLiteralthrows EdmLiteralException {
     if (uriLiteral == null || "null".equals(uriLiteral)) {
       return new EdmLiteral(getEdmSimpleType(.), uriLiteral);
     }
 
     if ("true".equals(uriLiteral) || "false".equals(uriLiteral)) {
       return new EdmLiteral(getEdmSimpleType(.), uriLiteral);
     }
 
     if (uriLiteral.length() >= 2
         && uriLiteral.startsWith("'") && uriLiteral.endsWith("'")) {
       try {
         final EdmSimpleType type = getEdmSimpleType(.);
         return new EdmLiteral(typetype.valueOfString(uriLiteral.nullString.class));
       } catch (EdmSimpleTypeException e) {
         throw new EdmLiteralException(..addContent(uriLiteral), e);
       }
     }
 
     if (uriLiteral.matches("-?\\p{Digit}+")) {
       try {
         final int i = getEdmSimpleType(.).valueOfString(uriLiteral.nullInteger.class);
         if (i == 0 || i == 1) {
           return new EdmLiteral(getInternalEdmSimpleTypeByString("Bit"), uriLiteral);
         }
         if (i >= 0 && i <= .) {
           return new EdmLiteral(getInternalEdmSimpleTypeByString("Uint7"), uriLiteral);
         }
         if (i >= . && i < 0) {
           return new EdmLiteral(getEdmSimpleType(.), uriLiteral);
         } else if (i > . && i <= 255) {
           return new EdmLiteral(getEdmSimpleType(.), uriLiteral);
         } else if (i >= . && i <= .) {
           return new EdmLiteral(getEdmSimpleType(.), uriLiteral);
         } else {
           return new EdmLiteral(getEdmSimpleType(.), uriLiteral);
         }
       } catch (EdmSimpleTypeException e) {
         throw new EdmLiteralException(..addContent(uriLiteral), e);
       }
     }
 
     if (uriLiteral.endsWith("L") || uriLiteral.endsWith("l")) {
       return createEdmLiteral(.uriLiteral, 0, 1);
     }
     if (uriLiteral.endsWith("M") || uriLiteral.endsWith("m")) {
       return createEdmLiteral(.uriLiteral, 0, 1);
     }
     if (uriLiteral.endsWith("D") || uriLiteral.endsWith("d")) {
       return createEdmLiteral(.uriLiteral, 0, 1);
     }
     if (uriLiteral.equals("-INF") || uriLiteral.equals("INF") || uriLiteral.equals("NaN")) {
       return new EdmLiteral(getEdmSimpleType(.), uriLiteral);
     }
     if (uriLiteral.endsWith("F") || uriLiteral.endsWith("f")) {
       return createEdmLiteral(.uriLiteral, 0, 1);
     }
 
     if (uriLiteral.startsWith("datetime'")) {
       return createEdmLiteral(.uriLiteral, 9, 1);
     }
     if (uriLiteral.startsWith("datetimeoffset'")) {
       return createEdmLiteral(.uriLiteral, 15, 1);
     }
     if (uriLiteral.startsWith("guid'")) {
       return createEdmLiteral(.uriLiteral, 5, 1);
     }
    if (uriLiteral.startsWith("time'")) {
      return createEdmLiteral(.uriLiteral, 5, 1);
    }
    if (uriLiteral.startsWith("X'") || uriLiteral.startsWith("binary'")) {
      try {
        final EdmSimpleType type = getEdmSimpleType(.);
        final byte[] value = type.valueOfString(uriLiteral.nullbyte[].class);
        return new EdmLiteral(typetype.valueToString(value.null));
      } catch (EdmSimpleTypeException e) {
        throw new EdmLiteralException(..addContent(uriLiteral), e);
      }
    }
  }
  private static EdmLiteral createEdmLiteral(final EdmSimpleTypeKind typeKindfinal String literalfinal int prefixLengthfinal int suffixLengththrows EdmLiteralException {
    final EdmSimpleType type = getEdmSimpleType(typeKind);
    if (type.validate(literal.null)) {
      return new EdmLiteral(typeliteral.substring(prefixLengthliteral.length() - suffixLength));
    } else {
    }
  }
    return getEdmSimpleType(typeKind);
  }
  public static EdmSimpleType getEdmSimpleType(final EdmSimpleTypeKind typeKind) {
    switch (typeKind) {
    case :
      return EdmBinary.getInstance();
    case :
      return EdmBoolean.getInstance();
    case :
      return EdmByte.getInstance();
    case :
      return EdmDateTime.getInstance();
    case :
      return EdmDateTimeOffset.getInstance();
    case :
      return EdmDecimal.getInstance();
    case :
      return EdmDouble.getInstance();
    case :
      return EdmGuid.getInstance();
    case :
      return EdmInt16.getInstance();
    case :
      return EdmInt32.getInstance();
    case :
      return EdmInt64.getInstance();
    case :
      return EdmSByte.getInstance();
    case :
      return EdmSingle.getInstance();
    case :
      return EdmString.getInstance();
    case :
      return EdmTime.getInstance();
    case :
      return EdmNull.getInstance();
    default:
      throw new ODataRuntimeException("Invalid Type " + typeKind);
    }
  }
  public static EdmSimpleType getInternalEdmSimpleTypeByString(final String edmSimpleType) {
    if ("Bit".equals(edmSimpleType)) {
      return Bit.getInstance();
    } else if ("Uint7".equals(edmSimpleType)) {
      return Uint7.getInstance();
    } else {
      throw new ODataRuntimeException("Invalid internal Type " + edmSimpleType);
    }
  }
New to GrepCode? Check out our FAQ X