/**
 * 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.base.util;

/**
 * Constants
 */
public final class Constants {
	
    /**
     * Private constructor
     */
    private Constants() {
    }

    /**
     * The software version.
     * 
     * 0.0.1 - Initial version.
     * 0.1.0 - First upload, BEIR tests
     * 0.2.0 - Client configurable services
     * 0.3.0 - OpenAI Services
     * 0.4.0 - Added Typeahead
     */
    public static final String APPLICATION_VERSION = "0.4.4";

    /**
     * Java Virtual Machine version.
     */
    public static final String JAVA_VERSION = System.getProperty("java.version");

    /**
     * TIME_ZONE_DEFAULT String.
     */
    public static final String TIME_ZONE_DEFAULT = "UTC";
       
    /**
     * TRUE String.
     */
    public static final String TRUE = "true";

    /**
     * FALSE String.
     */
    public static final String FALSE = "false";

    /**
     * STATUS_SUCCESS String.
     */
    public static final String STATUS_SUCCESS = "SUCCESS";

    /**
     * STATUS_ERROR String.
     */
    public static final String STATUS_ERROR = "ERROR";

    /**
     * MISSING String.
     */
    public static final String MISSING = "MISSING";

    /**
     * Clients collection name String.
     */
    public static final String CLIENTS_COLLECTION = "_clients";
    
    /**
     * Clients default configuration name String.
     */
    public static final String CLIENTS_CONFIGURATION = "_clients";
    
    /**
     * Documents default collection name String.
     */
    public static final String DEFAULT_COLLECTION = "_documents";
    
    /**
     * Documents default configuration name String.
     */
    public static final String DEFAULT_CONFIGURATION = "_documents";
    
    /**
     * Documents typeahead configuration name String.
     */
    public static final String TYPEAHEAD_CONFIGURATION = "_typeahead";
    
    /**
     * ENCODING String.
     */
    public static final String ENCODING = "UTF-8";
    
    /**
     * AND String.
     */
    public static final String AND = "AND";
    
    /**
     * OR String.
     */
    public static final String OR = "OR";
    
    /**
     * PATH String.
     */
    public static final String PATH = "_path";

    /**
     * NEST String.
     */
    public static final String NEST = "_nest";

    /**
     * NEST_PARENT String.
     */
    public static final String NEST_PARENT = "parent";

    /**
     * NEST_CHILD String.
     */
    public static final String NEST_CHILD = "child";

    /**
     * PARENT String.
     */
    public static final String PARENT = "_parent";
    
    /**
     * _ID String.
     */
    public static final String _ID = "_id";
    
    /**
     * ROOT String.
     */
    public static final String ROOT = "_root_";
    
    /**
     * ID String.
     */
    public static final String ID = "id";
    
    /**
     * URI String.
     */
    public static final String URI = "uri";
    
    /**
     * FIELD_ID String.
     */
    public static final String FIELD_ID = "id";
    
    /**
     * CHUNKS String.
     */
    public static final String CHUNKS = "_chunks";
    
    /**
     * CHUNK_FIELD String.
     */
    public static final String CHUNK_FIELD = "_field";
    
    /**
     * CHUNK_BEGIN String.
     */
    public static final String CHUNK_BEGIN = "_begin";
    
    /**
     * CHUNK_END String.
     */
    public static final String CHUNK_END = "_end";
    
    /**
     * CHUNK_TYPE String.
     */
    public static final String CHUNK_TYPE = "_type";
    
    /**
     * CHUNK_TEXT String.
     */
    public static final String CHUNK_TEXT = "_text";
    
    /**
     * SCORE String.
     */
    public static final String SCORE = "score";
    
    /**
     * RERANK_SCORE String.
     */
    public static final String RERANK_SCORE = "rscore";
    
    /**
     * FIELD_CLIENT_ID String.
     */
    public static final String FIELD_CLIENT_ID = "clientId";
    
    /**
     * FIELD_NAME String.
     */
    public static final String FIELD_NAME = "name";
    
    /**
     * FIELD_COLLECTION String.
     */
    public static final String FIELD_COLLECTION = "collection";
    
    /**
     * FIELD_LEGACY String.
     */
    public static final String FIELD_LEGACY = "legacy";
    
    /**
     * FIELD_ACTIVE String.
     */
    public static final String FIELD_ACTIVE = "active";
    
    /**
     * FIELD_SYNONYMS String.
     */
    public static final String FIELD_SYNONYMS = "synonyms";
    
    /**
     * CLIENT_SEARCH_PROCESSING String.
     */
    public static final String CLIENT_SEARCH_PROCESSING = "client_search_processing";
    
    /**
     * CLIENT_INDEX_PROCESSING String.
     */
    public static final String CLIENT_INDEX_PROCESSING = "client_index_processing";
    
    /**
     * Precision level high
     */
    public static final String PRECISION_HIGH = "high";
    
    /**
     * Precision level medium
     */
    public static final String PRECISION_MEDIUM = "medium";
    
    /**
     * Precision level low
     */
    public static final String PRECISION_LOW = "low";
    
    /**
     * TYPE_HIGH String.
     */
    public static final String TYPE_HIGH = "high";
    
    /**
     * TYPE_LOW String.
     */
    public static final String TYPE_LOW = "low";
    
    /**
     * TYPE_CONTENT String.
     */
    public static final String TYPE_CONTENT = "content";
    
    /**
     * FIELDS_HIGH String.
     */
    public static final String FIELDS_HIGH = "fields_high";
    
    /**
     * FIELDS_LOW String.
     */
    public static final String FIELDS_LOW = "fields_low";
    
    /**
     * FIELDS_CONTENT String.
     */
    public static final String FIELDS_CONTENT = "fields_content";
    
    /**
     * EMB_SERVICE_URL String.
     */
    public static final String EMB_SERVICE_URL = "emb_service_url";
    
    /**
     * LLM_SERVICE_URL String.
     */
    public static final String LLM_SERVICE_URL = "llm_service_url";
    
    /**
     * RER_SERVICE_URL String.
     */
    public static final String RER_SERVICE_URL = "rer_service_url";
    
    /**
     * CLI_SERVICE_URL String.
     */
    public static final String CLI_SERVICE_URL = "cli_service_url";
    
    /**
     * NLP_SERVICE_URL String.
     */
    public static final String NLP_SERVICE_URL = "nlp_service_url";

    /**
     * CLS_SERVICE_URL String.
     */
    public static final String CLS_SERVICE_URL = "cls_service_url";
    
    /**
     * TEXT_HIGH String.
     */
    public static final String TEXT_HIGH = "_text_high";
    
    /**
     * TEXT_LOW String.
     */
    public static final String TEXT_LOW = "_text_low";
    
    /**
     * TEXT_CONTENT String.
     */
    public static final String TEXT_CONTENT = "_text_content";

    /**
     * EMBEDDING String.
     */
    public static final String EMBEDDING = "_embs";
        
    /**
     * EMB String.
     */
    public static final String EMB = "_emb";
    
    /**
     * JOB_TYPE_JSON Job type: Each file is single json document on hdd or url
     */
    public static final String JOB_TYPE_JSON = "JSON";
	  
    /**
     * JOB_TYPE_JSONL Job type: Each line in jsonl file on hdd or url is a json document
     */
    public static final String JOB_TYPE_JSONL = "JSONL";
    
    /**
     * JOB_TYPE_TXT Job type: Each file on hdd or url is a text document
     */
    public static final String JOB_TYPE_TXT = "TXT";
    
    /**
     * JOB_TYPE_TXTL Job type: Each line in txtl file on hdd or url is a text document
     */
    public static final String JOB_TYPE_TXTL = "TXTL";
    
    /**
     * JOB_TYPE_EXCEL Job type: Each line in excel file on hdd or url is a document
     */
    public static final String JOB_TYPE_EXCEL = "EXCEL";
    
    /**
     * JOB_TYPE_SITE Job type: Each file is a document of the web site (diff types)
     */
    public static final String JOB_TYPE_SITE = "SITE";
    
    /**
     * JOB_TYPE_SITEMAP Job type: Each entry in the sitemap on hdd or url has url of the document
     */
    public static final String JOB_TYPE_SITEMAP = "SITEMAP";
    
    /**
     * JOB_TYPE_JSONMAP Job type: Each entry in json on hdd or url has url of the document
     */
    public static final String JOB_TYPE_JSONMAP = "JSONMAP";
    
    /**
     * UUID String.
     */
    public static final String UUID = "_uuid";
    
    /**
     * RESULT String.
     */
    public static final String RESULT = "result";

    /**
     * DOCUMENT String.
     */
    public static final String DOCUMENT0 = "document";

    /**
     * RANK String.
     */
    public static final String RANK = "rank";

    /**
     * CLIENT String.
     */
    public static final String CLIENT = "client";
    
    /**
     * DATA String.
     */
    public static final String DATA = "data";
    
    /**
     * CLIENT_ID String.
     */
    public static final String CLIENT_ID = "_clientId";
        
    /**
     * HIGHLIGHT String.
     */
    public static final String HIGHLIGHT = "_highlight";
    
    /**
     * INDEXED String.
     */
    public static final String INDEXED = "_indexed";

    /**
     * CREATED String.
     */
    public static final String CREATED = "_created";
    
    /**
     * TA_PREFIX String.
     */
    public static final String TA_PREFIX = "_ta_";
    
    /**
     * METADATA String.
     */
    public static final String METADATA = "metadata";
    
    /**
     * URI
     */
    public static final String URI_FIELD = "uri";

    /**
     * URL
     */
    public static final String URL_FIELD = "url";

    /**
     * checksum
     */
    public static final String CHECKSUM_FIELD = "checksum";

    /**
     * fileName
     */
    public static final String FILENAME_FIELD = "fileName";

    /**
     * content
     */
    public static final String CONTENT_FIELD = "content";

    /**
     * retry
     */
    public static final String RETRY = "retry";

    /**
     * timestamp
     */
    public static final String TIMESTAMP = "timestamp";

    /**
     * Status field
     */
    public static final String STATUS_FIELD = "_status";

    /**
     * Status new
     */
    public static final String STATUS_NEW = "new";

    /**
     * Status update
     */
    public static final String STATUS_UPDATE = "update";

    /**
     * Status processed
     */
    public static final String STATUS_PROCESSED = "processed";

    /**
     * Status indexed
     */
    public static final String STATUS_INDEXED = "indexed";

    /**
     * Status deleted
     */
    public static final String STATUS_DELETED = "deleted";

    /**
     * Status retry
     */
    public static final String STATUS_RETRY = "retry";

    /**
     * Status error
     */
    public static final String STATUS_ERROR_PERMANENT = "error";

    /**
     * Sandi.
     */
    public static final String SANDI = "sandi";

    /**
     * Sandi home directory.
     */
    public static final String DIR_HOME = "/sandi/";

    /**
     * Data directory.
     */
    public static final String DIR_DATA = DIR_HOME + "data/";

    /**
     * Sandi logs directory.
     */
    public static final String DIR_LOGS = DIR_HOME + "logs/";

    /**
     * Sandi temp directory.
     */
    public static final String DIR_TMP = DIR_HOME + "tmp/";

    /**
     * Default UTF-8 Encoding.
     */
    public static final String ENCODING_DEFAULT = "UTF-8";

    /**
     * Date format.
     */
    public static final String DATE_FORMAT = "yyyy-MM-dd";

    /**
     * Standard DB date format.
     */
    public static final String DATE_FORMAT_STANDARD = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";

    /**
     * Solr date format
     */
    public static final String SOLR_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
    
    /**
     * Max page size
     */
    public static final int MAX_PAGE_SIZE = 10000;

    /**
     * SYNONYMS_COLLECTION String
     */
    public static final String SYNONYMS_COLLECTION = "_synonyms";

    /**
     * WORDS_PREFIX String
     */
    public static final String WORDS_PREFIX = "words_";
    
    /**
     * WORD String
     */
    public static final String WORD = "word";
    
    /**
     * SYNONYMS String
     */
    public static final String SYNONYMS = "synonyms";
       
    /**
     * SYNONYMS_NAME String
     */
    public static final String SYNONYMS_NAME = "name";
       
    /**
     * SYNONYMS_EMB String
     */
    public static final String SYNONYMS_EMB = "emb";
        
    /**
     * NO_GREAT_MATCHES message
     */
    public static final String NO_GREAT_MATCHES = "It looks like there aren't many great matches for your search";

    /**
     * TYPE String
     */
    public static final String TYPE = "type";
        
    /**
     * TEXT String
     */
    public static final String TEXT = "text";

    /**
     * IDX String
     */
    public static final String IDX = "idx";
        
    /**
     * BEGIN String
     */
    public static final String BEGIN = "begin";
        
    /**
     * END String
     */
    public static final String END = "end";
    
    /**
     * POS String
     */
    public static final String POS = "pos";
        
    /**
     * KEYWORD String
     */
    public static final String KEYWORD = "keyword";
        
    /**
     * ENTITY String
     */
    public static final String ENTITY = "entity";
        
    /**
     * NUMBER String
     */
    public static final String NUMBER = "number";
        
    /**
     * QUOTED String
     */
    public static final String QUOTED = "quoted";
 
    /**
     * INCLUDED String
     */
    public static final String INCLUDED = "included";
 
    /**
     * EXCLUDED String
     */
    public static final String EXCLUDED = "excluded";
        
}
