Package er.directtoweb.components.relationships

Source Code of er.directtoweb.components.relationships.ERD2WEditSortedToManyFault

//
// ERD2WEditSortedToManyRelationship.java: Class file for WO Component 'ERD2WEditSortedToManyRelationship'
// Project ERDirectToWeb
//
// Created by bposokho on Thu Sep 19 2002
//
package er.directtoweb.components.relationships;
import org.apache.log4j.Logger;

import com.webobjects.appserver.WOContext;
import com.webobjects.directtoweb.D2WContext;
import com.webobjects.directtoweb.D2WEditToManyFault;
import com.webobjects.directtoweb.ERD2WContext;
import com.webobjects.eoaccess.EOEntity;
import com.webobjects.eoaccess.EOUtilities;
import com.webobjects.foundation.NSArray;

import er.extensions.foundation.ERXArrayUtilities;
import er.extensions.foundation.ERXValueUtilities;

/**
* @d2wKey allowCollapsing
* @d2wKey destinationEntityName
* @d2wKey showIndex
* @d2wKey browserSize
* @d2wKey maxBrowserSize
*/
public class ERD2WEditSortedToManyFault extends D2WEditToManyFault {
  /**
   * Do I need to update serialVersionUID?
   * See section 5.6 <cite>Type Changes Affecting Serialization</cite> on page 51 of the
   * <a href="http://java.sun.com/j2se/1.4/pdf/serial-spec.pdf">Java Object Serialization Spec</a>
   */
  private static final long serialVersionUID = 1L;

    public static final Logger log = Logger.getLogger(ERD2WEditSortedToManyFault.class);

    public ERD2WEditSortedToManyFault(WOContext context) {
        super(context);
    }

    /**
     * Computes the destination entity that we're editing.  Hits the "destinationEntityName"
     * rule.
     *
     * @return destination entity
     */
    public EOEntity destinationEntity() {
        final String destinationEntityName = (String)d2wContext().valueForKey("destinationEntityName");
        EOEntity result = null;

        if ( destinationEntityName != null )
            result = EOUtilities.entityNamed(object().editingContext(), destinationEntityName);

        return result;
    }

    public String indexKey(){
        final EOEntity destinationEntity = destinationEntity();
        String indexKey = null;

        if ( destinationEntity != null ) {
            final String isSortedJoinValue = (String)destinationEntity.userInfo().valueForKey("isSortedJoinEntity");

            if ( "true".equals(isSortedJoinValue) ) {
                synchronized (_context) {
                    _context.setEntity(destinationEntity);
                    indexKey = (String)_context.valueForKey("indexKey");
                }
            }
        }

        return indexKey;
    }


    private static D2WContext _context=ERD2WContext.newContext();
    public NSArray sortedBrowserList() {
        NSArray result = browserList();
        if (indexKey()!=null)
            result = ERXArrayUtilities.sortedArraySortedWithKey(result,
                                                                indexKey(),
                                                                null);

        return result;
    }

    @Override
    public String browserStringForItem(){
        String result = super.browserStringForItem();
        if(showIndex()){
            Integer index = (Integer)browserItem.valueForKey(indexKey());
            if(index != null){
                result = index.intValue() + ". " + result;
            }
        }
        return result;
    }

    public boolean showIndex(){
        return ERXValueUtilities.booleanValueWithDefault(d2wContext().valueForKey("showIndex"), false);
    }

    public int browserSize() {
        int browserSize = 10// reasonable default value
        int maxBrowserSize = 20;

        String contextSize = (String)d2wContext().valueForKey("browserSize");
        if(contextSize != null) {
            try {
                browserSize = Integer.parseInt(contextSize);
            } catch(NumberFormatException nfe) {
                log.error("browserSize not a number: " + browserSize);
            }
        }
        String maxContextSize = (String)d2wContext().valueForKey("maxBrowserSize");
        if(maxContextSize != null) {
            try {
                maxBrowserSize = Integer.parseInt(maxContextSize);
            } catch(NumberFormatException nfe) {
                log.error("maxBrowserSize not a number: " + maxBrowserSize);
            }
        }

        NSArray sortedBrowserList = sortedBrowserList();
        if(sortedBrowserList != null) {
            int count = sortedBrowserList.count();
            browserSize = (count > browserSize && count < maxBrowserSize) ? count : browserSize;
        }
        return browserSize;
    }
}
TOP

Related Classes of er.directtoweb.components.relationships.ERD2WEditSortedToManyFault

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.