Package er.directtoweb.components.relationships

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

/*
* 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.  */
package er.directtoweb.components.relationships;

import org.apache.log4j.Logger;

import com.webobjects.appserver.WOComponent;
import com.webobjects.appserver.WOContext;
import com.webobjects.directtoweb.D2W;
import com.webobjects.directtoweb.ListPageInterface;
import com.webobjects.eocontrol.EOEnterpriseObject;
import com.webobjects.foundation.NSArray;

import er.directtoweb.components.ERDCustomEditComponent;
import er.extensions.eof.ERXEOControlUtilities;

/**
* Generic link component used to view a list.<br />
* <br />
*
* Uses the key "displayNameForLinkToViewList" now to provide a different name
* instead of the entity name if set in the rules
*
* @binding list the list to show
* @binding object object to get list from
* @binding key keypath to get list from object
* @binding listConfigurationName name of the page configuration to jump to
* @binding entityName
* @d2wKey displayNameForLinkToViewList
*/
public class ERDLinkToViewList extends ERDCustomEditComponent {
  /**
   * 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 ERDLinkToViewList(WOContext context) { super(context); }
   
    public static final Logger log = Logger.getLogger(ERDLinkToViewList.class);

    @Override
    public boolean isStateless() { return true; }
    @Override
    public boolean synchronizesVariablesWithBindings() { return false; }

    @Override
    public void reset() {
        super.reset();
        _list = null;
    }

    private NSArray _list;
    public NSArray list() {
        if (_list==null) {
            if (hasBinding("list"))
                _list=(NSArray)valueForBinding("list");
            else
                _list=(NSArray)objectPropertyValue();
        }
        return _list;
    }

    public WOComponent view() {
      String listConfigurationName = (String)valueForBinding("listConfigurationName");
        ListPageInterface ipi = (ListPageInterface)D2W.factory().pageForConfigurationNamed(listConfigurationName, session());
        ipi.setNextPage(context().page());
        ipi.setDataSource(ERXEOControlUtilities.dataSourceForArray(list()));
        return (WOComponent)ipi;
    }

    public String linkName() {
      String displayName = (String) d2wContext().valueForKey("displayNameForLinkToViewList");
      if (displayName == null) {
        displayName = (String) valueForBinding("entityName");
        if(displayName == null && !listIsEmpty() && list().lastObject() instanceof EOEnterpriseObject) {
          displayName = ((EOEnterpriseObject)list().lastObject()).entityName();
        } else {
          displayName = "";
        }
      }
      return displayName;
    }
   
    public boolean listIsEmpty() {
        return list()==null || list().count()==0;
    }
}
TOP

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

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.