Package ognl.webobjects

Source Code of ognl.webobjects.NSArrayPropertyAccessor

/*
* Copyright (C) NetStruxr, Inc. All rights reserved.
*
* This software is published under the terms of the NetStruxr
* Public Software License version 0.5, a copy of which has been
* included with this distribution in the LICENSE.NPL file.  */

/* NSArrayPropertyAccessor.java created by max on Fri 28-Sep-2001 */
package ognl.webobjects;

import ognl.DynamicSubscript;
import ognl.NoSuchPropertyException;
import ognl.OgnlException;

import com.webobjects.foundation.NSArray;
import com.webobjects.foundation.NSMutableArray;
import com.webobjects.foundation.NSPropertyListSerialization;

public class NSArrayPropertyAccessor extends NSObjectPropertyAccessor {

    @Override
    public Object getProperty( Object target, Object name ) throws OgnlException {
        if ( name instanceof String )
            return super.getProperty(target, name);
        NSArray array = (NSArray)target;
        if ( name instanceof Number ) {
            return array.objectAtIndex(((Number)name).intValue());
        }
        if ( name instanceof DynamicSubscript ) {
            int len = array.count();
            switch (((DynamicSubscript)name).getFlag()) {
                case DynamicSubscript.FIRST:    return len > 0 ? array.objectAtIndex(0) : null;
                case DynamicSubscript.MID:      return len > 0 ? array.objectAtIndex(len/2) : null;
                case DynamicSubscript.LAST:     return len > 0 ? array.lastObject() : null;
                case DynamicSubscript.ALL:  return array.clone();
            }
        }
        throw new NoSuchPropertyException(target, name);
    }

    @Override
    public void setProperty(Object target, Object name, Object value) throws OgnlException {
        if (name instanceof String ) {
            super.setProperty(target, name, value);
            return;
        }
        NSMutableArray array = (NSMutableArray)target;
        if (name instanceof Number ) {
            array.replaceObjectAtIndex(value, ((Number)name).intValue());
            return;
        }
        if ( name instanceof DynamicSubscript ) {
            int len = array.count();
            switch ( ((DynamicSubscript)name).getFlag() )
            {
                case DynamicSubscript.FIRST:    if ( len > 0 )
                    array.replaceObjectAtIndex(value, 0); return;
                case DynamicSubscript.MID:      if ( len > 0 )
                    array.replaceObjectAtIndex(value, len/2); return;
                case DynamicSubscript.LAST:     if ( len > 0 )
                    array.replaceObjectAtIndex(value, len-1); return;
                case DynamicSubscript.ALL:
                    array.setArray( NSPropertyListSerialization.arrayForString( (String) value ) );
                    return;
            }
        }
        throw new NoSuchPropertyException( target, name );
    }
}
TOP

Related Classes of ognl.webobjects.NSArrayPropertyAccessor

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.