From eda808e35e3ab773c2c277d2103796ad2fd9c206 Mon Sep 17 00:00:00 2001 From: Vladyslav Bondarenko Date: Sat, 29 May 2021 02:32:42 +0300 Subject: [PATCH] instead of saving 1K issues per file, save issues with ID within a thousand per file --- src/com/SZZ/jiraAnalyser/entities/Link.java | 2 +- .../SZZ/jiraAnalyser/git/JiraRetriever.java | 28 ++++++++++++------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/com/SZZ/jiraAnalyser/entities/Link.java b/src/com/SZZ/jiraAnalyser/entities/Link.java index bc03ae4..53aa3d4 100644 --- a/src/com/SZZ/jiraAnalyser/entities/Link.java +++ b/src/com/SZZ/jiraAnalyser/entities/Link.java @@ -206,7 +206,7 @@ private void setBug() { } try{ - Resolution.valueOf(s[2].toUpperCase().replace(" ", "").replace("'", "")); + resolution = Resolution.valueOf(s[2].toUpperCase().replace(" ", "").replace("'", "")); } catch(Exception e){ resolution = Resolution.NONE; diff --git a/src/com/SZZ/jiraAnalyser/git/JiraRetriever.java b/src/com/SZZ/jiraAnalyser/git/JiraRetriever.java index d9cc200..7227ed5 100644 --- a/src/com/SZZ/jiraAnalyser/git/JiraRetriever.java +++ b/src/com/SZZ/jiraAnalyser/git/JiraRetriever.java @@ -73,6 +73,10 @@ private Document parseXML(InputStream stream) { return doc; } + private int getIssueIdFromKey(String key) { + return Integer.parseInt(key.replaceFirst(".*?(\\d+).*", "$1")); + } + private int getTotalNumberIssues() { String tempQuery = "?jqlQuery=project+%3D+{0}+ORDER+BY+key+DESC&tempMax=1"; tempQuery = tempQuery.replace("{0}", projectName); @@ -85,8 +89,7 @@ private int getTotalNumberIssues() { for (int p = 0; p < node.getChildNodes().getLength(); p++) { if (node.getChildNodes().item(p).getNodeName().equals("key")) { String key = (node.getChildNodes().item(p).getTextContent()); - key = key.replaceFirst(".*?(\\d+).*", "$1"); - return Integer.parseInt(key); + return getIssueIdFromKey(key); } } } catch (Exception e) { @@ -98,6 +101,7 @@ private int getTotalNumberIssues() { public void printIssues() { int page = 0; int totalePages = (int) Math.ceil(((double) getTotalNumberIssues() / 1000)); + int numberOfIssues = 0; String fileName = projectName + "_" + page + ".csv"; File file = new File( fileName); System.out.println("Jira issues saved in "+fileName); @@ -116,7 +120,7 @@ public void printIssues() { while (true) { String tempQuery = "?jqlQuery=project+%3D+{0}+ORDER+BY+key+ASC&tempMax=1000&pager/start={1}"; tempQuery = tempQuery.replace("{0}", projectName); - tempQuery = tempQuery.replace("{1}", ((page) * 1000) + ""); + tempQuery = tempQuery.replace("{1}", numberOfIssues + 1 + ""); if (totalePages >= (page + 1)) System.out.println("Download Jira issues. Page: " + (page + 1) + "/" + totalePages); try { @@ -140,7 +144,7 @@ public void printIssues() { e1.printStackTrace(); } printHeader(pw); - printIssuesOfPage(d, pw); + numberOfIssues += printIssuesOfPage(d, pw, page); pw.close(); page++; } catch (Exception e) { @@ -166,13 +170,15 @@ private void printHeader(PrintWriter pw) { /** * * @param doc - * @param nodeName + * @param pw + * @param pageNumber * @return */ - private void printIssuesOfPage(Document doc, PrintWriter pw) { + private int printIssuesOfPage(Document doc, PrintWriter pw, int pageNumber) { NodeList descNodes = doc.getElementsByTagName("item"); SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.ENGLISH); - for (int i = 0; i < descNodes.getLength(); i++) { + int numberOfIssues = 0; + loop: for (int i = 0; i < descNodes.getLength(); i++) { Node node = descNodes.item(i); String issueKey = ""; String priority = ""; @@ -196,7 +202,9 @@ private void printIssuesOfPage(Document doc, PrintWriter pw) { resolution = children.item(p).getTextContent(); break; case "key": - issueKey = children.item(p).getTextContent(); + String key = children.item(p).getTextContent(); + if (getIssueIdFromKey(key) >= (pageNumber + 1) * 1000) break loop; + issueKey = key; break; case "created": String createdDate = children.item(p).getTextContent(); @@ -256,8 +264,8 @@ private void printIssuesOfPage(Document doc, PrintWriter pw) { .replace("\r", "").replace("\t", "") + ";"; } pw.println(toPrint); - + numberOfIssues++; } - + return numberOfIssues; } } \ No newline at end of file