1 package com.proalpha.pds.gitutils.mylyn;
3 import java.lang.reflect.InvocationTargetException;
4 import java.util.ArrayList;
5 import java.util.Arrays;
8 import org.eclipse.core.resources.IProject;
9 import org.eclipse.core.runtime.IProgressMonitor;
10 import org.eclipse.core.runtime.SubMonitor;
11 import org.eclipse.core.runtime.jobs.ISchedulingRule;
12 import org.eclipse.egit.core.EclipseGitProgressTransformer;
13 import org.eclipse.egit.core.internal.job.RuleUtil;
14 import org.eclipse.egit.core.internal.util.ProjectUtil;
15 import org.eclipse.jgit.api.CheckoutResult;
16 import org.eclipse.jgit.api.Git;
17 import org.eclipse.jgit.lib.Constants;
18 import org.eclipse.jgit.lib.Repository;
19 import org.eclipse.swt.custom.BusyIndicator;
20 import org.eclipse.swt.widgets.Display;
21 import org.slf4j.Logger;
22 import org.slf4j.LoggerFactory;
24 import com.proalpha.git.PaGit;
25 import com.proalpha.pds.gitutils.common.CheckoutOperation;
26 import com.proalpha.pds.gitutils.external.DbAndBinaryOperation;
27 import com.proalpha.pds.paconnector.Activator;
44 private IProgressMonitor monitor;
56 this.settings = settings;
59 PaGit.init(
new Git(settings.getRepository()));
63 this.settings = settings;
64 this.recoSettings = recoSettings;
65 PaGit.init(
new Git(settings.getRepository()));
76 Runnable r =
new Runnable() {
81 SubMonitor subMonitor = SubMonitor.convert(monitor,
"pA feature branch creation", 10);
82 PaGit.getInstance().setProgressMonitor(
new EclipseGitProgressTransformer(subMonitor.newChild(1)));
84 coOp =
new CheckoutOperation(settings.getRepository(), Constants.DEFAULT_REMOTE_NAME,
85 settings.getSourceBranch(), settings.getTargetBranch(), settings.isUpdateSourceBranch(),
86 settings.isUpdateTargetBranch());
92 performReconcileJob(settings.getRepository(), recoSettings, subMonitor);
94 }
catch (InvocationTargetException e) {
95 logger.error(
"An error {0} occured", e);
101 IProgressMonitor monitor) {
104 IProject[] projects = ProjectUtil.getProjects(repository);
105 ArrayList<IProject> openedProjects =
new ArrayList<>(Arrays.asList(projects));
106 SubMonitor subMonitorArtifacts = SubMonitor.convert(monitor,
"database reconcile and artifact update",
109 if (recoSettings.isLoadDf())
110 Activator.
getDefault().getProjectManager().closeProjects(openedProjects, subMonitorArtifacts);
113 updateDbBinaryOp.setProgressMonitor(subMonitorArtifacts);
117 coOp =
new CheckoutOperation(settings.getRepository(), Constants.DEFAULT_REMOTE_NAME,
118 settings.getSourceBranch(), settings.getTargetBranch(), settings.isUpdateSourceBranch(),
119 settings.isUpdateTargetBranch());
121 }
catch (InvocationTargetException e) {
122 logger.error(
"An error {0} occured", e);
125 if (recoSettings.isLoadDf())
126 Activator.
getDefault().getProjectManager().openProjects(openedProjects, subMonitorArtifacts);
129 BusyIndicator.showWhile(Display.getCurrent(), r);
132 @SuppressWarnings(
"restriction")
133 public ISchedulingRule getSchedulingRule() {
134 if (settings !=
null)
135 return RuleUtil.getRule(settings.getRepository());
140 public void setProgressMonitor(IProgressMonitor monitor) {
141 this.monitor = monitor;
150 List<ActionResult> results =
new ArrayList<>();
151 if (updateDbBinaryOp !=
null)
152 results.addAll(updateDbBinaryOp.getActionResults());
155 if (coOp.
getResult().getStatus() != CheckoutResult.Status.OK)
156 checkoutResult.setStatus(
"FAIL");
157 results.add(0, checkoutResult);
167 public void setSettings(FeatureBranchSettings settings) {
168 this.settings = settings;
static Activator getDefault()
CheckoutResult getResult()
void setProgressMonitor(IProgressMonitor monitor)
FeatureBranchOperation(FeatureBranchSettings settings)
List< ActionResult > getResult()
List< String > getPaUpdateStages()