/******************************************************************************* * Copyright (c) 2012 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.support; import org.openlegacy.terminal.ScreenSize; import org.openlegacy.terminal.TerminalField; import org.openlegacy.terminal.TerminalOutgoingSnapshot; import org.openlegacy.terminal.TerminalPosition; import org.openlegacy.terminal.TerminalRow; import org.openlegacy.terminal.TerminalSendAction; import org.openlegacy.terminal.TerminalSnapshot; import org.openlegacy.terminal.persistance.TerminalPersistedSnapshot; import java.util.List; public class SimpleTerminalOutgoingSnapshot extends AbstractSnapshot implements TerminalOutgoingSnapshot { private static final long serialVersionUID = 1L; private TerminalSnapshot terminalSnapshot; private TerminalSendAction terminalSendAction; /* * for serialization purpose only */ public SimpleTerminalOutgoingSnapshot() {} public SimpleTerminalOutgoingSnapshot(TerminalSnapshot terminalSnapshot, TerminalSendAction terminalSendAction) { this.terminalSnapshot = terminalSnapshot; this.terminalSendAction = terminalSendAction; } @Override public SnapshotType getSnapshotType() { return SnapshotType.OUTGOING; } public TerminalSnapshot getTerminalSnapshot() { return terminalSnapshot; } public TerminalSendAction getTerminalSendAction() { return terminalSendAction; } @Override protected ScreenSize initScreenSize() { return terminalSnapshot.getSize(); } @Override public List<TerminalRow> getRows() { return terminalSnapshot.getRows(); } @Override public List<TerminalField> getFields() { return terminalSnapshot.getFields(); } @Override protected List<TerminalPosition> initFieldSeperators() { return terminalSnapshot.getFieldSeperators(); } @Override protected TerminalPosition initCursorPosition() { if (terminalSendAction.getCursorPosition() != null) { return terminalSendAction.getCursorPosition(); } return terminalSnapshot.getCursorPosition(); } @Override public TerminalField getField(TerminalPosition position) { return SnapshotUtils.getField(terminalSnapshot, position); } public Object getDelegate() { return terminalSnapshot.getDelegate(); } @Override protected String initText() { return terminalSnapshot.getText(); } @Override public String getText(TerminalPosition position, int length) { return terminalSnapshot.getText(position, length); } @Override public TerminalRow getRow(int rowNumber) { return terminalSnapshot.getRow(rowNumber); } public Integer getSequence() { return terminalSnapshot.getSequence()+1; } public String getCommand() { return terminalSendAction.getCommand().toString(); } @Override protected List<TerminalField> initFields() { return terminalSnapshot.getFields(); } /* (non-Javadoc) * @see org.openlegacy.terminal.support.AbstractSnapshot#readExternal(org.openlegacy.terminal.persistance.TerminalPersistedSnapshot) */ @Override protected void readExternal(TerminalPersistedSnapshot persistedSnapshot) { // TODO check is it implementation right this.terminalSendAction = persistedSnapshot.getTerminalSendAction(); this.terminalSnapshot = persistedSnapshot; } }