~vcs-imports/jeuclid/trunk

« back to all changes in this revision

Viewing changes to jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/typewrapper/TLIListTypeWrapper.java

  • Committer: maxberger
  • Date: 2008-06-21 09:53:35 UTC
  • Revision ID: svn-v4:4240c5f0-4329-0410-b7b0-bbaa203ca8f8:trunk:795
Refactored Parameter into its own class, LayoutContext was getting too large.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright 2008 - 2008 JEuclid, http://jeuclid.sf.net
 
3
 *
 
4
 * Licensed under the Apache License, Version 2.0 (the "License");
 
5
 * you may not use this file except in compliance with the License.
 
6
 * You may obtain a copy of the License at
 
7
 *
 
8
 *      http://www.apache.org/licenses/LICENSE-2.0
 
9
 *
 
10
 * Unless required by applicable law or agreed to in writing, software
 
11
 * distributed under the License is distributed on an "AS IS" BASIS,
 
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
13
 * See the License for the specific language governing permissions and
 
14
 * limitations under the License.
 
15
 */
 
16
 
 
17
/* $Id$ */
 
18
 
 
19
package net.sourceforge.jeuclid.context.typewrapper;
 
20
 
 
21
import java.util.ArrayList;
 
22
import java.util.List;
 
23
import java.util.Locale;
 
24
 
 
25
/**
 
26
 * List is converted to String and back by using comma-separated
 
27
 * representation.
 
28
 * 
 
29
 * Strings are Stored Trimmed, Lower-cased, Interned.
 
30
 * 
 
31
 * @version $Revision$
 
32
 */
 
33
public final class TLIListTypeWrapper extends AbstractSimpleTypeWrapper {
 
34
 
 
35
    /**
 
36
     * separator to be used when converting to string or parsing string.
 
37
     */
 
38
    public static final String SEPARATOR = ",";
 
39
 
 
40
    /**
 
41
     * 
 
42
     */
 
43
    private static final long serialVersionUID = 1L;
 
44
 
 
45
    private static final TypeWrapper INSTANCE = new TLIListTypeWrapper();
 
46
 
 
47
    /** Simple constructor. */
 
48
    private TLIListTypeWrapper() {
 
49
        super(List.class);
 
50
    }
 
51
 
 
52
    /**
 
53
     * @return the singleton instance.
 
54
     */
 
55
    public static TypeWrapper getInstance() {
 
56
        return TLIListTypeWrapper.INSTANCE;
 
57
    }
 
58
 
 
59
    /** {@inheritDoc} */
 
60
    @Override
 
61
    public Object fromString(final String value) {
 
62
        if (value == null) {
 
63
            return null;
 
64
        } else {
 
65
            final String whitespace = "\\s*";
 
66
            final String[] strList = value.split(whitespace
 
67
                    + TLIListTypeWrapper.SEPARATOR + whitespace);
 
68
            final List<String> retVal = new ArrayList<String>(strList.length);
 
69
            for (final String str : strList) {
 
70
                retVal.add(str.trim().toLowerCase(Locale.ENGLISH).intern());
 
71
            }
 
72
            return retVal;
 
73
        }
 
74
    }
 
75
 
 
76
    /** {@inheritDoc} */
 
77
    @Override
 
78
    public String toString(final Object value) {
 
79
        if (value == null) {
 
80
            return null;
 
81
        } else {
 
82
            final StringBuilder b = new StringBuilder();
 
83
            boolean first = true;
 
84
            for (final Object o : (List<?>) value) {
 
85
                if (first) {
 
86
                    first = false;
 
87
                } else {
 
88
                    b.append(TLIListTypeWrapper.SEPARATOR);
 
89
                    b.append(' ');
 
90
                }
 
91
                b.append(o);
 
92
            }
 
93
            return b.toString();
 
94
        }
 
95
    }
 
96
}