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

namespace EliteBGS.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 where Type : Transaction {
    public string GenerateLog(Objective objective) {
        IEnumerable<Type> logs = objective.EnabledOfType<Type>();
        StringBuilder builder = new StringBuilder();

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

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

        return builder.ToString();
    }
}