// Path: bootique-job/src/main/java/io/bootique/job/value/Cron.java
// public class Cron {
// 
// 	private String expression;
// 
// 	public Cron(String expression) {
// 		this.expression = expression;
// 	}
// 
// 	@JsonValue
// 	public String getExpression() {
// 		return expression;
// 	}
// 
// 	@Override
// 	public boolean equals(Object o) {
// 		if (this == o) return true;
// 		if (o == null || getClass() != o.getClass()) return false;
// 		Cron cron = (Cron) o;
// 		return Objects.equals(expression, cron.expression);
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		if (expression == null) {
// 			return 0;
// 		}
// 
// 		return Objects.hash(expression);
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "Cron {" +
// 				"expression='" + expression + '\'' +
// 				'}';
// 	}
// }


import io.bootique.annotation.BQConfig;
import io.bootique.annotation.BQConfigProperty;
import io.bootique.job.value.Cron;
import io.bootique.value.Duration;
import java.util.Collections;
import java.util.Map;
import java.util.UUID;

    public TriggerDescriptor() {
        this.params = Collections.emptyMap();
        this.trigger = UUID.randomUUID().toString().replace("-", ""); // 32 chars
        this.initialDelay = new Duration(10 * 1000);
    }

    public String getJob() {
        return job;
    }

    @BQConfigProperty("Job that the trigger applies to.")
    public void setJob(String jobName) {
        this.job = jobName;
    }

    public String getTrigger() {
        return trigger;
    }

    @BQConfigProperty("Unique identifier, used in logging and reporting.")
    public void setTrigger(String triggerName) {
        this.trigger = triggerName;
    }

    public Cron getCron() {
        return cron;
    }

    @BQConfigProperty("Cron expression.")
// Path: bootique-job/src/main/java/io/bootique/job/value/Cron.java
// public class Cron {
// 
// 	private String expression;
// 
// 	public Cron(String expression) {
// 		this.expression = expression;
// 	}
// 
// 	@JsonValue
// 	public String getExpression() {
// 		return expression;
// 	}
// 
// 	@Override
// 	public boolean equals(Object o) {
// 		if (this == o) return true;
// 		if (o == null || getClass() != o.getClass()) return false;
// 		Cron cron = (Cron) o;
// 		return Objects.equals(expression, cron.expression);
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		if (expression == null) {
// 			return 0;
// 		}
// 
// 		return Objects.hash(expression);
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "Cron {" +
// 				"expression='" + expression + '\'' +
// 				'}';
// 	}
// }


// Path: bootique-job/src/main/java/io/bootique/job/scheduler/TriggerDescriptor.java
import io.bootique.annotation.BQConfig;
import io.bootique.annotation.BQConfigProperty;
import io.bootique.job.value.Cron;
import io.bootique.value.Duration;
import java.util.Collections;
import java.util.Map;
import java.util.UUID;


    public TriggerDescriptor() {
        this.params = Collections.emptyMap();
        this.trigger = UUID.randomUUID().toString().replace("-", ""); // 32 chars
        this.initialDelay = new Duration(10 * 1000);
    }

    public String getJob() {
        return job;
    }

    @BQConfigProperty("Job that the trigger applies to.")
    public void setJob(String jobName) {
        this.job = jobName;
    }

    public String getTrigger() {
        return trigger;
    }

    @BQConfigProperty("Unique identifier, used in logging and reporting.")
    public void setTrigger(String triggerName) {
        this.trigger = triggerName;
    }

    public Cron getCron() {
        return cron;
    }

    @BQConfigProperty("Cron expression.")
    public void setCron(Cron cronExpression) {