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

io.airlift.command.model.CommandMetadata Maven / Gradle / Ivy

Go to download

Airline is a Java annotation-based framework for parsing Git like command line structures.

The newest version!
package io.airlift.command.model;

import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
import io.airlift.command.Accessor;
import io.airlift.command.Group;

import java.util.List;

public class CommandMetadata
{
    private final String name;
    private final String description;
    private final boolean hidden;
    private final List globalOptions;
    private final List groupOptions;
    private final List commandOptions;
    private final ArgumentsMetadata arguments;
    private final List metadataInjections;
    private final Class type;
    private final List groupNames;
    private final List groups;

    public CommandMetadata(String name,
                           String description,
                           boolean hidden, Iterable globalOptions,
                           Iterable groupOptions,
                           Iterable commandOptions,
                           ArgumentsMetadata arguments,
                           Iterable metadataInjections,
                           Class type,
                           List groupNames,
                           List groups)
    {
        this.name = name;
        this.description = description;
        this.hidden = hidden;
        this.globalOptions = ImmutableList.copyOf(globalOptions);
        this.groupOptions = ImmutableList.copyOf(groupOptions);
        this.commandOptions = ImmutableList.copyOf(commandOptions);
        this.arguments = arguments;
        this.metadataInjections = ImmutableList.copyOf(metadataInjections);
        this.type = type;
        this.groupNames = groupNames;
        this.groups = groups;
    }

    public String getName()
    {
        return name;
    }

    public String getDescription()
    {
        return description;
    }

    public boolean isHidden()
    {
        return hidden;
    }

    public List getAllOptions()
    {
        return ImmutableList.builder().addAll(globalOptions).addAll(groupOptions).addAll(commandOptions).build();

    }

    public List getGlobalOptions()
    {
        return globalOptions;
    }

    public List getGroupOptions()
    {
        return groupOptions;
    }

    public List getCommandOptions()
    {
        return commandOptions;
    }

    public ArgumentsMetadata getArguments()
    {
        return arguments;
    }

    public List getMetadataInjections()
    {
        return metadataInjections;
    }

    public Class getType()
    {
        return type;
    }

    public List getGroupNames()
    {
        return groupNames;
    }

    public List getGroups()
    {
        return groups;
    }

    @Override
    public String toString()
    {
        final StringBuilder sb = new StringBuilder();
        sb.append("CommandMetadata");
        sb.append("{name='").append(name).append('\'');
        sb.append(", description='").append(description).append('\'');
        sb.append(", globalOptions=").append(globalOptions);
        sb.append(", groupOptions=").append(groupOptions);
        sb.append(", commandOptions=").append(commandOptions);
        sb.append(", arguments=").append(arguments);
        sb.append(", metadataInjections=").append(metadataInjections);
        sb.append(", type=").append(type);
        sb.append('}');
        return sb.toString();
    }

    public static Function nameGetter()
    {
        return new Function()
        {
            public String apply(CommandMetadata input)
            {
                return input.getName();
            }
        };
    }

    public static Function typeGetter()
    {
        return new Function()
        {
            public Class apply(CommandMetadata input)
            {
                return input.getType();
            }
        };
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy