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
111
112
113
114
115
116
// This Source Code is in the Public Domain per: http://unlicense.org
package org.litesoft.bo.views;

import org.litesoft.commonfoundation.base.*;
import org.litesoft.core.simpletypes.nonpublic.*;

import java.io.*;

public final class ObjectURL extends CompareSupport<ObjectURL> implements Serializable {
    private static final long serialVersionUID = 1L;

    private static final String OBJECT_NAME_TO_UNIQUE_KEY_CHAR_SEPARATOR = "(";
    private static final String UNIQUE_KEY_CHAR_TERMINATOR = ")";

    public static final ObjectURL[] EMPTY_ARRAY = new ObjectURL[0];

    public static final char URL_SEPARATOR = '\n';

    private /* final */ String mObjectName;
    private /* final */ ObjectUniqueKey mObjectUniqueKey;
    private /* final */ String mExtra;

    @SuppressWarnings({"deprecation", "UnusedDeclaration"})
    @Deprecated
    /** for Serialization */
    protected ObjectURL() {
    }

    public ObjectURL( String pObjectName, ObjectUniqueKey pObjectUniqueKey, String pExtra ) {
        Confirm.significantAsIs( "ObjectName", mObjectName = pObjectName );
        Confirm.isNotNull( "ObjectUniqueKey", mObjectUniqueKey = pObjectUniqueKey );
        mExtra = ConstrainTo.notNull( pExtra );
        chkBadName( ObjectUniqueKey.PREFIX );
        chkBadName( OBJECT_NAME_TO_UNIQUE_KEY_CHAR_SEPARATOR );
        if ( -1 != mExtra.indexOf( URL_SEPARATOR ) ) {
            throw new IllegalArgumentException( "The Extra ('" + mExtra + "') may not contain a URL_SEPARATOR (\\n)" );
        }
    }

    public ObjectURL( String pObjectName, ObjectUniqueKey pObjectUniqueKey ) {
        this( pObjectName, pObjectUniqueKey, "" );
    }

    private void chkBadName( String pCheckFor ) {
        if ( mObjectName.contains( pCheckFor ) ) {
            throw new IllegalArgumentException( "The Object Name ('" + mObjectName + "') may not contain a '" + pCheckFor + "'" );
        }
    }

    public String getObjectName() {
        return mObjectName;
    }

    public ObjectUniqueKey getObjectUniqueKey() {
        return mObjectUniqueKey;
    }

    public String getExtra() {
        return mExtra;
    }

    public int compareTo( ObjectURL o ) {
        return toString().compareTo( o.toString() );
    }

    public boolean equals( Object o ) {
        return (this == o) || ((o instanceof ObjectURL) && equals( (ObjectURL) o ));
    }

    private boolean equals( ObjectURL them ) {
        return (this == them) || //
               ((them != null) //
                && this.mObjectName.equals( them.mObjectName ) //
                && this.mObjectUniqueKey.equals( them.mObjectUniqueKey ) //
                && this.mExtra.equals( them.mExtra ) //
               );
    }

    public int hashCode() {
        return hashCodeEm( mObjectName.hashCode(), mObjectUniqueKey.hashCode(), mExtra.hashCode() );
    }

    public String toString() {
        return mObjectName + OBJECT_NAME_TO_UNIQUE_KEY_CHAR_SEPARATOR + mObjectUniqueKey + UNIQUE_KEY_CHAR_TERMINATOR + mExtra;
    }

    public static ObjectURL fromString( String pToString )
            throws IllegalArgumentException {
        String pExceptionPlus = "";
        if ( pToString != null ) {
            int zAt = pToString.indexOf( OBJECT_NAME_TO_UNIQUE_KEY_CHAR_SEPARATOR );
            int zTo = pToString.indexOf( UNIQUE_KEY_CHAR_TERMINATOR, zAt + 1 );
            if ( (1 <= zAt) && (zAt < zTo) ) {
                try {
                    String zObjectName = pToString.substring( 0, zAt );
                    ObjectUniqueKey zOUK = ObjectUniqueKey.fromString( pToString.substring( zAt + 1, zTo ) );
                    return new ObjectURL( zObjectName, zOUK, pToString.substring( zTo + 1 ) );
                }
                catch ( IllegalArgumentException e ) {
                    pExceptionPlus = ": " + e;
                }
            }
        }
        throw new IllegalArgumentException( "Unacceptable encoding of ObjectURL ('" + pToString + "')" + pExceptionPlus );
    }

    public static ObjectURL[] prepend( ObjectURL pNewFirst, ObjectURL[] pCurrent ) {
        if ( Currently.isNullOrEmpty( pCurrent ) ) {
            return new ObjectURL[]{pNewFirst};
        }
        ObjectURL[] rv = new ObjectURL[pCurrent.length + 1];
        rv[0] = pNewFirst;
        System.arraycopy( pCurrent, 0, rv, 1, pCurrent.length );
        return rv;
    }
}

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

Diff revisions: vs.
Revision Author Commited Message
950 Diff Diff GeorgeS picture GeorgeS Thu 19 Jun, 2014 17:57:04 +0000

New Lines

948 Diff Diff GeorgeS picture GeorgeS Sat 07 Jun, 2014 23:42:39 +0000

Jusefuls Formatter Updated to New Code Format

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

821 Diff Diff GeorgeS picture GeorgeS Sun 19 Aug, 2012 00:08:41 +0000
809 Diff Diff GeorgeS picture GeorgeS Thu 16 Aug, 2012 04:10:46 +0000
804 Diff Diff GeorgeS picture GeorgeS Wed 15 Aug, 2012 12:48:51 +0000
802 Diff Diff GeorgeS picture GeorgeS Wed 15 Aug, 2012 04:04:47 +0000
49 GeorgeS picture GeorgeS Mon 12 Apr, 2010 02:59:10 +0000

License Text