All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.codetaco.cli.directive.EquDirective Maven / Gradle / Ivy

package com.codetaco.cli.directive;

import java.io.IOException;
import java.text.ParseException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.codetaco.math.Equ;
import com.codetaco.cli.input.Token;
import com.codetaco.date.TemporalHelper;

/**
 * This class parses phrases that will be used to run an equation. That result
 * is returned as a literal token to be inserted into the command line at the
 * same position as this directive.
 *
 * @author Chris DeGreef [email protected]
 */
public class EquDirective extends DirectiveCommand {
    private final static Logger logger = LoggerFactory.getLogger(EquDirective.class.getName());

    /**
     * 

* Constructor for DateDirective. *

* * @param _data a {@link java.lang.String} object. */ public EquDirective(final String _data) { super(_data); } /** * {@inheritDoc} */ @Override public Token replaceToken(final Token[] tokens, final int replacingFromTokenIndex, final int replaceToTokenIndex) throws ParseException, IOException { final Equ equ = Equ.getInstance(true); String resultAsATokenValue = null; try { Object equResult; equResult = equ.evaluate(data); if (equResult instanceof LocalDateTime) { final LocalDateTime ldt = (LocalDateTime) equResult; if (ldt.toLocalDate().equals(LocalDate.MIN)) resultAsATokenValue = TemporalHelper.getOutputTF().format(ldt); else if (ldt.toLocalTime().equals(LocalTime.MIN)) resultAsATokenValue = TemporalHelper.getOutputDF().format(ldt); else resultAsATokenValue = TemporalHelper.getOutputDTF().format(ldt); } else resultAsATokenValue = equResult.toString(); } catch (final Exception e) { logger.error("{}", e.getMessage(), e); throw new ParseException(e.getMessage(), 0); } return new Token(tokens[replacingFromTokenIndex].charCommand(), resultAsATokenValue, tokens[replacingFromTokenIndex].getInputStartX(), tokens[replaceToTokenIndex].getInputEndX(), true); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy