blob: 273fc8733ca91bb2b3958780820b00485185e8df [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014, 2018 Obeo and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
package org.eclipse.ocl.examples.standalone;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.apache.log4j.Logger;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.ocl.examples.standalone.validity.ValidateCommand;
/**
* This class executes an OCL evaluation of a model with one or several OCL
* file(s). This class is intended to be used only in Standalone mode. The
* result may be saved in a XMI file or exported as a HTML report.<br>
*
* @noextend This class is not intended to be subclassed by clients.
* @noinstantiate This class is not intended to be instantiated by clients.
*/
public class StandaloneCommandAnalyzer
{
private static final Logger logger = Logger.getLogger(StandaloneCommandAnalyzer.class);
private final @NonNull Map<String, StandaloneCommand> commands = new HashMap<String, StandaloneCommand>();
public StandaloneCommandAnalyzer(@NonNull StandaloneApplication standaloneApplication) {
addCommand(new HelpCommand(standaloneApplication));
addCommand(new ValidateCommand(standaloneApplication));
}
protected void addCommand(@NonNull StandaloneCommand command) {
commands.put(command.getName(), command);
}
public @NonNull Collection<StandaloneCommand> getCommands() {
return commands.values();
}
/**
* This launch the application using the entered arguments.
*
* @param args
* the application arguments.
* @return the application return code.
*/
public @Nullable StandaloneCommand parse(@NonNull String @NonNull [] args) {
if (args.length <= 0) {
logger.error("Missing command keyword");
return null;
}
StandaloneCommand command = commands.get(args[0]);
if (command == null) {
logger.error("Unknown command keyword '" + args[0] + "'");
return null;
}
return command;
}
}