001/* 002 * SonarQube, open source software quality management tool. 003 * Copyright (C) 2008-2013 SonarSource 004 * mailto:contact AT sonarsource DOT com 005 * 006 * SonarQube is free software; you can redistribute it and/or 007 * modify it under the terms of the GNU Lesser General Public 008 * License as published by the Free Software Foundation; either 009 * version 3 of the License, or (at your option) any later version. 010 * 011 * SonarQube is distributed in the hope that it will be useful, 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 014 * Lesser General Public License for more details. 015 * 016 * You should have received a copy of the GNU Lesser General Public License 017 * along with this program; if not, write to the Free Software Foundation, 018 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 019 */ 020package org.sonar.api.issue.internal; 021 022import org.sonar.api.issue.IssueComment; 023 024import javax.annotation.CheckForNull; 025import javax.annotation.Nullable; 026 027import java.io.Serializable; 028import java.util.Date; 029import java.util.UUID; 030 031/** 032 * PLUGINS MUST NOT BE USED THIS CLASS, EXCEPT FOR UNIT TESTING. 033 * 034 * @since 3.6 035 */ 036public class DefaultIssueComment implements Serializable, IssueComment { 037 038 private String issueKey; 039 private String userLogin; 040 private Date createdAt, updatedAt; 041 private String key; 042 private String markdownText; 043 private boolean isNew; 044 045 @Override 046 public String markdownText() { 047 return markdownText; 048 } 049 050 public DefaultIssueComment setMarkdownText(String s) { 051 this.markdownText = s; 052 return this; 053 } 054 055 public String issueKey() { 056 return issueKey; 057 } 058 059 public DefaultIssueComment setIssueKey(String s) { 060 this.issueKey = s; 061 return this; 062 } 063 064 @Override 065 public String key() { 066 return key; 067 } 068 069 public DefaultIssueComment setKey(String key) { 070 this.key = key; 071 return this; 072 } 073 074 /** 075 * The user who created the comment. Null if it was automatically generated during project scan. 076 */ 077 @Override 078 @CheckForNull 079 public String userLogin() { 080 return userLogin; 081 } 082 083 public DefaultIssueComment setUserLogin(@Nullable String userLogin) { 084 this.userLogin = userLogin; 085 return this; 086 } 087 088 @Override 089 public Date createdAt() { 090 return createdAt; 091 } 092 093 public DefaultIssueComment setCreatedAt(Date createdAt) { 094 this.createdAt = createdAt; 095 return this; 096 } 097 098 @Override 099 public Date updatedAt() { 100 return updatedAt; 101 } 102 103 public DefaultIssueComment setUpdatedAt(Date updatedAt) { 104 this.updatedAt = updatedAt; 105 return this; 106 } 107 108 public boolean isNew() { 109 return isNew; 110 } 111 112 public DefaultIssueComment setNew(boolean b) { 113 isNew = b; 114 return this; 115 } 116 117 public static DefaultIssueComment create(String issueKey, @Nullable String login, String markdownText) { 118 DefaultIssueComment comment = new DefaultIssueComment(); 119 comment.setIssueKey(issueKey); 120 comment.setKey(UUID.randomUUID().toString()); 121 Date now = new Date(); 122 comment.setUserLogin(login); 123 comment.setMarkdownText(markdownText); 124 comment.setCreatedAt(now).setUpdatedAt(now); 125 comment.setNew(true); 126 return comment; 127 } 128}