@@ -240,9 +240,34 @@ public String getJavaCode(){
240
240
TreeSet <String > includes = new TreeSet <>();
241
241
242
242
243
+
244
+ //Special case for models that implement java.security.Principal
245
+ boolean hasNameField = false ;
246
+ String getSecurityPrincipalName = "" ;
247
+ if (implementations .contains ("java.security.Principal" )){
248
+
249
+ //Check if fields have a name field
250
+ for (Field field : fields ){
251
+ if (field .getName ().equalsIgnoreCase ("name" )){
252
+ hasNameField = true ;
253
+ break ;
254
+ }
255
+ }
256
+
257
+ //If no name field is found, we'll need to add a public getName()
258
+ if (!hasNameField ){
259
+ getSecurityPrincipalName += " public String getName(){\r \n " ;
260
+ getSecurityPrincipalName += " return null;\r \n " ;
261
+ getSecurityPrincipalName += " }\r \n \r \n " ;
262
+ }
263
+ }
264
+
265
+
266
+
267
+ //Loop through all the fields and generate java code
243
268
for (int i =0 ; i <fields .size (); i ++){
244
269
Field field = fields .get (i );
245
- String fieldName = field .getName ();
270
+ String fieldName = Utils . underscoreToCamelCase ( field .getName () );
246
271
String fieldType = field .getType ();
247
272
String methodName = Utils .capitalize (fieldName );
248
273
String columnName = field .getColumnName ();
@@ -257,7 +282,7 @@ public String getJavaCode(){
257
282
if (fieldType .equals ("BigDecimal" )) includes .add ("java.math.BigDecimal" );
258
283
if (fieldType .equals ("Geometry" )){
259
284
String jts = options .get ("jts" );
260
- if (jts ==null ) jts = "com.vividsolutions.jts" ;
285
+ if (jts ==null ) jts = "org.locationtech.jts" ; //vs " com.vividsolutions.jts";
261
286
includes .add (jts +".geom.Geometry" );
262
287
includes .add (jts +".io.WKTReader" );
263
288
}
@@ -338,25 +363,14 @@ public String getJavaCode(){
338
363
publicMembers .append (" }\r \n \r \n " );
339
364
}
340
365
341
- //Add extra method if username and implements java.security.Principal
342
- if (fieldName .equals ("username" ) && fieldType .equals ("String" ) &&
343
- implementations .contains ("java.security.Principal" )){
344
-
345
- boolean addMethod = true ;
346
- for (Field f : fields ){
347
- if (f .getName ().equals ("name" )){
348
- addMethod = false ;
349
- break ;
350
- }
351
- }
352
366
353
- if ( addMethod ){
354
- publicMembers . append ( " public String getName(){ \r \n " );
355
- publicMembers . append ( " return " );
356
- publicMembers . append ( fieldName );
357
- publicMembers . append ( "; \r \n " );
358
- publicMembers . append ( " } \r \n \r \n " );
359
- }
367
+ //Special case for models that implement java.security.Principal
368
+ //If there's no name field, use the username as a return value
369
+ //for the getName() method
370
+ if ( fieldName . equals ( "username" ) && fieldType . equals ( "String" ) &&
371
+ implementations . contains ( "java.security.Principal" ) &&
372
+ ! hasNameField ){
373
+ getSecurityPrincipalName = getSecurityPrincipalName . replace ( "null" , fieldName );
360
374
}
361
375
362
376
}
@@ -466,13 +480,33 @@ else if (fieldType.equals("Geometry")){
466
480
getValues .append ("\" ).toString());}catch(Exception e){}\r \n " );
467
481
}
468
482
else {
469
- getValues .append (" this." );
470
- getValues .append (fieldName );
471
- getValues .append (" = getValue(rs, \" " );
472
- getValues .append (columnName );
473
- getValues .append ("\" ).to" );
474
- getValues .append (password ? "String" : fieldType );
475
- getValues .append ("();\r \n " );
483
+
484
+ if (fieldType .endsWith ("[]" )){ //e.g. String[]
485
+ getValues .append (" {" );
486
+
487
+ //Object[] v = (Object[])getValue(rs, "recent_customers").toArray();
488
+ getValues .append ("Object[] v = (Object[]) getValue(rs, \" " );
489
+ getValues .append (columnName );
490
+ getValues .append ("\" ).toArray();\r \n " );
491
+
492
+ //this.recentCustomers = java.util.Arrays.copyOf(v, v.length, String[].class);
493
+ getValues .append (" this." );
494
+ getValues .append (fieldName );
495
+ getValues .append (" = v==null ? null : java.util.Arrays.copyOf(v, v.length, " );
496
+ getValues .append (fieldType );
497
+ getValues .append (".class);" );
498
+
499
+ getValues .append ("}\r \n " );
500
+ }
501
+ else {
502
+ getValues .append (" this." );
503
+ getValues .append (fieldName );
504
+ getValues .append (" = getValue(rs, \" " );
505
+ getValues .append (columnName );
506
+ getValues .append ("\" ).to" );
507
+ getValues .append (password ? "String" : fieldType );
508
+ getValues .append ("();\r \n " );
509
+ }
476
510
}
477
511
}
478
512
else {
@@ -571,13 +605,35 @@ else if (fieldType.equals("byte[]")){
571
605
getJson .append ("\" ).toByteArray();\r \n " );
572
606
}
573
607
else {
574
- getJson .append (" this." );
575
- getJson .append (fieldName );
576
- getJson .append (" = json.get(\" " );
577
- getJson .append (fieldName );
578
- getJson .append ("\" ).to" );
579
- getJson .append (fieldType );
580
- getJson .append ("();\r \n " );
608
+
609
+ if (fieldType .endsWith ("[]" )){ //e.g. String[]
610
+ getJson .append (" {" );
611
+
612
+ //Object[] v = json.has("recentCustomers") ? json.get("recentCustomers").toJSONArray().toArray() : null;
613
+ getJson .append ("Object[] v = json.has(\" " );
614
+ getJson .append (fieldName );
615
+ getJson .append ("\" ) ? json.get(\" " );
616
+ getJson .append (fieldName );
617
+ getJson .append ("\" ).toJSONArray().toArray() : null;\r \n " );
618
+
619
+ //this.recentCustomers = java.util.Arrays.copyOf(v, v.length, String[].class);
620
+ getJson .append (" this." );
621
+ getJson .append (fieldName );
622
+ getJson .append (" = v==null ? null : java.util.Arrays.copyOf(v, v.length, " );
623
+ getJson .append (fieldType );
624
+ getJson .append (".class);" );
625
+
626
+ getJson .append ("}\r \n " );
627
+ }
628
+ else {
629
+ getJson .append (" this." );
630
+ getJson .append (fieldName );
631
+ getJson .append (" = json.get(\" " );
632
+ getJson .append (fieldName );
633
+ getJson .append ("\" ).to" );
634
+ getJson .append (fieldType );
635
+ getJson .append ("();\r \n " );
636
+ }
581
637
}
582
638
}
583
639
else {
@@ -689,7 +745,7 @@ else if (fieldType.equals("byte[]")){
689
745
str = str .replace ("${field[0]}" , fields .get (0 ).getColumnName ());
690
746
str = str .replace ("${initArrays}" , initArrays .toString ().trim ());
691
747
str = str .replace ("${privateFields}" , privateFields .toString ().trim ());
692
- str = str .replace ("${publicMembers}" , publicMembers .toString ().trim ());
748
+ str = str .replace ("${publicMembers}" , ( getSecurityPrincipalName + publicMembers .toString () ).trim ());
693
749
str = str .replace ("${getModels}" , getModels .toString ());
694
750
str = str .replace ("${getValues}" , getValues .toString ());
695
751
str = str .replace ("${getJson}" , getJson .toString ().trim ());
0 commit comments