Package er.directtoweb.components.misc

Source Code of er.directtoweb.components.misc.ERDConfirmMessage

/*
* 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.misc;

import java.util.Enumeration;

import org.apache.log4j.Logger;

import com.webobjects.appserver.WOContext;
import com.webobjects.appserver.WORequest;
import com.webobjects.eocontrol.EODataSource;
import com.webobjects.eocontrol.EOEnterpriseObject;
import com.webobjects.foundation.NSArray;
import com.webobjects.foundation.NSValidation;

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

/**
* Confirming an action template.<br />
*
*/
public class ERDConfirmMessage 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 ERDConfirmMessage(WOContext context) { super(context); }
   
    /** logging support */
    public final static Logger log = Logger.getLogger(ERDConfirmMessage.class);
   
    public String message;

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

    // Ok to do this, if they enter text then everything is A OK.
    @Override
    public void awake() { message = hasBinding("defaultMessage") ? (valueForBinding("defaultMessage") == null ? "" : (String)valueForBinding("defaultMessage")) : ""; }

    @Override
    public void reset() {
        super.reset();
        _confirmMessageKey = null;
        _list = null;
        _confirmMessageManditoryErrorMessage = null;
        _confirmMessageTextfieldSize = null;
        _confirmMessageTextfieldMaxlength = null;
        _confirmMessageExplanation = null;
    }
   
    private NSArray _list;
    public NSArray list() {
        if (_list == null) {
            if (object() != null && key() != null) {
                _list = (NSArray)objectKeyPathValue();
            } else if (object() != null) {
                _list = new NSArray(object());
            } else if (hasBinding("dataSource")) {
                _list = ERXEOControlUtilities.arrayFromDataSource((EODataSource)valueForBinding("dataSource"));
            } else {
                log.warn("ERConfirmMessage being used without the proper bindings");
                _list = NSArray.EmptyArray;
            }
            if (_list.count() == 0)
                log.warn("ERConfirmMessage: list set to zero");
        }
        return _list;
    }

    private String _confirmMessageKey = null;
    public String confirmMessageKey() {
        if (_confirmMessageKey == null)
            _confirmMessageKey = (String)valueForBinding("confirmMessageKey");
        return _confirmMessageKey;
    }

    private String _confirmMessageManditoryErrorMessage = null;
    public String  confirmMessageManditoryErrorMessage() {
        if (_confirmMessageManditoryErrorMessage == null) {
            _confirmMessageManditoryErrorMessage = (String)valueForBinding("confirmMessageManditoryErrorMessage");
            _confirmMessageManditoryErrorMessage = (_confirmMessageManditoryErrorMessage == null) ?
                "You must enter a <b>confirmation message</b>.":
                _confirmMessageManditoryErrorMessage;
        }
        return _confirmMessageManditoryErrorMessage;
    }
    private String _confirmMessageExplanation = null;
    public String confirmMessageExplanation() {
        if (_confirmMessageExplanation == null) {
            _confirmMessageExplanation = (String)valueForBinding("confirmMessageExplanation");
        }
        return _confirmMessageExplanation;
    }

    public boolean confirmMessageIsTextfield() {
        return booleanValueForBinding("confirmMessageIsTextfield");
    }

    private String _confirmMessageTextfieldSize = null;
    public String confirmMessageTextfieldSize() {
        if (_confirmMessageTextfieldSize == null) {
            _confirmMessageTextfieldSize = (String)valueForBinding("confirmMessageTextfieldSize");
            _confirmMessageTextfieldSize = (_confirmMessageTextfieldSize == null) ?
                "60":
                _confirmMessageTextfieldSize;
        }
        return _confirmMessageTextfieldSize;
    }
   
    private String _confirmMessageTextfieldMaxlength = null;
    public String confirmMessageTextfieldMaxlength() {
        if (_confirmMessageTextfieldMaxlength == null) {
            _confirmMessageExplanation = (String)valueForBinding("confirmMessageTextfieldMaxlength");
        }
        return _confirmMessageTextfieldMaxlength;
    }

    @Override
    public void takeValuesFromRequest(WORequest r, WOContext c) {
        super.takeValuesFromRequest(r, c);
        if (list().count() > 0) {
            if ((message == null || message.equals("")) && booleanValueForBinding("confirmMessageManditory")) {
                validationFailedWithException(new NSValidation.ValidationException(confirmMessageManditoryErrorMessage()), list().objectAtIndex(0),
                                              confirmMessageKey());
            } else if (message != null && !message.equals("")){
                if (confirmMessageKey() == null)
                    throw new IllegalStateException("You must specify a confirmMessageKey for this pageConfiguration!");
                if (log.isDebugEnabled())
                    log.debug("Setting message: " + message + " for key: " + confirmMessageKey() + " on eos: " + list());
                for (Enumeration e = list().objectEnumerator(); e.hasMoreElements();) {
                    EOEnterpriseObject eo = (EOEnterpriseObject)e.nextElement();
                    eo.takeValueForKeyPath(message, confirmMessageKey());
                }
            }
        } else {
            log.warn("List is zero.  If used in a confirm page template, need to set the object or datasource");
        }
    }
}
TOP

Related Classes of er.directtoweb.components.misc.ERDConfirmMessage

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.