Skip to content

Commit

Permalink
using issue bean methods to simplify the logic
Browse files Browse the repository at this point in the history
Signed-off-by: Santhosh Gandhe <[email protected]>
  • Loading branch information
san81 committed Nov 1, 2024
1 parent 80f6e19 commit 7f1dfae
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,13 @@
import org.opensearch.dataprepper.plugins.source.source_crawler.model.ItemInfo;

import java.time.Instant;
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import java.util.regex.Pattern;

import static org.opensearch.dataprepper.plugins.source.jira.JiraService.CONTENT_TYPE;
import static org.opensearch.dataprepper.plugins.source.jira.utils.Constants.CREATED;
import static org.opensearch.dataprepper.plugins.source.jira.utils.Constants.ISSUE_KEY;
import static org.opensearch.dataprepper.plugins.source.jira.utils.Constants.KEY;
import static org.opensearch.dataprepper.plugins.source.jira.utils.Constants.NAME;
import static org.opensearch.dataprepper.plugins.source.jira.utils.Constants.PROJECT;
import static org.opensearch.dataprepper.plugins.source.jira.utils.Constants.PROJECT_KEY;
import static org.opensearch.dataprepper.plugins.source.jira.utils.Constants.PROJECT_NAME;
import static org.opensearch.dataprepper.plugins.source.jira.utils.Constants.UPDATED;
Expand Down Expand Up @@ -127,47 +119,18 @@ public JiraItemInfoBuilder withIssueType(String issueType) {

public JiraItemInfoBuilder withIssueBean(IssueBean issue) {
Map<String, Object> issueMetadata = new HashMap<>();
if (Objects.nonNull(((Map) issue.getFields().get(PROJECT)).get(KEY))) {
issueMetadata.put(PROJECT_KEY, ((Map) issue.getFields().get(PROJECT)).get(KEY).toString());
this.project = ((Map) issue.getFields().get(PROJECT)).get(KEY).toString();
}

if (Objects.nonNull(((Map) issue.getFields().get(PROJECT)).get(NAME))) {
issueMetadata.put(PROJECT_NAME, ((Map) issue.getFields().get(PROJECT)).get(NAME).toString());
}

long created = 0;
Pattern JiraDateTimePattern = Pattern.compile(
"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[-+]\\d{4}$");
DateTimeFormatter offsetDateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
if (Objects.nonNull(issue.getFields().get(CREATED)) && JiraDateTimePattern.matcher(issue.getFields().get(CREATED)
.toString()).matches()) {
String charSequence = issue.getFields().get(CREATED).toString();
OffsetDateTime offsetDateTime = OffsetDateTime.parse(charSequence, offsetDateTimeFormatter);
new Date(offsetDateTime.toInstant().toEpochMilli());
created = offsetDateTime.toEpochSecond() * 1000;
}
issueMetadata.put(CREATED, String.valueOf(created));

long updated = 0;
if (JiraDateTimePattern.matcher(issue.getFields().get(UPDATED).toString()).matches()) {
String charSequence = issue.getFields().get(UPDATED).toString();
OffsetDateTime offsetDateTime = OffsetDateTime.parse(charSequence, offsetDateTimeFormatter);
new Date(offsetDateTime.toInstant().toEpochMilli());
updated = offsetDateTime.toEpochSecond() * 1000;
}
issueMetadata.put(UPDATED, String.valueOf(updated));

issueMetadata.put(PROJECT_KEY, issue.getProject());
issueMetadata.put(PROJECT_NAME, issue.getProjectName());
issueMetadata.put(CREATED, issue.getCreatedTimeMillis());
issueMetadata.put(UPDATED, issue.getUpdatedTimeMillis());
issueMetadata.put(ISSUE_KEY, issue.getKey());
this.id = issue.getKey();

issueMetadata.put(CONTENT_TYPE, JiraContentType.ISSUE.getType());
this.issueType = JiraContentType.ISSUE.getType();

this.project = issue.getProject();
this.id = issue.getKey();
this.issueType = JiraContentType.ISSUE.getType();
this.itemId = _ISSUE + issueMetadata.get(PROJECT_KEY) + "-" + issue.getKey();

this.metadata = issueMetadata;

return this;
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,50 +1,124 @@
package org.opensearch.dataprepper.plugins.source.jira.models;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.Map;
import java.util.Objects;
import java.util.regex.Pattern;

import static org.opensearch.dataprepper.plugins.source.jira.utils.Constants.CREATED;
import static org.opensearch.dataprepper.plugins.source.jira.utils.Constants.KEY;
import static org.opensearch.dataprepper.plugins.source.jira.utils.Constants.NAME;
import static org.opensearch.dataprepper.plugins.source.jira.utils.Constants.PROJECT;
import static org.opensearch.dataprepper.plugins.source.jira.utils.Constants.UPDATED;


@Getter
@Setter
public class IssueBean {

@JsonIgnore
private final Pattern JiraDateTimePattern = Pattern.compile(
"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[-+]\\d{4}$");
@JsonIgnore
private final DateTimeFormatter offsetDateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

/**
* Expand options that include additional issue details in the response.
*/
@Getter
@Setter
@JsonProperty("expand")
private String expand = null;

/**
* The ID of the issue.
*/
@Getter
@Setter
@JsonProperty("id")
private String id = null;

/**
* The URL of the issue details.
*/
@Getter
@Setter
@JsonProperty("self")
private String self = null;

/**
* The key of the issue.
*/
@Getter
@Setter
@JsonProperty("key")
private String key = null;

@Getter
@Setter
@JsonProperty("renderedFields")
private Map<String, Object> renderedFields = null;

@Getter
@Setter
@JsonProperty("properties")
private Map<String, Object> properties = null;

@Getter
@Setter
@JsonProperty("names")
private Map<String, String> names = null;

@Getter
@Setter
@JsonProperty("fields")
private Map<String, Object> fields = null;


@JsonIgnore
public String getProject() {
if (fields != null && Objects.nonNull(((Map) fields.get(PROJECT)).get(KEY))) {
return ((Map) fields.get(PROJECT)).get(KEY).toString();
}
return null;
}

@JsonIgnore
public String getProjectName() {
if (fields != null && Objects.nonNull(((Map) fields.get(PROJECT)).get(NAME))) {
((Map) fields.get(PROJECT)).get(NAME).toString();
}
return null;
}

@JsonIgnore
public long getCreatedTimeMillis() {
return getGivenDateField(CREATED);
}

@JsonIgnore
public long getUpdatedTimeMillis() {
return getGivenDateField(UPDATED);
}

@JsonIgnore
private long getGivenDateField(String dateTimeFieldToPull) {
long dateTimeField = 0;

if (fields != null && Objects.nonNull(fields.get(dateTimeFieldToPull)) && JiraDateTimePattern.matcher(fields.get(dateTimeFieldToPull)
.toString()).matches()) {
String charSequence = fields.get(dateTimeFieldToPull).toString();
OffsetDateTime offsetDateTime = OffsetDateTime.parse(charSequence, offsetDateTimeFormatter);
new Date(offsetDateTime.toInstant().toEpochMilli());
dateTimeField = offsetDateTime.toEpochSecond() * 1000;
}
return dateTimeField;
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ public class JiraOauthConfig implements JiraAuthConfig {
private String accessToken;
@Getter
private String refreshToken;
@Getter
private String cloudId = null;

public JiraOauthConfig(JiraSourceConfig jiraSourceConfig) {
Expand Down

0 comments on commit 7f1dfae

Please sign in to comment.