using System.Collections;

using Codice.CM.Common;

namespace Unity.PlasticSCM.Editor.Views.CreateWorkspace
{
    internal static class ValidRepositoryName
    {
        internal static string Get(string repositoryName, IList repositories)
        {
            string validRepositoryName = GetValidRepositoryName(repositoryName);
            string result = validRepositoryName;

            int i = 2;

            while (RepositoryExists(result, repositories))
            {
                result = validRepositoryName + "_" + i.ToString();
                i++;
            }

            return result;
        }

        static bool RepositoryExists(string repositoryName, IList repositories)
        {
            if (repositories == null)
                return false;

            foreach (RepositoryInfo repInfo in repositories)
            {
                if (repInfo.Name.Equals(repositoryName))
                    return true;
            }

            return false;
        }

        static string GetValidRepositoryName(string newRepository)
        {
            string result = newRepository.Replace(SUBMODULE_SEPARATOR, '-');
            result = result.Replace(PIPE_CHARACTER, '-');
            return result;
        }

        const char SUBMODULE_SEPARATOR = '/';
        const char PIPE_CHARACTER = '|';
    }
}