// =====================================================================
//  $Id: TSetRunIdCommand.cc,v 1.3 2004/03/07 10:30:28 goiwai Exp $
//  $Name: CLDAQ-1-14-03 $
//  $Log: TSetRunIdCommand.cc,v $
//  Revision 1.3  2004/03/07 10:30:28  goiwai
//  ROOTに組みこむためのおまじないマクロを埋めこみました。
//  全てにおいて完全に動作するわけではありません。
//
//  Revision 1.2  2003/10/06 17:02:37  goiwai
//  *** empty log message ***
//
//  Revision 1.1  2003/07/30 18:19:17  goiwai
//  TSetRunIdCommandクラスを追加しました.
//  これにより,/run/setidコマンドが追加されました.
//
// =====================================================================
#include "TSetRunIdCommand.hh"
#include "TRunManager.hh"

static const Tstring _name = "/run/setid";
static const Tstring _desc = "set run ID.";

TSetRunIdCommand::TSetRunIdCommand( TRunManager* manager )
  : TCommand( manager, _name, _desc )
{;}

TSetRunIdCommand::~TSetRunIdCommand()
{;}

Tvoid TSetRunIdCommand::Execute( const TstringList& arguments )
{
  if ( arguments.empty() ) {
    Tcout << theRunManager -> GetRunID() << Tendl;
  } else {
    Tstring runid = arguments[ 0 ];

    // 012 とか 0x12 とかは面倒なので許可しない
    if ( runid.size() != 1 && runid[ 0 ] == '0' ) {
      Tcerr << "TSetRunIdCommand::Execute: invalid ID" << Tendl;
      return;
    }

    // 入力が数字かどうかチェック
    for ( Tsize_t i = 0; i < runid.size(); i ++ ) {
      if ( isdigit( runid[ i ] ) == 0 ) {
        // 数字以外を含めばやりなおし
        Tcerr << "TSetRunIdCommand::Execute: invalid ID" << Tendl;
        return;
      }
    }

    Tint id = strtol( runid.c_str(), 0, 0 );
    theRunManager -> SetRunID( id );
  }
  return;
}

#ifdef __CLDAQ_ROOT_DLL
    ClassImp(TSetRunIdCommand)
#endif
