/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.components.cluster.common;
import java.util.HashMap;
import java.util.Map;
import de.rcenvironment.core.component.api.ComponentConstants;
import de.rcenvironment.core.utils.common.StringUtils;
/**
* Common constants for cluster component.
*
* @author Doreen Seider
*/
public final class ClusterComponentConstants {
/** Configuration key. */
public static final String CONFIG_KEY_QUEUINGSYSTEM = "queuingSystem";
/** Configuration key. */
public static final String CONFIG_KEY_PATHTOQUEUINGSYSTEMCOMMANDS = "pathToQueuingSystemCommands";
/** Configuration key. */
public static final String KEY_IS_SCRIPT_PROVIDED_WITHIN_INPUT_DIR = "isScriptProvided";
/** Input name. */
public static final String INPUT_JOBCOUNT = "Job count";
/** Input name. */
public static final String INPUT_JOBINPUTS = "Job inputs";
/** Output name. */
public static final String OUTPUT_JOBOUTPUTS = "Job outputs";
/** Input name. */
public static final String INPUT_SHAREDJOBINPUT = "Shared job input";
/** Configuration key. */
public static final String CLUSTER_FETCHING_FAILED = "cluster fetching failed";
/** Component ID. */
public static final String COMPONENT_ID = ComponentConstants.COMPONENT_IDENTIFIER_PREFIX + "cluster";
/** Component ID. */
public static final String[] COMPONENT_IDS = new String[] { COMPONENT_ID,
"de.rcenvironment.components.cluster.execution.ClusterComponent_Cluster" };
/** Name of the job script. */
public static final String JOB_SCRIPT_NAME = "run_cluster_job.sh";
private ClusterComponentConstants() {}
/**
* Converts the plain property string (paths to the queuing system commands) into a map (key is command, value is path).
* @param paths paths as property string. format: command=path;command=path;...
* @return map with commands and their paths
*/
public static Map<String, String> extractPathsToQueuingSystemCommands(String paths) {
Map<String, String> pathMap = new HashMap<>();
for (String path : paths.split(";")) {
if (!path.isEmpty()) {
String[] keyValue = path.split("=");
if (keyValue.length == 2) {
pathMap.put(keyValue[0], keyValue[1]);
}
}
}
return pathMap;
}
/**
* Put map (key is command, value is path) to a plain property string (paths to the queuing system commands).
* @param paths map with commands and their paths
* @return property string. format: command=path;command=path;...
*/
public static String getCommandsPathsAsPropertyString(Map<String, String> paths) {
StringBuilder builder = new StringBuilder();
for (String command : paths.keySet()) {
builder.append(StringUtils.format("%s=%s;", command, paths.get(command)));
}
return builder.toString();
}
}