001    /* ====================================================================
002     * The Apache Software License, Version 1.1
003     *
004     * Copyright (c) 2003 The Apache Software Foundation.  All rights
005     * reserved.
006     *
007     * Redistribution and use in source and binary forms, with or without
008     * modification, are permitted provided that the following conditions
009     * are met:
010     *
011     * 1. Redistributions of source code must retain the above copyright
012     *    notice, this list of conditions and the following disclaimer.
013     *
014     * 2. Redistributions in binary form must reproduce the above copyright
015     *    notice, this list of conditions and the following disclaimer in
016     *    the documentation and/or other materials provided with the
017     *    distribution.
018     *
019     * 3. The end-user documentation included with the redistribution,
020     *    if any, must include the following acknowledgment:
021     *       "This product includes software developed by the
022     *        Apache Software Foundation (http://www.apache.org/)."
023     *    Alternately, this acknowledgment may appear in the software itself,
024     *    if and wherever such third-party acknowledgments normally appear.
025     *
026     * 4. The names "The Jakarta Project", "Commons", and "Apache Software
027     *    Foundation" must not be used to endorse or promote products derived
028     *    from this software without prior written permission. For written
029     *    permission, please contact apache@apache.org.
030     *
031     * 5. Products derived from this software may not be called "Apache",
032     *    nor may "Apache" appear in their name, without prior written
033     *    permission of the Apache Software Foundation.
034     *
035     * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
036     * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
037     * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
038     * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
039     * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
040     * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
041     * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
042     * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
043     * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
044     * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
045     * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
046     * SUCH DAMAGE.
047     * ====================================================================
048     *
049     * This software consists of voluntary contributions made by many
050     * individuals on behalf of the Apache Software Foundation.  For more
051     * information on the Apache Software Foundation, please see
052     * <http://www.apache.org/>.
053     *
054     */
055    package org.jpu.patterns.common;
056    
057    import java.util.Set;
058    import java.util.Map;
059    
060    /**
061     * Class used by clients to pass options to {@link org.jpu.patterns.common.JPUBeanUtils#copy}
062     * governing how the copying is performed.
063     */
064    public class CopyOptions {
065        public static CopyOptions defaultIfNull(CopyOptions o) {
066            if ( o == null ) {
067                o = new CopyOptions();
068            }
069            return o;
070        }
071        public CopyOptions setIgnoreNulls(boolean b) {
072            ignoreNulls = b;
073            return this;
074        }
075        public CopyOptions setDontPopulateMap(boolean b) {
076            dontPopulateMap = b;
077            return this;
078        }
079        public CopyOptions setSourceClasses(Class[] c) {
080            sourceClasses = c;
081            return this;
082        }
083        public CopyOptions setDestClasses(Class[] c) {
084            destClasses = c;
085            return this;
086        }
087        public CopyOptions setAttributesToCopy(Set set) {
088            attributesToCopy = set;
089            return this;
090        }
091            public CopyOptions setIncludeSourceSuperclassAttributes(boolean x) {
092                    includeSourceSuperclassAttributes = x;
093                    return this;
094            }
095            public CopyOptions setIncludeDestSuperclassAttributes(boolean x) {
096                    includeDestSuperclassAttributes = x;
097                    return this;
098            }
099        public CopyOptions setAttributesToIgnore(Set set) {
100            attributesToIgnore = set;
101            return this;
102        }
103        public CopyOptions setUnmatchedAttributes(Map map) {
104            unmatchedAttributes = map;
105            return this;
106        }
107            public boolean getIgnoreNulls() {
108                    return ignoreNulls;
109            }
110            public boolean getDontPopulate() {
111                    return dontPopulateMap;
112            }
113            public Class[] getSourceClasses() {
114                    return sourceClasses;
115            }
116            public Class[] getDestClasses() {
117                    return destClasses;
118            }
119            public Set getAttributesToCopy() {
120                    return attributesToCopy;
121            }
122            public Set getAttributesToIgnore() {
123                    return attributesToIgnore;
124            }
125            public Map getUnmatchedAttributes() {
126                    return unmatchedAttributes;
127            }
128            public boolean getIncludeSourceSuperclassAttributes() {
129                    return includeSourceSuperclassAttributes;
130            }
131            public boolean getIncludeDestSuperclassAttributes() {
132                    return includeDestSuperclassAttributes;
133            }
134        public boolean ignoreNulls = false;
135        public boolean dontPopulateMap = false;
136        public Class[] sourceClasses = null;
137        public Class[] destClasses = null;
138        public Set attributesToCopy = null;
139        public Set attributesToIgnore = null;
140        public Map unmatchedAttributes = null;
141        public boolean includeSourceSuperclassAttributes = true;
142        public boolean includeDestSuperclassAttributes = true;
143    }
144    
145    
146