/*******************************************************************************
* Copyright (c) 2010, 2014, Embraer S.A., Budapest University of Technology and Economics
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Abel Hegedus - initial API and implementation
*******************************************************************************/
/**
*
*/
package hu.bme.mit.massif.communication.command;
import hu.bme.mit.massif.communication.ICommandEvaluator;
/**
* @author Abel Hegedus
*
*/
public class MatlabCommandFactory {
private static final String GET_COMMAND_NAME = "get";
private static final String GETFULLNAME_COMMAND_NAME = "getfullname";
private static final String FILEPARTS_COMMAND_NAME = "fileparts";
private static final String EXIST_COMMAND_NAME = "exist";
private static final String RUN_COMMAND_NAME = "run";
private static final String CD_COMMAND_NAME = "cd";
private static final String CLOSE_SYSTEM_COMMAND_NAME = "close_system";
private static final String SAVE_SYSTEM_COMMAND_NAME = "save_system";
private static final String LOAD_SYSTEM_COMMAND_NAME = "load_system";
private static final String FIND_SYSTEM_COMMAND_NAME = "find_system";
private static final String NEW_SYSTEM_COMMAND_NAME = "new_system";
private static final String OPEN_SYSTEM_COMMAND_NAME = "open_system";
private static final String ADD_PATH_COMMAND_NAME = "addpath";
private static final String DELETE_LINE_COMMAND_NAME = "delete_line";
private static final String ADD_LINE_COMMAND_NAME = "add_line";
private static final String DELETE_BLOCK_COMMAND_NAME = "delete_block";
private static final String ADD_BLOCK_COMMAND_NAME = "add_block";
private static final String SET_PARAM_COMMAND_NAME = "set_param";
private static final String GET_PARAM_COMMAND_NAME = "get_param";
private static final String CLEAR_LAST_ERROR_MESSAGE_COMMAND_NAME = "MException.last('reset')";
private static final String GET_LAST_ERROR_MESSAGE_COMMAND_NAME = "MException.last.message";
private ICommandEvaluator commandEvaluator;
public MatlabCommandFactory(ICommandEvaluator evaluator) {
this.commandEvaluator = evaluator;
}
public ICommandEvaluator getCommandEvaluator(){
return commandEvaluator;
}
public MatlabCommand getParam() {
return customCommand(GET_PARAM_COMMAND_NAME, 1);
}
public MatlabCommand setParam() {
return customCommand(SET_PARAM_COMMAND_NAME, 0);
}
public MatlabCommand addBlock() {
return customCommand(ADD_BLOCK_COMMAND_NAME, 1);
}
public MatlabCommand deleteBlock() {
return customCommand(DELETE_BLOCK_COMMAND_NAME, 0);
}
public MatlabCommand addLine() {
return customCommand(ADD_LINE_COMMAND_NAME, 1);
}
public MatlabCommand deleteLine() {
return customCommand(DELETE_LINE_COMMAND_NAME, 0);
}
public MatlabCommand addPath() {
return customCommand(ADD_PATH_COMMAND_NAME, 1);
}
public MatlabCommand newSytem() {
return customCommand(NEW_SYSTEM_COMMAND_NAME, 1);
}
public MatlabCommand openSytem() {
return customCommand(OPEN_SYSTEM_COMMAND_NAME, 1);
}
public MatlabCommand findSystem() {
return customCommand(FIND_SYSTEM_COMMAND_NAME, 1);
}
public MatlabCommand loadSytem() {
return customCommand(LOAD_SYSTEM_COMMAND_NAME, 0);
}
public MatlabCommand saveSystem() {
return customCommand(SAVE_SYSTEM_COMMAND_NAME, 1);
}
public MatlabCommand closeSystem() {
return customCommand(CLOSE_SYSTEM_COMMAND_NAME, 0);
}
public MatlabCommand cd() {
return customCommand(CD_COMMAND_NAME, 1);
}
public MatlabCommand run() {
return customCommand(RUN_COMMAND_NAME, 0);
}
public MatlabCommand exist() {
return customCommand(EXIST_COMMAND_NAME, 1);
}
public MatlabCommand fileParts() {
return customCommand(FILEPARTS_COMMAND_NAME, 3);
}
public MatlabCommand getFullName() {
return customCommand(GETFULLNAME_COMMAND_NAME, 1);
}
public MatlabCommand get() {
return customCommand(GET_COMMAND_NAME, 1);
}
public MatlabCommand clearLastErrorMessage() {
return customCommand(CLEAR_LAST_ERROR_MESSAGE_COMMAND_NAME, 0);
}
public MatlabCommand getLastErrorMessage() {
return customCommand(GET_LAST_ERROR_MESSAGE_COMMAND_NAME, 1);
}
public MatlabCommand customCommand(final String commandName, final int outputArgumentCount) {
return new MatlabCommand(commandEvaluator) {
@Override
public int getOutputArgumentCount() {
return outputArgumentCount;
}
@Override
public String getCommandName() {
return commandName;
}
};
}
}