package org.n3r.quartz.glass.job.annotation;
import org.codehaus.jackson.annotate.JsonProperty;
import org.n3r.quartz.glass.log.joblog.JobLogLevel;
import org.n3r.quartz.glass.util.Arrays;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
/**
* Bean that can be used in jsp files and in json serialisations.
*
* @author damien bourdette
*/
public class JobArgumentBean {
public static final String LOG_LEVEL_ARGUMENT = "logLevel";
@JsonProperty
String name;
@JsonProperty
boolean required;
@JsonProperty
String description;
@JsonProperty
String[] sampleValues;
public static List<JobArgumentBean> fromClass(Class<?> jobClass) {
if (jobClass == null) return null;
List<JobArgumentBean> jobArguments = new ArrayList<JobArgumentBean>();
for (Field field : jobClass.getDeclaredFields()) {
JobArgument argument = field.getAnnotation(JobArgument.class);
if (argument != null) jobArguments.add(new JobArgumentBean(field.getName(), argument));
}
jobArguments.add(new JobArgumentBean(LOG_LEVEL_ARGUMENT, false, "Log level used for this job.",
new String[]{JobLogLevel.DEBUG.name(), JobLogLevel.INFO.name(), JobLogLevel.WARN.name(), JobLogLevel.ERROR.name()}));
return jobArguments;
}
public JobArgumentBean() {
}
public JobArgumentBean(String name, JobArgument argument) {
this.name = name;
required = argument.required();
description = argument.description();
sampleValues = Arrays.copyOf(argument.sampleValues());
}
public JobArgumentBean(String name, boolean required, String description, String[] sampleValues) {
this.name = name;
this.required = required;
this.description = description;
this.sampleValues = Arrays.copyOf(sampleValues);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isRequired() {
return required;
}
public void setRequired(boolean required) {
this.required = required;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String[] getSampleValues() {
return Arrays.copyOf(sampleValues);
}
public void setSampleValues(String[] sampleValues) {
this.sampleValues = Arrays.copyOf(sampleValues);
}
}