public static ArrayList parse()

in src/com/intellij/vssSupport/commands/HistoryParser.java [45:135]


  public static ArrayList<SubmissionData> parse( final String content )
  {
    ArrayList<SubmissionData> changes = new ArrayList<>();
    String[] lines = LineTokenizer.tokenize( content, false );
    int      order = 0;

    for( int i = 0; i < lines.length; i++ )
    {
      //  For folder-wide operations support only labelling
      
      if( lines[ i ].indexOf( FOLDER_LABEL_SECTION_PREFIX_SIG ) != -1 )
      {
        //  !**********************
        //  !Label: "Label with..."
        //  !User: Lloix        Date:  2-05-07   Time:  5:01p
        //  !Labeled
        //  !Label comment: ...Some comment
        if( i + 4 < lines.length && lines[ i + 3 ].indexOf( FILE_LABELLED_SIG ) != -1 )
        {
          SubmissionData change = new SubmissionData();
          change.order = order++;
          change.submitter = parseActor( lines[ i + 2 ] );
          change.changeDate = parseDateTime( lines[ i + 2 ] );
          change.action = FILE_LABELLED_SIG;
          change.label = parseLabel( lines[ i + 1 ] );
          change.comment = parseComment( lines, i + 4 );

          changes.add( change );
        }
      }
      else
      if( lines[ i ].indexOf( VERSION_SECTION_PREFIX_SIG ) != -1 )
      {
        // !*****************  Version 6   *****************
        // !User: Lloix        Date: 13-11-06   Time:  5:52p
        // !Checked in $/VssTest/SRC/Dir1
        // !Comment: New comment
        //    or
        // !*****************  Version 6   *****************
        // !Label: <label>
        // !User: Lloix        Date: 13-11-06   Time:  5:52p
        // !Labelled
        // !Label Comment: New comment
        if( i + 3 < lines.length )
        {
          SubmissionData change = new SubmissionData();
          change.version = parseVersion( lines[ i ] );
          change.order = order++;

          if( lines[ i + 1 ].indexOf( LABEL_SIG ) != -1 )
          {
            change.label = parseLabel( lines[ i + 1 ] );
            i++;
          }
          change.submitter = parseActor( lines[ i + 1 ] );
          change.changeDate = parseDateTime( lines[ i + 1 ] );
          change.action = parseAction( lines[ i + 2 ] );
          change.comment = parseComment( lines, i + 3 );

          changes.add( change );
        }
      }
      else
      if( lines[ i ].indexOf( FILE_SECTION_SIG ) != - 1 )
      {
        // !*****  File1.java  *****
        // !Version 6
        // !User: Lloix        Date: 13-11-06   Time:  5:52p
        // !Checked in $/VssTest/SRC/Dir1
        // !Comment: New comment
        if( i + 3 < lines.length )
        {
          SubmissionData change = new SubmissionData(); 
          change.order = order++;
          change.submitter = parseActor( lines[ i + 2 ] );
          change.version = lines[ i + 1 ].substring( VERSION_SIG.length() );
          change.changeDate = parseDateTime( lines[ i + 2 ] );
          change.action = parseAction( lines[ i + 3 ] );
          change.comment = parseComment( lines, i + 4 );

          changes.add( change );
        }
      }
    }

    //  Changes for "Labeled" operation are given without version id (since
    //  they do not the version given on the previous checkin operation).
    //  Assign version ids for these operations in the backward order.
    updateEarlierChanges( changes );
    return changes;
  }