litesoft
@ 947
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 |
// This Source Code is in the Public Domain per: http://unlicense.org package org.litesoft.aokeyhole.objects.support; import org.litesoft.aokeyhole.objects.*; import org.litesoft.aokeyhole.toolkit.*; public class ObjectProxy extends AbstractBase { private AbstractNamedMetaData mOwner; private String mPurpose; private SystemMetaData mSystemMetaData = null; private IdentifierValidator mNameValidator = null; private ObjectMetaData mObjectMetaData = null; private String mObjectName = null; public ObjectProxy( AbstractNamedMetaData pOwner, String pPurpose ) { mOwner = pOwner; mPurpose = pPurpose; } /** * @throws ParseException if the previously set Object can NOT be found */ public void unpersistFini( SystemMetaData pSystemMetaData, IdentifierValidator pNameValidator, ObjectMetaData pButNotThisObject, String pErrorIfNotThisObject ) throws ParseException { mSystemMetaData = pSystemMetaData; mNameValidator = pNameValidator; String newObjectName = mObjectName; mObjectName = null; String error = fetchObjectIfNeeded( newObjectName, pButNotThisObject, pErrorIfNotThisObject ); if ( error != null ) { throw new ParseException( error ); } } public String getObjectName() { return (mObjectMetaData == null) ? mObjectName : mObjectMetaData.getName(); } /** * @return true if a Change * * @throws IllegalArgumentException if Object is not found */ public boolean setObjectName( String pNewObjectName, ObjectMetaData pButNotThisObject, String pErrorIfNotThisObject ) throws IllegalArgumentException { String newObjectName = trimEmptyToNull( pNewObjectName ); if ( areEqual( getObjectName(), pNewObjectName ) ) { return false; } if ( "VaribleToOne".equals( newObjectName ) ) { System.out.println( "ObjectProxy.setObjectName" ); } if ( mSystemMetaData == null ) { mObjectName = newObjectName; return true; } ObjectMetaData cur = mObjectMetaData; String error = fetchObjectIfNeeded( newObjectName, pButNotThisObject, pErrorIfNotThisObject ); if ( error != null ) { throw new ParseException( error ); } return !areEqual( cur, mObjectMetaData ); } private String fetchObjectIfNeeded( String pNewObjectName, ObjectMetaData pButNotThisObject, String pErrorIfNotThisObject ) { if ( pNewObjectName == null ) { mObjectMetaData = null; return null; } String zError = mNameValidator.validateIdentifier( pNewObjectName, mPurpose + " Object Name" ); if ( zError != null ) { return "On " + mOwner.getName() + ": " + zError; } ObjectMetaData newObject = mSystemMetaData.getObject( pNewObjectName ); if ( newObject == null ) { return "On " + mOwner.getName() + ", requested " + mPurpose + " Object not found: " + pNewObjectName; } if ( newObject == pButNotThisObject ) { if ( pErrorIfNotThisObject != null ) { return pErrorIfNotThisObject; } newObject = null; } mObjectMetaData = newObject; return null; } public ObjectMetaData getObjectMetaData() { return mObjectMetaData; } } |