ExtractionPlan.java

package net.sasasin.sreader.domain;

public record ExtractionPlan(
    SourceKind sourceKind, boolean useInfyScroll, ExtractorKind extractorKind) {

  public enum SourceKind {
    FEED,
    HTTP,
    PLAYWRIGHT
  }

  public enum ExtractorKind {
    XPATH_OR_BODY_TEXT,
    READABILITY
  }

  public static ExtractionPlan from(FullTextMethod method) {
    return switch (method) {
      case FEED -> new ExtractionPlan(SourceKind.FEED, false, ExtractorKind.XPATH_OR_BODY_TEXT);
      case HTTP -> new ExtractionPlan(SourceKind.HTTP, false, ExtractorKind.XPATH_OR_BODY_TEXT);
      case HTTP_READABILITY ->
          new ExtractionPlan(SourceKind.HTTP, false, ExtractorKind.READABILITY);
      case PLAYWRIGHT ->
          new ExtractionPlan(SourceKind.PLAYWRIGHT, false, ExtractorKind.XPATH_OR_BODY_TEXT);
      case PLAYWRIGHT_READABILITY ->
          new ExtractionPlan(SourceKind.PLAYWRIGHT, false, ExtractorKind.READABILITY);
      case PLAYWRIGHT_INFY_SCROLL ->
          new ExtractionPlan(SourceKind.PLAYWRIGHT, true, ExtractorKind.XPATH_OR_BODY_TEXT);
      case PLAYWRIGHT_INFY_SCROLL_READABILITY ->
          new ExtractionPlan(SourceKind.PLAYWRIGHT, true, ExtractorKind.READABILITY);
    };
  }
}