/[schmitzm]/trunk/src/skrueger/geotools/CopyableUtil.java
ViewVC logotype

Annotation of /trunk/src/skrueger/geotools/CopyableUtil.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 449 - (hide annotations)
Thu Oct 8 19:41:57 2009 UTC (15 years, 4 months ago) by mojays
Original Path: branches/1.0-gt2-2.6/src/skrueger/geotools/CopyableUtil.java
File size: 2827 byte(s)
new class CopyableUtil
ChartStyles now implement Copyable
1 mojays 449 /*******************************************************************************
2     * Copyright (c) 2009 Martin O. J. Schmitz.
3     *
4     * This file is part of the SCHMITZM library - a collection of utility
5     * classes based on Java 1.6, focusing (not only) on Java Swing
6     * and the Geotools library.
7     *
8     * The SCHMITZM project is hosted at:
9     * http://wald.intevation.org/projects/schmitzm/
10     *
11     * This program is free software; you can redistribute it and/or
12     * modify it under the terms of the GNU Lesser General Public License
13     * as published by the Free Software Foundation; either version 3
14     * of the License, or (at your option) any later version.
15     *
16     * This program is distributed in the hope that it will be useful,
17     * but WITHOUT ANY WARRANTY; without even the implied warranty of
18     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19     * GNU General Public License for more details.
20     *
21     * You should have received a copy of the GNU Lesser General Public License (license.txt)
22     * along with this program; if not, write to the Free Software
23     * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24     * or try this link: http://www.gnu.org/licenses/lgpl.html
25     *
26     * Contributors:
27     * Martin O. J. Schmitz - initial API and implementation
28     * Stefan A. Krüger - additional utility classes
29     ******************************************************************************/
30    
31     package skrueger.geotools;
32    
33     /**
34     * Some utility method for {@link Copyable}.
35     * @author <a href="mailto:[email protected]">Martin Schmitz</a>
36     */
37     public class CopyableUtil {
38    
39     /**
40     * Copies an {@link Copyable} to another. If possible no new destination
41     * instance is created, so the "original" destination object is
42     * also returned.<br>
43     * If {@code source} is {@code null}, the {@code dest} object
44     * is irrelevant and {@code null} is returned. If {@code dest} is NULL
45     * and {@code source} in not NULL, a new {@code source.copy()} is
46     * returned.
47     * @param source the source object (can be {@code null})
48     * @param dest the object, the source values are copied to (can be {@code null})
49     */
50     public static <T extends Copyable<T>> T copyOrCreate(T source, T dest) {
51     // If both objects are not NULL, the source Copyable can be applied
52     // to destination Copyable
53     if ( source != null && dest != null )
54     source.copyTo( dest );
55     // Otherwise: If source Copyable is not NULL, but destination a new
56     // destination object is created from source and returned
57     else if ( source != null && dest == null )
58     dest = source.copy();
59     // Otherwise: source Copyable is NULL, so destination must also
60     // be NULL
61     else
62     dest = null;
63    
64     return dest;
65     }
66     }

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26