// Created with MonoDevelop
//
//    QuickStep: Acquire, view and identify spectra 
//    Copyright (C) 2018 Thomas Klose & Torsten Schache, Hiperscan GmbH Dresden, Germany
//
//    This program is free software: you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation, either version 3 of the License, or
//    (at your option) any later version.
//
//    This program is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    GNU General Public License for more details.
//
//    You should have received a copy of the GNU General Public License
//    along with this program.  If not, see <http://www.gnu.org/licenses/>.


using Hiperscan.Unix;

namespace Hiperscan.Common
{
    public static class DefaultNames
    {
        public static class SoftwareUpgrader
        {
            public const string QUICKSTEP = "<<UPGRADE_QUICKSTEP>>";
            public const string IDENTMODULE = "<<UPGRADE_IDENTMODULE>>";
            public const string QUANTIFIERMODULE = "<<UPGRADE_QUANTIFIERMODULE>>";
            public const string NO_UPGRADE = "<<NO_UPGRADE>>";
            public const string UPGRADE_AVAILABLE = "<<UPGRADE_AVAILAVABLE>>";
            public const string INSTALL_SUCCESS = "<<INSTALL_SUCCESS>>";
            public const string INSTALL_FAILED = "<<INSTALL_FAILED>>";
            public static readonly char[] SPLITTER = new char[] { '<', '>' };
        }

        public static class ServerCompiler
        {
            public const string MSI_DIR_NAME = "Msi";
        }

        public static class QuantifierServer
        {
            public const string EXTENSION_VERSION = "1.0.0";
            public const string UNIX_COMMAND = "/usr/bin/quantifierserver";
            public static readonly string PRODUCTNAME = Catalog.GetString("QuantifierModule");
        }

            
        public static class IdentServer
        {
            public const string UNIX_COMMAND = "/usr/bin/identserver";
            public static readonly string PRODUCTNAME = Catalog.GetString("IdentModule");

            public const string UPDATE_CHANGES_FILE = "update-changes.pdf";
            public const string CUSTOM_CLASSIFIER_FILE = "CustomClassifier.dll.aes";

            public const string VERSION_FILE = "version";
            public const string IDENT_SERVER_EXE_FILE = "IdentServer.exe";
            public const string ADDITIONAL_TESTS_FILE = "additional-tests.pdf";
           
            public const string LOG_TXT_FILE = "ident-server-log.txt";
            public const string EXTENSION_NAME = "IdentExtension";
            public const string EXTENSION_VERSION = "4.0";
        }



        public static class RemoteService
        {

            public const string VALIDATION_DIRECTORY = "ValidationDocuments";
            public const string ADDITIONAL_TEST_DIRECTORY = "AdditionalTests";
            public const string ACCESS_EDB_FILE = "access.edb";
            public const string MASTER_KEY_DLL = "vectors.dll";
            public const string MODULE_VERSION_FILE = "module-version.xml";

            public const string CREATOR_VERSION_FILE = "creatorversion";
            public const string CHECKSUM_FILE = "checksum.sha2";

            public const string LICENSE_FILE = "license.txt";


            public const string LICENSE_RTF_FILE = "license.rtf";
            public const string LICENSE_TXT_FILE = "license.txt";

            public class MasterKeySet
            {
                /// <summary>Unix timestamp with seconds precision and int64 width</summary>
                public const string BUILD_DATE = "Vector0";
                public const string CHALLENGE = "Vector1";
                public const string IV = "Vector2";
                public const string KEY = "Vector3";
                public const string SEPARATOR = "  ";
            }
        }
        

        public static class Toolchain
        {
            public const string BLACK_LIST_BASENAME = "blacklist";
            public const string BLACKLIST_A_FILE = Toolchain.BLACK_LIST_BASENAME + ".A.txt";
            public const string BLACKLIST_B_FILE = Toolchain.BLACK_LIST_BASENAME + ".B.txt";
            public const string BLACK_LIST_C_FILE = Toolchain.BLACK_LIST_BASENAME + ".C.txt";
            public const string BLACKLIST_AB_FILE = Toolchain.BLACK_LIST_BASENAME + ".AB.txt";

            public const string IDENTITIES_FILE = "identities.txt";
            public const string NOIDS_FILE = "noids.txt";
            public const string WHITELIST_FILE = "whitelist.txt";
            public const string VALIDATION_EXPRESSION_FILE = "validation-expression.txt";
            public const string TEMPLATE_FILE = "template.txt";
            public const string VALIDATION_FILE = "validation.txt";
            public const string PARAMETERS_FILE = "parameters.txt";

            public const string SUBSTANCE_STRUCTURE_FILE = "substance-structure.xml";
            public const string MODEL_STRUCTURE_FILE = "model-structure.xml";
            public const string VALIDATION_DEFINITION = "validation-definition.xml";
        }
    }
}
