io.cloudslang.lang.runtime.env.ExecutionPath.java Source code

Java tutorial

Introduction

Here is the source code for io.cloudslang.lang.runtime.env.ExecutionPath.java

Source

/*******************************************************************************
 * (c) Copyright 2016 Hewlett-Packard Development Company, L.P.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Apache License v2.0 which accompany this distribution.
 *
 * The Apache License is available at
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 *******************************************************************************/
package io.cloudslang.lang.runtime.env;

import java.io.Serializable;
import java.util.ArrayDeque;
import java.util.Deque;
import org.apache.commons.lang3.StringUtils;

import static org.apache.commons.lang3.StringUtils.join;

/**
 * @author moradi
 * @since 06/11/2014
 */
public class ExecutionPath implements Serializable {

    public static final String PATH_SEPARATOR = ".";

    private Deque<Integer> parentPositions;
    private int position;

    public ExecutionPath() {
        parentPositions = new ArrayDeque<>();
    }

    public void forward() {
        position++;
    }

    public void down() {
        parentPositions.push(position);
        position = 0;
    }

    public void up() {
        position = parentPositions.pop();
    }

    public String getParentPath() {
        return join(parentPositions.descendingIterator(), PATH_SEPARATOR);
    }

    public String getCurrentPath() {
        return getCurrentPath(position);
    }

    private String getCurrentPath(int position) {
        String parents = getParentPath();
        return StringUtils.isEmpty(parents) ? position + "" : parents + PATH_SEPARATOR + position;
    }

}