package uk.tim740.skUtilities.convert;

import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser.ParseResult;
import ch.njol.skript.lang.util.SimpleExpression;
import ch.njol.skript.util.Date;
import ch.njol.util.Kleenean;
import org.bukkit.event.Event;
import uk.tim740.skUtilities.skUtilities;

import javax.annotation.Nullable;

/**
 * Created by tim740.
 */
public class ExprUnixToDate extends SimpleExpression<Date> {
  private Expression<Number> n;

  @Override
  @Nullable
  protected Date[] get(Event e) {
    try {
      String si = n.getSingle(e).toString();
      if (!(si.length() == 10)) {
        si = si.substring(0, 10);
      }
      return new Date[]{new Date(Integer.parseInt(si) * 1000L)};
    } catch (Exception x) {
      skUtilities.prSysE(x.getMessage(), getClass().getSimpleName(), x);
    }
    return null;
  }

  @SuppressWarnings("unchecked")
  @Override
  public boolean init(Expression<?>[] e, int i, Kleenean k, ParseResult p) {
    n = (Expression<Number>) e[0];
    return true;
  }

  @Override
  public Class<? extends Date> getReturnType() {
    return Date.class;
  }

  @Override
  public boolean isSingle() {
    return true;
  }

  @Override
  public String toString(@Nullable Event e, boolean b) {
    return getClass().getName();
  }
}