/* * Copyright (c) 2009, Rickard Öberg. All Rights Reserved. * * 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 org.qi4j.api.property; import java.math.BigDecimal; /** * Convenience class for mathematical operations on numerical properties. * <pre>import static org.qi4j.api.property.Numbers.*; * ... * add( object.numberProperty(), 5 );</pre> */ public final class Numbers { // Integer operations public static Property<Integer> add( Property<Integer> property, int amount ) { property.set( property.get() + amount ); return property; } public static Property<Integer> mult( Property<Integer> property, int amount ) { property.set( property.get() * amount ); return property; } public static Property<Integer> sub( Property<Integer> property, int amount ) { property.set( property.get() - amount ); return property; } public static Property<Integer> div( Property<Integer> property, int amount ) { property.set( property.get() / amount ); return property; } // Long operations public static Property<Long> add( Property<Long> property, long amount ) { property.set( property.get() + amount ); return property; } public static Property<Long> mult( Property<Long> property, long amount ) { property.set( property.get() * amount ); return property; } public static Property<Long> sub( Property<Long> property, long amount ) { property.set( property.get() - amount ); return property; } public static Property<Long> div( Property<Long> property, long amount ) { property.set( property.get() / amount ); return property; } // Double operations public static Property<Double> add( Property<Double> property, double amount ) { property.set( property.get() + amount ); return property; } public static Property<Double> mult( Property<Double> property, double amount ) { property.set( property.get() * amount ); return property; } public static Property<Double> sub( Property<Double> property, double amount ) { property.set( property.get() - amount ); return property; } public static Property<Double> div( Property<Double> property, double amount ) { property.set( property.get() / amount ); return property; } // Float operations public static Property<Float> add( Property<Float> property, float amount ) { property.set( property.get() + amount ); return property; } public static Property<Float> mult( Property<Float> property, float amount ) { property.set( property.get() * amount ); return property; } public static Property<Float> sub( Property<Float> property, float amount ) { property.set( property.get() - amount ); return property; } public static Property<Float> div( Property<Float> property, float amount ) { property.set( property.get() / amount ); return property; } // BigDecimal operations public static Property<BigDecimal> add( Property<BigDecimal> property, BigDecimal amount ) { property.set( property.get().add( amount ) ); return property; } public static Property<BigDecimal> mult( Property<BigDecimal> property, BigDecimal amount ) { property.set( property.get().multiply( amount ) ); return property; } public static Property<BigDecimal> sub( Property<BigDecimal> property, BigDecimal amount ) { property.set( property.get().subtract( amount ) ); return property; } public static Property<BigDecimal> div( Property<BigDecimal> property, BigDecimal amount ) { property.set( property.get().divide( amount ) ); return property; } }