Skip to content

Commit

Permalink
Merge remote-tracking branch 'bnfleb/NAS-2890-jobid-search' into 7.5-RC
Browse files Browse the repository at this point in the history
  • Loading branch information
csrster committed Sep 5, 2023
2 parents bd4718e + 5298853 commit 8e08acd
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1104,9 +1104,12 @@ private HarvestStatusQueryBuilder buildSqlQuery(HarvestStatusQuery query, boolea

List<String> jobIdRangeIds = query.getPartialJobIdRangeAsList(false);
List<String> jobIdRanges = query.getPartialJobIdRangeAsList(true);
if (!query.getJobIdRange().isEmpty()) {
sql.append(" AND (");
}
if (!jobIdRangeIds.isEmpty()) {
String comma = "";
sql.append(" AND (jobs.job_id IN (");
sql.append("jobs.job_id IN (");
for(String id : jobIdRangeIds) {
//id
sql.append(comma);
Expand All @@ -1119,19 +1122,30 @@ private HarvestStatusQueryBuilder buildSqlQuery(HarvestStatusQuery query, boolea

}
if(!jobIdRanges.isEmpty()) {
String andOr = "AND";
String andOr = "";
if (!jobIdRangeIds.isEmpty()) {
andOr = "OR";
}

for(String range : jobIdRanges) {
String[] r = range.split("-");
sql.append(" "+andOr+" jobs.job_id BETWEEN ? AND ? ");
sq.addParameter(Long.class, Long.parseLong(r[0]));
sq.addParameter(Long.class, Long.parseLong(r[1]));
if (r[0].isEmpty()) {
// range up to, eg -10
sql.append(" " + andOr + " jobs.job_id <= ? ");
sq.addParameter(Long.class, Long.parseLong(r[1]));
} else if (r.length == 1) {
// range starting from, eg 20-
sql.append(" " + andOr + " jobs.job_id >= ? ");
sq.addParameter(Long.class, Long.parseLong(r[0]));
} else {
sql.append(" " + andOr + " jobs.job_id BETWEEN ? AND ? ");
sq.addParameter(Long.class, Long.parseLong(r[0]));
sq.addParameter(Long.class, Long.parseLong(r[1]));
}
andOr = "OR";
}
}
if (!jobIdRangeIds.isEmpty()) {
if (!query.getJobIdRange().isEmpty()) {
sql.append(")");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -294,12 +294,20 @@ public HarvestStatusQuery(ServletRequest req) {
if(s.contains("-")) {
//if it's a range eg 11-27
String[] range = s.split("-");
if(range.length != 2) {
if(range.length > 2) {
throw new ArgumentNotValid("Invalid Job IDs range (1-10 or 1,2,3)");
}
//check if it's a number
Long.parseLong(range[0]);
Long.parseLong(range[1]);
if (range[0].isEmpty()) {
// range up to, eg -10
Long.parseLong(range[1]);
} else if (range.length == 1) {
// range starting from, eg 20-
Long.parseLong(range[0]);
} else {
Long.parseLong(range[0]);
Long.parseLong(range[1]);
}
} else {
//check if it's a number
Long.parseLong(s);
Expand Down

0 comments on commit 8e08acd

Please sign in to comment.