/**
 * Copyright (c) 2025 SoftCorporation LLC. All rights reserved.
 *
 * The Software License, Version 1.0
 *
 * SoftCorporation LLC. grants you ("Licensee") a non-exclusive, royalty free,
 * license to use, modify and redistribute this software in source and binary
 * code form, provided that the following conditions are met:
 *
 * 1. The end-user documentation included with the redistribution,
 *    if any, must include the following acknowledgment:
 *       "This product includes software developed by the
 *        SoftCorporation LLC. (http://www.softcorporation.com)."
 *    Alternately, this acknowledgment may appear in the software itself,
 *    if and wherever such third-party acknowledgments normally appear.
 *
 * 2. This software and SoftCorporation name must not be used to
 *    promote products derived from the software without prior
 *    written permission. For written permission, please contact
 *    info@softcorporation.com.
 *
 * This software is provided "AS IS," without a warranty of any kind.
 * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
 * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
 * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
 * IN NO EVENT SHALL THE SOFTCORPORATION BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION).
 *
 */
package com.softcorporation.sandi.index.model;

import java.io.Serializable;
import java.time.LocalDateTime;

public class ScheduleRequest implements Serializable {

    private static final long serialVersionUID = 3863230364206979579L;
    
	private String requestId;
    private String clientId;
    private String jobId;
    private String jobType;
    private String cron;
    private String directory;
    private String fileExtensions;
    private boolean forceReindexing;
    private LocalDateTime scheduledTime;
    private LocalDateTime createdTime;

    public ScheduleRequest() {
    	createdTime = LocalDateTime.now();
    }

    public ScheduleRequest(String requestId, String clientId, String jobId, String jobType, String cron, 
    		String directory, String fileExtensions, boolean forceReindexing, LocalDateTime scheduledTime) {
    	this();
        this.requestId = requestId;
        this.clientId = clientId;
        this.jobId = jobId;
        this.jobType = jobType;
        this.cron = cron;
        this.directory = directory;
        this.fileExtensions = fileExtensions;
        this.forceReindexing = forceReindexing;
        this.scheduledTime = scheduledTime;
    }

    public String getRequestId() {
        return requestId;
    }

    public void setRequestId(String requestId) {
        this.requestId = requestId;
    }

    public String getClientId() {
        return clientId;
    }

    public void setClientId(String clientId) {
        this.clientId = clientId;
    }

    public String getJobId() {
        return jobId;
    }

    public void setJobId(String jobId) {
        this.jobId = jobId;
    }

    public String getJobType() {
        return jobType;
    }

    public void setJobType(String jobType) {
        this.jobType = jobType;
    }

    public String getCron() {
        return cron;
    }

    public void setCron(String cron) {
        this.cron = cron;
    }

    public boolean getForceReindexing() {
        return forceReindexing;
    }

    public void setforceReindexing(boolean forceReindexing) {
        this.forceReindexing = forceReindexing;
    }

    public String getFileExtensions() {
        return fileExtensions;
    }

    public void setFileExtensions(String fileExtensions) {
        this.fileExtensions = fileExtensions;
    }
    
    public String getDirectory() {
        return directory;
    }

    public void setDirectory(String directory) {
        this.directory = directory;
    }

    public LocalDateTime getScheduledTime() {
        return scheduledTime;
    }

    public void setScheduledTime(LocalDateTime scheduledTime) {
        this.scheduledTime = scheduledTime;
    }

    public LocalDateTime getCreatedTime() {
        return createdTime;
    }

    public void setCreatedTime(LocalDateTime createdTime) {
        this.createdTime = createdTime;
    }

    @Override
    public String toString() {
        return "ScheduleRequest{" +
                "requestId='" + requestId + '\'' +
                ", clientId='" + clientId + '\'' +
                ", jobId='" + jobId + '\'' +
                ", jobType='" + jobType + '\'' +
                ", cron='" + cron + '\'' +
                ", directory='" + directory + '\'' +
                ", fileExtensions='" + fileExtensions + '\'' +
                ", forceReindexing='" + forceReindexing + '\'' +
                ", scheduledTime=" + scheduledTime +
                '}';
    }
}