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 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
// This Source Code is in the Public Domain per: http://unlicense.org package org.litesoft.core.util; import org.litesoft.commonfoundation.base.*; import java.io.*; import java.util.*; public class HintManager implements Hintable, Serializable { private static final long serialVersionUID = 1L; public static final HintManager NULL = new NullHintManager(); public HintManager addAll( Hintable pHintable ) { return ((pHintable != null) && pHintable.anyHints()) ? LLaddAll( pHintable.getHints() ) : this; } public HintManager addAll( Hint[] pHints ) { return (pHints != null) ? LLaddAll( pHints ) : this; } private HintManager LLaddAll( Hint[] pHints ) { HintManager rv = this; for ( int i = 0; i < pHints.length; i++ ) { Hint hint = pHints[i]; if ( hint != null ) { (rv = rv.aboutToAdd()).addHint( hint ); } } return rv; } private Map<String, Hint> mNamesToHints = new HashMap<String, Hint>(); public HintManager aboutToAdd() { return this; } public boolean anyHints() { return !mNamesToHints.isEmpty(); } private transient Hint[] mHintsAsArray = null; /** * @return !null and No Nulls */ public synchronized Hint[] getHints() { if ( mHintsAsArray == null ) { mHintsAsArray = mNamesToHints.isEmpty() ? EMPTY_ARRAY : toArray(); } return mHintsAsArray; } private Hint[] toArray() { Hint[] rv = new Hint[mNamesToHints.size()]; int rvAt = 0; for ( Iterator<Hint> it = mNamesToHints.values().iterator(); it.hasNext(); ) { rv[rvAt++] = it.next(); } return rv; } /** * Return the value associated with pName if any. * * @param pName !null or empty * * @return null or value associated with pName * * @throws IllegalArgumentException if pName was null or empty */ public String getHintValue( String pName ) throws IllegalArgumentException { Hint cur = mNamesToHints.get( Confirm.significant( "Name", pName ) ); return (cur != null) ? cur.getValue() : null; } /** * Return the value associated with pName if any. * * @param pName !null or empty * @param pDefaultIfNullOrEmpty return value if the normally found value was null or empty * * @return value associated with pName or default if the normally found value was null or empty * * @throws IllegalArgumentException if pName was null or empty */ public String getHintValue( String pName, String pDefaultIfNullOrEmpty ) throws IllegalArgumentException { String rv = getHintValue( pName ); return Currently.isNotNullOrEmpty( rv ) ? rv : pDefaultIfNullOrEmpty; } /** * Add the Hint (if pValue is not null or empty) and return any previous Hint's Value with the same pName * * @param pName !null or empty * * @return null or previous Hint's Value with the same pName * * @throws IllegalArgumentException if pName was null or empty */ public String addHint( String pName, String pValue ) throws IllegalArgumentException { if ( null == (pValue = ConstrainTo.significantOrNull( pValue )) ) { return null; } return addHint( new Hint( pName, pValue ) ); } /** * Add the Hint (if it was not null) and return any previous Hint's Value with the same Hint Name * * @return null or previous Hint's Value with the same Hint Name */ public synchronized String addHint( Hint pHint ) { if ( pHint != null ) { mHintsAsArray = null; Hint prev = mNamesToHints.put( pHint.getName(), pHint ); if ( prev != null ) { return prev.getValue(); } } return null; } /** * Remove the Hint indicated by pName and return its Value * * @param pName !null or empty * * @return null if not found or removed Hint's Value * * @throws IllegalArgumentException if pName was null or empty */ public synchronized String removeHint( String pName ) throws IllegalArgumentException { Hint prev = mNamesToHints.remove( Confirm.significant( "Name", pName ) ); if ( (prev != null) ) { mHintsAsArray = null; return prev.getValue(); } return null; } public static class NullHintManager extends HintManager { private static final long serialVersionUID = 1L; public HintManager aboutToAdd() { return new HintManager(); } public String addHint( Hint pHint ) { throw new IllegalStateException( "Attempt to add a Hint to the NULL HintManager" ); } } } |
Commits for litesoft/trunk/Java/core/jvm1.4/src/org/litesoft/core/util/HintManager.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 |
821 Diff | GeorgeS | Sun 19 Aug, 2012 00:08:41 +0000 | |
802 Diff | GeorgeS | Wed 15 Aug, 2012 04:04:47 +0000 | |
801 Diff | GeorgeS | Wed 15 Aug, 2012 03:59:02 +0000 | |
60 Diff | GeorgeS | Tue 24 Aug, 2010 00:37:36 +0000 | |
49 Diff | GeorgeS | Mon 12 Apr, 2010 02:59:10 +0000 | License Text |
2 | GeorgeS | Sun 07 Feb, 2010 12:50:58 +0000 |