All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.obdobion.argument.DefaultCLA Maven / Gradle / Ivy

package com.obdobion.argument;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Chris DeGreef
 * 
 */
public class DefaultCLA extends AbstractCLA
{
    public DefaultCLA(final char _keychar)
    {
        super(_keychar);
    }

    public DefaultCLA(final char _keychar, final String _keyword)
    {
        super(_keychar, _keyword);
    }

    public DefaultCLA(final String _keyword)
    {
        super(_keyword);
    }

    @Override
    public void asDefinedType (StringBuilder sb)
    {
        sb.append(CLAFactory.TYPE_DEFAULT);
    }

    /**
     * not called. A special case in the caller will redirect this call to the
     * one with the args as a parameter.
     */
    @Override
    public void applyDefaults ()
    {
        // intentionally left blank
    }

    @Override
    public String defaultInstanceClass ()
    {
        return "Object";
    }

    public void applyDefaults (char commandPrefix, final List> allKnownArgs)
    {
        for (final String argNameToReset : getValues())
        {
            if (argNameToReset == null)
                return;

            Token token = null;
            if (argNameToReset.trim().length() == 1)
                token = new Token(commandPrefix, commandPrefix + argNameToReset);
            else
                token = new Token(commandPrefix, "" + commandPrefix + commandPrefix + argNameToReset);

            final List> bestArgs = new ArrayList<>();
            CmdLine.matchingArgs(bestArgs, allKnownArgs, token, true);
            if (bestArgs.isEmpty())
                return;

            final ICmdLineArg target = bestArgs.get(0);
            target.useDefaults();
        }
    }

    @Override
    public String convert (final String valueStr, final boolean _caseSensitive, final Object target)
    {
        if (_caseSensitive)
            return valueStr;
        return valueStr.toLowerCase();
    }

    @Override
    protected void exportCommandLineData (final StringBuilder out, final int occ)
    {
        out.append('"');
        out.append(getValue(occ).replaceAll("\"", "\\\\\""));
        out.append('"');
    }

    @Override
    protected void exportNamespaceData (final String prefix, final StringBuilder out, final int occ)
    {
        out.append(prefix);
        out.append("=");
        out.append(getValue(occ));
        out.append("\n");
    }

    @Override
    protected void exportXmlData (final StringBuilder out, final int occ)
    {
        xmlEncode(getValue(occ), out);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy