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

io.github.xinyangpan.cucumber.element.service.ElementDataSuperService Maven / Gradle / Ivy

package io.github.xinyangpan.cucumber.element.service;

import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;

import org.springframework.util.StringUtils;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;

import cucumber.api.DataTable;
import io.github.xinyangpan.cucumber.element.BaseElement;
import io.github.xinyangpan.cucumber.element.ElementData;

public class ElementDataSuperService {
	// 
	protected Map> funcName2FunctionMap = Maps.newHashMap();
	protected E scenarioVariable;
	private Function, E> newElement;

	public ElementDataSuperService() {
		this(null);
	}

	public ElementDataSuperService(Function, E> newElement) {
		this.newElement = newElement;
		//
		funcName2FunctionMap.put("now", this::now);
	}

	public ElementData from(DataTable dataTable) {
		ElementData elementData = new ElementData(dataTable, scenarioVariable, newElement);
		elementData.convert(funcName2FunctionMap);
		return elementData;
	}

	public ElementData from(List> valueMaps) {
		ElementData elementData = new ElementData<>(valueMaps, scenarioVariable, newElement);
		elementData.convert(funcName2FunctionMap);
		return elementData;
	}

	public ElementData from(Map valueMap) {
		return from(Lists.newArrayList(valueMap));
	}

	// -----------------------------
	// ----- function
	// -----------------------------

	public long now(String seconds) {
		if (!StringUtils.hasText(seconds)) {
			return 0;
		}
		return System.currentTimeMillis() + (Long.valueOf(seconds) * 1000L);
	}

	// -----------------------------
	// ----- Scenario Variables
	// -----------------------------

	public E initScenarioVariable(Map scenarioVariableMap) {
		return scenarioVariable = this.from(scenarioVariableMap).getOnlyElement();
	}

	public E getScenarioVariable() {
		return Objects.requireNonNull(scenarioVariable);
	}

	public void clearScenarioVariable() {
		scenarioVariable = null;
	}

	// -----------------------------
	// ----- Get Set ToString HashCode Equals
	// -----------------------------

	public Function, E> getNewElement() {
		return newElement;
	}

	public void setNewElement(Function, E> newElement) {
		this.newElement = newElement;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy