/***************************************************************************** This file is part of Git-Starteam. Git-Starteam is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Git-Starteam is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Git-Starteam. If not, see <http://www.gnu.org/licenses/>. ******************************************************************************/ package org.sync.changerequests; import java.util.regex.Pattern; import com.starbase.starteam.ChangeRequest; import com.starbase.starteam.Label; import com.starbase.starteam.Server; import com.starbase.starteam.User; public class ChangeRequestInformation { private final String Release_Notes_Property = "Usr_ReleaseNote"; private final String SIM_Issue_ID_Property = "Usr_SimIssueID"; private final String JIRA_Issue_Property = "Usr_SimSRS"; private ChangeRequest changeRequest; private String associatedFilePattern; private String CachedString; private boolean CachingIsDone; public ChangeRequestInformation(ChangeRequest changeRequest, String associatedFilePattern){ this.changeRequest = changeRequest; this.associatedFilePattern = associatedFilePattern; CachedString = null; CachingIsDone = false; } public int getNumber(){ return changeRequest.getNumber(); } public User getResponsability(){ Server server = changeRequest.getServer(); return server.getUser(changeRequest.getResponsibility()); } public User getEnteredBy(){ Server server = changeRequest.getServer(); return server.getUser(changeRequest.getCreatedBy()); } public String getDescription() { return changeRequest.getDescription(); } public String getType(){ return changeRequest.getRequestTypeDisplayName(changeRequest.getRequestType()); } public String getWorkflowStatus(){ return changeRequest.getStatusDisplayName(changeRequest.getStatus()); } public String getFixDetails() { return changeRequest.getFix(); } public String getAdressedIn(){ int labelId = changeRequest.getAddressedIn(); Label[] labels = changeRequest.getAllLabels(); for(Label label : labels){ if(label.getID() == labelId){ return label.getName(); } } return ""; } public String getComponent(){ return changeRequest.getComponent(); } public String getCodeReviewer(){ return changeRequest.getExternalReference(); } public String getFixSummary(){ return changeRequest.getSynopsis(); } public String getReleaseNotes() { Object releaseNotestObject = changeRequest.get(Release_Notes_Property); return releaseNotestObject == null ? null: (String) releaseNotestObject; } public String getSimIssue(){ Object simIssueObject = changeRequest.get(SIM_Issue_ID_Property); return simIssueObject == null ? null: (String) simIssueObject; } public String getJiraIssue(){ Object jiraIssueObject = changeRequest.get(JIRA_Issue_Property); return jiraIssueObject == null ? null: (String) jiraIssueObject; } public Pattern getFilePattern() { return Pattern.compile(associatedFilePattern); } @Override public String toString(){ if (CachingIsDone) { return CachedString; } StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("[CR"); stringBuilder.append(getNumber()); stringBuilder.append("] "); stringBuilder.append(getFixSummary()); stringBuilder.append("\n\n"); stringBuilder.append("Workflow Status: "); stringBuilder.append(getWorkflowStatus()); stringBuilder.append("\n"); stringBuilder.append("Addressed In: "); stringBuilder.append(getAdressedIn()); stringBuilder.append("\n"); stringBuilder.append("Type: "); stringBuilder.append(getType()); stringBuilder.append("\n"); stringBuilder.append("Responsability: "); stringBuilder.append(getResponsability().toString()); stringBuilder.append("\n"); stringBuilder.append("Entered By: "); stringBuilder.append(getEnteredBy().toString()); stringBuilder.append("\n"); stringBuilder.append("------\n"); stringBuilder.append("Code Reviewer: "); stringBuilder.append(getCodeReviewer()); stringBuilder.append(" "); stringBuilder.append("Component: \n"); stringBuilder.append(getComponent()); stringBuilder.append("\n\n"); stringBuilder.append("ReleaseNotes: \n"); stringBuilder.append(getReleaseNotes()); stringBuilder.append("\n\n"); stringBuilder.append("Description: \n"); stringBuilder.append(getDescription()); stringBuilder.append("\n\n"); stringBuilder.append("Fix: \n"); stringBuilder.append(getFixDetails()); stringBuilder.append("\n\n"); stringBuilder.append("------\n"); stringBuilder.append("SimIssue: "); stringBuilder.append(getSimIssue()); stringBuilder.append(" "); stringBuilder.append("JiraIssue: "); stringBuilder.append(getJiraIssue()); CachedString = stringBuilder.toString(); CachingIsDone = true; return CachedString; } }