TwoWayMapping.java :  » GWT » itemscript » org » itemscript » core » mappings » Java Open Source

Java Open Source » GWT » itemscript 
itemscript » org » itemscript » core » mappings » TwoWayMapping.java
/*
 * Copyright  2010, Data Base Architects, Inc. All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:
 * 
 *     * Redistributions of source code must retain the above copyright notice,
 *       this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright notice,
 *       this list of conditions and the following disclaimer in the documentation
 *       and/or other materials provided with the distribution.
 *     * Neither the names of Kalinda Software, DBA Software, Data Base Architects, Itemscript
 *       nor the names of its contributors may be used to endorse or promote products derived
 *       from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
 * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 * 
 * Author: Jacob Davies
 */

package org.itemscript.core.mappings;

/**
 * A two-way mapping between two different value types.
 * 
 * @author Jacob Davies
 *
 * @param FROM The type to be converted from.
 * @param TO The type to be converted to.
 */
public abstract class TwoWayMapping<FROM, TO> {
    private final Mapping<FROM, TO> forward;
    private final Mapping<TO, FROM> backward;

    /**
     * Create a new two-way mapping from the given two one-way mappings.
     * 
     * @param forward The forward mapping from the FROM type to the TO type.
     * @param backward The backward mapping from the TO type to the FROM type.
     */
    public TwoWayMapping(Mapping<FROM, TO> forward, Mapping<TO, FROM> backward) {
        this.forward = forward;
        this.backward = backward;
    }

    /**
     * Map a value backwards.
     * 
     * @param value The value of TO type to be mapped.
     * @return The value of FROM type that is returned.
     */
    public FROM backward(TO value) {
        return backward.map(value);
    }

    /**
     * Map a value forwards.
     * 
     * @param value The value of FROM type to be mapped.
     * @return The value of TO type that is returned.
     */
    public TO forward(FROM value) {
        return forward.map(value);
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.