using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EliteBGS.BGS.LogGenerator {
    /// <summary>
    /// Creates a generic log block, that is simply all LogEntries of type "Type"
    /// per line
    /// </summary>
    /// <typeparam name="Type">LogEntry subtype to work on</typeparam>
    public class GenericFormat<Type> : LogFormatter {
        public string GenerateLog(Objective objective) {
            IEnumerable<Type> logs = objective.LogEntries.OfType<Type>();
            StringBuilder builder = new StringBuilder();

            if (logs == null || logs.Count() <= 0) {
                return "";
            }

            foreach (Type log in logs) {
                builder.AppendLine(log.ToString());
            }

            return builder.ToString();
        }
    }
}