package cz.cuni.mff.d3s.been.web.model; import java.net.UnknownHostException; import java.util.List; import cz.cuni.mff.d3s.been.core.task.*; /** * This class is used to initialize TaskDescriptor from bpk. The right meaning * of term 'initialization' is to replace null values in given task descriptor * by empty structures. The main purpose of this pseudo-initialization is to * prepare task descriptor for using in Tapestry forms. */ public class TaskDescriptorInitializer { /** * If debug port is not specified in given task descriptor, this value will be * used as default value. */ public static final int DEFAULT_DEBUG_PORT = 9000; /** * If debug mode is not specified in given task descriptor, this value will be * used as default value. */ public static final ModeEnum DEFAULT_DEBUG_MODE = ModeEnum.NONE; /** * If task exclusivity is not specified in given task descriptor, this value * will be used as default value. */ public static final TaskExclusivity DEFAULT_TASK_EXCLUSIVITY = TaskExclusivity.NON_EXCLUSIVE; /** * Initialize given task descriptor. String list of arguments and String list * of java opts are transformed to Lists of key value pair. * * @param taskDescriptor * task descriptor which will be initialized * @param args * list of key value pairs to which all args from task descriptor * will be inserted * @param javaOpts * list of key value pairs to which all java opts from task * descriptor will be inserted */ public static void initialize(TaskDescriptor taskDescriptor, List<KeyValuePair> args, List<KeyValuePair> javaOpts) { if (!taskDescriptor.isSetArguments()) { taskDescriptor.setArguments(new ObjectFactory().createArguments()); } if (!taskDescriptor.isSetProperties()) { taskDescriptor.setProperties(new ObjectFactory().createTaskProperties()); } if (!taskDescriptor.isSetJava()) { taskDescriptor.setJava(new ObjectFactory().createJava()); } if (!taskDescriptor.getJava().isSetJavaOptions()) { taskDescriptor.getJava().setJavaOptions(new ObjectFactory().createJavaOptions()); } if (!taskDescriptor.isSetExclusive()) { taskDescriptor.setExclusive(DEFAULT_TASK_EXCLUSIVITY); } if (!taskDescriptor.isSetFailurePolicy()) { taskDescriptor.setFailurePolicy(new ObjectFactory().createFailurePolicy()); } if (!taskDescriptor.isSetDebug()) { taskDescriptor.setDebug(new ObjectFactory().createDebug()); taskDescriptor.getDebug().setMode(DEFAULT_DEBUG_MODE); try { taskDescriptor.getDebug().setHost(java.net.InetAddress.getLocalHost().getHostAddress()); } catch (UnknownHostException e) { // this is only default initialization, we can simply ignore this exception } // we can set the port because mode is DEBUG by default taskDescriptor.getDebug().setPort(DEFAULT_DEBUG_PORT); } if (!taskDescriptor.isSetHostRuntimes()) { taskDescriptor.setHostRuntimes(new HostRuntimes()); } // insert all args and java opts to given lists of key value pais for (int i = 0; i < taskDescriptor.getArguments().getArgument().size(); i++) { args.add(new KeyValuePair(i, taskDescriptor.getArguments().getArgument().get(i))); } for (int i = 0; i < taskDescriptor.getJava().getJavaOptions().getJavaOption().size(); i++) { javaOpts.add(new KeyValuePair(i, taskDescriptor.getJava().getJavaOptions().getJavaOption().get(i))); } } }