litesoft
@ HEAD
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
Revision | Author | Commited | Message |
---|---|---|---|
950 Diff | GeorgeS | Thu 19 Jun, 2014 17:57:04 +0000 | New Lines |
948 Diff | GeorgeS | Sat 07 Jun, 2014 23:42:39 +0000 | Jusefuls Formatter Updated to New Code Format |
947 Diff | GeorgeS | Fri 06 Jun, 2014 23:36:56 +0000 | Correct Spelling of package! |
939 Diff | GeorgeS | Mon 02 Jun, 2014 21:30:31 +0000 | Extracting commonfoundation |
849 Diff | GeorgeS | Tue 11 Sep, 2012 17:11:59 +0000 | Clean up serialization |
821 Diff | GeorgeS | Sun 19 Aug, 2012 00:08:41 +0000 | |
809 Diff | GeorgeS | Thu 16 Aug, 2012 04:10:46 +0000 | |
804 Diff | GeorgeS | Wed 15 Aug, 2012 12:48:51 +0000 | |
802 Diff | GeorgeS | Wed 15 Aug, 2012 04:04:47 +0000 | |
49 | GeorgeS | Mon 12 Apr, 2010 02:59:10 +0000 | License Text |