SortCriteria.java

package fr.avenirsesr.portfolio.api.domain.model;

import fr.avenirsesr.portfolio.api.domain.model.enums.ESortField;
import fr.avenirsesr.portfolio.api.domain.model.enums.ESortOrder;

public class SortCriteria {
  private final ESortField field;
  private final ESortOrder order;

  public SortCriteria(ESortField field, ESortOrder order) {
    this.field = field;
    this.order = order;
  }

  public ESortField getField() {
    return field;
  }

  public ESortOrder getOrder() {
    return order;
  }

  public static SortCriteria fromString(String input) {
    if (input == null || !input.contains(",")) {
      return null;
    }

    String[] parts = input.split(",");
    if (parts.length != 2) {
      return null;
    }

    try {
      ESortField field = ESortField.fromString(parts[0].trim());
      ESortOrder order = ESortOrder.fromString(parts[1].trim());

      return new SortCriteria(field, order);
    } catch (Exception exception) {
      return null;
    }
  }
}