Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * SonarQube, open source software quality management tool.
   * Copyright (C) 2008-2014 SonarSource
   * mailto:contact AT sonarsource DOT com
   *
   * SonarQube is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 3 of the License, or (at your option) any later version.
  *
  * SonarQube is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public License
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
 package org.sonar.plugins.scm.svn;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
  * regarding copyright ownership.  The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 
 
 import  javax.annotation.CheckForNull;
 
 import java.util.Date;
 import java.util.List;
 
 public class SvnBlameConsumer implements StreamConsumer {
 
   private static final Logger LOG = LoggerFactory.getLogger(SvnBlameConsumer.class);
 
   private static final String SVN_TIMESTAMP_PATTERN = "yyyy-MM-dd HH:mm:ss";
 
   private static final Pattern LINE_PATTERN = Pattern.compile("line-number=\"(.*)\"");
 
   private static final Pattern REVISION_PATTERN = Pattern.compile("revision=\"(.*)\"");
 
   private static final Pattern AUTHOR_PATTERN = Pattern.compile("<author>(.*)</author>");
 
   private static final Pattern DATE_PATTERN = Pattern.compile("<date>(.*)T(.*)\\.(.*)Z</date>");
 
   private boolean insideCommitSection = false;
   private boolean insideMergedSection = false;
 
 
   private List<BlameLinelines = new ArrayList<BlameLine>();
 
   private final String filename;
 
   public SvnBlameConsumer(String filename) {
     this. = filename;
     .setTimeZone(TimeZone.getTimeZone("UTC"));
   }
 
   private int lineNumber = 0;
 
   private String committerRevision;
   private String committer;
   private Date committerDate;
   private String authorRevision;
   private String author;
   private Date authorDate;
 
   @Override
   public void consumeLine(String line) {
     Matcher matcher;
     if ((matcher = .matcher(line)).find()) {
       String lineNumberStr = matcher.group(1);
       = Integer.parseInt(lineNumberStr);
       = false;
       = false;
    } else if (line.contains("<commit") && !) {
       = true;
    } else if (line.contains("<merged")) {
       = true;
       = false;
    } else if ((matcher = .matcher(line)).find()) {
      if () {
         = matcher.group(1);
      } else if () {
         = matcher.group(1);
      }
    } else if ((matcher = .matcher(line)).find()) {
      if () {
         = matcher.group(1);
      } else if () {
         = matcher.group(1);
      }
    } else if ((matcher = .matcher(line)).find()) {
      String date = matcher.group(1);
      String time = matcher.group(2);
      Date dateTime = parseDateTime(date + " " + time);
      if () {
         = dateTime;
      } else if () {
         = dateTime;
      }
    } else if (line.contains("</entry>")) {
      if ( != null) {
      } else if ( != null) {
      } else {
        throw new IllegalStateException("Unable to blame file " +  + ". No blame info at line " +  + ". Is file commited?");
      }
       = false;
       = false;
       = null;
       = null;
       = null;
       = null;
    }
  }
  @CheckForNull
  protected Date parseDateTime(String dateTimeStr) {
    try {
      return .parse(dateTimeStr);
    } catch (ParseException e) {
      .error("skip ParseException: " + e.getMessage() + " during parsing date " + dateTimeStre);
      return null;
    }
  }
  public List<BlameLinegetLines() {
    return ;
  }
New to GrepCode? Check out our FAQ X