Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: 70543c6c88a59e126ff42f1e10829ec94c7a7aa9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/*******************************************************************************
 * Copyright (c) 2000, 2011 IBM Corporation and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *     Olexiy Buyanskyy <olexiyb@gmail.com> - Bug 76386 - [History View] CVS Resource History shows revisions from all branches
 *******************************************************************************/
package org.eclipse.team.internal.ccvs.core.client.listeners;

 
import java.util.Date;

import org.eclipse.core.runtime.PlatformObject;
import org.eclipse.team.internal.ccvs.core.*;
import org.eclipse.team.internal.ccvs.core.resources.RemoteFile;

public class LogEntry extends PlatformObject implements ILogEntry {

	private RemoteFile file;
	private String author;
	private Date date;
	private String comment;
	private String state;
	private CVSTag[] tags;
	private CVSTag[] branches;
	private String[] revisions;
	
	/*
	 * Flatten the text in the multi-line comment
	 */
	public static String flattenText(String string) {
		StringBuilder buffer = new StringBuilder(string.length() + 20);
		boolean skipAdjacentLineSeparator = true;
		for (int i = 0; i < string.length(); i++) {
			char c = string.charAt(i);
			if (c == '\r' || c == '\n') {
				if (!skipAdjacentLineSeparator)
					buffer.append(CVSMessages.LogEntry_0); 
				skipAdjacentLineSeparator = true;
			} else {
				buffer.append(c);
				skipAdjacentLineSeparator = false;
			}
		}
		return buffer.toString();
	}
	
	public LogEntry(RemoteFile file, String revision, String author, Date date, String comment, String state, CVSTag[] tags, CVSTag[] branches) {
		this.file = file.toRevision(revision);
		this.author = author;
		this.date = date;
		this.comment = comment;
		this.state = state;
		this.tags = tags;
		this.branches = branches;
	}
	
	public LogEntry(RemoteFile file, String revision, String author, Date date, String comment, String state, CVSTag[] tags, CVSTag[] branches, String[] revisions) {
		this(file,revision,author,date,comment,state,tags,branches);
		this.revisions=revisions;
	}

	@Override
	public String getRevision() {
		return file.getRevision();
	}

	@Override
	public String getAuthor() {
		return author;
	}

	@Override
	public Date getDate() {
		return date;
	}

	@Override
	public String getComment() {
		return comment;
	}

	@Override
	public String getState() {
		return state;
	}

	@Override
	public CVSTag[] getBranches() {
		CVSTag[] result = new CVSTag[branches.length];
		System.arraycopy(branches, 0, result, 0, branches.length);
		return result;
	}

	@Override
	public CVSTag[] getTags() {
		CVSTag[] result = new CVSTag[tags.length];
		System.arraycopy(tags, 0, result, 0, tags.length);
		return result;
	}

	@Override
	public ICVSRemoteFile getRemoteFile() {
		return file;
	}
	
	@Override
	public boolean isDeletion() {
		return getState().equals("dead"); //$NON-NLS-1$
	}

	/**
	 * In the case where files on a branch haven't been modified since their
	 * initial branch point, they keep the revision number of their predecessor.
	 * In this case no revision info will be displayed while doing a log, so all
	 * branch revision numbers are recorded. This allows the user to pick which
	 * revision they are interested in.
	 * 
	 * @return an array of branch revision strings or an empty array if no
	 *         branch revisions were recorded
	 */
	public String[] getBranchRevisions(){
		
		if (revisions != null)
			return revisions;
		
		return new String[0];
	}
}

Back to the top