@@ -943,13 +943,8 @@ public ArtifactSearchResultsDto searchArtifacts(Set<SearchFilter> filters, Order
943
943
return handles .withHandleNoException (handle -> {
944
944
List <SqlStatementVariableBinder > binders = new LinkedList <>();
945
945
946
- StringBuilder selectTemplate = new StringBuilder ();
947
946
StringBuilder where = new StringBuilder ();
948
947
StringBuilder orderByQuery = new StringBuilder ();
949
- StringBuilder limitOffset = new StringBuilder ();
950
-
951
- // Formulate the SELECT clause for the artifacts query
952
- selectTemplate .append ("SELECT {{selectColumns}} FROM artifacts a " );
953
948
954
949
// Formulate the WHERE clause for both queries
955
950
String op ;
@@ -1081,19 +1076,13 @@ public ArtifactSearchResultsDto searchArtifacts(Set<SearchFilter> filters, Order
1081
1076
}
1082
1077
orderByQuery .append (" " ).append (orderDirection .name ());
1083
1078
1084
- // Add limit and offset to artifact query
1085
- if ("mssql" .equals (sqlStatements .dbType ())) {
1086
- limitOffset .append (" OFFSET ? ROWS FETCH NEXT ? ROWS ONLY" );
1087
- } else {
1088
- limitOffset .append (" LIMIT ? OFFSET ?" );
1089
- }
1090
-
1091
1079
// Query for the artifacts
1092
- String artifactsQuerySql = new StringBuilder ( selectTemplate ). append ( where ). append ( orderByQuery )
1093
- . append ( limitOffset ). toString (). replace ( "{{selectColumns}}" , "a.*" );
1080
+ String artifactsQuerySql = sqlStatements . selectTableTemplate ( "a.*" , "artifacts" , "a" ,
1081
+ where . toString (), orderByQuery . toString () );
1094
1082
Query artifactsQuery = handle .createQuery (artifactsQuerySql );
1095
- String countQuerySql = new StringBuilder (selectTemplate ).append (where ).toString ()
1096
- .replace ("{{selectColumns}}" , "count(a.artifactId)" );
1083
+
1084
+ String countQuerySql = sqlStatements .selectCountTableTemplate ("a.artifactId" , "artifacts" , "a" ,
1085
+ where .toString ());
1097
1086
Query countQuery = handle .createQuery (countQuerySql );
1098
1087
1099
1088
// Bind all query parameters
@@ -2803,13 +2792,8 @@ public GroupSearchResultsDto searchGroups(Set<SearchFilter> filters, OrderBy ord
2803
2792
List <SqlStatementVariableBinder > binders = new LinkedList <>();
2804
2793
String op ;
2805
2794
2806
- StringBuilder selectTemplate = new StringBuilder ();
2807
2795
StringBuilder where = new StringBuilder ();
2808
2796
StringBuilder orderByQuery = new StringBuilder ();
2809
- StringBuilder limitOffset = new StringBuilder ();
2810
-
2811
- // Formulate the SELECT clause for the artifacts query
2812
- selectTemplate .append ("SELECT {{selectColumns}} FROM groups g " );
2813
2797
2814
2798
// Formulate the WHERE clause for both queries
2815
2799
where .append (" WHERE (1 = 1)" );
@@ -2872,20 +2856,13 @@ public GroupSearchResultsDto searchGroups(Set<SearchFilter> filters, OrderBy ord
2872
2856
}
2873
2857
orderByQuery .append (" " ).append (orderDirection .name ());
2874
2858
2875
- // Add limit and offset to query
2876
- if ("mssql" .equals (sqlStatements .dbType ())) {
2877
- limitOffset .append (" OFFSET ? ROWS FETCH NEXT ? ROWS ONLY" );
2878
- } else {
2879
- limitOffset .append (" LIMIT ? OFFSET ?" );
2880
- }
2881
-
2882
2859
// Query for the group
2883
- String groupsQuerySql = new StringBuilder ( selectTemplate ). append ( where ). append ( orderByQuery )
2884
- . append ( limitOffset ). toString (). replace ( "{{selectColumns}}" , "*" );
2860
+ String groupsQuerySql = sqlStatements . selectTableTemplate ( "*" , "groups" , "g" , where . toString (),
2861
+ orderByQuery . toString ());
2885
2862
Query groupsQuery = handle .createQuery (groupsQuerySql );
2886
2863
// Query for the total row count
2887
- String countQuerySql = new StringBuilder ( selectTemplate ). append ( where ). toString ()
2888
- . replace ( "{{selectColumns}}" , "count(g.groupId)" );
2864
+ String countQuerySql = sqlStatements . selectCountTableTemplate ( "g.groupId" , "groups" , "g" ,
2865
+ where . toString () );
2889
2866
Query countQuery = handle .createQuery (countQuerySql );
2890
2867
2891
2868
// Bind all query parameters
@@ -3254,6 +3231,10 @@ private long nextCommentIdRaw(Handle handle) {
3254
3231
private long nextSequenceValueRaw (Handle handle , String sequenceName ) {
3255
3232
if (isH2 ()) {
3256
3233
return sequenceCounters .get (sequenceName ).incrementAndGet ();
3234
+ } else if (isMysql ()) {
3235
+ handle .createUpdate (sqlStatements .getNextSequenceValue ()).bind (0 , sequenceName ).execute ();
3236
+ return handle .createQuery (sqlStatements .selectCurrentSequenceValue ()).bind (0 , sequenceName )
3237
+ .mapTo (Long .class ).one ();
3257
3238
} else {
3258
3239
return handle .createQuery (sqlStatements .getNextSequenceValue ()).bind (0 , sequenceName )
3259
3240
.mapTo (Long .class ).one (); // TODO Handle non-existing sequence (see resetSequence)
@@ -3389,13 +3370,8 @@ public BranchSearchResultsDto getBranches(GA ga, int offset, int limit) {
3389
3370
return handles .withHandleNoException (handle -> {
3390
3371
List <SqlStatementVariableBinder > binders = new LinkedList <>();
3391
3372
3392
- StringBuilder selectTemplate = new StringBuilder ();
3393
3373
StringBuilder where = new StringBuilder ();
3394
3374
StringBuilder orderByQuery = new StringBuilder ();
3395
- StringBuilder limitOffset = new StringBuilder ();
3396
-
3397
- // Formulate the SELECT clause for the artifacts query
3398
- selectTemplate .append ("SELECT {{selectColumns}} FROM branches b " );
3399
3375
3400
3376
// Formulate the WHERE clause for both queries
3401
3377
where .append (" WHERE b.groupId = ? AND b.artifactId = ?" );
@@ -3409,20 +3385,13 @@ public BranchSearchResultsDto getBranches(GA ga, int offset, int limit) {
3409
3385
// Add order by to artifact query
3410
3386
orderByQuery .append (" ORDER BY b.branchId ASC" );
3411
3387
3412
- // Add limit and offset to query
3413
- if ("mssql" .equals (sqlStatements .dbType ())) {
3414
- limitOffset .append (" OFFSET ? ROWS FETCH NEXT ? ROWS ONLY" );
3415
- } else {
3416
- limitOffset .append (" LIMIT ? OFFSET ?" );
3417
- }
3418
-
3419
- // Query for the branc
3420
- String branchesQuerySql = new StringBuilder (selectTemplate ).append (where ).append (orderByQuery )
3421
- .append (limitOffset ).toString ().replace ("{{selectColumns}}" , "*" );
3388
+ // Query for the artifacts
3389
+ String branchesQuerySql = sqlStatements .selectTableTemplate ("*" , "branches" , "b" ,
3390
+ where .toString (), orderByQuery .toString ());
3422
3391
Query branchesQuery = handle .createQuery (branchesQuerySql );
3423
- // Query for the total row count
3424
- String countQuerySql = new StringBuilder ( selectTemplate ). append ( where ). toString ()
3425
- . replace ( "{{selectColumns}}" , "count(b.branchId)" );
3392
+
3393
+ String countQuerySql = sqlStatements . selectCountTableTemplate ( "b.branchId" , "branches" , "b" ,
3394
+ where . toString () );
3426
3395
Query countQuery = handle .createQuery (countQuerySql );
3427
3396
3428
3397
// Bind all query parameters
@@ -3646,7 +3615,7 @@ private void createOrUpdateBranchRaw(Handle handle, GAV gav, BranchId branchId,
3646
3615
3647
3616
/**
3648
3617
* Removes a version from the given branch.
3649
- *
3618
+ *
3650
3619
* @param handle
3651
3620
* @param gav
3652
3621
* @param branchId
@@ -3791,6 +3760,10 @@ private boolean isH2() {
3791
3760
return sqlStatements .dbType ().equals ("h2" );
3792
3761
}
3793
3762
3763
+ private boolean isMysql () {
3764
+ return sqlStatements .dbType ().equals ("mysql" );
3765
+ }
3766
+
3794
3767
/*
3795
3768
* Ensures that only a reasonable number/size of labels for each item in the list are returned. This is to
3796
3769
* guard against an unexpectedly enormous response size to a REST API search operation.
0 commit comments