Package com.gammastream.validity

Source Code of com.gammastream.validity.GSVOtherMethods

package com.gammastream.validity;

import com.webobjects.eoaccess.EOUtilities;
import com.webobjects.eocontrol.EOEditingContext;
import com.webobjects.eocontrol.EOEnterpriseObject;
import com.webobjects.foundation.NSArray;
import com.webobjects.foundation.NSDictionary;
import com.webobjects.foundation.NSKeyValueCoding;

/**
*  This class provides a set of predefined rules for performing
*  validation on miscellaneous data types. These rules are part of
*  the default set of 'QuickRules'.
*
@author GammaStream Technologies, Inc.
*/
public class GSVOtherMethods {

    //Editing Context for occasional fetching
    private static EOEditingContext _editingContext = null;

    /**
     *  Determines whether a value has been provided for the specified attribute.
     *
     *  @param  object    The object whose attribute is being validated.
     *  @param  attribute   The attribute being validated.
     *  @param  key     The key used to access the attribute.
     *  @param  params     The param dictionary which must contain the above mentioned key-value pairs.
     *
     *  @return  <code>true</code> if the value is <code>null</code>; otherwise, <code>false</code>
     */
    public final static boolean isNull(Object object,Object attribute,String key, NSDictionary params){
        return ( attribute == null );    
    }
    
    /**
     *  Determines whether the specified to-many relationship contains any objects.
     *  <br>
     <br>The required key-value pairs include:
     *  <br>"RelationshipKey" = The relationship key. (i.e. "toUsers" )
     *  <br>
     *
     *  @param  object    The object whose attribute is being validated.
     *  @param  attribute   The attribute being validated.
     *  @param  key     The key used to access the attribute.
     *  @param  params     The param dictionary which must contain the above mentioned key-value pairs.
     *
     *  @return  <code>true</code> if the to-many array is empty; otherwise, <code>false</code>
     */
    public final static boolean isArrayEmpty(Object object,Object attribute,String key, NSDictionary params){
        Object value = NSKeyValueCoding.Utility.valueForKey(object,(String)params.objectForKey("RelationshipKey"));
        if( value instanceof NSArray ){
            return ( ((NSArray)value).count() == 0 );
        }
        return true;
    }
  
    /**
     *  Verifies that the specified attribute is unique.
     *
     *  @param  object    The object whose attribute is being validated.
     *  @param  attribute   The attribute being validated.
     *  @param  key     The key used to access the attribute.
     *  @param  params     The param dictionary which must contain the above mentioned key-value pairs.
     *
     *  @return  <code>true</code> if the attribute is empty; otherwise, <code>false</code>
     */
    public final static boolean isUnique(Object object, Object attribute, String key, NSDictionary params){
        if(GSVOtherMethods._editingContext == null){
            GSVOtherMethods._editingContext = new EOEditingContext();
        }
        if( object instanceof EOEnterpriseObject ){
            if( attribute != null ){
                String entityName = ((EOEnterpriseObject)object).entityName();
                NSArray array = EOUtilities.objectsMatchingKeyAndValue(GSVOtherMethods._editingContext, entityName, key, attribute);
                if( array.count() == 0 ){
                    return true;
                } else if( array.count() == 1 ) {
                    //it could be that the object found is itself
                    EOEnterpriseObject localObject = EOUtilities.localInstanceOfObject(GSVOtherMethods._editingContext, (EOEnterpriseObject)object);
                    return ( (EOEnterpriseObject)array.objectAtIndex(0) == localObject );
                }
            }
        }
        return false;
    }
   

   
   

}
TOP

Related Classes of com.gammastream.validity.GSVOtherMethods

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.