litesoft
@ 787
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 |
// This Source Code is in the Public Domain per: http://litesoft.org/License.txt package org.litesoft.aokeyhole.objects.support; import org.litesoft.aokeyhole.objects.*; import org.litesoft.aokeyhole.toolkit.*; public abstract class AbstractNamedMetaData<Owner extends MetaDataOwner> extends AbstractDataMetaData { private Owner mOwner = null; private final IdentifierValidator mNameValidator; protected String mName; public AbstractNamedMetaData( String pMetaDataType, Mode pMode, boolean pEditable, IdentifierValidator pNameValidator, String pName ) { super( pMetaDataType, pMode, pEditable ); mNameValidator = pNameValidator; pName = trimEmptyToNull( pName ); switch ( pMode ) { case Rehydrating: chkUnhappyCase( validateName( pName ) ); mName = pName; break; case New: if ( pName != null ) { chkUnhappyCase( validateName( pName ) ); mName = pName; } break; default: throw new IllegalStateException( "Unacceptable Initial Mode (" + pMode + ") for a " + getClass().getSimpleName() ); } } public Owner getOwner() { if ( mOwner == null ) { throw new IllegalStateException( getMetaDataType() + " does NOT have an owner" ); } return mOwner; } public void setOwner( Owner pOwner ) { mOwner = pOwner; } public SystemMetaData getSystemMetaData() { return getOwner().getSystemMetaData(); } @Override protected void LLchanged() { super.LLchanged(); getOwner().changed(); } public IdentifierValidator getNameValidator() { return mNameValidator; } public String getName() { return mName; } /** * @return null or Error */ @Override public String validatePersistable() { if ( mName == null ) { return "Name Required"; } return super.validatePersistable(); } /** * @return null or Error */ public String setName( String pName ) { verifyEditability(); return updateName( pName ); } /** * @return null or Error */ protected String updateName( String pName ) { pName = trimEmptyToNull( pName ); String zError = validateName( pName ); if ( (zError == null) && !pName.equals( mName ) ) { //noinspection unchecked getOwner().reKeyOwnedName( this, pName ); mName = pName; changed(); } return zError; } private String validateName( String pName ) { if ( pName == null ) { return "Name Required"; } if ( !pName.equals( mName ) ) { if ( mNameValidator != null ) { String zError = mNameValidator.validateIdentifier( pName, getMetaDataType() + " Name" ); if ( zError != null ) { return zError; } } if ( (mOwner != null) && mOwner.isUsedOwnedName( pName ) ) { return getMetaDataType() + " with name '" + pName + "' already exists"; } } return null; } @Override public String toString() { return getClass().getSimpleName() + "(" + getMetaDataType() + "):" + mName; } } |