Skip to content

Commit

Permalink
fork of v32 to support older PPM versions, without 10.0.3 request new…
Browse files Browse the repository at this point in the history
… APIs
  • Loading branch information
Etienne Canaud committed May 30, 2023
1 parent 9b907d2 commit 341efdb
Show file tree
Hide file tree
Showing 3 changed files with 1 addition and 128 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public String getExternalApplicationVersionIndication() {

@Override
public String getConnectorVersion() {
return "3.2";
return "3.2 (for PPM 10.0.2-)";
}

@Override
Expand Down Expand Up @@ -118,22 +118,6 @@ public List<String> getIntegrationClasses() {
return Arrays.asList(new String[] {"com.ppm.integration.agilesdk.connector.jira.JIRAWorkPlanIntegration","com.ppm.integration.agilesdk.connector.jira.JIRATimeSheetIntegration", "com.ppm.integration.agilesdk.connector.jira.JIRAPortfolioEpicIntegration", "com.ppm.integration.agilesdk.connector.jira.JIRAAgileDataIntegration", "com.ppm.integration.agilesdk.connector.jira.JIRARequestIntegration"});
}

@Override
/** @since 10.0.3 */
public String testConnection(ValueSet instanceConfigurationParameters) {
// Overriding this method as making a call to /rest/api/2/myself is faster then retrieving the whole list of projects.
try {
String myselfInfo = JIRAServiceProvider.get(instanceConfigurationParameters).useAdminAccount().getMyselfInfo();
logger.debug("Test Connection successful. Returned myself info:");
logger.debug(myselfInfo);
} catch (Exception e) {
logger.error("Error when testing connectivity", e);
return e.getMessage();
}

return null;
}

private DynamicDropdown getUserDataDDL(String elementName,
String labelKey) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@

import java.util.*;

import com.hp.ppm.common.model.AgileEntityIdName;
import com.hp.ppm.common.model.AgileEntityIdProjectDate;
import org.apache.commons.lang.StringUtils;
import org.json.JSONArray;
import org.json.JSONException;
Expand Down Expand Up @@ -415,44 +413,4 @@ private Map<String,String> getFieldsFromAgileEntity(AgileEntity entity, Map<Stri

return JIRAServiceProvider.get(instanceConfigurationParameters).getSingleAgileEntityIssue(agileProjectValue, entityType, entityId);
}

@Override
/** @since 10.0.3 */
public boolean supportsAgileEntityToNewPPMRequestSync() {
return true;
}

@Override
/** @since 10.0.3 */
public List<AgileEntityIdProjectDate> getAgileEntityIDsToCreateInPPM(final String agileProjectValue, final String entityType,
final ValueSet instanceConfigurationParameters, Date createdSinceDate) {

// We have no way to know if some of the issues in Jira are already mapped in PPM, so we'll return all of them.
if (agileProjectValue == null || entityType.isEmpty()) {
return new ArrayList<>();
}



List<AgileEntityIdProjectDate> entities = JIRAServiceProvider.get(instanceConfigurationParameters).useAdminAccount().getAgileEntityIdsCreatedSince( ("*".equals(agileProjectValue) ? null : agileProjectValue), entityType, createdSinceDate);

return entities;

}

@Override
/** @since 10.0.3 */
public boolean supportsPPMRequestToExistingAgileEntitySync() {
return true;
}

@Override
/** @since 10.0.3 */
public List<AgileEntityIdName> getCandidateEntitiesToSyncWithRequests(final String agileProjectValue, final String entityType,
final ValueSet instanceConfigurationParameters) {
List<AgileEntityIdName> entities = JIRAServiceProvider.get(instanceConfigurationParameters).useAdminAccount().getAgileEntityIdsAndNames(agileProjectValue, entityType);

return entities;
}

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package com.ppm.integration.agilesdk.connector.jira.service;

import com.hp.ppm.common.model.AgileEntityIdName;
import com.hp.ppm.common.model.AgileEntityIdProjectDate;
import com.hp.ppm.user.model.User;
import com.ppm.integration.agilesdk.ValueSet;
import com.ppm.integration.agilesdk.connector.jira.JIRAConstants;
Expand Down Expand Up @@ -127,42 +125,6 @@ private List<JIRASubTaskableIssue> getAllEpicOrPortfolioDirectDescendants(List<S
}


public List<AgileEntityIdName> getAgileEntityIdsAndNames(String agileProjectValue, String entityType) {
JiraIssuesRetrieverUrlBuilder searchUrlBuilder =
new JiraIssuesRetrieverUrlBuilder(baseUri).retrieveOnlyFields("key", "issuetype", "summary");

if (!StringUtils.isBlank(agileProjectValue)) {
searchUrlBuilder.setProjectKey(agileProjectValue);
}

if (!StringUtils.isBlank(entityType)) {
searchUrlBuilder.setStandardIssueTypes(entityType);
}

List<AgileEntityIdName> results = new ArrayList<>();

IssueRetrievalResult result = null;
int fetchedResults = 0;
searchUrlBuilder.setStartAt(0);

searchUrlBuilder = decorateOrderBySprintCreatedUrl(searchUrlBuilder);

do {
result = runIssueRetrievalRequest(searchUrlBuilder.toUrlString());
for (JSONObject obj : result.getIssues()) {
JIRAIssue issue = getIssueFromJSONObj(obj);
AgileEntityIdName idAndName =
new AgileEntityIdName(issue.getKey(), "[" + issue.getKey() + "] " + issue.getName());
results.add(idAndName);
}
fetchedResults += result.getMaxResults();
searchUrlBuilder.setStartAt(fetchedResults);

} while (fetchedResults < result.getTotal());

return results;
}

private class CustomFields {
public String epicNameCustomField = null;

Expand Down Expand Up @@ -846,37 +808,6 @@ public List<JIRAAgileEntity> getAgileEntityIssuesModifiedSince( Map<String, JIRA
return retrieveAgileEntities(fieldsInfo, searchUrlBuilder);
}

public List<AgileEntityIdProjectDate> getAgileEntityIdsCreatedSince(String agileProjectValue, String entityType, Date createdSinceDate) {

JiraIssuesRetrieverUrlBuilder searchUrlBuilder =
new JiraIssuesRetrieverUrlBuilder(baseUri).retrieveOnlyFields("key", "issuetype", "created", "summary");

if (!StringUtils.isBlank(agileProjectValue)) {
searchUrlBuilder.setProjectKey(agileProjectValue);
}

if (!StringUtils.isBlank(entityType)) {
searchUrlBuilder.setStandardIssueTypes(entityType);
}

if (createdSinceDate != null) {
searchUrlBuilder.addAndConstraint("created>='" + new SimpleDateFormat("yyyy-MM-dd HH:mm").format(createdSinceDate) + "'");
}

IssueRetrievalResult result =
runIssueRetrievalRequest(decorateOrderBySprintCreatedUrl(searchUrlBuilder).toUrlString());

List<AgileEntityIdProjectDate> results = new ArrayList<>(result.getIssues().size());

for (JSONObject obj : result.getIssues()) {
JIRAIssue issue = getIssueFromJSONObj(obj);
AgileEntityIdProjectDate idProjectDate = new AgileEntityIdProjectDate(issue.getKey(), issue.getProjectKey(), issue.getCreationDateAsDate());
results.add(idProjectDate);
}

return results;
}

/**
* We use the search issue API instead of the /rest/issue/{key} because we already have all
* the logic to get the right columns and build the right JIRAIssue in the search API.
Expand Down

0 comments on commit 341efdb

Please sign in to comment.