summaryrefslogtreecommitdiffstats
path: root/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/PatchLineComment.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/PatchLineComment.java')
-rw-r--r--gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/PatchLineComment.java180
1 files changed, 180 insertions, 0 deletions
diff --git a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/PatchLineComment.java b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/PatchLineComment.java
new file mode 100644
index 0000000000..c8a970db82
--- /dev/null
+++ b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/PatchLineComment.java
@@ -0,0 +1,180 @@
+// Copyright (C) 2008 The Android Open Source Project
+//
+// Licensed 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.
+
+package com.google.gerrit.reviewdb.client;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.StringKey;
+
+import java.sql.Timestamp;
+
+/** A comment left by a user on a specific line of a {@link Patch}. */
+public final class PatchLineComment {
+ public static class Key extends StringKey<Patch.Key> {
+ private static final long serialVersionUID = 1L;
+
+ @Column(id = 1, name = Column.NONE)
+ protected Patch.Key patchKey;
+
+ @Column(id = 2, length = 40)
+ protected String uuid;
+
+ protected Key() {
+ patchKey = new Patch.Key();
+ }
+
+ public Key(final Patch.Key p, final String uuid) {
+ this.patchKey = p;
+ this.uuid = uuid;
+ }
+
+ @Override
+ public Patch.Key getParentKey() {
+ return patchKey;
+ }
+
+ @Override
+ public String get() {
+ return uuid;
+ }
+
+ @Override
+ protected void set(String newValue) {
+ uuid = newValue;
+ }
+ }
+
+ public static final char STATUS_DRAFT = 'd';
+ public static final char STATUS_PUBLISHED = 'P';
+
+ public static enum Status {
+ DRAFT(STATUS_DRAFT),
+
+ PUBLISHED(STATUS_PUBLISHED);
+
+ private final char code;
+
+ private Status(final char c) {
+ code = c;
+ }
+
+ public char getCode() {
+ return code;
+ }
+
+ public static Status forCode(final char c) {
+ for (final Status s : Status.values()) {
+ if (s.code == c) {
+ return s;
+ }
+ }
+ return null;
+ }
+ }
+
+ @Column(id = 1, name = Column.NONE)
+ protected Key key;
+
+ /** Line number this comment applies to; it should display after the line. */
+ @Column(id = 2)
+ protected int lineNbr;
+
+ /** Who wrote this comment. */
+ @Column(id = 3, name = "author_id")
+ protected Account.Id author;
+
+ /** When this comment was drafted. */
+ @Column(id = 4)
+ protected Timestamp writtenOn;
+
+ /** Current publication state of the comment; see {@link Status}. */
+ @Column(id = 5)
+ protected char status;
+
+ /** Which file is this comment; 0 is ancestor, 1 is new version. */
+ @Column(id = 6)
+ protected short side;
+
+ /** The text left by the user. */
+ @Column(id = 7, notNull = false, length = Integer.MAX_VALUE)
+ protected String message;
+
+ /**
+ * The parent of this comment, or null if this is the first comment on this
+ * line
+ */
+ @Column(id = 8, length = 40, notNull = false)
+ protected String parentUuid;
+
+ protected PatchLineComment() {
+ }
+
+ public PatchLineComment(final PatchLineComment.Key id, final int line,
+ final Account.Id a, String parentUuid) {
+ key = id;
+ lineNbr = line;
+ author = a;
+ this.parentUuid = parentUuid;
+ setStatus(Status.DRAFT);
+ updated();
+ }
+
+ public PatchLineComment.Key getKey() {
+ return key;
+ }
+
+ public int getLine() {
+ return lineNbr;
+ }
+
+ public Account.Id getAuthor() {
+ return author;
+ }
+
+ public Timestamp getWrittenOn() {
+ return writtenOn;
+ }
+
+ public Status getStatus() {
+ return Status.forCode(status);
+ }
+
+ public void setStatus(final Status s) {
+ status = s.getCode();
+ }
+
+ public short getSide() {
+ return side;
+ }
+
+ public void setSide(final short s) {
+ side = s;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(final String s) {
+ message = s;
+ }
+
+ public void updated() {
+ writtenOn = new Timestamp(System.currentTimeMillis());
+ }
+
+ public String getParentUuid() {
+ return parentUuid;
+ }
+}