package com.algomagic.atn; public class NodeState implements VisualizationConstants { private String _satisfied; private boolean _opponentProcessed; private boolean _verifierProcessed; private boolean _hidden; private boolean _bolded; private String _name; private String _type; public NodeState( NodeState ns ) { _name = ns.getName( ); _satisfied = ns.getSatisfied( ); _type = ns.getType( ); _hidden = ns.getHidden( ); _bolded = ns.getBolded( ); } public NodeState( String name, String type ) { _name = name; _type = type; _satisfied = UNKNOWN; _opponentProcessed = false; _verifierProcessed = false; _hidden = true; _bolded = false; } public int updateState( NodeUpdate update ) { _hidden = false; // if( _satisfied.equals( update.getSatisfied( ) ) ) { // return false; // } int s = setSatisfied( update.getSatisfied( ) ); int p = setProcessed( update.getProcessed( ) ); return s+p; } public int setSatisfied( String state ) { int ret = 0; if( _satisfied.equals( SATISFIED ) || _satisfied.equals( NOT_SATISFIED) ) { return 0; } if( state == null ) { _satisfied = UNKNOWN; } if( _satisfied.toLowerCase( ).equals( state.toLowerCase( ) ) ) { return ret; } _satisfied = state; return 2; } public int setProcessed( String state ) { int ret = 0; if( state.toLowerCase( ).equals( VERIFIER_PROC.toLowerCase( ) ) ) { if( _verifierProcessed == false ) { ret = 1; } _verifierProcessed = true; } else if ( state.toLowerCase( ).equals( OPPONENT_PROC.toLowerCase( ) ) ) { if( _opponentProcessed == false ) { ret = 1; } _opponentProcessed = true; } else if ( state.toLowerCase( ).equals( FULLY_PROC.toLowerCase( ) ) ) { if( _opponentProcessed == false || _verifierProcessed == false ) { ret = 1; } _opponentProcessed = true; _verifierProcessed = true; } return ret; } public String getSatisfied( ) { return _satisfied; } public String getProcessed( ) { if( _opponentProcessed && _verifierProcessed ) { return FULLY_PROC; } if( _opponentProcessed ) { return OPPONENT_PROC; } if( _verifierProcessed ) { return VERIFIER_PROC; } return NOT_PROC; } public void setHidden( boolean state ) { _hidden = state; } public boolean getHidden( ) { return _hidden; } public String getType( ) { return _type; } public String getName( ) { return _name; } public void setBolded( boolean state ) { _bolded = state; } public boolean getBolded( ) { return _bolded; } public void clearState( ) { if( _satisfied.equals( SATISFIED ) || _satisfied.equals( NOT_SATISFIED) ) { _satisfied = UNKNOWN; } _opponentProcessed = false; _verifierProcessed = false; _hidden = true; _bolded = false; } }