Subversion Repository Public Repository

litesoft

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
// This Source Code is in the Public Domain per: http://unlicense.org
package org.litesoft.bo.views;

import java.io.*;

import org.litesoft.bo.*;
import org.litesoft.commonfoundation.typeutils.*;
import org.litesoft.core.simpletypes.*;

public class BoAccessorFilters implements Serializable
{
    private static final long serialVersionUID = 1L;

    private /* final */ SSMap mAlwaysFilters; // non-null
    private /* final */ SSMap mUniqueFilters; // non-null
    private /* final */ SSMap mRegularFilters; // non-null

    private BoAccessorFilters( SSMap pAlwaysFilters, SSMap pUniqueFilters, SSMap pRegularFilters )
    {
        mAlwaysFilters = pAlwaysFilters;
        mUniqueFilters = pUniqueFilters;
        mRegularFilters = pRegularFilters;
    }

    public BoAccessorFilters()
    {
        this( new SSMap(), new SSMap(), new SSMap() );
    }

    public BoAccessorFilters copy()
    {
        return new BoAccessorFilters( new SSMap( mAlwaysFilters ), new SSMap( mUniqueFilters ), new SSMap( mRegularFilters ) );
    }

    public SSMap getFilters()
    {
        return mUniqueFilters.isEmpty() ? mergeAlways( mRegularFilters ) : mergeAlways( mUniqueFilters );
    }

    public boolean isUniqueEmpty()
    {
        return mUniqueFilters.isEmpty();
    }

    public boolean isEmpty()
    {
        return mAlwaysFilters.isEmpty() && mUniqueFilters.isEmpty() && mRegularFilters.isEmpty();
    }

    public int activeFilters()
    {
        return mAlwaysFilters.size() + mUniqueFilters.size() + mRegularFilters.size();
    }

    public void clear()
    {
        mAlwaysFilters.clear();
        mUniqueFilters.clear();
        mRegularFilters.clear();
    }

    /**
     * @param pFilterType    !null
     * @param pAttributeName !null
     * @param pValue         (empty strings, "" or just spaces; treated as null) null == remove, !null == add/replace
     *
     * @return true if anything changed
     */
    public boolean setFilter( BoAccessorFilterType pFilterType, String pAttributeName, String pValue )
    {
        SSMap zFilter;
        switch ( pFilterType )
        {
            default:
            case Always:
                zFilter = mAlwaysFilters;
                break;
            case Unique:
                zFilter = mUniqueFilters;
                break;
            case Regular:
                zFilter = mRegularFilters;
                break;
        }
        if ( null == (pValue = Strings.noEmpty( pValue )) )
        {
            return (null != zFilter.remove( pAttributeName ));
        }
        return !Objects.areNonArraysEqual( pValue, zFilter.put( pAttributeName, pValue ) );
    }

    @Override
    public String toString()
    {
        return "[always=" + mAlwaysFilters + ",unique=" + mUniqueFilters + ",regular=" + mRegularFilters + ']';
    }

    private SSMap mergeAlways( SSMap pFilters )
    {
        if ( pFilters.isEmpty() )
        {
            return mAlwaysFilters;
        }
        if ( mAlwaysFilters.isEmpty() )
        {
            return pFilters;
        }
        return pFilters.copyAddAll( mAlwaysFilters );
    }
}

Commits for litesoft/trunk/Java/core/Anywhere/src/org/litesoft/bo/views/BoAccessorFilters.java

Diff revisions: vs.
Revision Author Commited Message
947 Diff Diff GeorgeS picture GeorgeS Fri 06 Jun, 2014 23:36:56 +0000

Correct Spelling of package!

939 Diff Diff GeorgeS picture GeorgeS Mon 02 Jun, 2014 21:30:31 +0000

Extracting commonfoundation

849 Diff Diff GeorgeS picture GeorgeS Tue 11 Sep, 2012 17:11:59 +0000

Clean up serialization

804 Diff Diff GeorgeS picture GeorgeS Wed 15 Aug, 2012 12:48:51 +0000
801 Diff Diff GeorgeS picture GeorgeS Wed 15 Aug, 2012 03:59:02 +0000
216 Diff Diff GeorgeS picture GeorgeS Wed 18 May, 2011 13:44:57 +0000
199 Diff Diff GeorgeS picture GeorgeS Tue 10 May, 2011 00:55:21 +0000
49 Diff Diff GeorgeS picture GeorgeS Mon 12 Apr, 2010 02:59:10 +0000

License Text

2 GeorgeS picture GeorgeS Sun 07 Feb, 2010 12:50:58 +0000