1 package com.proalpha.pds.gitutils;
3 import java.io.FileNotFoundException;
4 import java.io.FileReader;
5 import java.io.IOException;
6 import java.util.ArrayList;
9 import org.eclipse.core.expressions.PropertyTester;
10 import org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode;
11 import org.eclipse.jgit.api.CherryPickResult.CherryPickStatus;
12 import org.eclipse.jgit.api.Git;
13 import org.eclipse.jgit.api.errors.GitAPIException;
14 import org.eclipse.jgit.errors.NoWorkTreeException;
15 import org.json.simple.JSONObject;
16 import org.json.simple.parser.JSONParser;
17 import org.json.simple.parser.ParseException;
19 import com.proalpha.git.model.PaCherryPickResult;
20 import com.proalpha.pds.gitutils.cherrypick.CherryPick;
21 import com.proalpha.pds.gitutils.common.Repository;
26 public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
27 if (property.equals(
"isConflict")) {
28 PaCherryPickResult result =
CherryPick.getInstance().getCherryPickResult();
31 return (result.getStatus() == CherryPickStatus.CONFLICTING);
36 if (property.equals(
"isMergetoolApplicable")) {
37 if (receiver instanceof RepositoryTreeNode) {
38 RepositoryTreeNode node = (RepositoryTreeNode) receiver;
39 org.eclipse.jgit.lib.Repository repository = node.getRepository();
41 Git git =
new Git(repository);
43 Set<String> conflictingFiles = git.status().call().getConflicting();
44 Repository.getInstance().setConflictingFiles(
new ArrayList<String>(conflictingFiles));
45 return !conflictingFiles.isEmpty();
46 }
catch (NoWorkTreeException e) {
49 }
catch (GitAPIException e) {
59 if (property.equals(
"isOngoingCherryPick")) {
61 if (
CherryPick.getInstance().getCherryPickCommand() !=
null) {
62 org.eclipse.jgit.lib.Repository cpRepo =
CherryPick.getInstance().getCherryPickCommand().getRepository();
64 if (receiver instanceof RepositoryTreeNode) {
65 RepositoryTreeNode node = (RepositoryTreeNode) receiver;
66 org.eclipse.jgit.lib.Repository repository = node.getRepository();
68 if (repository !=
null)
69 return cpRepo.equals(repository);
72 System.out.println(
"Property tester: " + property +
"=" +
"false");
78 if (property.equals(
"canStartNewCherryPick")) {
79 return (
CherryPick.getInstance().getCherryPickCommand() ==
null);
82 if (property.equals(
"isConsRepo")) {
84 if (receiver instanceof RepositoryTreeNode) {
85 RepositoryTreeNode node = (RepositoryTreeNode) receiver;
86 org.eclipse.jgit.lib.Repository repository = node.getRepository();
87 String workspace = repository.getDirectory().getParent();
89 JSONParser jsonParser =
new JSONParser();
90 try (FileReader reader =
new FileReader(workspace +
"/pa_config_project.json"))
92 JSONObject obj = (JSONObject) jsonParser.parse(reader);
93 if (obj.containsKey(
"repository_type")) {
94 String repositoryType = (String) obj.get(
"repository_type");
95 if(repositoryType.equals(
"cons"))
return true;
99 }
catch (FileNotFoundException e) {
101 }
catch(ClassCastException e) {
103 }
catch (IOException e) {
105 }
catch (ParseException e) {