package de.unisiegen.gtitool.core.exceptions.machine;
import java.util.ArrayList;
import de.unisiegen.gtitool.core.entities.Symbol;
import de.unisiegen.gtitool.core.entities.Transition;
import de.unisiegen.gtitool.core.exceptions.CoreException;
import de.unisiegen.gtitool.core.exceptions.SymbolsInvolvedException;
import de.unisiegen.gtitool.core.exceptions.TransitionsInvolvedException;
import de.unisiegen.gtitool.core.i18n.Messages;
/**
* The {@link MachineEpsilonTransitionException} is used, if there is a
* {@link Transition} without a {@link Symbol}.
*
* @author Christian Fehler
* @version $Id: MachineEpsilonTransitionException.java 90 2007-11-04 16:20:27Z
* fehler $
*/
public final class MachineTransitionStackOperationsException extends
MachineException implements TransitionsInvolvedException,
SymbolsInvolvedException
{
/**
* The serial version uid.
*/
private static final long serialVersionUID = -4864373653454376481L;
/**
* The {@link Transition}.
*/
private Transition transition;
/**
* Allocates a new {@link MachineTransitionStackOperationsException}.
*
* @param transition The {@link Transition}.
*/
public MachineTransitionStackOperationsException ( Transition transition )
{
super ();
// Transition
if ( transition == null )
{
throw new NullPointerException ( "transition is null" ); //$NON-NLS-1$
}
this.transition = transition;
// Message and description
setPrettyMessage ( Messages
.getPrettyString ( "MachineTransitionStackOperationsException.Message" ) ); //$NON-NLS-1$
setPrettyDescription ( Messages.getPrettyString (
"MachineTransitionStackOperationsException.Description", //$NON-NLS-1$
this.transition.toPrettyString () ) );
}
/**
* {@inheritDoc}
*
* @see SymbolsInvolvedException#getSymbol()
*/
public final ArrayList < Symbol > getSymbol ()
{
ArrayList < Symbol > result = new ArrayList < Symbol > ();
result.addAll ( this.transition.getPushDownWordRead ().get () );
result.addAll ( this.transition.getPushDownWordWrite ().get () );
return result;
}
/**
* {@inheritDoc}
*
* @see TransitionsInvolvedException#getTransition()
*/
public final ArrayList < Transition > getTransition ()
{
ArrayList < Transition > result = new ArrayList < Transition > ( 1 );
result.add ( this.transition );
return result;
}
/**
* {@inheritDoc}
*
* @see CoreException#getType()
*/
@Override
public final ErrorType getType ()
{
return ErrorType.ERROR;
}
/**
* {@inheritDoc}
*
* @see Throwable#toString()
*/
@Override
public final String toString ()
{
String lineBreak = System.getProperty ( "line.separator" ); //$NON-NLS-1$
StringBuilder result = new StringBuilder ( super.toString () );
result.append ( lineBreak );
result.append ( "Transition: " ); //$NON-NLS-1$
result.append ( this.transition );
return result.toString ();
}
}