import json

class SessionManager:
    def __init__(self, playlist, abController):
        self._playlist = playlist
        self._abController = abController

    def addSong(self, path):
        self._playlist.addSong(path)

    def storeLimits(self, aLimit, bLimit):
        self._abController.storeLimits(aLimit, bLimit)

    def loadSession(self, file):
        jsonStr = file.read()
        session = json.loads(jsonStr)

        self._playlist.clear()
        self._abController.clear()

        for entry in session:
            songPath = entry["path"]
            abLimits = entry["ab_limits"]
            self._playlist.addSong(songPath)

            if abLimits is not None:
                for l in abLimits:
                    self._abController.storeLimits(l[0], l[1], songPath)
            
    def saveSession(self, file):
        songs = self._playlist.getSongs()
        session = list()

        for s in songs:
            entry = {
                "path": s,
                "ab_limits" : self._abController.getStoredLimits(s)
            }
            session.append(entry)

        file.write(json.dumps(session))