AutodefiningParameters.java :  » Database-ORM » MMBase » org » mmbase » util » functions » Java Open Source

Java Open Source » Database ORM » MMBase 
MMBase » org » mmbase » util » functions » AutodefiningParameters.java
/*

This software is OSI Certified Open Source Software.
OSI Certified is a certification mark of the Open Source Initiative.

The license (Mozilla version 1.0) can be read at the MMBase site.
See http://www.MMBase.org/license

*/

package org.mmbase.util.functions;

/**
 * If there is no Parameter definition array available you could try it with this specialization, which does not need one.
 * You loose al checking on type and availability. It should only be used as a last fall back and accompanied by warnings.
 *
 * @author Michiel Meeuwissen
 * @since  MMBase-1.7
 * @version $Id: AutodefiningParameters.java,v 1.13 2007/11/25 18:25:49 nklasens Exp $
 * @see Parameter
 */

public class AutodefiningParameters extends Parameters {
    //private static Logger log = Logging.getLoggerInstance(AutodefiningParameters.class);

    public AutodefiningParameters(Parameter<?>[] base) {
        super(base);
    }

    public AutodefiningParameters() {
        super(new Parameter[0]);
    }

    public boolean containsParameter(Parameter<?> param) {
        return true;
    }

    protected int define(Parameter param) {
        Parameter<Object>[] newDef = new Parameter[definition.length + 1];
        for (int i = 0; i < definition.length; i++) {
            newDef[i] = definition[i];
        }
        newDef[newDef.length - 1] = param;
        definition = newDef;
        toIndex++;
        return definition.length - 1;
    }

    protected int define(String param) {
        return define(new Parameter<Object>(param, Object.class));
    }

    public int indexOfParameter(Parameter parameter) {
        int index = super.indexOfParameter(parameter);
        if (index == -1) {
            return define(parameter);
        } else {
            return index;
        }
    }

    public int indexOfParameter(String parameterName) {
        int index = super.indexOfParameter(parameterName);
        if (index == -1) {
            return define(parameterName);
        } else {
            return index;
        }
    }

    public static void main(String[] args) {
        AutodefiningParameters pars = new AutodefiningParameters();
        for (String arg : args) {
            pars.setIfDefined(arg, "");
        }

        System.out.println("" + pars);
        for (String arg : args) {
            System.out.println(" " + arg + ": " + pars.indexOfParameter(arg));
        }
        for (String arg : args) {
            pars.set(arg, "X");
        }

        for (String arg : args) {
            System.out.println(" " + arg + ": " + pars.indexOfParameter(arg));
        }

    }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.