Advertisement
Guest User

Untitled

a guest
Sep 13th, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.60 KB | None | 0 0
  1. public class RallyIntegrationServices {
  2. public static String urlParams='&fetch=FormattedID,Name,State,Description,ScheduleState,Release,Owner,Project,Priority,c_Priority,c_AccountManager,c_Customer,BlockedReason,ObjectID,Notes,Attachments';
  3. public String rallyUserName;
  4. public String rallyPassword;
  5. public String rallyUrl;
  6. public Case caseObject{get; set;}
  7. public String workspace;
  8. public String baseUrl;
  9. public String cookie = '';
  10. public RallyObj__c rallyObj= null;
  11.  
  12. public RallyIntegrationServices (){
  13. try{
  14. rallyObj = [SELECT Password__c, RallyURL__c, RallyUsername_c__c, Username__c, Workspace_Name__c FROM RallyObj__c order by createddate asc limit 1];
  15. }catch(Exception e){
  16. System.debug('e.exception' + e.getCause());
  17. }
  18. setWorkspaceURL();
  19. }
  20.  
  21. public RallyIntegrationServices (RallyObj__c obj){
  22. rallyObj = obj;
  23. setWorkspaceURL();
  24. }
  25.  
  26. public void setWorkspaceURL()
  27. {
  28. if(rallyObj!=null){
  29. rallyUserName= rallyObj.RallyUsername_c__c;
  30. rallyPassword= rallyObj.Password__c ;
  31. workspace = rallyObj.Workspace_Name__c;
  32. rallyUrl = rallyObj.RallyURL__c;
  33. }
  34.  
  35. System.debug('workspace :: ' + workspace);
  36.  
  37. if(workspace==null){
  38. baseUrl = 'https://rally1.rallydev.com/slm/webservice/v2.0/workspace/16636255277';
  39. }
  40. else if(workspace.equals('SANDBOX')){
  41. baseUrl = 'https://rally1.rallydev.com/slm/webservice/v2.0/workspace/16636255277';
  42. }
  43. else if(workspace.equals('PEOPLENET')){
  44. baseUrl = 'https://rally1.rallydev.com/slm/webservice/v2.0/workspace/16238506248';
  45. }
  46. }
  47.  
  48. public String getRallyResponse(String url){
  49. Blob headerValue = Blob.valueOf(rallyUserName +':'+ rallyPassword );
  50. String auth = 'Basic ' + EncodingUtil.base64Encode(headerValue);
  51. String response = null;
  52. HTTP http = new HTTP();
  53.  
  54. HTTPResponse authresp = new HTTPResponse();
  55. HTTPRequest request = new HTTPRequest();
  56.  
  57. System.debug('url : ' + url);
  58. try {
  59. request.setHeader('Content-Type', 'application/json');
  60. request.setHeader('Authorization',auth);
  61. request.setMethod('GET');
  62. request.setTimeout(120000);
  63. request.setEndpoint(url);
  64. authresp = http.send(request);
  65. response = authresp.getBody();
  66. cookie = authresp.getHeader('Set-Cookie');
  67.  
  68. System.debug('cookie : ' + cookie);
  69. }catch (exception e) {
  70. System.debug('Request Error : ' + e.getMessage() + ' : ' + e.getStackTraceString());
  71. response='';
  72. }
  73. return response;
  74. }
  75.  
  76. public Map<String,Object> getResultsList(String respBody, String artifactType){
  77. try{
  78. Map<String,Object> queryResults = new Map<String,Object>();
  79. if(respBody != null){
  80. Map<String,Object> baseResponse = (Map<String,Object>) JSON.deserializeUntyped(respBody);
  81. queryResults = (artifactType=='DE') ? (Map<String,Object>) baseResponse.get('Defect') : (Map<String,Object>) baseResponse.get('HierarchicalRequirement');
  82. }
  83. return queryResults;
  84. }
  85. catch(Exception e)
  86. {
  87. System.debug('Query ' + e.getMessage() + ' : ' +e.getLineNumber());
  88. return null;
  89. }
  90. }
  91.  
  92. string USorDE = null;
  93. public List<SearchResults> searchUpdateQuery(String query, String caseNumber, String Notes){
  94. List<SearchResults> data=new List<SearchResults>();
  95. String requestURL;
  96. try {
  97. integer lastIndexOfSlash = query.lastIndexOf('/');
  98. integer lastIndexOfDot = query.lastIndexOf('.');
  99. String objectId = query.substring(lastIndexOfSlash+1, lastIndexOfDot);
  100. String artifactType = '';
  101. if(query!=null){
  102. if(query.contains('defect')){
  103. System.debug('test line ...4');
  104. requestURL = 'https://rally1.rallydev.com/slm/webservice/v2.0/defect/' + objectId;
  105. artifactType = 'DE';
  106. }
  107. else if(query.contains('hierarchicalrequirement')){
  108. System.debug('test line ...5');
  109. requestURL = 'https://rally1.rallydev.com/slm/webservice/v2.0/hierarchicalrequirement/' + objectId;
  110. artifactType = 'US';
  111. }
  112. }
  113.  
  114. Map<String,Object> artifactResult = new Map<String,Object>();
  115. try{
  116. System.debug('artifactType : ' + artifactType);
  117. artifactResult = getResultsList(getRallyResponse(requestURL),artifactType);
  118. }catch(Exception e){
  119. System.debug('Error: ' + e.getMessage());
  120. }
  121.  
  122.  
  123.  
  124. if(artifactResult!=null && !artifactResult.isEmpty()){
  125. system.debug(caseNumber);
  126. try{
  127. Case caseAssoc = [SELECT Rally_ID__c, CaseNumber, RALLYSM__Development_Status__c FROM Case WHERE CaseNumber=:caseNumber LIMIT 1];
  128. system.debug('Compare Data : ' + (String)caseAssoc.Rally_ID__c+' '+(String)artifactResult.get('FormattedID'));
  129. data.add(new SearchResults((String)artifactResult.get('FormattedID'),(String)artifactResult.get('ScheduleState'),(String)artifactResult.get('Notes')));
  130. }
  131. catch(exception e){
  132. system.debug('In Failure Block' + e.getMessage() + ' line number : ' + e.getLineNumber());
  133. }
  134. }
  135. }
  136. catch (exception e) {
  137. system.debug('In ' + e.getMessage() + ' line number : ' + e.getLineNumber() );
  138. data = null;
  139. system.debug(e);
  140. }
  141. return data;
  142. }
  143.  
  144. public void updateCaseInformation()
  145. {
  146. CalloutOffset__c callout = null;
  147. // get offset and page size of the sync
  148. List<CalloutOffset__c> Callouts = [select key__c, pagelimit__c, pageoffset__c from CalloutOffset__c where key__c='RallySync'];
  149. if(Callouts==null || callouts.isEmpty())
  150. {
  151. callout = new CalloutOffset__c();
  152. callout.key__c = 'RallySync';
  153. callout.pagelimit__c = 100;
  154. callout.pageoffset__c = 0;
  155. }
  156. else
  157. callout = callouts.get(0);
  158.  
  159.  
  160. List<Case> caseList = new List<Case>();
  161. if(NewCaseComm==null)
  162. NewCaseComm = new list<CaseComment>();
  163.  
  164. list<Case> rallyCases = new list<Case>();
  165. if(workspace=='SANDBOX')
  166. rallyCases =[select Id,RALLYSM__Rally_Artifact_Ref__c,casenumber,RALLYSM__Development_Status__c from case where RALLYSM__Rally_Artifact_Ref__c != null and (RALLYSM__Development_Status__c !='Accepted' or RALLYSM__Development_Status__c != 'Finalized') and (Status != 'Resolution Provided' and Status != 'Closed') limit 49000];
  167. else if (workspace=='PEOPLENET')
  168. rallyCases =[select Id,RALLYSM__Rally_Artifact_Ref__c,casenumber,RALLYSM__Development_Status__c from case where RALLYSM__Rally_Artifact_Ref__c != null and RALLYSM__Development_Status__c != 'Finalized' and (Status != 'Resolution Provided' and Status != 'Closed') limit 49000];
  169.  
  170. if(Test.isRunningTest())
  171. {
  172. rallyCases = new list<Case>();
  173. Case ca = [select Id, casenumber,RALLYSM__Rally_Artifact_Ref__c from case where subject='Case Test'];
  174. rallyCases.add(ca);
  175. }
  176.  
  177. Integer record = 1;
  178. Integer pl = rallyCases.size()> (callout.pageoffset__c + callout.pagelimit__c) ? Integer.valueOf(callout.pagelimit__c) : Integer.valueOf(rallyCases.size() - callout.pageoffset__c);
  179.  
  180. for(Case rallyCase : rallyCases )
  181. {
  182. if(record>=callout.pageoffset__c && record < (callout.pageoffset__c + callout.pagelimit__c)){
  183. List<SearchResults> searchlist = searchUpdateQuery(rallyCase.RALLYSM__Rally_Artifact_Ref__c, rallyCase.CaseNumber, 'Notes');
  184. if(searchlist!=null && !searchlist.isEmpty())
  185. {
  186. SearchResults sr = searchlist.get(0);
  187. rallyCase = modifyCaseInformation(sr, rallyCase);
  188. caseList.add(rallyCase);
  189. }
  190. }
  191. record = record + 1;
  192. }
  193.  
  194. try{
  195. System.debug('Before update........');
  196. try{
  197. callout.pageoffset__c = callout.pageoffset__c + callout.pagelimit__c;
  198. if(callout.pageoffset__c> rallyCases.size())
  199. callout.pageoffset__c = 0;
  200.  
  201. if(Callouts==null || callouts.isEmpty())
  202. insert callout;
  203. else
  204. update callout;
  205.  
  206. if(NewCaseComm!=null && !NewCaseComm.isEmpty())
  207. insert NewCaseComm;
  208.  
  209. }catch(Exception nc){
  210. System.debug('Error in comments >>>>>>>>>>: ' + nc.getMessage() + ' : ' +nc.getCause() + ' : ' + nc.getLineNumber());
  211. }
  212.  
  213. if(!caseList.isEmpty())
  214. {
  215. Integer index =0;
  216. try{
  217. update caseList;
  218. System.debug('Schedule update size : ' + caseList.size());
  219. }
  220. catch(Exception ex)
  221. {
  222. System.debug('inner Error >>>>>>>>>>: ' + ex.getMessage() + ' : ' +ex.getCause() + ' : ' + ex.getLineNumber());
  223. }
  224.  
  225. }
  226. System.debug('After update........');
  227. }
  228. catch(Exception ex)
  229. {
  230. System.debug('Error >>>>>>>>>>: ' + ex.getMessage() + ' : ' +ex.getCause() + ' : ' + ex.getLineNumber());
  231. }
  232. }
  233.  
  234. public List<CaseComment> NewCaseComm{get; set;}
  235.  
  236. public Case modifyCaseInformation(SearchResults sResult, Case newCase)
  237. {
  238. try {
  239. System.debug('workspace : ' + workspace);
  240. System.debug('sResult.scheduleState: ' + sResult.scheduleState);
  241. String url = newCase.RALLYSM__Rally_Artifact_Ref__c;
  242.  
  243. if(Test.isRunningTest())
  244. url = 'defect';
  245.  
  246. // update case
  247. newcase.RALLYSM__Development_Status__c = sResult.scheduleState;
  248. newcase.Rally_ID__c = sResult.rallyID;
  249. if((sResult.scheduleState == 'Accepted' && url.contains('defect') && workspace.equals('SANDBOX'))
  250. || (sResult.scheduleState == 'Accepted' && url.contains('hierarchicalrequirement') && workspace.equals('SANDBOX'))
  251. || (sResult.scheduleState == 'Finalized' && url.contains('defect') && workspace.equals('PEOPLENET'))
  252. || (sResult.scheduleState == 'Finalized' && url.contains('hierarchicalrequirement') && workspace.equals('PEOPLENET'))){
  253. newcase.Status = 'Resolution Provided';
  254. newCase.OwnerId = '00GE0000000MPX8';
  255.  
  256. String body = sResult.Notes.length()>4000 ? sResult.Notes.substring(0, 3999) : sResult.Notes;
  257.  
  258. List<CaseComment> comms = [select Id, CommentBody from CaseComment where CommentBody=:body and ParentId =:newCase.Id];
  259.  
  260. if(comms==null || comms.isEmpty()){
  261. CaseComment comm = new CaseComment();
  262. comm.ParentId = newCase.Id;
  263. comm.CommentBody =body;
  264. NewCaseComm.add(comm);
  265. }
  266. }
  267. System.debug('test line ...4.11111....');
  268. return newCase;
  269. }
  270. catch(Exception e)
  271. {
  272. system.debug('exception in update : ' +e.getMessage());
  273. return null;
  274. }
  275. }
  276. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement