org.openlegacy.terminal.mock.MockTerminalConnection.java Source code

Java tutorial

Introduction

Here is the source code for org.openlegacy.terminal.mock.MockTerminalConnection.java

Source

/*******************************************************************************
 * Copyright (c) 2014 OpenLegacy Inc.
 * All rights reserved. This program and the accompanying materials 
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 *     OpenLegacy Inc. - initial API and implementation
 *******************************************************************************/
package org.openlegacy.terminal.mock;

import org.apache.commons.lang.SerializationUtils;
import org.openlegacy.exceptions.SessionEndedException;
import org.openlegacy.terminal.TerminalSendAction;
import org.openlegacy.terminal.TerminalSnapshot;
import org.openlegacy.terminal.TerminalSnapshot.SnapshotType;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class MockTerminalConnection extends AbstractMockTerminalConnection implements Serializable {

    private static final long serialVersionUID = 1L;

    private List<TerminalSnapshot> snapshots = new ArrayList<TerminalSnapshot>();
    private int currentIndex = 0;
    private boolean connected = false;

    public MockTerminalConnection(List<TerminalSnapshot> snapshots) {
        for (TerminalSnapshot terminalSnapshot : snapshots) {
            this.snapshots.add((TerminalSnapshot) SerializationUtils.clone(terminalSnapshot));
        }
    }

    @Override
    public TerminalSnapshot getSnapshot() {
        setConnected(true);
        if (currentIndex >= snapshots.size()) {
            throw (new SessionEndedException("Mock session has been finished"));
        }
        TerminalSnapshot snapshot = snapshots.get(currentIndex);
        setConnected(true);
        return snapshot;
    }

    void setConnected(boolean connected) {
        this.connected = connected;

    }

    @Override
    public void doAction(TerminalSendAction terminalSendAction) {
        currentIndex++;
        if (currentIndex >= snapshots.size()) {
            throw (new SessionEndedException("Mock session has been finished"));
        }

        TerminalSnapshot currentSnapshot = snapshots.get(currentIndex);
        if (currentSnapshot.getSnapshotType() == SnapshotType.OUTGOING) {
            MockSendValidationUtils.validateSendAction(currentSnapshot, terminalSendAction);
            currentIndex++;
        }
    }

    @Override
    public Object getDelegate() {
        throw (new UnsupportedOperationException("Mock terminal session has not delegate"));
    }

    public void setCurrentIndex(int currentIndex) {
        this.currentIndex = currentIndex;
    }

    @Override
    public TerminalSnapshot fetchSnapshot() {
        return getSnapshot();
    }

    public List<TerminalSnapshot> getSnapshots() {
        return snapshots;
    }

    @Override
    public boolean isConnected() {
        return connected;
    }

    @Override
    public void disconnect() {
        currentIndex = 0;
        setConnected(false);

    }

    @Override
    public Integer getSequence() {
        return getSnapshot().getSequence();
    }
}