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

org.romaframework.aspect.console.ClassCommands Maven / Gradle / Ivy

The newest version!
package org.romaframework.aspect.console;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.romaframework.aspect.console.feature.ConsoleClassFeatures;
import org.romaframework.core.schema.SchemaAction;
import org.romaframework.core.schema.SchemaClass;

public class ClassCommands {

	private SchemaClass																schemaClass;
	private Map>	actionsMap	= new HashMap>();
	private List												actions			= new ArrayList();

	public ClassCommands(SchemaClass schemaClass) {
		for (SchemaAction action : schemaClass.getActions().values()) {
			ActionCommand comm = new ActionCommand(action, this);
			Map maps = actionsMap.get(comm.getName());
			if (maps == null) {
				maps = new HashMap();
				actionsMap.put(comm.getName(), maps);
			}
			maps.put(comm.getAction().getParameterNumber(), comm);
			actions.add(comm);
		}
		this.schemaClass = schemaClass;
	}

	public List getActions() {
		return actions;
	}

	public SchemaClass getSchemaClass() {
		return schemaClass;
	}

	public Map getActions(String alias) {
		return actionsMap.get(alias);
	}

	public ActionCommand getAction(String alias, Integer nArgs) {
		Map maps = actionsMap.get(alias);
		if (maps != null) {
			return maps.get(nArgs);
		}
		return null;
	}

	public String getName() {
		String name;
		if (this.schemaClass.isSettedFeature(ConsoleClassFeatures.NAME)) {
			name = this.schemaClass.getFeature(ConsoleClassFeatures.NAME);
		} else {
			name = this.schemaClass.getName();
		}
		return name;
	}

	public ActionCommand getDefaultAction(String[] args, int i) {
		String defaultAction = getSchemaClass().getFeature(ConsoleClassFeatures.DEFAULT_ACTION);
		ActionCommand commandAction = getAction(defaultAction, i);
		if (commandAction == null) {
			Map maps = actionsMap.get(defaultAction);
			commandAction = maps.get(1);
			if (commandAction != null && !commandAction.getAction().getParameterIterator().next().getType().isAssignableAs(String[].class)) {
				return null;
			}
		}
		return commandAction;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy