package de.ivu.elect.business.system.entity;

import java.util.EnumSet;
import java.util.Set;

import javax.servlet.SessionTrackingMode;

public enum HttpSessionTracking {

  DEFAULT {
    @Override
    public boolean isStorageAnpassen() {
      return false;
    }

    @Override
    public Set<SessionTrackingMode> getSessionTrackingModes() {
      throw new UnsupportedOperationException();
    }
  },
  COOKIE {
    @Override
    public Set<SessionTrackingMode> getSessionTrackingModes() {
      return EnumSet.of(SessionTrackingMode.COOKIE);
    }
  },
  URL {
    @Override
    public Set<SessionTrackingMode> getSessionTrackingModes() {
      return EnumSet.of(SessionTrackingMode.URL);
    }
  },
  COOKIE_URL {
    @Override
    public Set<SessionTrackingMode> getSessionTrackingModes() {
      return EnumSet.of(SessionTrackingMode.COOKIE, SessionTrackingMode.URL);
    }
  }
// Deprecated?  ,
//  SSL {
//    @Override
//    public Set<SessionTrackingMode> getSessionTrackingModes() {
//      return EnumSet.of(SessionTrackingMode.SSL);
//    }
//  }
  ;

  public boolean isStorageAnpassen() {
    return true;
  }

  public abstract Set<SessionTrackingMode> getSessionTrackingModes();
}
