Пример #1
0
 protected function getValueFromExpression(\blaze\web\application\BlazeContext $context, $subExpressions, $subBrackets, $expr)
 {
     if ($expr instanceof BaseOperation) {
         $val = $expr->getValue($context, $subExpressions, $subBrackets);
     } else {
         $val = $expr;
     }
     $val = $this->resolveSubParts($context, $subExpressions, $subBrackets, $val);
     if (($class = \blaze\lang\Number::getNumberClass($val)) != null) {
         return $class->getMethod('asNative')->invoke(null, $val);
     } else {
         if (preg_match('/^(true|false)$/', $val)) {
             return \blaze\lang\Boolean::parseBoolean($val);
         } else {
             if (preg_match('/^(null)$/', $val)) {
                 return null;
             } else {
                 //if(strpos($val, '.') !== false)
                 return $context->getELContext()->getELResolver()->getValue($val);
                 //            else
                 //                return $val;
             }
         }
     }
 }
Пример #2
0
 /**
  * Generate a new BigDecimal Object.
  * @param <int|string|float|blaze\lang\Number> $value Is a native String, with scale and algebric sign
  * @param <type> $scale If value has no scale you can define the scale
  */
 public function __construct($value, $scale = null)
 {
     if (($class = Number::getNumberClass($value)) !== null) {
         $className = $class->getName()->toNative();
         $value = $className::asNative($value);
     } else {
         if (!self::isNativeType($value)) {
             throw new \blaze\lang\NumberFormatException('Not a valid representation of BigDecimal!');
         }
     }
     $this->value = String::asNative($value);
     if ($scale != null) {
         $this->scale = $scale;
     } else {
         $ar = explode('.', $this->value);
         $count = count($ar);
         if ($count > 2) {
             throw new \blaze\lang\NumberFormatException('Not a valid representation of BigDecimal!');
         }
         if ($count == 2) {
             $this->scale = strlen($ar[1]);
         } else {
             $this->scale = 0;
         }
     }
 }
Пример #3
0
 public function __construct($value)
 {
     if (($class = Number::getNumberClass($value)) !== null) {
         $value = $class->getMethod('asNative')->invoke(null, $value);
     } else {
         if (!self::isNativeType($value)) {
             throw new \blaze\lang\NumberFormatException('Not a valid representation of BigInteger!');
         }
     }
     $this->value = String::asNative($value);
 }
Пример #4
0
 /**
  *
  * @param blaze\lang\Float|float $value
  * @return float
  */
 public static function asNative($value)
 {
     return (double) parent::asNative($value);
 }
Пример #5
0
 private function getWhereColumn($string, $classMetas, \blaze\persistence\EntityManager $em)
 {
     $str = \blaze\lang\String::asWrapper($string);
     if ($str->startsWith(':') && !$str->contains(' ')) {
         return $string;
     } else {
         if ($str->equalsIgnoreCase('?')) {
             return $string;
         } else {
             if ($str->startsWith('"') && $str->endsWith('"')) {
                 return $string;
             } else {
                 if (\blaze\lang\Number::getNumberClass($string) !== null) {
                     return $string;
                 }
             }
         }
     }
     $parts = explode('.', $string);
     $alias = null;
     foreach ($classMetas as $classAlias => $meta) {
         if ($parts[0] === $classAlias) {
             $alias = array_shift($parts);
             break;
         }
     }
     if (count($classMetas) == 1) {
         $meta = array_shift($classMetas);
         $column = $this->recursiveColumnLookup($meta, $parts);
     } else {
         foreach ($classMetas as $classAlias => $meta) {
             if ($alias === null || $alias === $classAlias) {
                 $column = $this->recursiveColumnLookup($meta, $parts);
             }
         }
     }
     if ($alias !== null) {
         return $alias . '.' . $column;
     } else {
         return $column;
     }
 }
Пример #6
0
 /**
  *
  * @param blaze\lang\Integer|int $value
  * @return int
  */
 public static function asNative($value)
 {
     return (int) parent::asNative($value) & 0xffff;
 }