blob: 780f45b1865485b62dab8455799204f99e25812d (
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
|
/*******************************************************************************
* Copyright (c) 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Dariusz Luksza <dariusz@luksza.org>
*******************************************************************************/
package org.eclipse.egit.core.synchronize;
import org.eclipse.core.resources.IResource;
import org.eclipse.egit.core.CoreText;
import org.eclipse.egit.core.synchronize.dto.GitSynchronizeDataSet;
import org.eclipse.team.core.TeamException;
import org.eclipse.team.core.synchronize.SyncInfo;
import org.eclipse.team.core.variants.IResourceVariant;
import org.eclipse.team.core.variants.IResourceVariantComparator;
import org.eclipse.team.core.variants.IResourceVariantTree;
import org.eclipse.team.core.variants.ResourceVariantByteStore;
import org.eclipse.team.core.variants.ResourceVariantTreeSubscriber;
/**
*
*/
public class GitResourceVariantTreeSubscriber extends
ResourceVariantTreeSubscriber {
private final ResourceVariantByteStore store;
/**
* A resource variant tree of the remote branch(es).
*/
private IResourceVariantTree remoteTree;
/**
* A resource variant tree against HEAD.
*/
private IResourceVariantTree baseTree;
private GitSynchronizeDataSet gitSynchronizeDataSet;
/**
* @param data
* @param store
*/
public GitResourceVariantTreeSubscriber(GitSynchronizeDataSet data,
ResourceVariantByteStore store) {
this.store = store;
this.gitSynchronizeDataSet = data;
}
private IResource[] roots;
@Override
public boolean isSupervised(IResource resource) throws TeamException {
return true; //gitSynchronizeDataSet.contains(resource.getProject());
}
@Override
public IResource[] roots() {
if (roots != null) {
return roots;
}
roots = gitSynchronizeDataSet.getAllResources();
return roots;
}
/**
* @param data
*/
public void reset(GitSynchronizeDataSet data) {
gitSynchronizeDataSet = data;
store.dispose();
roots = null;
baseTree = null;
remoteTree = null;
}
@Override
public IResource[] members(IResource resource) throws TeamException {
return getBaseTree().members(resource);
}
@Override
public String getName() {
return CoreText.GitBranchResourceVariantTreeSubscriber_gitRepository;
}
@Override
public IResourceVariantComparator getResourceComparator() {
return new GitResourceVariantComparator(gitSynchronizeDataSet, store);
}
@Override
protected IResourceVariantTree getBaseTree() {
if (baseTree == null) {
baseTree = new GitBaseResourceVariantTree(gitSynchronizeDataSet, store);
}
return baseTree;
}
@Override
protected IResourceVariantTree getRemoteTree() {
if (remoteTree == null) {
remoteTree = new GitRemoteResourceVariantTree(gitSynchronizeDataSet, store);
}
return remoteTree;
}
@Override
protected SyncInfo getSyncInfo(IResource local, IResourceVariant base,
IResourceVariant remote) throws TeamException {
GitSyncInfo info = new GitSyncInfo(local, base, remote,
getResourceComparator());
info.init();
return info;
}
}
|