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
// This Source Code is in the Public Domain per: http://litesoft.org/License.txt
package org.litesoft.core.util.stringmatching;

public class PartsStringMatcher extends AbstractStringMatcher
{
    private String[] mParts;
    private int mLastIndex;

    // Package Friendly
    PartsStringMatcher( int pMinLength, boolean pIgnoreCase, String[] pParts )
    {
        super( pMinLength, pIgnoreCase );
        mParts = pParts;
        mLastIndex = pParts.length - 1;
    }

    @Override
    protected boolean LLmatches( String pInQuestion )
    {
        int zIQlen = pInQuestion.length();
        int zMinLength = mMinLength;

        int zFrom = 0;

        int zPndx = 0;
        String part = mParts[zPndx++];
        int zPLen = part.length();
        if ( zPLen != 0 )
        {
            if ( !pInQuestion.startsWith( part ) )
            {
                return false;
            }
            zFrom = zPLen;
            zMinLength -= zPLen;
        }
        do
        {
            part = mParts[zPndx++];
            zPLen = part.length();
            if ( zPLen != 0 )
            {
                int zAt = pInQuestion.indexOf( part, zFrom );
                if ( zAt == -1 )
                {
                    return false;
                }
                zFrom = zAt + zPLen;
                zMinLength -= zPLen;
                if ( (zIQlen - zFrom) < zMinLength )
                {
                    return false;
                }
            }
        }
        while ( zPndx < mLastIndex );

        part = mParts[mLastIndex];
        return (part.length() == 0) || pInQuestion.endsWith( part );
    }

    @Override
    public String toString()
    {
        StringBuilder sb = new StringBuilder( "Parts( '" ).append( mParts[0] ).append( '"' );
        for ( int i = 1; i < mParts.length; i++ )
        {
            sb.append( ", '" ).append( mParts[i] ).append( '"' );
        }
        return sb.append( " )" ).toString();
    }
}

Commits for litesoft/trunk/DeviceDesktopTest/src/org/litesoft/core/util/stringmatching/PartsStringMatcher.java

Diff revisions: vs.
Revision Author Commited Message
936 GeorgeS picture GeorgeS Sun 01 Jun, 2014 20:19:38 +0000

Language Support