Browse Source

first commit

master
Dizho A 11 months ago
commit
932f937422
  1. 33
      .gitignore
  2. 745
      hs_err_pid17268.log
  3. 735
      hs_err_pid9124.log
  4. 259
      mvnw
  5. 149
      mvnw.cmd
  6. 77
      pom.xml
  7. 14
      src/main/java/com/gcc/publicgrievance/PublicgrievanceApplication.java
  8. 105
      src/main/java/com/gcc/publicgrievance/Service/ComplaintService.java
  9. 47
      src/main/java/com/gcc/publicgrievance/config/AppConfigur.java
  10. 15
      src/main/java/com/gcc/publicgrievance/configuration/AppConfig.java
  11. 77
      src/main/java/com/gcc/publicgrievance/configuration/DataSourceConfig.java
  12. 24
      src/main/java/com/gcc/publicgrievance/configuration/SecurityConfig.java
  13. 33
      src/main/java/com/gcc/publicgrievance/configuration/UserSessionInterceptor.java
  14. 24
      src/main/java/com/gcc/publicgrievance/configuration/WebConfig.java
  15. 123
      src/main/java/com/gcc/publicgrievance/controller/APIController.java
  16. 811
      src/main/java/com/gcc/publicgrievance/controller/ComplaintController.java
  17. 41
      src/main/java/com/gcc/publicgrievance/controller/UserController.java
  18. 20
      src/main/resources/application-dev.properties
  19. 27
      src/main/resources/application-prod.properties
  20. 1
      src/main/resources/application.properties
  21. BIN
      src/main/resources/static/images/Thin broken ring.gif
  22. 494
      src/main/resources/static/images/ack.pdf
  23. BIN
      src/main/resources/static/images/bad-weather.png
  24. BIN
      src/main/resources/static/images/bt-logo.png
  25. BIN
      src/main/resources/static/images/change.png
  26. BIN
      src/main/resources/static/images/chennai.jpg
  27. BIN
      src/main/resources/static/images/contract.png
  28. BIN
      src/main/resources/static/images/dog.png
  29. BIN
      src/main/resources/static/images/egov.jpg
  30. BIN
      src/main/resources/static/images/gcc.png
  31. BIN
      src/main/resources/static/images/gcc1.png
  32. BIN
      src/main/resources/static/images/menu.png
  33. BIN
      src/main/resources/static/images/message.png
  34. BIN
      src/main/resources/static/images/minus.png
  35. BIN
      src/main/resources/static/images/mosquito.png
  36. BIN
      src/main/resources/static/images/otp.png
  37. BIN
      src/main/resources/static/images/output-onlinepngtools.png
  38. BIN
      src/main/resources/static/images/phone-call.png
  39. BIN
      src/main/resources/static/images/plus.png
  40. BIN
      src/main/resources/static/images/portable-bathroom.png
  41. BIN
      src/main/resources/static/images/record.png
  42. BIN
      src/main/resources/static/images/recycle.png
  43. BIN
      src/main/resources/static/images/register.png
  44. BIN
      src/main/resources/static/images/ripon.jpg
  45. BIN
      src/main/resources/static/images/road.png
  46. BIN
      src/main/resources/static/images/screenreader.png
  47. BIN
      src/main/resources/static/images/search.png
  48. BIN
      src/main/resources/static/images/sewage.png
  49. BIN
      src/main/resources/static/images/street-lamp.png
  50. BIN
      src/main/resources/static/images/tamil.jpg
  51. BIN
      src/main/resources/static/images/tsunami.png
  52. BIN
      src/main/resources/static/images/waste-bin.png
  53. 3
      src/main/resources/static/js/invertcolor.js
  54. 44
      src/main/resources/static/js/screenreader.js
  55. 591
      src/main/resources/templates/User/home.html
  56. 0
      src/main/resources/templates/User/kin.html
  57. 2432
      src/main/resources/templates/User/registercomplaints.html
  58. 615
      src/main/resources/templates/checklistofficer/checklistofficer.html
  59. 164
      src/main/resources/templates/fragments/accessibility.html
  60. 56
      src/main/resources/templates/fragments/footer.html
  61. 73
      src/main/resources/templates/fragments/header.html
  62. 258
      src/main/resources/templates/officer/checkofficerhome.html
  63. 528
      src/main/resources/templates/officer/checkofficerstatus.html
  64. 614
      src/main/resources/templates/staff/staffcheckstatus.html
  65. 1538
      src/main/resources/templates/staff/staffcomplaint.html
  66. 543
      src/main/resources/templates/staff/staffhome.html
  67. BIN
      uploads/1724728439636_gcc1.png

33
.gitignore

@ -0,0 +1,33 @@
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/

745
hs_err_pid17268.log

@ -0,0 +1,745 @@
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 88080384 bytes for G1 virtual space
# Possible reasons:
# The system is out of physical RAM or swap space
# The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# JVM is running with Unscaled Compressed Oops mode in which the Java heap is
# placed in the first 4GB address space. The Java Heap base address is the
# maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress
# to set the Java Heap base and to place the Java Heap above 4GB virtual address.
# This output file may be truncated or incomplete.
#
# Out of Memory Error (os_windows.cpp:3613), pid=17268, tid=12840
#
# JRE version: OpenJDK Runtime Environment Temurin-17.0.9+9 (17.0.9+9) (build 17.0.9+9)
# Java VM: OpenJDK 64-Bit Server VM Temurin-17.0.9+9 (17.0.9+9, mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
--------------- S U M M A R Y ------------
Command Line: -Dmaven.home=EMBEDDED -Dclassworlds.conf=D:\projects\New2\.metadata\.plugins\org.eclipse.m2e.launching\launches\m2conf10300884232095977621.tmp -Dmaven.multiModuleProjectDirectory=D:\PGR Update\public_grievance_updated -Dm2e.build.project.data.socket.port=62562 -Dfile.encoding=UTF-8 -Dstdout.encoding=UTF-8 -Dstderr.encoding=UTF-8 -XX:+ShowCodeDetailsInExceptionMessages org.codehaus.plexus.classworlds.launcher.Launcher -B -Dstyle.color=always install
Host: Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz, 4 cores, 7G, Windows 10 , 64 bit Build 19041 (10.0.19041.5915)
Time: Mon Nov 17 11:12:47 2025 India Standard Time elapsed time: 24.313100 seconds (0d 0h 0m 24s)
--------------- T H R E A D ---------------
Current thread (0x000001ccac22cb50): VMThread "VM Thread" [stack: 0x000000bb6c300000,0x000000bb6c400000] [id=12840]
Stack: [0x000000bb6c300000,0x000000bb6c400000]
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0x67cf49]
V [jvm.dll+0x83478a]
V [jvm.dll+0x83624e]
V [jvm.dll+0x8368b3]
V [jvm.dll+0x247f1f]
V [jvm.dll+0x679d69]
V [jvm.dll+0x66e6ba]
V [jvm.dll+0x307e5b]
V [jvm.dll+0x30f306]
V [jvm.dll+0x35f0ce]
V [jvm.dll+0x35f2ff]
V [jvm.dll+0x2dea58]
V [jvm.dll+0x2dcc34]
V [jvm.dll+0x2dc23c]
V [jvm.dll+0x3205e1]
V [jvm.dll+0x83adab]
V [jvm.dll+0x83baf1]
V [jvm.dll+0x83c00d]
V [jvm.dll+0x83c3e4]
V [jvm.dll+0x83c4b0]
V [jvm.dll+0x7e3c3a]
V [jvm.dll+0x67be35]
C [ucrtbase.dll+0x21bb2]
C [KERNEL32.DLL+0x17374]
C [ntdll.dll+0x4cc91]
VM_Operation (0x000000bb6bdfd090): G1TryInitiateConcMark, mode: safepoint, requested by thread 0x000001cc92b2de00
--------------- P R O C E S S ---------------
Threads class SMR info:
_java_thread_list=0x000001ccb143ccb0, length=12, elements={
0x000001cc92b2de00, 0x000001ccac268020, 0x000001ccac22d560, 0x000001ccac251250,
0x000001ccac253c30, 0x000001ccac254500, 0x000001ccac254dd0, 0x000001ccac294000,
0x000001ccac305130, 0x000001ccac307660, 0x000001ccac3f7f70, 0x000001ccac423090
}
Java Threads: ( => current thread )
0x000001cc92b2de00 JavaThread "main" [_thread_blocked, id=15236, stack(0x000000bb6bd00000,0x000000bb6be00000)]
0x000001ccac268020 JavaThread "Reference Handler" daemon [_thread_blocked, id=17068, stack(0x000000bb6c400000,0x000000bb6c500000)]
0x000001ccac22d560 JavaThread "Finalizer" daemon [_thread_blocked, id=1604, stack(0x000000bb6c500000,0x000000bb6c600000)]
0x000001ccac251250 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=13316, stack(0x000000bb6c600000,0x000000bb6c700000)]
0x000001ccac253c30 JavaThread "Attach Listener" daemon [_thread_blocked, id=17284, stack(0x000000bb6c700000,0x000000bb6c800000)]
0x000001ccac254500 JavaThread "Service Thread" daemon [_thread_blocked, id=18676, stack(0x000000bb6c800000,0x000000bb6c900000)]
0x000001ccac254dd0 JavaThread "Monitor Deflation Thread" daemon [_thread_blocked, id=7476, stack(0x000000bb6c900000,0x000000bb6ca00000)]
0x000001ccac294000 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=12092, stack(0x000000bb6ca00000,0x000000bb6cb00000)]
0x000001ccac305130 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=12440, stack(0x000000bb6cb00000,0x000000bb6cc00000)]
0x000001ccac307660 JavaThread "Sweeper thread" daemon [_thread_blocked, id=19672, stack(0x000000bb6cc00000,0x000000bb6cd00000)]
0x000001ccac3f7f70 JavaThread "Notification Thread" daemon [_thread_blocked, id=19896, stack(0x000000bb6cd00000,0x000000bb6ce00000)]
0x000001ccac423090 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=12960, stack(0x000000bb6cf00000,0x000000bb6d000000)]
Other Threads:
=>0x000001ccac22cb50 VMThread "VM Thread" [stack: 0x000000bb6c300000,0x000000bb6c400000] [id=12840]
0x000001ccac3fa870 WatcherThread [stack: 0x000000bb6ce00000,0x000000bb6cf00000] [id=14048]
0x000001cc92b88690 GCTaskThread "GC Thread#0" [stack: 0x000000bb6be00000,0x000000bb6bf00000] [id=14192]
0x000001ccace2ac40 GCTaskThread "GC Thread#1" [stack: 0x000000bb6d000000,0x000000bb6d100000] [id=17816]
0x000001ccacf3e480 GCTaskThread "GC Thread#2" [stack: 0x000000bb6d100000,0x000000bb6d200000] [id=9304]
0x000001ccace57030 GCTaskThread "GC Thread#3" [stack: 0x000000bb6d200000,0x000000bb6d300000] [id=7980]
0x000001cc92b991b0 ConcurrentGCThread "G1 Main Marker" [stack: 0x000000bb6bf00000,0x000000bb6c000000] [id=9056]
0x000001cc92b99ae0 ConcurrentGCThread "G1 Conc#0" [stack: 0x000000bb6c000000,0x000000bb6c100000] [id=13516]
0x000001cc92bedc10 ConcurrentGCThread "G1 Refine#0" [stack: 0x000000bb6c100000,0x000000bb6c200000] [id=9916]
0x000001ccacf3e740 ConcurrentGCThread "G1 Refine#1" [stack: 0x000000bb6d300000,0x000000bb6d400000] [id=3152]
0x000001ccac0940c0 ConcurrentGCThread "G1 Service" [stack: 0x000000bb6c200000,0x000000bb6c300000] [id=11744]
Threads with active compile tasks:
VM state: at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event])
[0x000001cc92b280c0] Threads_lock - owner thread: 0x000001ccac22cb50
[0x000001cc92b28270] Heap_lock - owner thread: 0x000001cc92b2de00
Heap address: 0x0000000081a00000, size: 2022 MB, Compressed Oops mode: 32-bit
CDS archive(s) not mapped
Compressed class space mapped at: 0x0000000100000000-0x0000000140000000, reserved size: 1073741824
Narrow klass base: 0x0000000000000000, Narrow klass shift: 3, Narrow klass range: 0x140000000
GC Precious Log:
CPUs: 4 total, 4 available
Memory: 8087M
Large Page Support: Disabled
NUMA Support: Disabled
Compressed Oops: Enabled (32-bit)
Heap Region Size: 1M
Heap Min Capacity: 8M
Heap Initial Capacity: 128M
Heap Max Capacity: 2022M
Pre-touch: Disabled
Parallel Workers: 4
Concurrent Workers: 1
Concurrent Refinement Workers: 4
Periodic GC: Disabled
Heap:
garbage-first heap total 131072K, used 36894K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 1 young (1024K), 1 survivors (1024K)
Metaspace used 28018K, committed 28224K, reserved 1114112K
class space used 2965K, committed 3008K, reserved 1048576K
Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, OA=open archive, CA=closed archive, TAMS=top-at-mark-start (previous, next)
| 0|0x0000000081a00000, 0x0000000081b00000, 0x0000000081b00000|100%| O| |TAMS 0x0000000081b00000, 0x0000000081b00000| Untracked
| 1|0x0000000081b00000, 0x0000000081c00000, 0x0000000081c00000|100%| O| |TAMS 0x0000000081c00000, 0x0000000081c00000| Untracked
| 2|0x0000000081c00000, 0x0000000081d00000, 0x0000000081d00000|100%| O| |TAMS 0x0000000081d00000, 0x0000000081d00000| Untracked
| 3|0x0000000081d00000, 0x0000000081e00000, 0x0000000081e00000|100%| O| |TAMS 0x0000000081d00000, 0x0000000081e00000| Untracked
| 4|0x0000000081e00000, 0x0000000081f00000, 0x0000000081f00000|100%| O| |TAMS 0x0000000081e00000, 0x0000000081f00000| Untracked
| 5|0x0000000081f00000, 0x0000000082000000, 0x0000000082000000|100%| O| |TAMS 0x0000000081f00000, 0x0000000082000000| Untracked
| 6|0x0000000082000000, 0x0000000082100000, 0x0000000082100000|100%| O| |TAMS 0x0000000082000000, 0x0000000082100000| Untracked
| 7|0x0000000082100000, 0x0000000082200000, 0x0000000082200000|100%| O| |TAMS 0x0000000082100000, 0x0000000082200000| Untracked
| 8|0x0000000082200000, 0x0000000082300000, 0x0000000082300000|100%| O| |TAMS 0x0000000082200000, 0x0000000082300000| Untracked
| 9|0x0000000082300000, 0x0000000082400000, 0x0000000082400000|100%| O| |TAMS 0x0000000082300000, 0x0000000082400000| Untracked
| 10|0x0000000082400000, 0x0000000082500000, 0x0000000082500000|100%| O| |TAMS 0x0000000082400000, 0x0000000082500000| Untracked
| 11|0x0000000082500000, 0x0000000082600000, 0x0000000082600000|100%| O| |TAMS 0x0000000082500000, 0x0000000082600000| Untracked
| 12|0x0000000082600000, 0x0000000082700000, 0x0000000082700000|100%| O| |TAMS 0x0000000082600000, 0x0000000082700000| Untracked
| 13|0x0000000082700000, 0x0000000082800000, 0x0000000082800000|100%|HS| |TAMS 0x0000000082700000, 0x0000000082800000| Complete
| 14|0x0000000082800000, 0x0000000082900000, 0x0000000082900000|100%|HC| |TAMS 0x0000000082800000, 0x0000000082900000| Complete
| 15|0x0000000082900000, 0x0000000082a00000, 0x0000000082a00000|100%|HC| |TAMS 0x0000000082900000, 0x0000000082a00000| Complete
| 16|0x0000000082a00000, 0x0000000082b00000, 0x0000000082b00000|100%|HC| |TAMS 0x0000000082a00000, 0x0000000082b00000| Complete
| 17|0x0000000082b00000, 0x0000000082c00000, 0x0000000082c00000|100%|HC| |TAMS 0x0000000082b00000, 0x0000000082c00000| Complete
| 18|0x0000000082c00000, 0x0000000082d00000, 0x0000000082d00000|100%|HC| |TAMS 0x0000000082c00000, 0x0000000082d00000| Complete
| 19|0x0000000082d00000, 0x0000000082e00000, 0x0000000082e00000|100%|HC| |TAMS 0x0000000082d00000, 0x0000000082e00000| Complete
| 20|0x0000000082e00000, 0x0000000082f00000, 0x0000000082f00000|100%|HC| |TAMS 0x0000000082e00000, 0x0000000082f00000| Complete
| 21|0x0000000082f00000, 0x0000000083000000, 0x0000000083000000|100%|HS| |TAMS 0x0000000082f00000, 0x0000000083000000| Complete
| 22|0x0000000083000000, 0x0000000083100000, 0x0000000083100000|100%|HC| |TAMS 0x0000000083000000, 0x0000000083100000| Complete
| 23|0x0000000083100000, 0x0000000083200000, 0x0000000083200000|100%|HC| |TAMS 0x0000000083100000, 0x0000000083200000| Complete
| 24|0x0000000083200000, 0x0000000083300000, 0x0000000083300000|100%|HC| |TAMS 0x0000000083200000, 0x0000000083300000| Complete
| 25|0x0000000083300000, 0x0000000083400000, 0x0000000083400000|100%|HC| |TAMS 0x0000000083300000, 0x0000000083400000| Complete
| 26|0x0000000083400000, 0x0000000083500000, 0x0000000083500000|100%|HC| |TAMS 0x0000000083400000, 0x0000000083500000| Complete
| 27|0x0000000083500000, 0x0000000083600000, 0x0000000083600000|100%|HC| |TAMS 0x0000000083500000, 0x0000000083600000| Complete
| 28|0x0000000083600000, 0x0000000083700000, 0x0000000083700000|100%|HC| |TAMS 0x0000000083600000, 0x0000000083700000| Complete
| 29|0x0000000083700000, 0x0000000083800000, 0x0000000083800000|100%|HC| |TAMS 0x0000000083700000, 0x0000000083800000| Complete
| 30|0x0000000083800000, 0x0000000083900000, 0x0000000083900000|100%|HC| |TAMS 0x0000000083800000, 0x0000000083900000| Complete
| 31|0x0000000083900000, 0x0000000083a00000, 0x0000000083a00000|100%|HC| |TAMS 0x0000000083900000, 0x0000000083a00000| Complete
| 32|0x0000000083a00000, 0x0000000083b00000, 0x0000000083b00000|100%|HC| |TAMS 0x0000000083a00000, 0x0000000083b00000| Complete
| 33|0x0000000083b00000, 0x0000000083c00000, 0x0000000083c00000|100%| O| |TAMS 0x0000000083b00000, 0x0000000083c00000| Untracked
| 34|0x0000000083c00000, 0x0000000083d00000, 0x0000000083d00000|100%| O| |TAMS 0x0000000083c00000, 0x0000000083d00000| Untracked
| 35|0x0000000083d00000, 0x0000000083d25c00, 0x0000000083e00000| 14%| O| |TAMS 0x0000000083d00000, 0x0000000083d25c00| Untracked
| 36|0x0000000083e00000, 0x0000000083e00000, 0x0000000083f00000| 0%| F| |TAMS 0x0000000083e00000, 0x0000000083e00000| Untracked
| 37|0x0000000083f00000, 0x0000000083f00000, 0x0000000084000000| 0%| F| |TAMS 0x0000000083f00000, 0x0000000083f00000| Untracked
| 38|0x0000000084000000, 0x0000000084000000, 0x0000000084100000| 0%| F| |TAMS 0x0000000084000000, 0x0000000084000000| Untracked
| 39|0x0000000084100000, 0x0000000084100000, 0x0000000084200000| 0%| F| |TAMS 0x0000000084100000, 0x0000000084100000| Untracked
| 40|0x0000000084200000, 0x0000000084200000, 0x0000000084300000| 0%| F| |TAMS 0x0000000084200000, 0x0000000084200000| Untracked
| 41|0x0000000084300000, 0x0000000084300000, 0x0000000084400000| 0%| F| |TAMS 0x0000000084300000, 0x0000000084300000| Untracked
| 42|0x0000000084400000, 0x0000000084400000, 0x0000000084500000| 0%| F| |TAMS 0x0000000084400000, 0x0000000084400000| Untracked
| 43|0x0000000084500000, 0x0000000084500000, 0x0000000084600000| 0%| F| |TAMS 0x0000000084500000, 0x0000000084500000| Untracked
| 44|0x0000000084600000, 0x0000000084600000, 0x0000000084700000| 0%| F| |TAMS 0x0000000084600000, 0x0000000084600000| Untracked
| 45|0x0000000084700000, 0x0000000084700000, 0x0000000084800000| 0%| F| |TAMS 0x0000000084700000, 0x0000000084700000| Untracked
| 46|0x0000000084800000, 0x0000000084800000, 0x0000000084900000| 0%| F| |TAMS 0x0000000084800000, 0x0000000084800000| Untracked
| 47|0x0000000084900000, 0x0000000084900000, 0x0000000084a00000| 0%| F| |TAMS 0x0000000084900000, 0x0000000084900000| Untracked
| 48|0x0000000084a00000, 0x0000000084a00000, 0x0000000084b00000| 0%| F| |TAMS 0x0000000084a00000, 0x0000000084a00000| Untracked
| 49|0x0000000084b00000, 0x0000000084b00000, 0x0000000084c00000| 0%| F| |TAMS 0x0000000084b00000, 0x0000000084b00000| Untracked
| 50|0x0000000084c00000, 0x0000000084c00000, 0x0000000084d00000| 0%| F| |TAMS 0x0000000084c00000, 0x0000000084c00000| Untracked
| 51|0x0000000084d00000, 0x0000000084d00000, 0x0000000084e00000| 0%| F| |TAMS 0x0000000084d00000, 0x0000000084d00000| Untracked
| 52|0x0000000084e00000, 0x0000000084e00000, 0x0000000084f00000| 0%| F| |TAMS 0x0000000084e00000, 0x0000000084e00000| Untracked
| 53|0x0000000084f00000, 0x0000000084f00000, 0x0000000085000000| 0%| F| |TAMS 0x0000000084f00000, 0x0000000084f00000| Untracked
| 54|0x0000000085000000, 0x0000000085000000, 0x0000000085100000| 0%| F| |TAMS 0x0000000085000000, 0x0000000085000000| Untracked
| 55|0x0000000085100000, 0x0000000085100000, 0x0000000085200000| 0%| F| |TAMS 0x0000000085100000, 0x0000000085100000| Untracked
| 56|0x0000000085200000, 0x0000000085200000, 0x0000000085300000| 0%| F| |TAMS 0x0000000085200000, 0x0000000085200000| Untracked
| 57|0x0000000085300000, 0x0000000085300000, 0x0000000085400000| 0%| F| |TAMS 0x0000000085300000, 0x0000000085300000| Untracked
| 58|0x0000000085400000, 0x0000000085400000, 0x0000000085500000| 0%| F| |TAMS 0x0000000085400000, 0x0000000085400000| Untracked
| 59|0x0000000085500000, 0x0000000085500000, 0x0000000085600000| 0%| F| |TAMS 0x0000000085500000, 0x0000000085500000| Untracked
| 60|0x0000000085600000, 0x0000000085600000, 0x0000000085700000| 0%| F| |TAMS 0x0000000085600000, 0x0000000085600000| Untracked
| 61|0x0000000085700000, 0x0000000085700000, 0x0000000085800000| 0%| F| |TAMS 0x0000000085700000, 0x0000000085700000| Untracked
| 62|0x0000000085800000, 0x0000000085800000, 0x0000000085900000| 0%| F| |TAMS 0x0000000085800000, 0x0000000085800000| Untracked
| 63|0x0000000085900000, 0x0000000085900000, 0x0000000085a00000| 0%| F| |TAMS 0x0000000085900000, 0x0000000085900000| Untracked
| 64|0x0000000085a00000, 0x0000000085a00000, 0x0000000085b00000| 0%| F| |TAMS 0x0000000085a00000, 0x0000000085a00000| Untracked
| 65|0x0000000085b00000, 0x0000000085b00000, 0x0000000085c00000| 0%| F| |TAMS 0x0000000085b00000, 0x0000000085b00000| Untracked
| 66|0x0000000085c00000, 0x0000000085c00000, 0x0000000085d00000| 0%| F| |TAMS 0x0000000085c00000, 0x0000000085c00000| Untracked
| 67|0x0000000085d00000, 0x0000000085d00000, 0x0000000085e00000| 0%| F| |TAMS 0x0000000085d00000, 0x0000000085d00000| Untracked
| 68|0x0000000085e00000, 0x0000000085e00000, 0x0000000085f00000| 0%| F| |TAMS 0x0000000085e00000, 0x0000000085e00000| Untracked
| 69|0x0000000085f00000, 0x0000000085f00000, 0x0000000086000000| 0%| F| |TAMS 0x0000000085f00000, 0x0000000085f00000| Untracked
| 70|0x0000000086000000, 0x0000000086000000, 0x0000000086100000| 0%| F| |TAMS 0x0000000086000000, 0x0000000086000000| Untracked
| 71|0x0000000086100000, 0x0000000086100000, 0x0000000086200000| 0%| F| |TAMS 0x0000000086100000, 0x0000000086100000| Untracked
| 72|0x0000000086200000, 0x0000000086200000, 0x0000000086300000| 0%| F| |TAMS 0x0000000086200000, 0x0000000086200000| Untracked
| 73|0x0000000086300000, 0x0000000086300000, 0x0000000086400000| 0%| F| |TAMS 0x0000000086300000, 0x0000000086300000| Untracked
| 74|0x0000000086400000, 0x0000000086400000, 0x0000000086500000| 0%| F| |TAMS 0x0000000086400000, 0x0000000086400000| Untracked
| 75|0x0000000086500000, 0x0000000086500000, 0x0000000086600000| 0%| F| |TAMS 0x0000000086500000, 0x0000000086500000| Untracked
| 76|0x0000000086600000, 0x0000000086600000, 0x0000000086700000| 0%| F| |TAMS 0x0000000086600000, 0x0000000086600000| Untracked
| 77|0x0000000086700000, 0x0000000086700000, 0x0000000086800000| 0%| F| |TAMS 0x0000000086700000, 0x0000000086700000| Untracked
| 78|0x0000000086800000, 0x0000000086800000, 0x0000000086900000| 0%| F| |TAMS 0x0000000086800000, 0x0000000086800000| Untracked
| 79|0x0000000086900000, 0x0000000086900000, 0x0000000086a00000| 0%| F| |TAMS 0x0000000086900000, 0x0000000086900000| Untracked
| 80|0x0000000086a00000, 0x0000000086a00000, 0x0000000086b00000| 0%| F| |TAMS 0x0000000086a00000, 0x0000000086a00000| Untracked
| 81|0x0000000086b00000, 0x0000000086b00000, 0x0000000086c00000| 0%| F| |TAMS 0x0000000086b00000, 0x0000000086b00000| Untracked
| 82|0x0000000086c00000, 0x0000000086c00000, 0x0000000086d00000| 0%| F| |TAMS 0x0000000086c00000, 0x0000000086c00000| Untracked
| 83|0x0000000086d00000, 0x0000000086d00000, 0x0000000086e00000| 0%| F| |TAMS 0x0000000086d00000, 0x0000000086d00000| Untracked
| 84|0x0000000086e00000, 0x0000000086e00000, 0x0000000086f00000| 0%| F| |TAMS 0x0000000086e00000, 0x0000000086e00000| Untracked
| 85|0x0000000086f00000, 0x0000000086f00000, 0x0000000087000000| 0%| F| |TAMS 0x0000000086f00000, 0x0000000086f00000| Untracked
| 86|0x0000000087000000, 0x0000000087000000, 0x0000000087100000| 0%| F| |TAMS 0x0000000087000000, 0x0000000087000000| Untracked
| 87|0x0000000087100000, 0x0000000087100000, 0x0000000087200000| 0%| F| |TAMS 0x0000000087100000, 0x0000000087100000| Untracked
| 88|0x0000000087200000, 0x0000000087200000, 0x0000000087300000| 0%| F| |TAMS 0x0000000087200000, 0x0000000087200000| Untracked
| 89|0x0000000087300000, 0x0000000087300000, 0x0000000087400000| 0%| F| |TAMS 0x0000000087300000, 0x0000000087300000| Untracked
| 90|0x0000000087400000, 0x0000000087400000, 0x0000000087500000| 0%| F| |TAMS 0x0000000087400000, 0x0000000087400000| Untracked
| 91|0x0000000087500000, 0x0000000087500000, 0x0000000087600000| 0%| F| |TAMS 0x0000000087500000, 0x0000000087500000| Untracked
| 92|0x0000000087600000, 0x0000000087600000, 0x0000000087700000| 0%| F| |TAMS 0x0000000087600000, 0x0000000087600000| Untracked
| 93|0x0000000087700000, 0x0000000087700000, 0x0000000087800000| 0%| F| |TAMS 0x0000000087700000, 0x0000000087700000| Untracked
| 94|0x0000000087800000, 0x0000000087800000, 0x0000000087900000| 0%| F| |TAMS 0x0000000087800000, 0x0000000087800000| Untracked
| 95|0x0000000087900000, 0x0000000087900000, 0x0000000087a00000| 0%| F| |TAMS 0x0000000087900000, 0x0000000087900000| Untracked
| 96|0x0000000087a00000, 0x0000000087a00000, 0x0000000087b00000| 0%| F| |TAMS 0x0000000087a00000, 0x0000000087a00000| Untracked
| 97|0x0000000087b00000, 0x0000000087b00000, 0x0000000087c00000| 0%| F| |TAMS 0x0000000087b00000, 0x0000000087b00000| Untracked
| 98|0x0000000087c00000, 0x0000000087c00000, 0x0000000087d00000| 0%| F| |TAMS 0x0000000087c00000, 0x0000000087c00000| Untracked
| 99|0x0000000087d00000, 0x0000000087d00000, 0x0000000087e00000| 0%| F| |TAMS 0x0000000087d00000, 0x0000000087d00000| Untracked
| 100|0x0000000087e00000, 0x0000000087e00000, 0x0000000087f00000| 0%| F| |TAMS 0x0000000087e00000, 0x0000000087e00000| Untracked
| 101|0x0000000087f00000, 0x0000000087f00000, 0x0000000088000000| 0%| F| |TAMS 0x0000000087f00000, 0x0000000087f00000| Untracked
| 102|0x0000000088000000, 0x0000000088000000, 0x0000000088100000| 0%| F| |TAMS 0x0000000088000000, 0x0000000088000000| Untracked
| 103|0x0000000088100000, 0x0000000088100000, 0x0000000088200000| 0%| F| |TAMS 0x0000000088100000, 0x0000000088100000| Untracked
| 104|0x0000000088200000, 0x0000000088200000, 0x0000000088300000| 0%| F| |TAMS 0x0000000088200000, 0x0000000088200000| Untracked
| 105|0x0000000088300000, 0x0000000088300000, 0x0000000088400000| 0%| F| |TAMS 0x0000000088300000, 0x0000000088300000| Untracked
| 106|0x0000000088400000, 0x0000000088400000, 0x0000000088500000| 0%| F| |TAMS 0x0000000088400000, 0x0000000088400000| Untracked
| 107|0x0000000088500000, 0x0000000088500000, 0x0000000088600000| 0%| F| |TAMS 0x0000000088500000, 0x0000000088500000| Untracked
| 108|0x0000000088600000, 0x0000000088600000, 0x0000000088700000| 0%| F| |TAMS 0x0000000088600000, 0x0000000088600000| Untracked
| 109|0x0000000088700000, 0x0000000088700000, 0x0000000088800000| 0%| F| |TAMS 0x0000000088700000, 0x0000000088700000| Untracked
| 110|0x0000000088800000, 0x0000000088800000, 0x0000000088900000| 0%| F| |TAMS 0x0000000088800000, 0x0000000088800000| Untracked
| 111|0x0000000088900000, 0x0000000088900000, 0x0000000088a00000| 0%| F| |TAMS 0x0000000088900000, 0x0000000088900000| Untracked
| 112|0x0000000088a00000, 0x0000000088a00000, 0x0000000088b00000| 0%| F| |TAMS 0x0000000088a00000, 0x0000000088a00000| Untracked
| 113|0x0000000088b00000, 0x0000000088b00000, 0x0000000088c00000| 0%| F| |TAMS 0x0000000088b00000, 0x0000000088b00000| Untracked
| 114|0x0000000088c00000, 0x0000000088c00000, 0x0000000088d00000| 0%| F| |TAMS 0x0000000088c00000, 0x0000000088c00000| Untracked
| 115|0x0000000088d00000, 0x0000000088d00000, 0x0000000088e00000| 0%| F| |TAMS 0x0000000088d00000, 0x0000000088d00000| Untracked
| 116|0x0000000088e00000, 0x0000000088ee1e40, 0x0000000088f00000| 88%| S|CS|TAMS 0x0000000088e00000, 0x0000000088e00000| Complete
| 117|0x0000000088f00000, 0x0000000088f00000, 0x0000000089000000| 0%| F| |TAMS 0x0000000088f00000, 0x0000000088f00000| Untracked
| 118|0x0000000089000000, 0x0000000089000000, 0x0000000089100000| 0%| F| |TAMS 0x0000000089000000, 0x0000000089000000| Untracked
| 119|0x0000000089100000, 0x0000000089100000, 0x0000000089200000| 0%| F| |TAMS 0x0000000089100000, 0x0000000089100000| Untracked
| 120|0x0000000089200000, 0x0000000089200000, 0x0000000089300000| 0%| F| |TAMS 0x0000000089200000, 0x0000000089200000| Untracked
| 121|0x0000000089300000, 0x0000000089300000, 0x0000000089400000| 0%| F| |TAMS 0x0000000089300000, 0x0000000089300000| Untracked
| 122|0x0000000089400000, 0x0000000089400000, 0x0000000089500000| 0%| F| |TAMS 0x0000000089400000, 0x0000000089400000| Untracked
| 123|0x0000000089500000, 0x0000000089500000, 0x0000000089600000| 0%| F| |TAMS 0x0000000089500000, 0x0000000089500000| Untracked
| 124|0x0000000089600000, 0x0000000089600000, 0x0000000089700000| 0%| F| |TAMS 0x0000000089600000, 0x0000000089600000| Untracked
| 125|0x0000000089700000, 0x0000000089700000, 0x0000000089800000| 0%| F| |TAMS 0x0000000089700000, 0x0000000089700000| Untracked
| 126|0x0000000089800000, 0x0000000089800000, 0x0000000089900000| 0%| F| |TAMS 0x0000000089800000, 0x0000000089800000| Untracked
| 127|0x0000000089900000, 0x0000000089900000, 0x0000000089a00000| 0%| F| |TAMS 0x0000000089900000, 0x0000000089900000| Untracked
Card table byte_map: [0x000001cca5600000,0x000001cca5a00000] _byte_map_base: 0x000001cca51f3000
Marking Bits (Prev, Next): (CMBitMap*) 0x000001cc92b88c00, (CMBitMap*) 0x000001cc92b88bc0
Prev Bits: [0x000001cca7da0000, 0x000001cca9d38000)
Next Bits: [0x000001cca5e00000, 0x000001cca7d98000)
Polling page: 0x000001cc90a80000
Metaspace:
Usage:
Non-class: 24.47 MB used.
Class: 2.90 MB used.
Both: 27.36 MB used.
Virtual space:
Non-class space: 64.00 MB reserved, 24.62 MB ( 38%) committed, 1 nodes.
Class space: 1.00 GB reserved, 2.94 MB ( <1%) committed, 1 nodes.
Both: 1.06 GB reserved, 27.56 MB ( 3%) committed.
Chunk freelists:
Non-Class: 6.61 MB
Class: 12.94 MB
Both: 19.55 MB
MaxMetaspaceSize: unlimited
CompressedClassSpaceSize: 1.00 GB
Initial GC threshold: 21.00 MB
Current GC threshold: 35.25 MB
CDS: off
MetaspaceReclaimPolicy: balanced
- commit_granule_bytes: 65536.
- commit_granule_words: 8192.
- virtual_space_node_default_size: 8388608.
- enlarge_chunks_in_place: 1.
- new_chunks_are_fully_committed: 0.
- uncommit_free_chunks: 1.
- use_allocation_guard: 0.
- handle_deallocations: 1.
Internal statistics:
num_allocs_failed_limit: 3.
num_arena_births: 124.
num_arena_deaths: 0.
num_vsnodes_births: 2.
num_vsnodes_deaths: 0.
num_space_committed: 441.
num_space_uncommitted: 0.
num_chunks_returned_to_freelist: 3.
num_chunks_taken_from_freelist: 796.
num_chunk_merges: 3.
num_chunk_splits: 513.
num_chunks_enlarged: 384.
num_inconsistent_stats: 0.
CodeHeap 'non-profiled nmethods': size=120000Kb used=2603Kb max_used=2603Kb free=117396Kb
bounds [0x000001cc9dcd0000, 0x000001cc9df60000, 0x000001cca5200000]
CodeHeap 'profiled nmethods': size=120000Kb used=9973Kb max_used=9973Kb free=110026Kb
bounds [0x000001cc96200000, 0x000001cc96bc0000, 0x000001cc9d730000]
CodeHeap 'non-nmethods': size=5760Kb used=1187Kb max_used=1255Kb free=4572Kb
bounds [0x000001cc9d730000, 0x000001cc9d9a0000, 0x000001cc9dcd0000]
total_blobs=5119 nmethods=4629 adapters=401
compilation: enabled
stopped_count=0, restarted_count=0
full_count=0
Compilation events (20 events):
Event: 24.253 Thread 0x000001ccac305130 4620 3 org.apache.maven.shared.filtering.BoundedReader::read (31 bytes)
Event: 24.253 Thread 0x000001ccac305130 nmethod 4620 0x000001cc96bb0a90 code [0x000001cc96bb0c40, 0x000001cc96bb0e88]
Event: 24.253 Thread 0x000001ccac305130 4621 ! 3 java.io.BufferedReader::read (104 bytes)
Event: 24.254 Thread 0x000001ccac305130 nmethod 4621 0x000001cc96bb0f90 code [0x000001cc96bb1180, 0x000001cc96bb1758]
Event: 24.254 Thread 0x000001ccac305130 4623 3 org.apache.maven.shared.filtering.BoundedReader::reset (13 bytes)
Event: 24.255 Thread 0x000001ccac305130 nmethod 4623 0x000001cc96bb1a90 code [0x000001cc96bb1c40, 0x000001cc96bb1e08]
Event: 24.255 Thread 0x000001ccac305130 4624 ! 3 java.io.BufferedReader::reset (69 bytes)
Event: 24.255 Thread 0x000001ccac305130 nmethod 4624 0x000001cc96bb1f10 code [0x000001cc96bb2100, 0x000001cc96bb25f8]
Event: 24.255 Thread 0x000001ccac305130 4625 ! 3 org.apache.maven.shared.filtering.MultiDelimiterInterpolatorFilterReaderLineEnding::read (734 bytes)
Event: 24.256 Thread 0x000001ccac294000 4629 4 java.util.Objects::checkFromIndexSize (8 bytes)
Event: 24.256 Thread 0x000001ccac294000 nmethod 4629 0x000001cc9df5a710 code [0x000001cc9df5a880, 0x000001cc9df5a938]
Event: 24.267 Thread 0x000001ccac305130 nmethod 4625 0x000001cc96bb2890 code [0x000001cc96bb3240, 0x000001cc96bb9728]
Event: 24.267 Thread 0x000001ccac305130 4622 1 org.codehaus.plexus.interpolation.multi.DelimiterSpecification::getBegin (5 bytes)
Event: 24.267 Thread 0x000001ccac305130 nmethod 4622 0x000001cc9df5aa10 code [0x000001cc9df5aba0, 0x000001cc9df5ac78]
Event: 24.267 Thread 0x000001ccac305130 4626 3 org.apache.maven.shared.filtering.BoundedReader::<init> (25 bytes)
Event: 24.267 Thread 0x000001ccac305130 nmethod 4626 0x000001cc96bbbb10 code [0x000001cc96bbbcc0, 0x000001cc96bbc068]
Event: 24.267 Thread 0x000001ccac305130 4627 ! 3 java.io.BufferedReader::mark (57 bytes)
Event: 24.268 Thread 0x000001ccac305130 nmethod 4627 0x000001cc96bbc190 code [0x000001cc96bbc360, 0x000001cc96bbc7d8]
Event: 24.268 Thread 0x000001ccac305130 4628 ! 3 java.io.Reader::skip (121 bytes)
Event: 24.269 Thread 0x000001ccac305130 nmethod 4628 0x000001cc96bbca10 code [0x000001cc96bbcc00, 0x000001cc96bbd3f8]
GC Heap History (20 events):
Event: 5.842 GC heap after
{Heap after GC invocations=6 (full 0):
garbage-first heap total 27648K, used 7747K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 4 young (4096K), 4 survivors (4096K)
Metaspace used 24589K, committed 24768K, reserved 1114112K
class space used 2681K, committed 2816K, reserved 1048576K
}
Event: 5.932 GC heap before
{Heap before GC invocations=6 (full 0):
garbage-first heap total 27648K, used 8771K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 5 young (5120K), 4 survivors (4096K)
Metaspace used 24648K, committed 24896K, reserved 1114112K
class space used 2688K, committed 2816K, reserved 1048576K
}
Event: 5.944 GC heap after
{Heap after GC invocations=7 (full 0):
garbage-first heap total 27648K, used 8125K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 1 young (1024K), 1 survivors (1024K)
Metaspace used 24648K, committed 24896K, reserved 1114112K
class space used 2688K, committed 2816K, reserved 1048576K
}
Event: 6.602 GC heap before
{Heap before GC invocations=7 (full 0):
garbage-first heap total 27648K, used 18365K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 11 young (11264K), 1 survivors (1024K)
Metaspace used 25256K, committed 25472K, reserved 1114112K
class space used 2741K, committed 2880K, reserved 1048576K
}
Event: 6.607 GC heap after
{Heap after GC invocations=8 (full 0):
garbage-first heap total 27648K, used 9362K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 2 young (2048K), 2 survivors (2048K)
Metaspace used 25256K, committed 25472K, reserved 1114112K
class space used 2741K, committed 2880K, reserved 1048576K
}
Event: 7.081 GC heap before
{Heap before GC invocations=8 (full 0):
garbage-first heap total 27648K, used 18578K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 11 young (11264K), 2 survivors (2048K)
Metaspace used 25381K, committed 25600K, reserved 1114112K
class space used 2742K, committed 2880K, reserved 1048576K
}
Event: 7.090 GC heap after
{Heap after GC invocations=9 (full 0):
garbage-first heap total 27648K, used 10655K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 2 young (2048K), 2 survivors (2048K)
Metaspace used 25381K, committed 25600K, reserved 1114112K
class space used 2742K, committed 2880K, reserved 1048576K
}
Event: 7.897 GC heap before
{Heap before GC invocations=9 (full 0):
garbage-first heap total 27648K, used 19871K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 11 young (11264K), 2 survivors (2048K)
Metaspace used 25818K, committed 26048K, reserved 1114112K
class space used 2791K, committed 2880K, reserved 1048576K
}
Event: 7.905 GC heap after
{Heap after GC invocations=10 (full 0):
garbage-first heap total 79872K, used 11943K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 2 young (2048K), 2 survivors (2048K)
Metaspace used 25818K, committed 26048K, reserved 1114112K
class space used 2791K, committed 2880K, reserved 1048576K
}
Event: 15.124 GC heap before
{Heap before GC invocations=10 (full 0):
garbage-first heap total 79872K, used 49831K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 39 young (39936K), 2 survivors (2048K)
Metaspace used 26349K, committed 26560K, reserved 1114112K
class space used 2815K, committed 2944K, reserved 1048576K
}
Event: 15.135 GC heap after
{Heap after GC invocations=11 (full 0):
garbage-first heap total 79872K, used 14297K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 4 young (4096K), 4 survivors (4096K)
Metaspace used 26349K, committed 26560K, reserved 1114112K
class space used 2815K, committed 2944K, reserved 1048576K
}
Event: 23.090 GC heap before
{Heap before GC invocations=11 (full 0):
garbage-first heap total 79872K, used 52185K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 41 young (41984K), 4 survivors (4096K)
Metaspace used 26802K, committed 27072K, reserved 1114112K
class space used 2834K, committed 2944K, reserved 1048576K
}
Event: 23.103 GC heap after
{Heap after GC invocations=12 (full 0):
garbage-first heap total 79872K, used 15953K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 5 young (5120K), 5 survivors (5120K)
Metaspace used 26802K, committed 27072K, reserved 1114112K
class space used 2834K, committed 2944K, reserved 1048576K
}
Event: 24.228 GC heap before
{Heap before GC invocations=12 (full 0):
garbage-first heap total 79872K, used 44625K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 14 young (14336K), 5 survivors (5120K)
Metaspace used 27993K, committed 28160K, reserved 1114112K
class space used 2963K, committed 3008K, reserved 1048576K
}
Event: 24.240 GC heap after
{Heap after GC invocations=13 (full 0):
garbage-first heap total 79872K, used 36839K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 3 young (3072K), 3 survivors (3072K)
Metaspace used 27993K, committed 28160K, reserved 1114112K
class space used 2963K, committed 3008K, reserved 1048576K
}
Event: 24.291 GC heap before
{Heap before GC invocations=13 (full 0):
garbage-first heap total 79872K, used 49127K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 4 young (4096K), 3 survivors (3072K)
Metaspace used 28018K, committed 28224K, reserved 1114112K
class space used 2965K, committed 3008K, reserved 1048576K
}
Event: 24.299 GC heap after
{Heap after GC invocations=14 (full 0):
garbage-first heap total 79872K, used 16535K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 1 young (1024K), 1 survivors (1024K)
Metaspace used 28018K, committed 28224K, reserved 1114112K
class space used 2965K, committed 3008K, reserved 1048576K
}
Event: 24.300 GC heap before
{Heap before GC invocations=14 (full 0):
garbage-first heap total 79872K, used 24727K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 2 young (2048K), 1 survivors (1024K)
Metaspace used 28018K, committed 28224K, reserved 1114112K
class space used 2965K, committed 3008K, reserved 1048576K
}
Event: 24.303 GC heap after
{Heap after GC invocations=15 (full 0):
garbage-first heap total 79872K, used 24593K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 1 young (1024K), 1 survivors (1024K)
Metaspace used 28018K, committed 28224K, reserved 1114112K
class space used 2965K, committed 3008K, reserved 1048576K
}
Event: 24.305 GC heap before
{Heap before GC invocations=15 (full 0):
garbage-first heap total 79872K, used 36881K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 2 young (2048K), 1 survivors (1024K)
Metaspace used 28018K, committed 28224K, reserved 1114112K
class space used 2965K, committed 3008K, reserved 1048576K
}
Dll operation events (7 events):
Event: 0.016 Loaded shared library C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\java.dll
Event: 0.332 Loaded shared library C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\net.dll
Event: 0.335 Loaded shared library C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\nio.dll
Event: 0.349 Loaded shared library C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\zip.dll
Event: 0.605 Loaded shared library C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\jimage.dll
Event: 0.683 Loaded shared library C:\Users\ADMIN\AppData\Local\Temp\jansi-2.4.1-3c2736af26602078-jansi.dll
Event: 1.162 Loaded shared library C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\verify.dll
Deoptimization events (20 events):
Event: 23.829 Thread 0x000001cc92b2de00 Uncommon trap: trap_request=0xffffffc6 fr.pc=0x000001cc9ddc042c relative=0x000000000000008c
Event: 23.829 Thread 0x000001cc92b2de00 Uncommon trap: reason=bimorphic_or_optimized_type_check action=maybe_recompile pc=0x000001cc9ddc042c method=com.google.inject.internal.LinkedBindingImpl.acceptTargetVisitor(Lcom/google/inject/spi/BindingTargetVisitor;)Ljava/lang/Object; @ 2 c2
Event: 23.829 Thread 0x000001cc92b2de00 DEOPT PACKING pc=0x000001cc9ddc042c sp=0x000000bb6bdfd0e0
Event: 23.829 Thread 0x000001cc92b2de00 DEOPT UNPACKING pc=0x000001cc9d7869a3 sp=0x000000bb6bdfd068 mode 2
Event: 23.830 Thread 0x000001cc92b2de00 Uncommon trap: trap_request=0xffffffc6 fr.pc=0x000001cc9ddc042c relative=0x000000000000008c
Event: 23.830 Thread 0x000001cc92b2de00 Uncommon trap: reason=bimorphic_or_optimized_type_check action=maybe_recompile pc=0x000001cc9ddc042c method=com.google.inject.internal.LinkedBindingImpl.acceptTargetVisitor(Lcom/google/inject/spi/BindingTargetVisitor;)Ljava/lang/Object; @ 2 c2
Event: 23.830 Thread 0x000001cc92b2de00 DEOPT PACKING pc=0x000001cc9ddc042c sp=0x000000bb6bdfd0e0
Event: 23.830 Thread 0x000001cc92b2de00 DEOPT UNPACKING pc=0x000001cc9d7869a3 sp=0x000000bb6bdfd068 mode 2
Event: 23.849 Thread 0x000001cc92b2de00 Uncommon trap: trap_request=0xfffffff4 fr.pc=0x000001cc9dede340 relative=0x0000000000000860
Event: 23.849 Thread 0x000001cc92b2de00 Uncommon trap: reason=null_check action=make_not_entrant pc=0x000001cc9dede340 method=com.google.inject.internal.InjectorImpl.enterContext()Lcom/google/inject/internal/InternalContext; @ 7 c2
Event: 23.849 Thread 0x000001cc92b2de00 DEOPT PACKING pc=0x000001cc9dede340 sp=0x000000bb6bdfd180
Event: 23.849 Thread 0x000001cc92b2de00 DEOPT UNPACKING pc=0x000001cc9d7869a3 sp=0x000000bb6bdfd170 mode 2
Event: 24.029 Thread 0x000001cc92b2de00 Uncommon trap: trap_request=0xffffff45 fr.pc=0x000001cc9dddd884 relative=0x00000000000000e4
Event: 24.029 Thread 0x000001cc92b2de00 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000001cc9dddd884 method=java.util.HashMap.hash(Ljava/lang/Object;)I @ 1 c2
Event: 24.029 Thread 0x000001cc92b2de00 DEOPT PACKING pc=0x000001cc9dddd884 sp=0x000000bb6bdfb760
Event: 24.029 Thread 0x000001cc92b2de00 DEOPT UNPACKING pc=0x000001cc9d7869a3 sp=0x000000bb6bdfb6a0 mode 2
Event: 24.162 Thread 0x000001cc92b2de00 Uncommon trap: trap_request=0xffffff45 fr.pc=0x000001cc9df43f7c relative=0x000000000000025c
Event: 24.162 Thread 0x000001cc92b2de00 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000001cc9df43f7c method=java.util.regex.Pattern.qtype()Ljava/util/regex/Pattern$Qtype; @ 8 c2
Event: 24.162 Thread 0x000001cc92b2de00 DEOPT PACKING pc=0x000001cc9df43f7c sp=0x000000bb6bdfcdf0
Event: 24.162 Thread 0x000001cc92b2de00 DEOPT UNPACKING pc=0x000001cc9d7869a3 sp=0x000000bb6bdfcc88 mode 2
Classes unloaded (0 events):
No events
Classes redefined (0 events):
No events
Internal exceptions (20 events):
Event: 4.892 Thread 0x000001cc92b2de00 Exception <a 'java/lang/ExceptionInInitializerError'{0x0000000089036868}> (0x0000000089036868)
thrown [s\src\hotspot\share\oops\instanceKlass.cpp, line 1218]
Event: 4.950 Thread 0x000001cc92b2de00 Implicit null exception at 0x000001cc9dd5b82f to 0x000001cc9dd5b98c
Event: 4.953 Thread 0x000001cc92b2de00 Exception <a 'java/lang/NoSuchMethodError'{0x0000000088f4a778}: 'java.lang.Object java.lang.invoke.Invokers$Holder.invokeExact_MT(java.lang.Object, int, java.lang.Object)'> (0x0000000088f4a778)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
Event: 4.968 Thread 0x000001cc92b2de00 Exception <a 'java/lang/NoSuchMethodError'{0x0000000088fb2328}: 'int java.lang.invoke.DirectMethodHandle$Holder.invokeSpecial(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)'> (0x0000000088fb2328)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
Event: 5.366 Thread 0x000001cc92b2de00 Exception <a 'java/lang/NoClassDefFoundError'{0x0000000082956e60}: com/google/inject/servlet/ServletModuleTargetVisitor> (0x0000000082956e60)
thrown [s\src\hotspot\share\classfile\systemDictionary.cpp, line 245]
Event: 5.488 Thread 0x000001cc92b2de00 Exception <a 'java/lang/NoSuchMethodError'{0x00000000828f7100}: 'void java.lang.invoke.DirectMethodHandle$Holder.invokeVirtual(java.lang.Object, java.lang.Object)'> (0x00000000828f7100)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
Event: 5.509 Thread 0x000001cc92b2de00 Exception <a 'java/lang/NoSuchMethodError'{0x0000000082734f00}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.invokeStaticInit(java.lang.Object, int, int, int, int)'> (0x0000000082734f00)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
Event: 5.725 Thread 0x000001cc92b2de00 Implicit null exception at 0x000001cc9dcf2ef2 to 0x000001cc9dcf350c
Event: 5.725 Thread 0x000001cc92b2de00 Implicit null exception at 0x000001cc9dd0d7f2 to 0x000001cc9dd0de2c
Event: 5.845 Thread 0x000001cc92b2de00 Exception <a 'java/lang/NoSuchMethodError'{0x0000000089901e00}: 'void java.lang.invoke.DirectMethodHandle$Holder.invokeSpecial(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)'> (0x0000000089901e00)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
Event: 5.852 Thread 0x000001cc92b2de00 Exception <a 'java/lang/NoSuchMethodError'{0x000000008991cd38}: 'void java.lang.invoke.DirectMethodHandle$Holder.invokeSpecial(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)'> (0x000000008991cd38)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
Event: 5.947 Thread 0x000001cc92b2de00 Exception <a 'java/lang/NoSuchMethodError'{0x0000000089925d68}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.invokeVirtual(java.lang.Object, java.lang.Object, java.lang.Object)'> (0x0000000089925d68)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
Event: 22.433 Thread 0x000001cc92b2de00 Implicit null exception at 0x000001cc9dec8a6f to 0x000001cc9dec8c30
Event: 22.433 Thread 0x000001cc92b2de00 Implicit null exception at 0x000001cc9dd9850f to 0x000001cc9dd98589
Event: 22.773 Thread 0x000001cc92b2de00 Exception <a 'java/lang/NoSuchMethodError'{0x00000000845a5738}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.newInvokeSpecial(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)'> (0x00000000845a5738)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
Event: 22.773 Thread 0x000001cc92b2de00 Exception <a 'java/lang/NoSuchMethodError'{0x00000000845aa048}: 'java.lang.Object java.lang.invoke.Invokers$Holder.linkToTargetMethod(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)'> (0x00000000845aa048)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
Event: 23.849 Thread 0x000001cc92b2de00 Implicit null exception at 0x000001cc9deddbb0 to 0x000001cc9dede330
Event: 23.909 Thread 0x000001cc92b2de00 Exception <a 'java/lang/NoSuchMethodError'{0x00000000862f1c68}: 'int java.lang.invoke.DirectMethodHandle$Holder.invokeVirtual(java.lang.Object, java.lang.Object)'> (0x00000000862f1c68)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
Event: 24.029 Thread 0x000001cc92b2de00 Implicit null exception at 0x000001cc9dddd7e0 to 0x000001cc9dddd87a
Event: 24.161 Thread 0x000001cc92b2de00 Exception <a 'java/lang/NoSuchMethodError'{0x00000000860e4348}: 'int java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(java.lang.Object, java.lang.Object, int)'> (0x00000000860e4348)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
VM Operations (20 events):
Event: 18.162 Executing VM operation: Cleanup done
Event: 19.175 Executing VM operation: Cleanup
Event: 19.175 Executing VM operation: Cleanup done
Event: 20.186 Executing VM operation: Cleanup
Event: 20.186 Executing VM operation: Cleanup done
Event: 21.196 Executing VM operation: Cleanup
Event: 21.196 Executing VM operation: Cleanup done
Event: 22.206 Executing VM operation: Cleanup
Event: 22.207 Executing VM operation: Cleanup done
Event: 23.090 Executing VM operation: G1CollectForAllocation
Event: 23.103 Executing VM operation: G1CollectForAllocation done
Event: 24.115 Executing VM operation: Cleanup
Event: 24.116 Executing VM operation: Cleanup done
Event: 24.228 Executing VM operation: G1TryInitiateConcMark
Event: 24.240 Executing VM operation: G1TryInitiateConcMark done
Event: 24.291 Executing VM operation: G1TryInitiateConcMark
Event: 24.299 Executing VM operation: G1TryInitiateConcMark done
Event: 24.300 Executing VM operation: G1TryInitiateConcMark
Event: 24.303 Executing VM operation: G1TryInitiateConcMark done
Event: 24.305 Executing VM operation: G1TryInitiateConcMark
Events (20 events):
Event: 24.032 loading class java/time/zone/ZoneRulesProvider
Event: 24.032 loading class java/time/zone/ZoneRulesProvider done
Event: 24.032 loading class java/time/zone/ZoneRulesProvider$1
Event: 24.032 loading class java/time/zone/ZoneRulesProvider$1 done
Event: 24.032 loading class java/time/zone/TzdbZoneRulesProvider
Event: 24.032 loading class java/time/zone/TzdbZoneRulesProvider done
Event: 24.062 loading class java/time/zone/Ser
Event: 24.062 loading class java/io/Externalizable
Event: 24.062 loading class java/io/Externalizable done
Event: 24.062 loading class java/time/zone/Ser done
Event: 24.074 loading class jdk/internal/reflect/UnsafeBooleanFieldAccessorImpl
Event: 24.074 loading class jdk/internal/reflect/UnsafeBooleanFieldAccessorImpl done
Event: 24.152 loading class java/lang/Character$UnicodeBlock
Event: 24.154 loading class java/lang/Character$Subset
Event: 24.154 loading class java/lang/Character$Subset done
Event: 24.154 loading class java/lang/Character$UnicodeBlock done
Event: 24.256 loading class java/nio/BufferMismatch
Event: 24.256 loading class java/nio/BufferMismatch done
Event: 24.256 loading class java/nio/file/attribute/PosixFileAttributes
Event: 24.256 loading class java/nio/file/attribute/PosixFileAttributes done
Dynamic libraries:
0x00007ff6d4ea0000 - 0x00007ff6d4eae000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\javaw.exe
0x00007ffb17cf0000 - 0x00007ffb17ee8000 C:\Windows\SYSTEM32\ntdll.dll
0x00007ffb17460000 - 0x00007ffb17522000 C:\Windows\System32\KERNEL32.DLL
0x00007ffb15530000 - 0x00007ffb15826000 C:\Windows\System32\KERNELBASE.dll
0x00007ffb15a60000 - 0x00007ffb15b60000 C:\Windows\System32\ucrtbase.dll
0x00007ffb0f470000 - 0x00007ffb0f487000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\jli.dll
0x00007ffb17100000 - 0x00007ffb172a1000 C:\Windows\System32\USER32.dll
0x00007ffb15a30000 - 0x00007ffb15a52000 C:\Windows\System32\win32u.dll
0x00007ffb17530000 - 0x00007ffb1755b000 C:\Windows\System32\GDI32.dll
0x00007ffb15380000 - 0x00007ffb15499000 C:\Windows\System32\gdi32full.dll
0x00007ffb15830000 - 0x00007ffb158cd000 C:\Windows\System32\msvcp_win.dll
0x00007ffb0f1a0000 - 0x00007ffb0f1bb000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\VCRUNTIME140.dll
0x00007ffb00f20000 - 0x00007ffb011bb000 C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.6456_none_60b8a6cb71f64256\COMCTL32.dll
0x00007ffb17360000 - 0x00007ffb173fe000 C:\Windows\System32\msvcrt.dll
0x00007ffb17560000 - 0x00007ffb1758f000 C:\Windows\System32\IMM32.DLL
0x00007ffb0f2f0000 - 0x00007ffb0f2fc000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\vcruntime140_1.dll
0x00007ffb097b0000 - 0x00007ffb0983d000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\msvcp140.dll
0x00007ffaf6cf0000 - 0x00007ffaf7951000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\server\jvm.dll
0x00007ffb16e30000 - 0x00007ffb16ee1000 C:\Windows\System32\ADVAPI32.dll
0x00007ffb17590000 - 0x00007ffb1762f000 C:\Windows\System32\sechost.dll
0x00007ffb16a60000 - 0x00007ffb16b80000 C:\Windows\System32\RPCRT4.dll
0x00007ffb15c10000 - 0x00007ffb15c37000 C:\Windows\System32\bcrypt.dll
0x00007ffb15130000 - 0x00007ffb1517b000 C:\Windows\SYSTEM32\POWRPROF.dll
0x00007ffb09710000 - 0x00007ffb09719000 C:\Windows\SYSTEM32\WSOCK32.dll
0x00007ffb17c40000 - 0x00007ffb17cab000 C:\Windows\System32\WS2_32.dll
0x00007ffb011d0000 - 0x00007ffb011f7000 C:\Windows\SYSTEM32\WINMM.dll
0x00007ffb0e2f0000 - 0x00007ffb0e2fa000 C:\Windows\SYSTEM32\VERSION.dll
0x00007ffb15110000 - 0x00007ffb15122000 C:\Windows\SYSTEM32\UMPDC.dll
0x00007ffb13b90000 - 0x00007ffb13ba2000 C:\Windows\SYSTEM32\kernel.appcore.dll
0x00007ffb0eee0000 - 0x00007ffb0eeea000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\jimage.dll
0x00007ffb13080000 - 0x00007ffb13281000 C:\Windows\SYSTEM32\DBGHELP.DLL
0x00007ffb0beb0000 - 0x00007ffb0bee4000 C:\Windows\SYSTEM32\dbgcore.DLL
0x00007ffb154a0000 - 0x00007ffb15522000 C:\Windows\System32\bcryptPrimitives.dll
0x00007ffb0e1d0000 - 0x00007ffb0e1f5000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\java.dll
0x00007ffb0e060000 - 0x00007ffb0e078000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\zip.dll
0x00007ffb15d10000 - 0x00007ffb16480000 C:\Windows\System32\SHELL32.dll
0x00007ffb132b0000 - 0x00007ffb13a55000 C:\Windows\SYSTEM32\windows.storage.dll
0x00007ffb16480000 - 0x00007ffb167d4000 C:\Windows\System32\combase.dll
0x00007ffb14cd0000 - 0x00007ffb14cfb000 C:\Windows\SYSTEM32\Wldp.dll
0x00007ffb167f0000 - 0x00007ffb168bd000 C:\Windows\System32\OLEAUT32.dll
0x00007ffb16f70000 - 0x00007ffb1701d000 C:\Windows\System32\SHCORE.dll
0x00007ffb16f10000 - 0x00007ffb16f6b000 C:\Windows\System32\shlwapi.dll
0x00007ffb152b0000 - 0x00007ffb152d4000 C:\Windows\SYSTEM32\profapi.dll
0x00007ffb0df10000 - 0x00007ffb0df29000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\net.dll
0x00007ffb0b630000 - 0x00007ffb0b73a000 C:\Windows\SYSTEM32\WINHTTP.dll
0x00007ffb14a30000 - 0x00007ffb14a9a000 C:\Windows\system32\mswsock.dll
0x00007ffb0def0000 - 0x00007ffb0df06000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\nio.dll
0x00007ffb0db20000 - 0x00007ffb0db44000 C:\Users\ADMIN\AppData\Local\Temp\jansi-2.4.1-3c2736af26602078-jansi.dll
0x00007ffb0e030000 - 0x00007ffb0e040000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\verify.dll
0x00007ffb14710000 - 0x00007ffb1474b000 C:\Windows\SYSTEM32\IPHLPAPI.DLL
0x00007ffb16c70000 - 0x00007ffb16c78000 C:\Windows\System32\NSI.dll
0x00007ffb0bde0000 - 0x00007ffb0bdf7000 C:\Windows\SYSTEM32\dhcpcsvc6.DLL
0x00007ffb0be80000 - 0x00007ffb0be9d000 C:\Windows\SYSTEM32\dhcpcsvc.DLL
0x00007ffb14750000 - 0x00007ffb1481a000 C:\Windows\SYSTEM32\DNSAPI.dll
dbghelp: loaded successfully - version: 4.0.5 - missing functions: none
symbol engine: initialized successfully - sym options: 0x614 - pdb path: .;C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin;C:\Windows\SYSTEM32;C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.6456_none_60b8a6cb71f64256;C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\server;C:\Users\ADMIN\AppData\Local\Temp
VM Arguments:
jvm_args: -Dmaven.home=EMBEDDED -Dclassworlds.conf=D:\projects\New2\.metadata\.plugins\org.eclipse.m2e.launching\launches\m2conf10300884232095977621.tmp -Dmaven.multiModuleProjectDirectory=D:\PGR Update\public_grievance_updated -Dm2e.build.project.data.socket.port=62562 -Dfile.encoding=UTF-8 -Dstdout.encoding=UTF-8 -Dstderr.encoding=UTF-8 -XX:+ShowCodeDetailsInExceptionMessages
java_command: org.codehaus.plexus.classworlds.launcher.Launcher -B -Dstyle.color=always install
java_class_path (initial): C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.m2e.maven.runtime_3.9.900.20250220-2013\jars\plexus-classworlds-2.8.0.jar
Launcher Type: SUN_STANDARD
[Global flags]
intx CICompilerCount = 3 {product} {ergonomic}
uint ConcGCThreads = 1 {product} {ergonomic}
uint G1ConcRefinementThreads = 4 {product} {ergonomic}
size_t G1HeapRegionSize = 1048576 {product} {ergonomic}
uintx GCDrainStackTargetSize = 64 {product} {ergonomic}
size_t InitialHeapSize = 134217728 {product} {ergonomic}
size_t MarkStackSize = 4194304 {product} {ergonomic}
size_t MaxHeapSize = 2120220672 {product} {ergonomic}
size_t MaxNewSize = 1271922688 {product} {ergonomic}
size_t MinHeapDeltaBytes = 1048576 {product} {ergonomic}
size_t MinHeapSize = 8388608 {product} {ergonomic}
uintx NonNMethodCodeHeapSize = 5832780 {pd product} {ergonomic}
uintx NonProfiledCodeHeapSize = 122912730 {pd product} {ergonomic}
uintx ProfiledCodeHeapSize = 122912730 {pd product} {ergonomic}
uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic}
bool SegmentedCodeCache = true {product} {ergonomic}
bool ShowCodeDetailsInExceptionMessages = true {manageable} {command line}
size_t SoftMaxHeapSize = 2120220672 {manageable} {ergonomic}
bool UseCompressedClassPointers = true {product lp64_product} {ergonomic}
bool UseCompressedOops = true {product lp64_product} {ergonomic}
bool UseG1GC = true {product} {ergonomic}
bool UseLargePagesIndividualAllocation = false {pd product} {ergonomic}
Logging:
Log output configuration:
#0: stdout all=warning uptime,level,tags
#1: stderr all=off uptime,level,tags
Environment Variables:
PATH=C:/Users/ADMIN/.p2/pool/plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_23.0.2.v20250131-0604/jre/bin/server;C:/Users/ADMIN/.p2/pool/plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_23.0.2.v20250131-0604/jre/bin;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Program Files\nodejs\;C:\Users\ADMIN\AppData\Local\Programs\Python\Python313\Scripts\;C:\Users\ADMIN\AppData\Local\Programs\Python\Python313\;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\ADMIN\AppData\Local\Microsoft\WindowsApps;D:\vscode and mysql installer\Microsoft VS Code\bin;D:\Python\PyCharm 2024.3.2\bin;;C:\Users\ADMIN\AppData\Roaming\npm;C:\Users\ADMIN\AppData\Local\GitHubDesktop\bin;C:\Windows\system32;
USERNAME=ADMIN
OS=Windows_NT
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 78 Stepping 3, GenuineIntel
TMP=C:\Users\ADMIN\AppData\Local\Temp
TEMP=C:\Users\ADMIN\AppData\Local\Temp
Periodic native trim disabled
--------------- S Y S T E M ---------------
OS:
Windows 10 , 64 bit Build 19041 (10.0.19041.5915)
OS uptime: 22 days 21:23 hours
CPU: total 4 (initial active 4) (2 cores per cpu, 2 threads per core) family 6 model 78 stepping 3 microcode 0xf0, cx8, cmov, fxsr, ht, mmx, 3dnowpref, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, lzcnt, tsc, tscinvbit, avx, avx2, aes, erms, clmul, bmi1, bmi2, rtm, adx, fma, vzeroupper, clflush, clflushopt
Processor Information for all 4 processors :
Max Mhz: 2496, Current Mhz: 2496, Mhz Limit: 2496
Memory: 4k page, system-wide physical 8087M (724M free)
TotalPageFile size 25396M (AvailPageFile size 38M)
current process WorkingSet (physical memory assigned to process): 172M, peak: 172M
current process commit charge ("private bytes"): 249M, peak: 333M
vm_info: OpenJDK 64-Bit Server VM (17.0.9+9) for windows-amd64 JRE (17.0.9+9), built on Oct 26 2023 14:01:42 by "admin" with MS VC++ 16.10 / 16.11 (VS2019)
END.

735
hs_err_pid9124.log

@ -0,0 +1,735 @@
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 11534336 bytes for G1 virtual space
# Possible reasons:
# The system is out of physical RAM or swap space
# The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# JVM is running with Unscaled Compressed Oops mode in which the Java heap is
# placed in the first 4GB address space. The Java Heap base address is the
# maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress
# to set the Java Heap base and to place the Java Heap above 4GB virtual address.
# This output file may be truncated or incomplete.
#
# Out of Memory Error (os_windows.cpp:3613), pid=9124, tid=9716
#
# JRE version: OpenJDK Runtime Environment Temurin-17.0.9+9 (17.0.9+9) (build 17.0.9+9)
# Java VM: OpenJDK 64-Bit Server VM Temurin-17.0.9+9 (17.0.9+9, mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
--------------- S U M M A R Y ------------
Command Line: -Dmaven.home=EMBEDDED -Dclassworlds.conf=D:\projects\New2\.metadata\.plugins\org.eclipse.m2e.launching\launches\m2conf4771384238088312615.tmp -Dmaven.multiModuleProjectDirectory=D:\PGR Update\public_grievance_updated -Dm2e.build.project.data.socket.port=62566 -Dfile.encoding=UTF-8 -Dstdout.encoding=UTF-8 -Dstderr.encoding=UTF-8 -XX:+ShowCodeDetailsInExceptionMessages org.codehaus.plexus.classworlds.launcher.Launcher -B -Dstyle.color=always install
Host: Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz, 4 cores, 7G, Windows 10 , 64 bit Build 19041 (10.0.19041.5915)
Time: Mon Nov 17 11:13:28 2025 India Standard Time elapsed time: 12.378450 seconds (0d 0h 0m 12s)
--------------- T H R E A D ---------------
Current thread (0x0000014ab14c0780): VMThread "VM Thread" [stack: 0x0000002febf00000,0x0000002fec000000] [id=9716]
Stack: [0x0000002febf00000,0x0000002fec000000]
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0x67cf49]
V [jvm.dll+0x83478a]
V [jvm.dll+0x83624e]
V [jvm.dll+0x8368b3]
V [jvm.dll+0x247f1f]
V [jvm.dll+0x679d69]
V [jvm.dll+0x66e6ba]
V [jvm.dll+0x307e5b]
V [jvm.dll+0x30f306]
V [jvm.dll+0x35f0ce]
V [jvm.dll+0x35f2ff]
V [jvm.dll+0x2dea58]
V [jvm.dll+0x2e1ad6]
V [jvm.dll+0x2ec1ca]
V [jvm.dll+0x3204d0]
V [jvm.dll+0x83adab]
V [jvm.dll+0x83baf1]
V [jvm.dll+0x83c00d]
V [jvm.dll+0x83c3e4]
V [jvm.dll+0x83c4b0]
V [jvm.dll+0x7e3c3a]
V [jvm.dll+0x67be35]
C [ucrtbase.dll+0x21bb2]
C [KERNEL32.DLL+0x17374]
C [ntdll.dll+0x4cc91]
VM_Operation (0x0000002febbff430): G1PauseRemark, mode: safepoint, requested by thread 0x0000014a97e78dc0
--------------- P R O C E S S ---------------
Threads class SMR info:
_java_thread_list=0x0000014ab72b37d0, length=12, elements={
0x0000014a97e0ea20, 0x0000014ab1541020, 0x0000014ab1541cb0, 0x0000014ab166b690,
0x0000014ab166df70, 0x0000014ab166e840, 0x0000014ab166f110, 0x0000014ab166fd10,
0x0000014ab16db500, 0x0000014ab16de1d0, 0x0000014ab17dba50, 0x0000014ab17e8620
}
Java Threads: ( => current thread )
0x0000014a97e0ea20 JavaThread "main" [_thread_blocked, id=12320, stack(0x0000002feb900000,0x0000002feba00000)]
0x0000014ab1541020 JavaThread "Reference Handler" daemon [_thread_blocked, id=11784, stack(0x0000002fec000000,0x0000002fec100000)]
0x0000014ab1541cb0 JavaThread "Finalizer" daemon [_thread_blocked, id=16816, stack(0x0000002fec100000,0x0000002fec200000)]
0x0000014ab166b690 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=8308, stack(0x0000002fec200000,0x0000002fec300000)]
0x0000014ab166df70 JavaThread "Attach Listener" daemon [_thread_blocked, id=10712, stack(0x0000002fec300000,0x0000002fec400000)]
0x0000014ab166e840 JavaThread "Service Thread" daemon [_thread_blocked, id=3500, stack(0x0000002fec400000,0x0000002fec500000)]
0x0000014ab166f110 JavaThread "Monitor Deflation Thread" daemon [_thread_blocked, id=5636, stack(0x0000002fec500000,0x0000002fec600000)]
0x0000014ab166fd10 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=15476, stack(0x0000002fec600000,0x0000002fec700000)]
0x0000014ab16db500 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=20008, stack(0x0000002fec700000,0x0000002fec800000)]
0x0000014ab16de1d0 JavaThread "Sweeper thread" daemon [_thread_blocked, id=17188, stack(0x0000002fec800000,0x0000002fec900000)]
0x0000014ab17dba50 JavaThread "Notification Thread" daemon [_thread_blocked, id=6004, stack(0x0000002fec900000,0x0000002feca00000)]
0x0000014ab17e8620 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=18460, stack(0x0000002fecb00000,0x0000002fecc00000)]
Other Threads:
=>0x0000014ab14c0780 VMThread "VM Thread" [stack: 0x0000002febf00000,0x0000002fec000000] [id=9716]
0x0000014ab17de350 WatcherThread [stack: 0x0000002feca00000,0x0000002fecb00000] [id=19632]
0x0000014a97e682a0 GCTaskThread "GC Thread#0" [stack: 0x0000002feba00000,0x0000002febb00000] [id=4628]
0x0000014ab6832240 GCTaskThread "GC Thread#1" [stack: 0x0000002fece00000,0x0000002fecf00000] [id=2860]
0x0000014ab67817e0 GCTaskThread "GC Thread#2" [stack: 0x0000002fecf00000,0x0000002fed000000] [id=19068]
0x0000014ab677ef20 GCTaskThread "GC Thread#3" [stack: 0x0000002fed000000,0x0000002fed100000] [id=11576]
0x0000014a97e78dc0 ConcurrentGCThread "G1 Main Marker" [stack: 0x0000002febb00000,0x0000002febc00000] [id=13100]
0x0000014a97e796f0 ConcurrentGCThread "G1 Conc#0" [stack: 0x0000002febc00000,0x0000002febd00000] [id=20192]
0x0000014a97ecd820 ConcurrentGCThread "G1 Refine#0" [stack: 0x0000002febd00000,0x0000002febe00000] [id=18128]
0x0000014ab6d5ae90 ConcurrentGCThread "G1 Refine#1" [stack: 0x0000002fed100000,0x0000002fed200000] [id=10212]
0x0000014a97ece160 ConcurrentGCThread "G1 Service" [stack: 0x0000002febe00000,0x0000002febf00000] [id=3124]
Threads with active compile tasks:
C2 CompilerThread0 12426 4615 4 org.codehaus.plexus.util.SelectorUtils::match (520 bytes)
VM state: at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event])
[0x0000014a97e0a430] Threads_lock - owner thread: 0x0000014ab14c0780
[0x0000014a97e0a040] Heap_lock - owner thread: 0x0000014a97e78dc0
Heap address: 0x0000000081a00000, size: 2022 MB, Compressed Oops mode: 32-bit
CDS archive(s) not mapped
Compressed class space mapped at: 0x0000000100000000-0x0000000140000000, reserved size: 1073741824
Narrow klass base: 0x0000000000000000, Narrow klass shift: 3, Narrow klass range: 0x140000000
GC Precious Log:
CPUs: 4 total, 4 available
Memory: 8087M
Large Page Support: Disabled
NUMA Support: Disabled
Compressed Oops: Enabled (32-bit)
Heap Region Size: 1M
Heap Min Capacity: 8M
Heap Initial Capacity: 128M
Heap Max Capacity: 2022M
Pre-touch: Disabled
Parallel Workers: 4
Concurrent Workers: 1
Concurrent Refinement Workers: 4
Periodic GC: Disabled
Heap:
garbage-first heap total 119808K, used 81977K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 2 young (2048K), 1 survivors (1024K)
Metaspace used 28012K, committed 28224K, reserved 1114112K
class space used 2963K, committed 3072K, reserved 1048576K
Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, OA=open archive, CA=closed archive, TAMS=top-at-mark-start (previous, next)
| 0|0x0000000081a00000, 0x0000000081b00000, 0x0000000081b00000|100%| O| |TAMS 0x0000000081b00000, 0x0000000081a00000| Untracked
| 1|0x0000000081b00000, 0x0000000081c00000, 0x0000000081c00000|100%| O| |TAMS 0x0000000081c00000, 0x0000000081b00000| Untracked
| 2|0x0000000081c00000, 0x0000000081d00000, 0x0000000081d00000|100%| O| |TAMS 0x0000000081d00000, 0x0000000081c00000| Untracked
| 3|0x0000000081d00000, 0x0000000081e00000, 0x0000000081e00000|100%| O| |TAMS 0x0000000081e00000, 0x0000000081d00000| Untracked
| 4|0x0000000081e00000, 0x0000000081f00000, 0x0000000081f00000|100%| O| |TAMS 0x0000000081f00000, 0x0000000081e00000| Untracked
| 5|0x0000000081f00000, 0x0000000082000000, 0x0000000082000000|100%| O| |TAMS 0x0000000082000000, 0x0000000081f00000| Untracked
| 6|0x0000000082000000, 0x0000000082100000, 0x0000000082100000|100%| O| |TAMS 0x0000000082100000, 0x0000000082000000| Updating
| 7|0x0000000082100000, 0x0000000082200000, 0x0000000082200000|100%| O| |TAMS 0x0000000082200000, 0x0000000082100000| Untracked
| 8|0x0000000082200000, 0x0000000082300000, 0x0000000082300000|100%| O| |TAMS 0x0000000082300000, 0x0000000082200000| Untracked
| 9|0x0000000082300000, 0x0000000082400000, 0x0000000082400000|100%| O| |TAMS 0x0000000082400000, 0x0000000082300000| Untracked
| 10|0x0000000082400000, 0x0000000082500000, 0x0000000082500000|100%| O| |TAMS 0x0000000082500000, 0x0000000082400000| Untracked
| 11|0x0000000082500000, 0x0000000082600000, 0x0000000082600000|100%| O| |TAMS 0x0000000082600000, 0x0000000082500000| Untracked
| 12|0x0000000082600000, 0x0000000082700000, 0x0000000082700000|100%| O| |TAMS 0x0000000082700000, 0x0000000082600000| Untracked
| 13|0x0000000082700000, 0x0000000082800000, 0x0000000082800000|100%| O| |TAMS 0x0000000082800000, 0x0000000082700000| Untracked
| 14|0x0000000082800000, 0x0000000082900000, 0x0000000082900000|100%|HS| |TAMS 0x0000000082900000, 0x0000000082800000| Complete
| 15|0x0000000082900000, 0x0000000082a00000, 0x0000000082a00000|100%|HC| |TAMS 0x0000000082a00000, 0x0000000082900000| Complete
| 16|0x0000000082a00000, 0x0000000082b00000, 0x0000000082b00000|100%|HC| |TAMS 0x0000000082b00000, 0x0000000082a00000| Complete
| 17|0x0000000082b00000, 0x0000000082c00000, 0x0000000082c00000|100%|HC| |TAMS 0x0000000082c00000, 0x0000000082b00000| Complete
| 18|0x0000000082c00000, 0x0000000082d00000, 0x0000000082d00000|100%|HC| |TAMS 0x0000000082d00000, 0x0000000082c00000| Complete
| 19|0x0000000082d00000, 0x0000000082e00000, 0x0000000082e00000|100%|HC| |TAMS 0x0000000082e00000, 0x0000000082d00000| Complete
| 20|0x0000000082e00000, 0x0000000082f00000, 0x0000000082f00000|100%|HC| |TAMS 0x0000000082f00000, 0x0000000082e00000| Complete
| 21|0x0000000082f00000, 0x0000000083000000, 0x0000000083000000|100%|HC| |TAMS 0x0000000083000000, 0x0000000082f00000| Complete
| 22|0x0000000083000000, 0x0000000083100000, 0x0000000083100000|100%|HS| |TAMS 0x0000000083100000, 0x0000000083000000| Complete
| 23|0x0000000083100000, 0x0000000083200000, 0x0000000083200000|100%|HC| |TAMS 0x0000000083200000, 0x0000000083100000| Complete
| 24|0x0000000083200000, 0x0000000083300000, 0x0000000083300000|100%|HC| |TAMS 0x0000000083300000, 0x0000000083200000| Complete
| 25|0x0000000083300000, 0x0000000083400000, 0x0000000083400000|100%|HC| |TAMS 0x0000000083400000, 0x0000000083300000| Complete
| 26|0x0000000083400000, 0x0000000083500000, 0x0000000083500000|100%|HC| |TAMS 0x0000000083500000, 0x0000000083400000| Complete
| 27|0x0000000083500000, 0x0000000083600000, 0x0000000083600000|100%|HC| |TAMS 0x0000000083600000, 0x0000000083500000| Complete
| 28|0x0000000083600000, 0x0000000083700000, 0x0000000083700000|100%|HC| |TAMS 0x0000000083700000, 0x0000000083600000| Complete
| 29|0x0000000083700000, 0x0000000083800000, 0x0000000083800000|100%|HC| |TAMS 0x0000000083800000, 0x0000000083700000| Complete
| 30|0x0000000083800000, 0x0000000083900000, 0x0000000083900000|100%|HC| |TAMS 0x0000000083900000, 0x0000000083800000| Complete
| 31|0x0000000083900000, 0x0000000083a00000, 0x0000000083a00000|100%|HC| |TAMS 0x0000000083a00000, 0x0000000083900000| Complete
| 32|0x0000000083a00000, 0x0000000083b00000, 0x0000000083b00000|100%|HC| |TAMS 0x0000000083b00000, 0x0000000083a00000| Complete
| 33|0x0000000083b00000, 0x0000000083c00000, 0x0000000083c00000|100%|HC| |TAMS 0x0000000083c00000, 0x0000000083b00000| Complete
| 34|0x0000000083c00000, 0x0000000083d00000, 0x0000000083d00000|100%| O| |TAMS 0x0000000083d00000, 0x0000000083c00000| Untracked
| 35|0x0000000083d00000, 0x0000000083d39600, 0x0000000083e00000| 22%| O| |TAMS 0x0000000083d39600, 0x0000000083d00000| Updating
| 36|0x0000000083e00000, 0x0000000083f00000, 0x0000000083f00000|100%|HS| |TAMS 0x0000000083e00000, 0x0000000083e00000| Complete
| 37|0x0000000083f00000, 0x0000000084000000, 0x0000000084000000|100%|HC| |TAMS 0x0000000083f00000, 0x0000000083f00000| Complete
| 38|0x0000000084000000, 0x0000000084100000, 0x0000000084100000|100%|HC| |TAMS 0x0000000084000000, 0x0000000084000000| Complete
| 39|0x0000000084100000, 0x0000000084200000, 0x0000000084200000|100%|HC| |TAMS 0x0000000084100000, 0x0000000084100000| Complete
| 40|0x0000000084200000, 0x0000000084300000, 0x0000000084300000|100%|HC| |TAMS 0x0000000084200000, 0x0000000084200000| Complete
| 41|0x0000000084300000, 0x0000000084400000, 0x0000000084400000|100%|HC| |TAMS 0x0000000084300000, 0x0000000084300000| Complete
| 42|0x0000000084400000, 0x0000000084500000, 0x0000000084500000|100%|HC| |TAMS 0x0000000084400000, 0x0000000084400000| Complete
| 43|0x0000000084500000, 0x0000000084600000, 0x0000000084600000|100%|HC| |TAMS 0x0000000084500000, 0x0000000084500000| Complete
| 44|0x0000000084600000, 0x0000000084700000, 0x0000000084700000|100%|HC| |TAMS 0x0000000084600000, 0x0000000084600000| Complete
| 45|0x0000000084700000, 0x0000000084800000, 0x0000000084800000|100%|HC| |TAMS 0x0000000084700000, 0x0000000084700000| Complete
| 46|0x0000000084800000, 0x0000000084900000, 0x0000000084900000|100%|HC| |TAMS 0x0000000084800000, 0x0000000084800000| Complete
| 47|0x0000000084900000, 0x0000000084a00000, 0x0000000084a00000|100%|HC| |TAMS 0x0000000084900000, 0x0000000084900000| Complete
| 48|0x0000000084a00000, 0x0000000084b00000, 0x0000000084b00000|100%|HS| |TAMS 0x0000000084a00000, 0x0000000084a00000| Complete
| 49|0x0000000084b00000, 0x0000000084c00000, 0x0000000084c00000|100%|HC| |TAMS 0x0000000084b00000, 0x0000000084b00000| Complete
| 50|0x0000000084c00000, 0x0000000084d00000, 0x0000000084d00000|100%|HC| |TAMS 0x0000000084c00000, 0x0000000084c00000| Complete
| 51|0x0000000084d00000, 0x0000000084e00000, 0x0000000084e00000|100%|HC| |TAMS 0x0000000084d00000, 0x0000000084d00000| Complete
| 52|0x0000000084e00000, 0x0000000084f00000, 0x0000000084f00000|100%|HC| |TAMS 0x0000000084e00000, 0x0000000084e00000| Complete
| 53|0x0000000084f00000, 0x0000000085000000, 0x0000000085000000|100%|HC| |TAMS 0x0000000084f00000, 0x0000000084f00000| Complete
| 54|0x0000000085000000, 0x0000000085100000, 0x0000000085100000|100%|HC| |TAMS 0x0000000085000000, 0x0000000085000000| Complete
| 55|0x0000000085100000, 0x0000000085200000, 0x0000000085200000|100%|HC| |TAMS 0x0000000085100000, 0x0000000085100000| Complete
| 56|0x0000000085200000, 0x0000000085300000, 0x0000000085300000|100%|HS| |TAMS 0x0000000085200000, 0x0000000085200000| Complete
| 57|0x0000000085300000, 0x0000000085400000, 0x0000000085400000|100%|HC| |TAMS 0x0000000085300000, 0x0000000085300000| Complete
| 58|0x0000000085400000, 0x0000000085500000, 0x0000000085500000|100%|HC| |TAMS 0x0000000085400000, 0x0000000085400000| Complete
| 59|0x0000000085500000, 0x0000000085600000, 0x0000000085600000|100%|HC| |TAMS 0x0000000085500000, 0x0000000085500000| Complete
| 60|0x0000000085600000, 0x0000000085700000, 0x0000000085700000|100%|HC| |TAMS 0x0000000085600000, 0x0000000085600000| Complete
| 61|0x0000000085700000, 0x0000000085800000, 0x0000000085800000|100%|HC| |TAMS 0x0000000085700000, 0x0000000085700000| Complete
| 62|0x0000000085800000, 0x0000000085900000, 0x0000000085900000|100%|HC| |TAMS 0x0000000085800000, 0x0000000085800000| Complete
| 63|0x0000000085900000, 0x0000000085a00000, 0x0000000085a00000|100%|HC| |TAMS 0x0000000085900000, 0x0000000085900000| Complete
| 64|0x0000000085a00000, 0x0000000085b00000, 0x0000000085b00000|100%|HC| |TAMS 0x0000000085a00000, 0x0000000085a00000| Complete
| 65|0x0000000085b00000, 0x0000000085c00000, 0x0000000085c00000|100%|HC| |TAMS 0x0000000085b00000, 0x0000000085b00000| Complete
| 66|0x0000000085c00000, 0x0000000085d00000, 0x0000000085d00000|100%|HC| |TAMS 0x0000000085c00000, 0x0000000085c00000| Complete
| 67|0x0000000085d00000, 0x0000000085e00000, 0x0000000085e00000|100%|HC| |TAMS 0x0000000085d00000, 0x0000000085d00000| Complete
| 68|0x0000000085e00000, 0x0000000085f00000, 0x0000000085f00000|100%|HS| |TAMS 0x0000000085e00000, 0x0000000085e00000| Complete
| 69|0x0000000085f00000, 0x0000000086000000, 0x0000000086000000|100%|HC| |TAMS 0x0000000085f00000, 0x0000000085f00000| Complete
| 70|0x0000000086000000, 0x0000000086100000, 0x0000000086100000|100%|HC| |TAMS 0x0000000086000000, 0x0000000086000000| Complete
| 71|0x0000000086100000, 0x0000000086200000, 0x0000000086200000|100%|HC| |TAMS 0x0000000086100000, 0x0000000086100000| Complete
| 72|0x0000000086200000, 0x0000000086300000, 0x0000000086300000|100%|HC| |TAMS 0x0000000086200000, 0x0000000086200000| Complete
| 73|0x0000000086300000, 0x0000000086400000, 0x0000000086400000|100%|HC| |TAMS 0x0000000086300000, 0x0000000086300000| Complete
| 74|0x0000000086400000, 0x0000000086500000, 0x0000000086500000|100%|HC| |TAMS 0x0000000086400000, 0x0000000086400000| Complete
| 75|0x0000000086500000, 0x0000000086600000, 0x0000000086600000|100%|HC| |TAMS 0x0000000086500000, 0x0000000086500000| Complete
| 76|0x0000000086600000, 0x0000000086700000, 0x0000000086700000|100%|HC| |TAMS 0x0000000086600000, 0x0000000086600000| Complete
| 77|0x0000000086700000, 0x0000000086800000, 0x0000000086800000|100%|HC| |TAMS 0x0000000086700000, 0x0000000086700000| Complete
| 78|0x0000000086800000, 0x0000000086900000, 0x0000000086900000|100%|HC| |TAMS 0x0000000086800000, 0x0000000086800000| Complete
| 79|0x0000000086900000, 0x0000000086a00000, 0x0000000086a00000|100%|HC| |TAMS 0x0000000086900000, 0x0000000086900000| Complete
| 80|0x0000000086a00000, 0x0000000086a00000, 0x0000000086b00000| 0%| F| |TAMS 0x0000000086a00000, 0x0000000086a00000| Untracked
| 81|0x0000000086b00000, 0x0000000086b00000, 0x0000000086c00000| 0%| F| |TAMS 0x0000000086b00000, 0x0000000086b00000| Untracked
| 82|0x0000000086c00000, 0x0000000086c00000, 0x0000000086d00000| 0%| F| |TAMS 0x0000000086c00000, 0x0000000086c00000| Untracked
| 83|0x0000000086d00000, 0x0000000086d00000, 0x0000000086e00000| 0%| F| |TAMS 0x0000000086d00000, 0x0000000086d00000| Untracked
| 84|0x0000000086e00000, 0x0000000086e00000, 0x0000000086f00000| 0%| F| |TAMS 0x0000000086e00000, 0x0000000086e00000| Untracked
| 85|0x0000000086f00000, 0x0000000086f00000, 0x0000000087000000| 0%| F| |TAMS 0x0000000086f00000, 0x0000000086f00000| Untracked
| 86|0x0000000087000000, 0x0000000087000000, 0x0000000087100000| 0%| F| |TAMS 0x0000000087000000, 0x0000000087000000| Untracked
| 87|0x0000000087100000, 0x0000000087100000, 0x0000000087200000| 0%| F| |TAMS 0x0000000087100000, 0x0000000087100000| Untracked
| 88|0x0000000087200000, 0x0000000087200000, 0x0000000087300000| 0%| F| |TAMS 0x0000000087200000, 0x0000000087200000| Untracked
| 89|0x0000000087300000, 0x0000000087300000, 0x0000000087400000| 0%| F| |TAMS 0x0000000087300000, 0x0000000087300000| Untracked
| 90|0x0000000087400000, 0x0000000087400000, 0x0000000087500000| 0%| F| |TAMS 0x0000000087400000, 0x0000000087400000| Untracked
| 91|0x0000000087500000, 0x0000000087500000, 0x0000000087600000| 0%| F| |TAMS 0x0000000087500000, 0x0000000087500000| Untracked
| 92|0x0000000087600000, 0x0000000087600000, 0x0000000087700000| 0%| F| |TAMS 0x0000000087600000, 0x0000000087600000| Untracked
| 93|0x0000000087700000, 0x0000000087700000, 0x0000000087800000| 0%| F| |TAMS 0x0000000087700000, 0x0000000087700000| Untracked
| 94|0x0000000087800000, 0x0000000087800000, 0x0000000087900000| 0%| F| |TAMS 0x0000000087800000, 0x0000000087800000| Untracked
| 95|0x0000000087900000, 0x0000000087900000, 0x0000000087a00000| 0%| F| |TAMS 0x0000000087900000, 0x0000000087900000| Untracked
| 96|0x0000000087a00000, 0x0000000087a00000, 0x0000000087b00000| 0%| F| |TAMS 0x0000000087a00000, 0x0000000087a00000| Untracked
| 97|0x0000000087b00000, 0x0000000087b00000, 0x0000000087c00000| 0%| F| |TAMS 0x0000000087b00000, 0x0000000087b00000| Untracked
| 98|0x0000000087c00000, 0x0000000087c00000, 0x0000000087d00000| 0%| F| |TAMS 0x0000000087c00000, 0x0000000087c00000| Untracked
| 99|0x0000000087d00000, 0x0000000087d00000, 0x0000000087e00000| 0%| F| |TAMS 0x0000000087d00000, 0x0000000087d00000| Untracked
| 100|0x0000000087e00000, 0x0000000087e00000, 0x0000000087f00000| 0%| F| |TAMS 0x0000000087e00000, 0x0000000087e00000| Untracked
| 101|0x0000000087f00000, 0x0000000087f00000, 0x0000000088000000| 0%| F| |TAMS 0x0000000087f00000, 0x0000000087f00000| Untracked
| 102|0x0000000088000000, 0x0000000088000000, 0x0000000088100000| 0%| F| |TAMS 0x0000000088000000, 0x0000000088000000| Untracked
| 103|0x0000000088100000, 0x0000000088100000, 0x0000000088200000| 0%| F| |TAMS 0x0000000088100000, 0x0000000088100000| Untracked
| 104|0x0000000088200000, 0x0000000088200000, 0x0000000088300000| 0%| F| |TAMS 0x0000000088200000, 0x0000000088200000| Untracked
| 105|0x0000000088300000, 0x0000000088300000, 0x0000000088400000| 0%| F| |TAMS 0x0000000088300000, 0x0000000088300000| Untracked
| 106|0x0000000088400000, 0x0000000088400000, 0x0000000088500000| 0%| F| |TAMS 0x0000000088400000, 0x0000000088400000| Untracked
| 107|0x0000000088500000, 0x0000000088500000, 0x0000000088600000| 0%| F| |TAMS 0x0000000088500000, 0x0000000088500000| Untracked
| 108|0x0000000088600000, 0x0000000088600000, 0x0000000088700000| 0%| F| |TAMS 0x0000000088600000, 0x0000000088600000| Untracked
| 109|0x0000000088700000, 0x0000000088700000, 0x0000000088800000| 0%| F| |TAMS 0x0000000088700000, 0x0000000088700000| Untracked
| 110|0x0000000088800000, 0x0000000088800000, 0x0000000088900000| 0%| F| |TAMS 0x0000000088800000, 0x0000000088800000| Untracked
| 111|0x0000000088900000, 0x0000000088900000, 0x0000000088a00000| 0%| F| |TAMS 0x0000000088900000, 0x0000000088900000| Untracked
| 112|0x0000000088a00000, 0x0000000088a00000, 0x0000000088b00000| 0%| F| |TAMS 0x0000000088a00000, 0x0000000088a00000| Untracked
| 113|0x0000000088b00000, 0x0000000088b00000, 0x0000000088c00000| 0%| F| |TAMS 0x0000000088b00000, 0x0000000088b00000| Untracked
| 114|0x0000000088c00000, 0x0000000088c00000, 0x0000000088d00000| 0%| F| |TAMS 0x0000000088c00000, 0x0000000088c00000| Untracked
| 115|0x0000000088d00000, 0x0000000088dd5188, 0x0000000088e00000| 83%| S|CS|TAMS 0x0000000088d00000, 0x0000000088d00000| Complete
| 127|0x0000000089900000, 0x0000000089980000, 0x0000000089a00000| 50%| E| |TAMS 0x0000000089900000, 0x0000000089900000| Complete
Card table byte_map: [0x0000014aaa8e0000,0x0000014aaace0000] _byte_map_base: 0x0000014aaa4d3000
Marking Bits (Prev, Next): (CMBitMap*) 0x0000014a97e687d0, (CMBitMap*) 0x0000014a97e68810
Prev Bits: [0x0000014aab0e0000, 0x0000014aad078000)
Next Bits: [0x0000014aad080000, 0x0000014aaf018000)
Polling page: 0x0000014a95d10000
Metaspace:
Usage:
Non-class: 24.46 MB used.
Class: 2.89 MB used.
Both: 27.36 MB used.
Virtual space:
Non-class space: 64.00 MB reserved, 24.56 MB ( 38%) committed, 1 nodes.
Class space: 1.00 GB reserved, 3.00 MB ( <1%) committed, 1 nodes.
Both: 1.06 GB reserved, 27.56 MB ( 3%) committed.
Chunk freelists:
Non-Class: 6.62 MB
Class: 12.88 MB
Both: 19.50 MB
MaxMetaspaceSize: unlimited
CompressedClassSpaceSize: 1.00 GB
Initial GC threshold: 21.00 MB
Current GC threshold: 35.12 MB
CDS: off
MetaspaceReclaimPolicy: balanced
- commit_granule_bytes: 65536.
- commit_granule_words: 8192.
- virtual_space_node_default_size: 8388608.
- enlarge_chunks_in_place: 1.
- new_chunks_are_fully_committed: 0.
- uncommit_free_chunks: 1.
- use_allocation_guard: 0.
- handle_deallocations: 1.
Internal statistics:
num_allocs_failed_limit: 3.
num_arena_births: 124.
num_arena_deaths: 0.
num_vsnodes_births: 2.
num_vsnodes_deaths: 0.
num_space_committed: 441.
num_space_uncommitted: 0.
num_chunks_returned_to_freelist: 3.
num_chunks_taken_from_freelist: 778.
num_chunk_merges: 3.
num_chunk_splits: 509.
num_chunks_enlarged: 393.
num_inconsistent_stats: 0.
CodeHeap 'non-profiled nmethods': size=120000Kb used=2476Kb max_used=2476Kb free=117523Kb
bounds [0x0000014aa2fb0000, 0x0000014aa3220000, 0x0000014aaa4e0000]
CodeHeap 'profiled nmethods': size=120000Kb used=9967Kb max_used=9967Kb free=110032Kb
bounds [0x0000014a9b4e0000, 0x0000014a9bea0000, 0x0000014aa2a10000]
CodeHeap 'non-nmethods': size=5760Kb used=1190Kb max_used=1258Kb free=4569Kb
bounds [0x0000014aa2a10000, 0x0000014aa2c80000, 0x0000014aa2fb0000]
total_blobs=5105 nmethods=4616 adapters=401
compilation: enabled
stopped_count=0, restarted_count=0
full_count=0
Compilation events (20 events):
Event: 12.312 Thread 0x0000014ab16db500 nmethod 4607 0x0000014a9be96390 code [0x0000014a9be96540, 0x0000014a9be968e8]
Event: 12.312 Thread 0x0000014ab16db500 4608 ! 3 java.io.BufferedReader::mark (57 bytes)
Event: 12.313 Thread 0x0000014ab16db500 nmethod 4608 0x0000014a9be96a10 code [0x0000014a9be96be0, 0x0000014a9be97058]
Event: 12.313 Thread 0x0000014ab16db500 4603 1 org.codehaus.plexus.interpolation.multi.DelimiterSpecification::getBegin (5 bytes)
Event: 12.313 Thread 0x0000014ab16db500 nmethod 4603 0x0000014aa321ad90 code [0x0000014aa321af20, 0x0000014aa321aff8]
Event: 12.356 Thread 0x0000014ab16db500 4612 3 java.util.StringTokenizer::<init> (52 bytes)
Event: 12.357 Thread 0x0000014ab16db500 nmethod 4612 0x0000014a9be97290 code [0x0000014a9be97460, 0x0000014a9be977c8]
Event: 12.357 Thread 0x0000014ab16db500 4613 3 java.util.StringTokenizer::setMaxDelimCodePoint (156 bytes)
Event: 12.359 Thread 0x0000014ab16db500 nmethod 4613 0x0000014a9be97990 code [0x0000014a9be97c00, 0x0000014a9be98978]
Event: 12.359 Thread 0x0000014ab16db500 4614 3 java.util.StringTokenizer::<init> (8 bytes)
Event: 12.359 Thread 0x0000014ab166fd10 4615 4 org.codehaus.plexus.util.SelectorUtils::match (520 bytes)
Event: 12.359 Thread 0x0000014ab16db500 nmethod 4614 0x0000014a9be98e90 code [0x0000014a9be99020, 0x0000014a9be99168]
Event: 12.360 Thread 0x0000014ab16db500 4616 3 org.codehaus.plexus.util.MatchPatterns::matches (49 bytes)
Event: 12.360 Thread 0x0000014ab16db500 nmethod 4616 0x0000014a9be99210 code [0x0000014a9be99420, 0x0000014a9be99a78]
Event: 12.360 Thread 0x0000014ab16db500 4617 3 java.io.File::isDirectory (34 bytes)
Event: 12.361 Thread 0x0000014ab16db500 nmethod 4617 0x0000014a9be99e10 code [0x0000014a9be9a000, 0x0000014a9be9a528]
Event: 12.363 Thread 0x0000014ab16db500 4618 3 sun.nio.fs.WindowsFileSystemProvider::readAttributes (63 bytes)
Event: 12.364 Thread 0x0000014ab16db500 nmethod 4618 0x0000014a9be9a690 code [0x0000014a9be9a900, 0x0000014a9be9b358]
Event: 12.364 Thread 0x0000014ab16db500 4619 3 java.nio.file.Files::readAttributes (11 bytes)
Event: 12.364 Thread 0x0000014ab16db500 nmethod 4619 0x0000014a9be9b710 code [0x0000014a9be9b8c0, 0x0000014a9be9bb48]
GC Heap History (20 events):
Event: 6.400 GC heap before
{Heap before GC invocations=6 (full 0):
garbage-first heap total 27648K, used 8994K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 5 young (5120K), 4 survivors (4096K)
Metaspace used 24616K, committed 24896K, reserved 1114112K
class space used 2684K, committed 2816K, reserved 1048576K
}
Event: 6.414 GC heap after
{Heap after GC invocations=7 (full 0):
garbage-first heap total 27648K, used 8490K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 1 young (1024K), 1 survivors (1024K)
Metaspace used 24616K, committed 24896K, reserved 1114112K
class space used 2684K, committed 2816K, reserved 1048576K
}
Event: 7.000 GC heap before
{Heap before GC invocations=7 (full 0):
garbage-first heap total 27648K, used 17706K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 11 young (11264K), 1 survivors (1024K)
Metaspace used 25238K, committed 25472K, reserved 1114112K
class space used 2738K, committed 2816K, reserved 1048576K
}
Event: 7.007 GC heap after
{Heap after GC invocations=8 (full 0):
garbage-first heap total 27648K, used 9340K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 2 young (2048K), 2 survivors (2048K)
Metaspace used 25238K, committed 25472K, reserved 1114112K
class space used 2738K, committed 2816K, reserved 1048576K
}
Event: 7.391 GC heap before
{Heap before GC invocations=8 (full 0):
garbage-first heap total 27648K, used 18556K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 11 young (11264K), 2 survivors (2048K)
Metaspace used 25343K, committed 25472K, reserved 1114112K
class space used 2739K, committed 2816K, reserved 1048576K
}
Event: 7.399 GC heap after
{Heap after GC invocations=9 (full 0):
garbage-first heap total 27648K, used 10703K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 2 young (2048K), 2 survivors (2048K)
Metaspace used 25343K, committed 25472K, reserved 1114112K
class space used 2739K, committed 2816K, reserved 1048576K
}
Event: 7.667 GC heap before
{Heap before GC invocations=9 (full 0):
garbage-first heap total 27648K, used 19919K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 11 young (11264K), 2 survivors (2048K)
Metaspace used 25766K, committed 25984K, reserved 1114112K
class space used 2787K, committed 2880K, reserved 1048576K
}
Event: 7.674 GC heap after
{Heap after GC invocations=10 (full 0):
garbage-first heap total 79872K, used 11818K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 2 young (2048K), 2 survivors (2048K)
Metaspace used 25766K, committed 25984K, reserved 1114112K
class space used 2787K, committed 2880K, reserved 1048576K
}
Event: 9.306 GC heap before
{Heap before GC invocations=10 (full 0):
garbage-first heap total 79872K, used 50730K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 40 young (40960K), 2 survivors (2048K)
Metaspace used 26293K, committed 26560K, reserved 1114112K
class space used 2811K, committed 2944K, reserved 1048576K
}
Event: 9.322 GC heap after
{Heap after GC invocations=11 (full 0):
garbage-first heap total 79872K, used 14866K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 5 young (5120K), 5 survivors (5120K)
Metaspace used 26293K, committed 26560K, reserved 1114112K
class space used 2811K, committed 2944K, reserved 1048576K
}
Event: 11.427 GC heap before
{Heap before GC invocations=11 (full 0):
garbage-first heap total 79872K, used 52754K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 42 young (43008K), 5 survivors (5120K)
Metaspace used 26786K, committed 27008K, reserved 1114112K
class space used 2832K, committed 2944K, reserved 1048576K
}
Event: 11.442 GC heap after
{Heap after GC invocations=12 (full 0):
garbage-first heap total 79872K, used 15888K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 3 young (3072K), 3 survivors (3072K)
Metaspace used 26786K, committed 27008K, reserved 1114112K
class space used 2832K, committed 2944K, reserved 1048576K
}
Event: 12.260 GC heap before
{Heap before GC invocations=12 (full 0):
garbage-first heap total 79872K, used 43536K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 11 young (11264K), 3 survivors (3072K)
Metaspace used 27979K, committed 28224K, reserved 1114112K
class space used 2961K, committed 3072K, reserved 1048576K
}
Event: 12.268 GC heap after
{Heap after GC invocations=13 (full 0):
garbage-first heap total 79872K, used 37011K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 3 young (3072K), 3 survivors (3072K)
Metaspace used 27979K, committed 28224K, reserved 1114112K
class space used 2961K, committed 3072K, reserved 1048576K
}
Event: 12.285 GC heap before
{Heap before GC invocations=13 (full 0):
garbage-first heap total 79872K, used 49299K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 4 young (4096K), 3 survivors (3072K)
Metaspace used 28001K, committed 28224K, reserved 1114112K
class space used 2963K, committed 3072K, reserved 1048576K
}
Event: 12.292 GC heap after
{Heap after GC invocations=14 (full 0):
garbage-first heap total 79872K, used 16613K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 1 young (1024K), 1 survivors (1024K)
Metaspace used 28001K, committed 28224K, reserved 1114112K
class space used 2963K, committed 3072K, reserved 1048576K
}
Event: 12.293 GC heap before
{Heap before GC invocations=14 (full 0):
garbage-first heap total 79872K, used 24805K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 2 young (2048K), 1 survivors (1024K)
Metaspace used 28001K, committed 28224K, reserved 1114112K
class space used 2963K, committed 3072K, reserved 1048576K
}
Event: 12.296 GC heap after
{Heap after GC invocations=15 (full 0):
garbage-first heap total 79872K, used 24668K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 1 young (1024K), 1 survivors (1024K)
Metaspace used 28001K, committed 28224K, reserved 1114112K
class space used 2963K, committed 3072K, reserved 1048576K
}
Event: 12.297 GC heap before
{Heap before GC invocations=15 (full 0):
garbage-first heap total 79872K, used 36956K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 2 young (2048K), 1 survivors (1024K)
Metaspace used 28003K, committed 28224K, reserved 1114112K
class space used 2963K, committed 3072K, reserved 1048576K
}
Event: 12.300 GC heap after
{Heap after GC invocations=16 (full 0):
garbage-first heap total 79872K, used 36921K [0x0000000081a00000, 0x0000000100000000)
region size 1024K, 1 young (1024K), 1 survivors (1024K)
Metaspace used 28003K, committed 28224K, reserved 1114112K
class space used 2963K, committed 3072K, reserved 1048576K
}
Dll operation events (7 events):
Event: 0.012 Loaded shared library C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\java.dll
Event: 0.255 Loaded shared library C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\net.dll
Event: 0.259 Loaded shared library C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\nio.dll
Event: 0.274 Loaded shared library C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\zip.dll
Event: 0.662 Loaded shared library C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\jimage.dll
Event: 1.367 Loaded shared library C:\Users\ADMIN\AppData\Local\Temp\jansi-2.4.1-a238f63e1322e53e-jansi.dll
Event: 1.915 Loaded shared library C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\verify.dll
Deoptimization events (20 events):
Event: 11.800 Thread 0x0000014a97e0ea20 Uncommon trap: trap_request=0xffffffc6 fr.pc=0x0000014aa30ae82c relative=0x000000000000008c
Event: 11.800 Thread 0x0000014a97e0ea20 Uncommon trap: reason=bimorphic_or_optimized_type_check action=maybe_recompile pc=0x0000014aa30ae82c method=com.google.inject.internal.LinkedBindingImpl.acceptTargetVisitor(Lcom/google/inject/spi/BindingTargetVisitor;)Ljava/lang/Object; @ 2 c2
Event: 11.800 Thread 0x0000014a97e0ea20 DEOPT PACKING pc=0x0000014aa30ae82c sp=0x0000002feb9fd020
Event: 11.800 Thread 0x0000014a97e0ea20 DEOPT UNPACKING pc=0x0000014aa2a669a3 sp=0x0000002feb9fcfa8 mode 2
Event: 11.820 Thread 0x0000014a97e0ea20 Uncommon trap: trap_request=0xffffffc6 fr.pc=0x0000014aa30ae82c relative=0x000000000000008c
Event: 11.820 Thread 0x0000014a97e0ea20 Uncommon trap: reason=bimorphic_or_optimized_type_check action=maybe_recompile pc=0x0000014aa30ae82c method=com.google.inject.internal.LinkedBindingImpl.acceptTargetVisitor(Lcom/google/inject/spi/BindingTargetVisitor;)Ljava/lang/Object; @ 2 c2
Event: 11.820 Thread 0x0000014a97e0ea20 DEOPT PACKING pc=0x0000014aa30ae82c sp=0x0000002feb9fd020
Event: 11.820 Thread 0x0000014a97e0ea20 DEOPT UNPACKING pc=0x0000014aa2a669a3 sp=0x0000002feb9fcfa8 mode 2
Event: 11.822 Thread 0x0000014a97e0ea20 Uncommon trap: trap_request=0xffffffc6 fr.pc=0x0000014aa30ae82c relative=0x000000000000008c
Event: 11.822 Thread 0x0000014a97e0ea20 Uncommon trap: reason=bimorphic_or_optimized_type_check action=maybe_recompile pc=0x0000014aa30ae82c method=com.google.inject.internal.LinkedBindingImpl.acceptTargetVisitor(Lcom/google/inject/spi/BindingTargetVisitor;)Ljava/lang/Object; @ 2 c2
Event: 11.822 Thread 0x0000014a97e0ea20 DEOPT PACKING pc=0x0000014aa30ae82c sp=0x0000002feb9fd020
Event: 11.822 Thread 0x0000014a97e0ea20 DEOPT UNPACKING pc=0x0000014aa2a669a3 sp=0x0000002feb9fcfa8 mode 2
Event: 12.062 Thread 0x0000014a97e0ea20 Uncommon trap: trap_request=0xffffff45 fr.pc=0x0000014aa30a3594 relative=0x00000000000007b4
Event: 12.062 Thread 0x0000014a97e0ea20 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000014aa30a3594 method=java.util.HashMap.hash(Ljava/lang/Object;)I @ 1 c2
Event: 12.062 Thread 0x0000014a97e0ea20 DEOPT PACKING pc=0x0000014aa30a3594 sp=0x0000002feb9fb660
Event: 12.062 Thread 0x0000014a97e0ea20 DEOPT UNPACKING pc=0x0000014aa2a669a3 sp=0x0000002feb9fb5e0 mode 2
Event: 12.177 Thread 0x0000014a97e0ea20 Uncommon trap: trap_request=0xffffff45 fr.pc=0x0000014aa31fe7fc relative=0x000000000000025c
Event: 12.177 Thread 0x0000014a97e0ea20 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000014aa31fe7fc method=java.util.regex.Pattern.qtype()Ljava/util/regex/Pattern$Qtype; @ 8 c2
Event: 12.177 Thread 0x0000014a97e0ea20 DEOPT PACKING pc=0x0000014aa31fe7fc sp=0x0000002feb9fcd30
Event: 12.177 Thread 0x0000014a97e0ea20 DEOPT UNPACKING pc=0x0000014aa2a669a3 sp=0x0000002feb9fcbc8 mode 2
Classes unloaded (0 events):
No events
Classes redefined (0 events):
No events
Internal exceptions (20 events):
Event: 4.754 Thread 0x0000014a97e0ea20 Exception <a 'java/lang/ExceptionInInitializerError'{0x0000000088f1ef98}> (0x0000000088f1ef98)
thrown [s\src\hotspot\share\oops\instanceKlass.cpp, line 1218]
Event: 4.858 Thread 0x0000014a97e0ea20 Implicit null exception at 0x0000014aa303dbaf to 0x0000014aa303dd0c
Event: 4.860 Thread 0x0000014a97e0ea20 Exception <a 'java/lang/NoSuchMethodError'{0x0000000088e32d08}: 'java.lang.Object java.lang.invoke.Invokers$Holder.invokeExact_MT(java.lang.Object, int, java.lang.Object)'> (0x0000000088e32d08)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
Event: 4.879 Thread 0x0000014a97e0ea20 Exception <a 'java/lang/NoSuchMethodError'{0x0000000088eac968}: 'int java.lang.invoke.DirectMethodHandle$Holder.invokeSpecial(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)'> (0x0000000088eac968)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
Event: 5.677 Thread 0x0000014a97e0ea20 Exception <a 'java/lang/NoClassDefFoundError'{0x00000000829476c0}: com/google/inject/servlet/ServletModuleTargetVisitor> (0x00000000829476c0)
thrown [s\src\hotspot\share\classfile\systemDictionary.cpp, line 245]
Event: 5.956 Thread 0x0000014a97e0ea20 Exception <a 'java/lang/NoSuchMethodError'{0x00000000828e6638}: 'void java.lang.invoke.DirectMethodHandle$Holder.invokeVirtual(java.lang.Object, java.lang.Object)'> (0x00000000828e6638)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
Event: 5.991 Thread 0x0000014a97e0ea20 Exception <a 'java/lang/NoSuchMethodError'{0x0000000082723990}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.invokeStaticInit(java.lang.Object, int, int, int, int)'> (0x0000000082723990)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
Event: 6.235 Thread 0x0000014a97e0ea20 Implicit null exception at 0x0000014aa2fd4372 to 0x0000014aa2fd498c
Event: 6.235 Thread 0x0000014a97e0ea20 Implicit null exception at 0x0000014aa2fee472 to 0x0000014aa2feeaac
Event: 6.336 Thread 0x0000014a97e0ea20 Exception <a 'java/lang/NoSuchMethodError'{0x00000000823f0270}: 'void java.lang.invoke.DirectMethodHandle$Holder.invokeSpecial(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)'> (0x00000000823f0270)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
Event: 6.356 Thread 0x0000014a97e0ea20 Exception <a 'java/lang/NoSuchMethodError'{0x000000008990ada0}: 'void java.lang.invoke.DirectMethodHandle$Holder.invokeSpecial(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)'> (0x000000008990ada0)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
Event: 6.416 Thread 0x0000014a97e0ea20 Exception <a 'java/lang/NoSuchMethodError'{0x00000000899148b8}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.invokeVirtual(java.lang.Object, java.lang.Object, java.lang.Object)'> (0x00000000899148b8)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
Event: 10.558 Thread 0x0000014a97e0ea20 Implicit null exception at 0x0000014aa317456f to 0x0000014aa3174730
Event: 10.558 Thread 0x0000014a97e0ea20 Implicit null exception at 0x0000014aa30dec0f to 0x0000014aa30dec89
Event: 11.145 Thread 0x0000014a97e0ea20 Exception <a 'java/lang/NoSuchMethodError'{0x0000000084680528}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.newInvokeSpecial(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)'> (0x0000000084680528)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
Event: 11.145 Thread 0x0000014a97e0ea20 Exception <a 'java/lang/NoSuchMethodError'{0x0000000084685078}: 'java.lang.Object java.lang.invoke.Invokers$Holder.linkToTargetMethod(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)'> (0x0000000084685078)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
Event: 11.147 Thread 0x0000014a97e0ea20 Implicit null exception at 0x0000014aa31d1ec6 to 0x0000014aa31d2990
Event: 11.948 Thread 0x0000014a97e0ea20 Exception <a 'java/lang/NoSuchMethodError'{0x00000000863bfd18}: 'int java.lang.invoke.DirectMethodHandle$Holder.invokeVirtual(java.lang.Object, java.lang.Object)'> (0x00000000863bfd18)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
Event: 12.062 Thread 0x0000014a97e0ea20 Implicit null exception at 0x0000014aa30a2e20 to 0x0000014aa30a357a
Event: 12.176 Thread 0x0000014a97e0ea20 Exception <a 'java/lang/NoSuchMethodError'{0x00000000861b27c0}: 'int java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(java.lang.Object, java.lang.Object, int)'> (0x00000000861b27c0)
thrown [s\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
VM Operations (20 events):
Event: 7.674 Executing VM operation: G1CollectForAllocation done
Event: 8.676 Executing VM operation: Cleanup
Event: 8.676 Executing VM operation: Cleanup done
Event: 9.306 Executing VM operation: G1CollectForAllocation
Event: 9.322 Executing VM operation: G1CollectForAllocation done
Event: 10.322 Executing VM operation: Cleanup
Event: 10.322 Executing VM operation: Cleanup done
Event: 11.330 Executing VM operation: Cleanup
Event: 11.330 Executing VM operation: Cleanup done
Event: 11.427 Executing VM operation: G1CollectForAllocation
Event: 11.442 Executing VM operation: G1CollectForAllocation done
Event: 12.260 Executing VM operation: G1TryInitiateConcMark
Event: 12.268 Executing VM operation: G1TryInitiateConcMark done
Event: 12.285 Executing VM operation: G1TryInitiateConcMark
Event: 12.292 Executing VM operation: G1TryInitiateConcMark done
Event: 12.293 Executing VM operation: G1TryInitiateConcMark
Event: 12.296 Executing VM operation: G1TryInitiateConcMark done
Event: 12.297 Executing VM operation: G1TryInitiateConcMark
Event: 12.300 Executing VM operation: G1TryInitiateConcMark done
Event: 12.368 Executing VM operation: G1PauseRemark
Events (20 events):
Event: 12.064 loading class java/time/zone/ZoneRulesProvider
Event: 12.065 loading class java/time/zone/ZoneRulesProvider done
Event: 12.065 loading class java/time/zone/ZoneRulesProvider$1
Event: 12.065 loading class java/time/zone/ZoneRulesProvider$1 done
Event: 12.065 loading class java/time/zone/TzdbZoneRulesProvider
Event: 12.065 loading class java/time/zone/TzdbZoneRulesProvider done
Event: 12.068 loading class java/time/zone/Ser
Event: 12.068 loading class java/io/Externalizable
Event: 12.068 loading class java/io/Externalizable done
Event: 12.068 loading class java/time/zone/Ser done
Event: 12.117 loading class jdk/internal/reflect/UnsafeBooleanFieldAccessorImpl
Event: 12.117 loading class jdk/internal/reflect/UnsafeBooleanFieldAccessorImpl done
Event: 12.141 loading class java/lang/Character$UnicodeBlock
Event: 12.143 loading class java/lang/Character$Subset
Event: 12.143 loading class java/lang/Character$Subset done
Event: 12.143 loading class java/lang/Character$UnicodeBlock done
Event: 12.284 loading class java/nio/BufferMismatch
Event: 12.284 loading class java/nio/BufferMismatch done
Event: 12.284 loading class java/nio/file/attribute/PosixFileAttributes
Event: 12.284 loading class java/nio/file/attribute/PosixFileAttributes done
Dynamic libraries:
0x00007ff6d4ea0000 - 0x00007ff6d4eae000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\javaw.exe
0x00007ffb17cf0000 - 0x00007ffb17ee8000 C:\Windows\SYSTEM32\ntdll.dll
0x00007ffb17460000 - 0x00007ffb17522000 C:\Windows\System32\KERNEL32.DLL
0x00007ffb15530000 - 0x00007ffb15826000 C:\Windows\System32\KERNELBASE.dll
0x00007ffb15a60000 - 0x00007ffb15b60000 C:\Windows\System32\ucrtbase.dll
0x00007ffb0f470000 - 0x00007ffb0f487000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\jli.dll
0x00007ffb17100000 - 0x00007ffb172a1000 C:\Windows\System32\USER32.dll
0x00007ffb15a30000 - 0x00007ffb15a52000 C:\Windows\System32\win32u.dll
0x00007ffb17530000 - 0x00007ffb1755b000 C:\Windows\System32\GDI32.dll
0x00007ffb15380000 - 0x00007ffb15499000 C:\Windows\System32\gdi32full.dll
0x00007ffb15830000 - 0x00007ffb158cd000 C:\Windows\System32\msvcp_win.dll
0x00007ffb0f1a0000 - 0x00007ffb0f1bb000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\VCRUNTIME140.dll
0x00007ffb00f20000 - 0x00007ffb011bb000 C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.6456_none_60b8a6cb71f64256\COMCTL32.dll
0x00007ffb17360000 - 0x00007ffb173fe000 C:\Windows\System32\msvcrt.dll
0x00007ffb17560000 - 0x00007ffb1758f000 C:\Windows\System32\IMM32.DLL
0x00007ffb0f2f0000 - 0x00007ffb0f2fc000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\vcruntime140_1.dll
0x00007ffb097b0000 - 0x00007ffb0983d000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\msvcp140.dll
0x00007ffaf6cf0000 - 0x00007ffaf7951000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\server\jvm.dll
0x00007ffb16e30000 - 0x00007ffb16ee1000 C:\Windows\System32\ADVAPI32.dll
0x00007ffb17590000 - 0x00007ffb1762f000 C:\Windows\System32\sechost.dll
0x00007ffb16a60000 - 0x00007ffb16b80000 C:\Windows\System32\RPCRT4.dll
0x00007ffb15c10000 - 0x00007ffb15c37000 C:\Windows\System32\bcrypt.dll
0x00007ffb15130000 - 0x00007ffb1517b000 C:\Windows\SYSTEM32\POWRPROF.dll
0x00007ffb09710000 - 0x00007ffb09719000 C:\Windows\SYSTEM32\WSOCK32.dll
0x00007ffb17c40000 - 0x00007ffb17cab000 C:\Windows\System32\WS2_32.dll
0x00007ffb011d0000 - 0x00007ffb011f7000 C:\Windows\SYSTEM32\WINMM.dll
0x00007ffb0e2f0000 - 0x00007ffb0e2fa000 C:\Windows\SYSTEM32\VERSION.dll
0x00007ffb15110000 - 0x00007ffb15122000 C:\Windows\SYSTEM32\UMPDC.dll
0x00007ffb13b90000 - 0x00007ffb13ba2000 C:\Windows\SYSTEM32\kernel.appcore.dll
0x00007ffb0eee0000 - 0x00007ffb0eeea000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\jimage.dll
0x00007ffb13080000 - 0x00007ffb13281000 C:\Windows\SYSTEM32\DBGHELP.DLL
0x00007ffb0beb0000 - 0x00007ffb0bee4000 C:\Windows\SYSTEM32\dbgcore.DLL
0x00007ffb154a0000 - 0x00007ffb15522000 C:\Windows\System32\bcryptPrimitives.dll
0x00007ffb0e1d0000 - 0x00007ffb0e1f5000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\java.dll
0x00007ffb0e060000 - 0x00007ffb0e078000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\zip.dll
0x00007ffb15d10000 - 0x00007ffb16480000 C:\Windows\System32\SHELL32.dll
0x00007ffb132b0000 - 0x00007ffb13a55000 C:\Windows\SYSTEM32\windows.storage.dll
0x00007ffb16480000 - 0x00007ffb167d4000 C:\Windows\System32\combase.dll
0x00007ffb14cd0000 - 0x00007ffb14cfb000 C:\Windows\SYSTEM32\Wldp.dll
0x00007ffb167f0000 - 0x00007ffb168bd000 C:\Windows\System32\OLEAUT32.dll
0x00007ffb16f70000 - 0x00007ffb1701d000 C:\Windows\System32\SHCORE.dll
0x00007ffb16f10000 - 0x00007ffb16f6b000 C:\Windows\System32\shlwapi.dll
0x00007ffb152b0000 - 0x00007ffb152d4000 C:\Windows\SYSTEM32\profapi.dll
0x00007ffb0df10000 - 0x00007ffb0df29000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\net.dll
0x00007ffb0b630000 - 0x00007ffb0b73a000 C:\Windows\SYSTEM32\WINHTTP.dll
0x00007ffb14a30000 - 0x00007ffb14a9a000 C:\Windows\system32\mswsock.dll
0x00007ffb0def0000 - 0x00007ffb0df06000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\nio.dll
0x00007ffb0e110000 - 0x00007ffb0e134000 C:\Users\ADMIN\AppData\Local\Temp\jansi-2.4.1-a238f63e1322e53e-jansi.dll
0x00007ffb0e030000 - 0x00007ffb0e040000 C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\verify.dll
0x00007ffb14710000 - 0x00007ffb1474b000 C:\Windows\SYSTEM32\IPHLPAPI.DLL
0x00007ffb16c70000 - 0x00007ffb16c78000 C:\Windows\System32\NSI.dll
0x00007ffb0bde0000 - 0x00007ffb0bdf7000 C:\Windows\SYSTEM32\dhcpcsvc6.DLL
0x00007ffb0be80000 - 0x00007ffb0be9d000 C:\Windows\SYSTEM32\dhcpcsvc.DLL
0x00007ffb14750000 - 0x00007ffb1481a000 C:\Windows\SYSTEM32\DNSAPI.dll
dbghelp: loaded successfully - version: 4.0.5 - missing functions: none
symbol engine: initialized successfully - sym options: 0x614 - pdb path: .;C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin;C:\Windows\SYSTEM32;C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.6456_none_60b8a6cb71f64256;C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.9.v20231028-0858\jre\bin\server;C:\Users\ADMIN\AppData\Local\Temp
VM Arguments:
jvm_args: -Dmaven.home=EMBEDDED -Dclassworlds.conf=D:\projects\New2\.metadata\.plugins\org.eclipse.m2e.launching\launches\m2conf4771384238088312615.tmp -Dmaven.multiModuleProjectDirectory=D:\PGR Update\public_grievance_updated -Dm2e.build.project.data.socket.port=62566 -Dfile.encoding=UTF-8 -Dstdout.encoding=UTF-8 -Dstderr.encoding=UTF-8 -XX:+ShowCodeDetailsInExceptionMessages
java_command: org.codehaus.plexus.classworlds.launcher.Launcher -B -Dstyle.color=always install
java_class_path (initial): C:\Users\ADMIN\.p2\pool\plugins\org.eclipse.m2e.maven.runtime_3.9.900.20250220-2013\jars\plexus-classworlds-2.8.0.jar
Launcher Type: SUN_STANDARD
[Global flags]
intx CICompilerCount = 3 {product} {ergonomic}
uint ConcGCThreads = 1 {product} {ergonomic}
uint G1ConcRefinementThreads = 4 {product} {ergonomic}
size_t G1HeapRegionSize = 1048576 {product} {ergonomic}
uintx GCDrainStackTargetSize = 64 {product} {ergonomic}
size_t InitialHeapSize = 134217728 {product} {ergonomic}
size_t MarkStackSize = 4194304 {product} {ergonomic}
size_t MaxHeapSize = 2120220672 {product} {ergonomic}
size_t MaxNewSize = 1271922688 {product} {ergonomic}
size_t MinHeapDeltaBytes = 1048576 {product} {ergonomic}
size_t MinHeapSize = 8388608 {product} {ergonomic}
uintx NonNMethodCodeHeapSize = 5832780 {pd product} {ergonomic}
uintx NonProfiledCodeHeapSize = 122912730 {pd product} {ergonomic}
uintx ProfiledCodeHeapSize = 122912730 {pd product} {ergonomic}
uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic}
bool SegmentedCodeCache = true {product} {ergonomic}
bool ShowCodeDetailsInExceptionMessages = true {manageable} {command line}
size_t SoftMaxHeapSize = 2120220672 {manageable} {ergonomic}
bool UseCompressedClassPointers = true {product lp64_product} {ergonomic}
bool UseCompressedOops = true {product lp64_product} {ergonomic}
bool UseG1GC = true {product} {ergonomic}
bool UseLargePagesIndividualAllocation = false {pd product} {ergonomic}
Logging:
Log output configuration:
#0: stdout all=warning uptime,level,tags
#1: stderr all=off uptime,level,tags
Environment Variables:
PATH=C:/Users/ADMIN/.p2/pool/plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_23.0.2.v20250131-0604/jre/bin/server;C:/Users/ADMIN/.p2/pool/plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_23.0.2.v20250131-0604/jre/bin;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Program Files\nodejs\;C:\Users\ADMIN\AppData\Local\Programs\Python\Python313\Scripts\;C:\Users\ADMIN\AppData\Local\Programs\Python\Python313\;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\ADMIN\AppData\Local\Microsoft\WindowsApps;D:\vscode and mysql installer\Microsoft VS Code\bin;D:\Python\PyCharm 2024.3.2\bin;;C:\Users\ADMIN\AppData\Roaming\npm;C:\Users\ADMIN\AppData\Local\GitHubDesktop\bin;C:\Windows\system32;
USERNAME=ADMIN
OS=Windows_NT
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 78 Stepping 3, GenuineIntel
TMP=C:\Users\ADMIN\AppData\Local\Temp
TEMP=C:\Users\ADMIN\AppData\Local\Temp
Periodic native trim disabled
--------------- S Y S T E M ---------------
OS:
Windows 10 , 64 bit Build 19041 (10.0.19041.5915)
OS uptime: 22 days 21:24 hours
CPU: total 4 (initial active 4) (2 cores per cpu, 2 threads per core) family 6 model 78 stepping 3 microcode 0xf0, cx8, cmov, fxsr, ht, mmx, 3dnowpref, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, lzcnt, tsc, tscinvbit, avx, avx2, aes, erms, clmul, bmi1, bmi2, rtm, adx, fma, vzeroupper, clflush, clflushopt
Processor Information for all 4 processors :
Max Mhz: 2496, Current Mhz: 2496, Mhz Limit: 2496
Memory: 4k page, system-wide physical 8087M (688M free)
TotalPageFile size 25396M (AvailPageFile size 6M)
current process WorkingSet (physical memory assigned to process): 178M, peak: 178M
current process commit charge ("private bytes"): 239M, peak: 250M
vm_info: OpenJDK 64-Bit Server VM (17.0.9+9) for windows-amd64 JRE (17.0.9+9), built on Oct 26 2023 14:01:42 by "admin" with MS VC++ 16.10 / 16.11 (VS2019)
END.

259
mvnw

@ -0,0 +1,259 @@
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# Apache Maven Wrapper startup batch script, version 3.3.2
#
# Optional ENV vars
# -----------------
# JAVA_HOME - location of a JDK home dir, required when download maven via java source
# MVNW_REPOURL - repo url base for downloading maven distribution
# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output
# ----------------------------------------------------------------------------
set -euf
[ "${MVNW_VERBOSE-}" != debug ] || set -x
# OS specific support.
native_path() { printf %s\\n "$1"; }
case "$(uname)" in
CYGWIN* | MINGW*)
[ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")"
native_path() { cygpath --path --windows "$1"; }
;;
esac
# set JAVACMD and JAVACCMD
set_java_home() {
# For Cygwin and MinGW, ensure paths are in Unix format before anything is touched
if [ -n "${JAVA_HOME-}" ]; then
if [ -x "$JAVA_HOME/jre/sh/java" ]; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
JAVACCMD="$JAVA_HOME/jre/sh/javac"
else
JAVACMD="$JAVA_HOME/bin/java"
JAVACCMD="$JAVA_HOME/bin/javac"
if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then
echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2
echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2
return 1
fi
fi
else
JAVACMD="$(
'set' +e
'unset' -f command 2>/dev/null
'command' -v java
)" || :
JAVACCMD="$(
'set' +e
'unset' -f command 2>/dev/null
'command' -v javac
)" || :
if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then
echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2
return 1
fi
fi
}
# hash string like Java String::hashCode
hash_string() {
str="${1:-}" h=0
while [ -n "$str" ]; do
char="${str%"${str#?}"}"
h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296))
str="${str#?}"
done
printf %x\\n $h
}
verbose() { :; }
[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; }
die() {
printf %s\\n "$1" >&2
exit 1
}
trim() {
# MWRAPPER-139:
# Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds.
# Needed for removing poorly interpreted newline sequences when running in more
# exotic environments such as mingw bash on Windows.
printf "%s" "${1}" | tr -d '[:space:]'
}
# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties
while IFS="=" read -r key value; do
case "${key-}" in
distributionUrl) distributionUrl=$(trim "${value-}") ;;
distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;;
esac
done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties"
[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties"
case "${distributionUrl##*/}" in
maven-mvnd-*bin.*)
MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/
case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in
*AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;;
:Darwin*x86_64) distributionPlatform=darwin-amd64 ;;
:Darwin*arm64) distributionPlatform=darwin-aarch64 ;;
:Linux*x86_64*) distributionPlatform=linux-amd64 ;;
*)
echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2
distributionPlatform=linux-amd64
;;
esac
distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip"
;;
maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;;
*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;;
esac
# apply MVNW_REPOURL and calculate MAVEN_HOME
# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}"
distributionUrlName="${distributionUrl##*/}"
distributionUrlNameMain="${distributionUrlName%.*}"
distributionUrlNameMain="${distributionUrlNameMain%-bin}"
MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}"
MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")"
exec_maven() {
unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || :
exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD"
}
if [ -d "$MAVEN_HOME" ]; then
verbose "found existing MAVEN_HOME at $MAVEN_HOME"
exec_maven "$@"
fi
case "${distributionUrl-}" in
*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;;
*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;;
esac
# prepare tmp dir
if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then
clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; }
trap clean HUP INT TERM EXIT
else
die "cannot create temp dir"
fi
mkdir -p -- "${MAVEN_HOME%/*}"
# Download and Install Apache Maven
verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
verbose "Downloading from: $distributionUrl"
verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
# select .zip or .tar.gz
if ! command -v unzip >/dev/null; then
distributionUrl="${distributionUrl%.zip}.tar.gz"
distributionUrlName="${distributionUrl##*/}"
fi
# verbose opt
__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR=''
[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v
# normalize http auth
case "${MVNW_PASSWORD:+has-password}" in
'') MVNW_USERNAME='' MVNW_PASSWORD='' ;;
has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;;
esac
if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then
verbose "Found wget ... using wget"
wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl"
elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then
verbose "Found curl ... using curl"
curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl"
elif set_java_home; then
verbose "Falling back to use Java to download"
javaSource="$TMP_DOWNLOAD_DIR/Downloader.java"
targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName"
cat >"$javaSource" <<-END
public class Downloader extends java.net.Authenticator
{
protected java.net.PasswordAuthentication getPasswordAuthentication()
{
return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() );
}
public static void main( String[] args ) throws Exception
{
setDefault( new Downloader() );
java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() );
}
}
END
# For Cygwin/MinGW, switch paths to Windows format before running javac and java
verbose " - Compiling Downloader.java ..."
"$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java"
verbose " - Running Downloader.java ..."
"$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")"
fi
# If specified, validate the SHA-256 sum of the Maven distribution zip file
if [ -n "${distributionSha256Sum-}" ]; then
distributionSha256Result=false
if [ "$MVN_CMD" = mvnd.sh ]; then
echo "Checksum validation is not supported for maven-mvnd." >&2
echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
exit 1
elif command -v sha256sum >/dev/null; then
if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then
distributionSha256Result=true
fi
elif command -v shasum >/dev/null; then
if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then
distributionSha256Result=true
fi
else
echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2
echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
exit 1
fi
if [ $distributionSha256Result = false ]; then
echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2
echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2
exit 1
fi
fi
# unzip and move
if command -v unzip >/dev/null; then
unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip"
else
tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar"
fi
printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url"
mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME"
clean || :
exec_maven "$@"

149
mvnw.cmd

@ -0,0 +1,149 @@
<# : batch portion
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
@REM https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Apache Maven Wrapper startup batch script, version 3.3.2
@REM
@REM Optional ENV vars
@REM MVNW_REPOURL - repo url base for downloading maven distribution
@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output
@REM ----------------------------------------------------------------------------
@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0)
@SET __MVNW_CMD__=
@SET __MVNW_ERROR__=
@SET __MVNW_PSMODULEP_SAVE=%PSModulePath%
@SET PSModulePath=
@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @(
IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B)
)
@SET PSModulePath=%__MVNW_PSMODULEP_SAVE%
@SET __MVNW_PSMODULEP_SAVE=
@SET __MVNW_ARG0_NAME__=
@SET MVNW_USERNAME=
@SET MVNW_PASSWORD=
@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*)
@echo Cannot start maven from wrapper >&2 && exit /b 1
@GOTO :EOF
: end batch / begin powershell #>
$ErrorActionPreference = "Stop"
if ($env:MVNW_VERBOSE -eq "true") {
$VerbosePreference = "Continue"
}
# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties
$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl
if (!$distributionUrl) {
Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
}
switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) {
"maven-mvnd-*" {
$USE_MVND = $true
$distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip"
$MVN_CMD = "mvnd.cmd"
break
}
default {
$USE_MVND = $false
$MVN_CMD = $script -replace '^mvnw','mvn'
break
}
}
# apply MVNW_REPOURL and calculate MAVEN_HOME
# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
if ($env:MVNW_REPOURL) {
$MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" }
$distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')"
}
$distributionUrlName = $distributionUrl -replace '^.*/',''
$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$',''
$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain"
if ($env:MAVEN_USER_HOME) {
$MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain"
}
$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join ''
$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME"
if (Test-Path -Path "$MAVEN_HOME" -PathType Container) {
Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME"
Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
exit $?
}
if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) {
Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl"
}
# prepare tmp dir
$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile
$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir"
$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null
trap {
if ($TMP_DOWNLOAD_DIR.Exists) {
try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
}
}
New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null
# Download and Install Apache Maven
Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
Write-Verbose "Downloading from: $distributionUrl"
Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
$webclient = New-Object System.Net.WebClient
if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) {
$webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD)
}
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null
# If specified, validate the SHA-256 sum of the Maven distribution zip file
$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum
if ($distributionSha256Sum) {
if ($USE_MVND) {
Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties."
}
Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash
if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) {
Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property."
}
}
# unzip and move
Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null
Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null
try {
Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null
} catch {
if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) {
Write-Error "fail to move MAVEN_HOME"
}
} finally {
try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
}
Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"

77
pom.xml

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.2</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.gcc</groupId>
<artifactId>publicgrievance</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>publicgrievance</name>
<description>public Grievance Project developed by GCC</description>
<url />
<licenses>
<license />
</licenses>
<developers>
<developer />
</developers>
<scm>
<connection />
<developerConnection />
<tag />
<url />
</scm>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- <dependency>
<groupId>com.example</groupId>
<artifactId>erp</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>-->
<dependency>
<groupId>in.gov.chennaicorporation</groupId>
<artifactId>gccoffice</artifactId>
<version>0.0.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

14
src/main/java/com/gcc/publicgrievance/PublicgrievanceApplication.java

@ -0,0 +1,14 @@
package com.gcc.publicgrievance;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class PublicgrievanceApplication {
public static void main(String[] args) {
System.out.println("ready.........");
SpringApplication.run(PublicgrievanceApplication.class, args);
}
}

105
src/main/java/com/gcc/publicgrievance/Service/ComplaintService.java

@ -0,0 +1,105 @@
package com.gcc.publicgrievance.Service;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@Service
public class ComplaintService {
private final JdbcTemplate jdbcTemplate;
public ComplaintService(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
private final String baseUrl = "https://erp.chennaicorporation.gov.in/pgr/newmobileservice";
public String fetchComplaintCategories() {
RestTemplate restTemplate = new RestTemplate();
String url = baseUrl + "?serviceId=getComplCategory&ComplaintGroupId=null";
return restTemplate.getForObject(url, String.class);
}
public String fetchComplaintSubTypes(String groupId) {
RestTemplate restTemplate = new RestTemplate();
String url = baseUrl + "?serviceId=getComplCategory&ComplaintGroupId=" + groupId;
return restTemplate.getForObject(url, String.class);
}
public List<Map<String, Object>> fetchComplaintDetailsById(String complaintId) {
RestTemplate restTemplate = new RestTemplate();
String url = baseUrl + "?serviceId=getComplaintByID&ComplaintId=" + complaintId;
String response = restTemplate.getForObject(url, String.class);
try {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.readValue(response, new TypeReference<List<Map<String, Object>>>() {
});
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public List<Map<String, Object>> fetchComplaintDetailsByMobile(String mobileNo, String fromDateStr, String toDateStr, String yearStr) {
RestTemplate restTemplate = new RestTemplate();
String url = baseUrl
+ "?serviceId=getComplaintListWithImg&From_date=" + fromDateStr
+ "&To_date=" + toDateStr
+ "&jsonResp=Yes&UserType=Public&MobileNo=" + mobileNo
+ "&PageIndex=null&Status=null&repYear=" + yearStr;
String response = restTemplate.getForObject(url, String.class);
try {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.readValue(response, new TypeReference<List<Map<String, Object>>>() {
});
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
private final ObjectMapper objectMapper = new ObjectMapper();
public String getComplaintCategories() {
String sql = "SELECT category_id, category_name, label_name " +
"FROM category WHERE is_active = 1 and is_delete = 0";
try {
List<Map<String, Object>> result = jdbcTemplate.queryForList(sql);
return objectMapper.writeValueAsString(result);
} catch (Exception e) {
e.printStackTrace();
return "[]";
}
}
public String getComplaintSubTypes(String categoryId) {
String sql = "SELECT subcategory_id, subcategory_name, category_id " +
"FROM subcategory WHERE is_active = 1 and is_delete = 0 " +
"AND category_id = ?";
try {
List<Map<String, Object>> result = jdbcTemplate.queryForList(sql, categoryId);
return objectMapper.writeValueAsString(result);
} catch (Exception e) {
e.printStackTrace();
return "[]";
}
}
}

47
src/main/java/com/gcc/publicgrievance/config/AppConfigur.java

@ -0,0 +1,47 @@
package com.gcc.publicgrievance.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "app")
public class AppConfigur {
private String title;
private String baseUrl;
private String getOtpUrl;
private String erpUrl;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getBaseUrl() {
return baseUrl;
}
public void setBaseUrl(String baseUrl) {
this.baseUrl = baseUrl;
}
public String getGetOtpUrl() {
return getOtpUrl;
}
public void setGetOtpUrl(String getOtpUrl) {
this.getOtpUrl = getOtpUrl;
}
public String getErpUrl() {
return erpUrl;
}
public void setErpUrl(String erpUrl) {
this.erpUrl = erpUrl;
}
}

15
src/main/java/com/gcc/publicgrievance/configuration/AppConfig.java

@ -0,0 +1,15 @@
package com.gcc.publicgrievance.configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration public class AppConfig {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}

77
src/main/java/com/gcc/publicgrievance/configuration/DataSourceConfig.java

@ -0,0 +1,77 @@
package com.gcc.publicgrievance.configuration;
import java.util.Properties;
import org.hibernate.jpa.HibernatePersistenceProvider;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.client.RestTemplate;
import javax.sql.DataSource;
@Configuration
@EnableTransactionManagement
public class DataSourceConfig {
// //private static String dbpassword = "gccroot";
// private static String host = "localhost";
// private static String dbpassword = "root";
// AWS
private static String host = "gcc-facial-db-instance-1.cf48eqcciziq.ap-south-1.rds.amazonaws.com:3306";
private static String dbpassword = "gcc-facial-password";
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "appEntityManagerFactory",
transactionManagerRef = "appTransactionManager",
basePackages = {"com.gcc.publicgrievance"}
)
public static class MysqlAppDataSourceConfig {
@Primary
@Bean(name = "mysqlAppDataSource")
public DataSource mysqlAppDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://"+host+"/gcc_rest_services");
dataSource.setUsername("root");
dataSource.setPassword(dbpassword);
return dataSource;
}
@Primary
@Bean(name="appEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(
@Qualifier("mysqlAppDataSource") DataSource dataSource) {
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setDataSource(dataSource);
entityManagerFactoryBean.setPackagesToScan("com.gcc.publicgrievance");
entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistenceProvider.class);
Properties properties = new Properties();
properties.setProperty("hibernate.hbm2ddl.auto", "update");
entityManagerFactoryBean.setJpaProperties(properties);
return entityManagerFactoryBean;
}
@Primary
@Bean(name = "appTransactionManager")
public PlatformTransactionManager transactionManager(@Qualifier("appEntityManagerFactory") jakarta.persistence.EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}
}

24
src/main/java/com/gcc/publicgrievance/configuration/SecurityConfig.java

@ -0,0 +1,24 @@
package com.gcc.publicgrievance.configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.csrf(csrf -> csrf.disable())
.authorizeHttpRequests(auth -> auth
.requestMatchers("/pgr/api/**").permitAll()
.anyRequest().permitAll()
)
.formLogin(form -> form.disable())
.httpBasic(httpBasic -> httpBasic.disable());
return http.build();
}
}

33
src/main/java/com/gcc/publicgrievance/configuration/UserSessionInterceptor.java

@ -0,0 +1,33 @@
package com.gcc.publicgrievance.configuration;
import java.util.Arrays;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import com.gcc.publicgrievance.config.AppConfigur;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@Component
public class UserSessionInterceptor implements HandlerInterceptor {
@Autowired
private AppConfigur appConfig;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// Get the current request URL
String requestUrl = request.getRequestURI();
request.setAttribute("baseURL", appConfig.getBaseUrl());
return true; // Allow the request to proceed
}
}

24
src/main/java/com/gcc/publicgrievance/configuration/WebConfig.java

@ -0,0 +1,24 @@
//package com.gcc.publicgrievance.configuration;
//
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.web.servlet.config.annotation.CorsRegistry;
//import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
//
//@Configuration
//public class WebConfig {
//
// @Bean
// public WebMvcConfigurer corsConfigurer() {
// return new WebMvcConfigurer() {
// @Override
// public void addCorsMappings(CorsRegistry registry) {
// registry.addMapping("/**") // Allow all paths
// .allowedOrigins("http://localhost:8080/registercomplaints") // Allow your front-end URL
// .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // Specify allowed methods
// .allowedHeaders("*") // Allow all headers
// .allowCredentials(true); // Allow credentials
// }
// };
// }
//}

123
src/main/java/com/gcc/publicgrievance/controller/APIController.java

@ -0,0 +1,123 @@
package com.gcc.publicgrievance.controller;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.Random;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; // Import Jackson's ObjectMapper
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.gcc.publicgrievance.config.AppConfigur;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
@RequestMapping("/pgr/api")
@RestController
public class APIController {
@Autowired
private AppConfigur appConfig;
@GetMapping(value = "/sendOTP")
public String sendOtp(HttpServletRequest request,
@RequestParam String mobileNo,
@RequestParam(defaultValue = "5") int otpLength,
@RequestParam(defaultValue = "false") boolean mobilenocheck) {
String bodyMessage = "";
try {
// Validate Mobile Number
if (mobileNo.length() != 10) {
throw new IllegalArgumentException("Invalid Mobile Number. It must be 10 digits.");
}
// New SMS API URL
String urlString = "https://gccservices.in/gccofficialapp/api/sendOTP?mobileNo=" + mobileNo +
"&otpLength=" + otpLength + "&mobilenocheck=" + mobilenocheck;
System.out.println("\nurlString---: " + urlString);
// Send the OTP using the new SMS API
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response = restTemplate.exchange(urlString, HttpMethod.GET, null, String.class);
// Log full response and status code
System.out.println("\nResponse Status Code: " + response.getStatusCode());
System.out.println("\nResponse Body: " + response.getBody());
// Parse the response to extract the OTP from the API response
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonResponse = objectMapper.readTree(response.getBody());
String apiOtp = jsonResponse.get(0).get("OTP").asText(); // Extract OTP from the response
int statusCode = jsonResponse.get(0).get("status").asInt(); // Extract status code
String message = jsonResponse.get(0).get("message").asText(); // Extract message
// Store the OTP in the session
HttpSession session = request.getSession();
session.setAttribute("otp", apiOtp); // Use the OTP from the API response
// Construct the bodyMessage with status, mobileNo, and OTP
bodyMessage = "[{\"Status\": " + statusCode + " , \"Mobile No\": " + mobileNo + " , \"OTP\": " + apiOtp + " , \"Message\": \"" + message + "\"}]";
System.out.println("OTP sent successfully!");
} catch (IllegalArgumentException e) {
// Catch validation error for mobile number
System.out.println("ERROR---: " + e.getMessage());
bodyMessage = "Error: " + e.getMessage();
} catch (Exception e) {
// Catch general errors
System.out.println("ERROR---: " + e);
bodyMessage = "There was a problem sending OTP. Try again.";
}
return bodyMessage;
}
@GetMapping(value = "/verifyOTP")
public String verifyOtp(HttpServletRequest request, @RequestParam String otp) {
HttpSession session = request.getSession();
try {
String sessionOtp = (String) session.getAttribute("otp"); // Get OTP from session
System.out.println("sessionOtp---:" + sessionOtp);
String enteredOtp = otp.trim(); // OTP entered by user
if (sessionOtp != null && sessionOtp.equals(enteredOtp)) {
System.out.println("Entered OTP Correct");
session.setAttribute("verifiedotp", "success");
return "Success"; // OTP is correct
} else {
System.out.println("Incorrect OTP. Please enter correct OTP.");
session.setAttribute("verifiedotp", "error");
return "Error"; // OTP mismatch
}
} catch (Exception e) {
System.out.println("Error verifying OTP: " + e.getMessage());
return "Error"; // Handle any exceptions
}
}
}

811
src/main/java/com/gcc/publicgrievance/controller/ComplaintController.java

@ -0,0 +1,811 @@
package com.gcc.publicgrievance.controller;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.util.UriComponentsBuilder;
import org.springframework.web.util.UriUtils;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import org.springframework.http.*;
import com.gcc.publicgrievance.Service.ComplaintService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.management.modelmbean.RequiredModelMBean;
import java.util.Base64;
import java.util.stream.Collectors;
//@CrossOrigin
@RestController
@RequestMapping("/pgr/api")
public class ComplaintController {
private final RestTemplate restTemplate;
public ComplaintController(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
@Autowired
private ComplaintService complaintService;
@GetMapping("/getComplaintCategories")
public @ResponseBody String getComplaintCategories() {
return complaintService.fetchComplaintCategories();
}
@GetMapping("/getComplaintSubTypes")
public @ResponseBody String getComplaintSubTypes(@RequestParam String groupId) {
return complaintService.fetchComplaintSubTypes(groupId);
}
@GetMapping("/ComplaintCategories")
public @ResponseBody String ComplaintCategories() {
return complaintService.getComplaintCategories();
}
@GetMapping("/ComplaintSubTypes")
public @ResponseBody String ComplaintSubTypes(@RequestParam String categoryId) {
return complaintService.getComplaintSubTypes(categoryId);
}
@GetMapping("/getComplaintDetailsbyId")
public List<Map<String, Object>> getComplaintDetailsById(@RequestParam String complaintid) {
return complaintService.fetchComplaintDetailsById(complaintid);
}
@GetMapping("/getComplaintDetailsByMobile")
public List<Map<String, Object>> getComplaintDetailsByMobile(@RequestParam String mobileNo)
{
// // Get current date
// LocalDate toDate = LocalDate.now();
//
// // Get current year
// int year = toDate.getYear();
//
// // Get start date of current year (Jan 1)
// LocalDate fromDate = LocalDate.of(year, 1, 1);
//
// // Convert to String if your SQL query needs it (yyyy-MM-dd format)
// String fromDateStr = fromDate.toString();
// String toDateStr = toDate.toString();
// String yearStr = String.valueOf(year);
// Get current date
LocalDate toDate = LocalDate.now();
// Get current year
int year = toDate.getYear();
// Get start date of current year (Jan 1)
LocalDate fromDate = LocalDate.of(year, 1, 1);
// Define formatter for DD/MM/YYYY
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
// Format dates
String fromDateStr = fromDate.format(formatter);
String toDateStr = toDate.format(formatter);
String yearStr = String.valueOf(year);
// Example: print or pass these to your query
System.out.println("Mobile No: " + mobileNo);
System.out.println("From Date: " + fromDateStr);
System.out.println("To Date: " + toDateStr);
System.out.println("Year: " + yearStr);
List<Map<String, Object>> result = complaintService.fetchComplaintDetailsByMobile(mobileNo, fromDateStr, toDateStr, yearStr);
// If the result is empty, return a response with "No data found" message
if (result == null || result.isEmpty()) {
// Create a response map to indicate no data found
Map<String, Object> noDataResponse = new HashMap<>();
noDataResponse.put("message", "No data found");
noDataResponse.put("status", "404");
// Return the no data response in a list
return Collections.singletonList(noDataResponse);
}
return result;
}
@PostMapping("/register")
public ResponseEntity<?> registerComplaint(
@RequestParam(value = "ComplainantName", required = false) String complainantName,
@RequestParam(value = "ComplainantAddr", required = false) String complainantAddr,
@RequestParam(value = "MobileNo", required = false) String mobileNo,
@RequestParam(value = "Email", required = false) String email,
@RequestParam(value = "ComplaintType", required = false) String complaintType,
@RequestParam(value = "ComplaintTitle", required = false) String complaintTitle,
@RequestParam(value = "ComplaintDetails", required = false) String complaintDetails,
@RequestParam(value = "StreetId", required = false) String streetId,
@RequestParam(value = "Comp_Image", required = false) MultipartFile compImage,
@RequestParam(value = "latitude", required = false) String latitude,
@RequestParam(value = "longtitude", required = false) String longtitude,
@RequestParam(value = "Landmark", required = false) String landmark,
@RequestParam(value = "gender", required = false) String gender) {
String externalUrl = "https://erp.chennaicorporation.gov.in/pgr/external/mobileservice";
try {
URL url = new URL(externalUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setDoOutput(true);
// 1) Convert MultipartFile to Base64 string
String compImageBase64 = "";
if (compImage != null && !compImage.isEmpty()) {
byte[] bytes = compImage.getBytes();
compImageBase64 = Base64.getEncoder().encodeToString(bytes);
}
System.out.println("compImage.."+compImage);
String params = "serviceId=RegComplaint" +
"&ComplainantName=" + URLEncoder.encode(complainantName != null ? complainantName : "", "UTF-8") +
"&ComplainantAddr=" + URLEncoder.encode(complainantAddr != null ? complainantAddr : "", "UTF-8") +
"&MobileNo=" + URLEncoder.encode(mobileNo != null ? mobileNo : "", "UTF-8") +
"&Email=" + URLEncoder.encode(email != null ? email : "", "UTF-8") +
"&ComplaintType=" + URLEncoder.encode(complaintType != null ? complaintType : "", "UTF-8") +
"&ComplaintTitle=" + URLEncoder.encode(complaintTitle != null ? complaintTitle : "", "UTF-8") +
"&ComplaintDetails=" + URLEncoder.encode(complaintDetails != null ? complaintDetails : "", "UTF-8") +
"&StreetId=" + URLEncoder.encode(streetId != null ? streetId : "", "UTF-8") +
"&Comp_Image=" + URLEncoder.encode(compImageBase64 , "UTF-8")+
"&latitude=" + URLEncoder.encode(latitude != null ? latitude : "", "UTF-8") +
"&longtitude=" + URLEncoder.encode(longtitude != null ? longtitude : "", "UTF-8") +
"&Landmark=" + URLEncoder.encode(landmark != null ? landmark : "", "UTF-8") +
"&gender=" + URLEncoder.encode(gender != null ? gender : "", "UTF-8") +
"&compmode=2";
try (OutputStream os = conn.getOutputStream()) {
byte[] input = params.getBytes("UTF-8");
os.write(input, 0, input.length);
}
int responseCode = conn.getResponseCode();
BufferedReader reader;
if (responseCode == HttpURLConnection.HTTP_OK) {
reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
} else {
reader = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
}
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
// ✅ Parse and return only the complaint number
ObjectMapper mapper = new ObjectMapper();
Map<String, String> responseMap = mapper.readValue(response.toString(), Map.class);
String complaintNo = responseMap.getOrDefault("Complaint Number", "N/A");
System.out.println("complaintNo===="+complaintNo);
return ResponseEntity.ok()
.contentType(MediaType.APPLICATION_JSON)
.body(Map.of("complaintNumber", complaintNo));
} catch (IOException e) {
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Map.of("error", "An error occurred while processing the request."));
}
}
@PostMapping("/updateComplaint")
public ResponseEntity<String> updateComplaint(@RequestParam("ComplaintId") String complaintId,
@RequestParam(value = "Message", required = false) String message,
@RequestParam(value = "Status") String status,
@RequestPart(value = "Comp_Image", required = false) MultipartFile compImage) {
String userType = "Public";
System.out.println("message:-" + message + "\n UserType:-" + userType + "\n Status:-" + status);
System.out.println(compImage == null);
String externalUrl = "https://erp.chennaicorporation.gov.in/pgr/newmobileservice";
try {
String base64Image = null;
if (compImage != null && !compImage.isEmpty()) {
base64Image = compressAndEncodeToBase64(compImage);
System.out.println("imageee" + base64Image);
}
// Construct the POST body with parameters
String params = "serviceId=UpdateComplaint" + "&ComplaintId="
+ URLEncoder.encode(complaintId != null ? complaintId : "", "UTF-8") + "&Message="
+ URLEncoder.encode(message != null ? message : "", "UTF-8") + "&UserType="
+ URLEncoder.encode(userType, "UTF-8") + "&Status="
+ URLEncoder.encode(status != null ? status : "", "UTF-8") + "&Comp_Image="
+ URLEncoder.encode(compImage != null ? base64Image : "", "UTF-8")
+ "&Token=718333469976265947044293";
// Open connection and send POST request
URL url = new URL(externalUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
// Send parameters
OutputStream os = conn.getOutputStream();
os.write(params.getBytes());
os.flush();
os.close();
// Handle the response
int responseCode = conn.getResponseCode();
BufferedReader reader;
if (responseCode == HttpURLConnection.HTTP_OK) {
reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
} else {
reader = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
}
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
return ResponseEntity.status(responseCode).body(response.toString());
} catch (IOException e) {
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body("An error occurred while processing the request.");
}
}
private String compressAndEncodeToBase64(MultipartFile file) throws IOException {
// Convert MultipartFile to BufferedImage
BufferedImage originalImage = ImageIO.read(file.getInputStream());
// Resize/Compress the image
int targetWidth = 800; // You can adjust the width as needed
int targetHeight = (int) (originalImage.getHeight() * (800.0 / originalImage.getWidth())); // Preserve aspect
// ratio
BufferedImage resizedImage = new BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D g = resizedImage.createGraphics();
g.drawImage(originalImage, 0, 0, targetWidth, targetHeight, null);
g.dispose();
// Compress the image by writing it to a ByteArrayOutputStream in JPEG format
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(resizedImage, "jpg", baos); // You can change the format to "png" or "jpg"
byte[] compressedBytes = baos.toByteArray();
// Convert the compressed image to base64
return Base64.getEncoder().encodeToString(compressedBytes);
}
@GetMapping("/getdetails")
public ResponseEntity<?> getComplaintMatch(
@RequestParam("mobileNo") String mobileNo,
@RequestParam("complaintId") String complaintId,
@RequestParam("streetName") String streetName
) {
try {
// 1. Map complaintId to complaint title
Map<String, String> complaintIdToTitle = new HashMap<>();
complaintIdToTitle.put("97", "Removal of Garbage");
complaintIdToTitle.put("98", "Overflowing of Garbage Bin");
complaintIdToTitle.put("99", "Removal of Debris");
complaintIdToTitle.put("100", "Absenteeism of Sweepers");
complaintIdToTitle.put("101", "Absenteeism of Door to door garbage Collector");
complaintIdToTitle.put("102", "Improper Sweeping");
complaintIdToTitle.put("103", "Provison of Garbage Bin");
complaintIdToTitle.put("104", "Broken Bin");
complaintIdToTitle.put("105", "Shifting of Garbage Bin");
complaintIdToTitle.put("106", "Cleaning of Water Table");
complaintIdToTitle.put("107", "Nuisance by Garbage Tractor/Truck");
complaintIdToTitle.put("108", "Burning of Garbage");
complaintIdToTitle.put("109", "Garbage Lorry without Net");
complaintIdToTitle.put("110", "Spilling of Garbage from Lorry");
complaintIdToTitle.put("111", "Burning of Garbage at Dumping Ground");
complaintIdToTitle.put("112", "Pot hole fill up / Repairs to the damaged surface");
complaintIdToTitle.put("113", "Relaying of Road");
complaintIdToTitle.put("114", "Formation of New Road");
complaintIdToTitle.put("115", "Repairs to existing Footpath");
complaintIdToTitle.put("116", "Request to provide Footpath");
complaintIdToTitle.put("117", "Removal of Shops in the Footpath");
complaintIdToTitle.put("118", "Mosquito Menace");
complaintIdToTitle.put("119", "Street Dogs");
complaintIdToTitle.put("120", "Stray Cattle");
complaintIdToTitle.put("121", "Stray Pigs");
complaintIdToTitle.put("122", "Death of Stray Animals");
complaintIdToTitle.put("123", "Public Health / Dengue / Malaria / Gastro Enteritis");
complaintIdToTitle.put("124", "Transfer Station Smell");
complaintIdToTitle.put("125", "Flies Menace from Dumping Ground");
complaintIdToTitle.put("126", "Open Defecation");
complaintIdToTitle.put("127", "Illegal Draining of Sewage to SWD / Open Site");
complaintIdToTitle.put("128", "Complaints regarding unhygenic Restaurants");
complaintIdToTitle.put("129", "Complaints regarding quality of food in hotels");
complaintIdToTitle.put("130", "Road Side Eateries");
complaintIdToTitle.put("131", "Slaughter House related complaints");
complaintIdToTitle.put("132", "Unauthorized Sale of Meat and Meat products");
complaintIdToTitle.put("133", "Illegal Slaughtering");
complaintIdToTitle.put("134", "Unhygenic and Improper Transport of Meat and Livestock");
complaintIdToTitle.put("135", "Biomedical waste / Health hazard waste removal");
complaintIdToTitle.put("136", "Complaints regarding Corporation Hospitals");
complaintIdToTitle.put("137", "Complaints regarding CDH");
complaintIdToTitle.put("138", "Stagnation of Water");
complaintIdToTitle.put("139", "Obstruction of Water Flow");
complaintIdToTitle.put("140", "Desilting of Drain");
complaintIdToTitle.put("141", "Desilting of Canal");
complaintIdToTitle.put("142", "Repairs to Storm Water Drain");
complaintIdToTitle.put("143", "Covering Manholes of Storm Water Drain");
complaintIdToTitle.put("144", "New Drain Construction");
complaintIdToTitle.put("145", "Disposal of Removed Silt on the Road");
complaintIdToTitle.put("146", "Non burning of Street lights");
complaintIdToTitle.put("147", "Electric shock due to street light");
complaintIdToTitle.put("148", "Damage to the Electric pole");
complaintIdToTitle.put("149", "New Street lights");
complaintIdToTitle.put("150", "Shifting of Street light pole");
complaintIdToTitle.put("151", "Overhead cable wires running in a haphazard manner");
complaintIdToTitle.put("152", "Removal of Fallen Trees");
complaintIdToTitle.put("153", "Complaints regarding Park");
complaintIdToTitle.put("154", "Complaints regarding Playground");
complaintIdToTitle.put("155", "Complaints regarding Centre Median");
complaintIdToTitle.put("156", "Complaints regarding Traffic Island");
complaintIdToTitle.put("157", "Unauthorized Tree Cutting");
complaintIdToTitle.put("158", "Obstruction of Trees");
complaintIdToTitle.put("159", "Complaints regarding Public Toilets");
complaintIdToTitle.put("160", "Complaints regarding Free Usage of Public Toilets");
complaintIdToTitle.put("161", "Complaints regarding Cleanliness of Toilets in Theatre");
complaintIdToTitle.put("162", "Complaints regarding Cleanliness of Toilets in Shopping Complex");
complaintIdToTitle.put("163", "Building Plan Sanction");
complaintIdToTitle.put("164", "Violation of DCR/Building By laws");
complaintIdToTitle.put("165", "Unauthorized / Illegal Construction");
complaintIdToTitle.put("166", "Complaints related to Property Tax");
complaintIdToTitle.put("167", "Complaints related to Professional Tax");
complaintIdToTitle.put("168", "Complaints related to Trade Licence");
complaintIdToTitle.put("174", "Name Error (Spelling Related)");
complaintIdToTitle.put("175", "Change of Address in Electoral Roll");
complaintIdToTitle.put("176", "Issue of Voter ID");
complaintIdToTitle.put("177", "Inclusion, Deletion, Correction in Voter List");
complaintIdToTitle.put("178", "Complaints regarding Voter List");
complaintIdToTitle.put("179", "Name not found in the Electoral Roll");
complaintIdToTitle.put("180", "Issue of Birth and Death Certificate");
complaintIdToTitle.put("181", "Encroachment on the Public Property");
complaintIdToTitle.put("182", " Complaints related to Schools");
complaintIdToTitle.put("183", "Sanction of Financial Assistance under Moovalaur Thirumana Thittam");
complaintIdToTitle.put("184", "Complaints related to issue of all types of Registration Certificate");
complaintIdToTitle.put("185", "Slow Progress of Work");
complaintIdToTitle.put("186", "Poor Quality of Work");
complaintIdToTitle.put("187", "Unauthorized Advertisement Boards");
complaintIdToTitle.put("188", "Complaints regarding Bridges / Flyovers / Subways");
complaintIdToTitle.put("189", "Complaints related Shopping Complex");
complaintIdToTitle.put("190", "Complaints regarding Community Hall");
complaintIdToTitle.put("191", "Complaints regarding Burial Ground");
complaintIdToTitle.put("192", "Complaints regarding any other CoC building");
complaintIdToTitle.put("193", "Parking Issue");
complaintIdToTitle.put("195", "Complaints Regarding Plastics");
complaintIdToTitle.put("196", "No electricity in public toilet");
complaintIdToTitle.put("197", "No water supply in public toilet");
complaintIdToTitle.put("198", "Public toilet blockage");
complaintIdToTitle.put("199", "Public toilet cleaning");
complaintIdToTitle.put("200", "Burning of street light in daytime");
complaintIdToTitle.put("201", "Illegal Parking on foot path");
complaintIdToTitle.put("202", "Complaints regarding non availability of Doctors");
complaintIdToTitle.put("203", "Complaints regarding non availability of medicines");
complaintIdToTitle.put("204", "Complaints regarding laboratory issues");
complaintIdToTitle.put("205", "Issues regarding amma baby care kits (After Delivery)");
complaintIdToTitle.put("206", "Issues regarding Amma nutrition kit for pregnant woman");
complaintIdToTitle.put("207", "Issues regarding Muthulakshmi Reddy Maternity Benefit Scheme (MRMBS)");
complaintIdToTitle.put("208", "Issues regarding janani suraksha yojana scheme (JSY)");
complaintIdToTitle.put("209", "Travel pass related complaints");
complaintIdToTitle.put("210", "Food related complaints");
complaintIdToTitle.put("212", "Covid Health Related Queries");
complaintIdToTitle.put("213", "Hospital and Covid care centre(CCC) Related Queries");
complaintIdToTitle.put("214", "Medical Emergencies");
complaintIdToTitle.put("215", "Essentials and Medicines");
complaintIdToTitle.put("216", "PSYCHO-SOCIO support");
complaintIdToTitle.put("218", "Quarantine and isolation Related Queries");
complaintIdToTitle.put("219", "General Health Queries");
complaintIdToTitle.put("220", "Disinfection request");
complaintIdToTitle.put("221", "Non Covid Health Related Queries");
complaintIdToTitle.put("222", "Milling/Scraping of Road before Relaying of Road");
complaintIdToTitle.put("226", "Food Requirement");
complaintIdToTitle.put("227", "Relief Center Requirement");
complaintIdToTitle.put("228", "Covid19 Ambulance Service");
complaintIdToTitle.put("229", "Air Quality");
complaintIdToTitle.put("230", "Online Payment Issue");
complaintIdToTitle.put("231", "General Revision Objection");
complaintIdToTitle.put("232", "Water Mixed with Sewarage");
complaintIdToTitle.put("233", "Sewerage Overflow");
complaintIdToTitle.put("234", "Drinking water supply");
complaintIdToTitle.put("235", "Electricity Shock");
complaintIdToTitle.put("236", "Electricity Unavailability");
complaintIdToTitle.put("237", "Insufficient Barricading");
complaintIdToTitle.put("238", "Fallen poles/towers/hoardings/other infra");
complaintIdToTitle.put("239", "Fallen EB cables");
complaintIdToTitle.put("240", "Project information not provided (Thiruvotriyur High Road)");
complaintIdToTitle.put("241", "Project information not provided (Arunachaleshwar Road)");
complaintIdToTitle.put("242", "Project information not provided (MC Road)");
complaintIdToTitle.put("243", "Project information not provided (Washermenpet Metro)");
complaintIdToTitle.put("244", "Project information not provided (Khadar Nawas Khan Road)");
complaintIdToTitle.put("245", "Project information not provided (Race Course road + Guindy MMI)");
complaintIdToTitle.put("246", "Advance information on consultation not provided (Thiruvotriyur High Road)");
complaintIdToTitle.put("247", "Advance information on consultation not provided (Arunachaleshwar Road)");
complaintIdToTitle.put("248", "Advance information on consultation not provided (MC Road)");
complaintIdToTitle.put("249", "Advance information on consultation not provided (Washermenpet Metro)");
complaintIdToTitle.put("250", "Advance information on consultation not provided (Khadar Nawas Khan Road)");
complaintIdToTitle.put("251", "Advance information on consultation not provided (Race Course road + Guindy MMI)");
complaintIdToTitle.put("252", "Location and area of consultation not provided (Thiruvotriyur High Road)");
complaintIdToTitle.put("253", "Location and area of consultation not provided (Arunachaleshwar Road)");
complaintIdToTitle.put("254", "Location and area of consultation not provided (MC Road)");
complaintIdToTitle.put("255", "Location and area of consultation not provided (Washermenpet Metro)");
complaintIdToTitle.put("256", "Location and area of consultation not provided (Khadar Nawas Khan Road)");
complaintIdToTitle.put("257", "Location and area of consultation not provided (Race Course road + Guindy MMI)");
complaintIdToTitle.put("258", "Information on detailed work plan not provided (Thiruvotriyur High Road)");
complaintIdToTitle.put("259", "Information on detailed work plan not provided (Arunachaleshwar Road)");
complaintIdToTitle.put("260", "Information on detailed work plan not provided (MC Road)");
complaintIdToTitle.put("261", "Information on detailed work plan not provided (Washermenpet Metro)");
complaintIdToTitle.put("262", "Information on detailed work plan not provided (Khadar Nawas Khan Road)");
complaintIdToTitle.put("263", "Information on detailed work plan not provided (Race Course road + Guindy MMI)");
complaintIdToTitle.put("264", "Others (Thiruvotriyur High Road)");
complaintIdToTitle.put("265", "Others (Arunachaleshwar Road)");
complaintIdToTitle.put("266", "Others (MC Road)");
complaintIdToTitle.put("267", "Others (Washermenpet Metro)");
complaintIdToTitle.put("268", "Others (Khadar Nawas Khan Road)");
complaintIdToTitle.put("269", "Others (Race Course road + Guindy MMI)");
complaintIdToTitle.put("270", "No information in advance provided on the date and time of civil works (Thiruvotriyur High Road)");
complaintIdToTitle.put("271", "No information in advance provided on the date and time of civil works (Arunachaleshwar Road)");
complaintIdToTitle.put("272", "No information in advance provided on the date and time of civil works (MC Road)");
complaintIdToTitle.put("273", "No information in advance provided on the date and time of civil works (Washermenpet Metro)");
complaintIdToTitle.put("274", "No information in advance provided on the date and time of civil works (Khadar Nawas Khan Road)");
complaintIdToTitle.put("275", "No information in advance provided on the date and time of civil works (Race Course road + Guindy MMI)");
complaintIdToTitle.put("276", "No information provided on the nature and schedule of civil work (Thiruvotriyur High Road)");
complaintIdToTitle.put("277", "No information provided on the nature and schedule of civil work (Arunachaleshwar Road)");
complaintIdToTitle.put("278", "No information provided on the nature and schedule of civil work (MC Road)");
complaintIdToTitle.put("279", "No information provided on the nature and schedule of civil work (Washermenpet Metro)");
complaintIdToTitle.put("280", "No information provided on the nature and schedule of civil work (Khadar Nawas Khan Road)");
complaintIdToTitle.put("281", "No information provided on the nature and schedule of civil work (Race Course road + Guindy MMI)");
complaintIdToTitle.put("282", "No consultation carried out with the people affected by the civil works (Thiruvotriyur High Road)");
complaintIdToTitle.put("283", "No consultation carried out with the people affected by the civil works (Arunachaleshwar Road)");
complaintIdToTitle.put("284", "No consultation carried out with the people affected by the civil works (MC Road)");
complaintIdToTitle.put("285", "No consultation carried out with the people affected by the civil works (Washermenpet Metro)");
complaintIdToTitle.put("286", "No consultation carried out with the people affected by the civil works (Khadar Nawas Khan Road)");
complaintIdToTitle.put("287", "No consultation carried out with the people affected by the civil works (Race Course road + Guindy MMI)");
complaintIdToTitle.put("288", "No arrangement made for temporary displacement (Thiruvotriyur High Road)");
complaintIdToTitle.put("289", "No arrangement made for temporary displacement (Arunachaleshwar Road)");
complaintIdToTitle.put("290", "No arrangement made for temporary displacement (MC Road)");
complaintIdToTitle.put("291", "No arrangement made for temporary displacement (Washermenpet Metro)");
complaintIdToTitle.put("292", "No arrangement made for temporary displacement (Khadar Nawas Khan Road)");
complaintIdToTitle.put("293", "No arrangement made for temporary displacement (Race Course road + Guindy MMI)");
complaintIdToTitle.put("294", "No display board on the project installed at work site (Thiruvotriyur High Road)");
complaintIdToTitle.put("295", "No display board on the project installed at work site (Arunachaleshwar Road)");
complaintIdToTitle.put("296", "No display board on the project installed at work site (MC Road)");
complaintIdToTitle.put("297", "No display board on the project installed at work site (Washermenpet Metro)");
complaintIdToTitle.put("298", "No display board on the project installed at work site (Khadar Nawas Khan Road)");
complaintIdToTitle.put("299", "No display board on the project installed at work site (Race Course road + Guindy MMI)");
complaintIdToTitle.put("300", "Temporary access to structures not provided and or not adequate (Thiruvotriyur High Road)");
complaintIdToTitle.put("301", "Temporary access to structures not provided and or not adequate (Arunachaleshwar Road)");
complaintIdToTitle.put("302", "Temporary access to structures not provided and or not adequate (MC Road)");
complaintIdToTitle.put("303", "Temporary access to structures not provided and or not adequate (Washermenpet Metro)");
complaintIdToTitle.put("304", "Temporary access to structures not provided and or not adequate (Khadar Nawas Khan Road)");
complaintIdToTitle.put("305", "Temporary access to structures not provided and or not adequate (Race Course road + Guindy MMI)");
complaintIdToTitle.put("306", "No safety measures taken at worksite (Thiruvotriyur High Road)");
complaintIdToTitle.put("307", "No safety measures taken at worksite (Arunachaleshwar Road)");
complaintIdToTitle.put("308", "No safety measures taken at worksite (MC Road)");
complaintIdToTitle.put("309", "No safety measures taken at worksite (Washermenpet Metro)");
complaintIdToTitle.put("310", "No safety measures taken at worksite (Khadar Nawas Khan Road)");
complaintIdToTitle.put("311", "No safety measures taken at worksite (Race Course road + Guindy MMI)");
complaintIdToTitle.put("312", "Water supply disrupted and alternate arrangement not provided (Thiruvotriyur High Road)");
complaintIdToTitle.put("313", "Water supply disrupted and alternate arrangement not provided (Arunachaleshwar Road)");
complaintIdToTitle.put("314", "Water supply disrupted and alternate arrangement not provided (MC Road)");
complaintIdToTitle.put("315", "Water supply disrupted and alternate arrangement not provided (Washermenpet Metro)");
complaintIdToTitle.put("316", "Water supply disrupted and alternate arrangement not provided (Khadar Nawas Khan Road)");
complaintIdToTitle.put("317", "Water supply disrupted and alternate arrangement not provided (Race Course road + Guindy MMI)");
complaintIdToTitle.put("318", "Electricity supply disrupted and alternate arrangement not provided (Thiruvotriyur High Road)");
complaintIdToTitle.put("319", "Electricity supply disrupted and alternate arrangement not provided (Arunachaleshwar Road)");
complaintIdToTitle.put("320", "Electricity supply disrupted and alternate arrangement not provided (MC Road)");
complaintIdToTitle.put("321", "Electricity supply disrupted and alternate arrangement not provided (Washermenpet Metro)");
complaintIdToTitle.put("322", "Electricity supply disrupted and alternate arrangement not provided (Khadar Nawas Khan Road)");
complaintIdToTitle.put("323", "Electricity supply disrupted and alternate arrangement not provided (Race Course road + Guindy MMI)");
complaintIdToTitle.put("324", "Disposal of debris not appropriately managed (Thiruvotriyur High Road)");
complaintIdToTitle.put("325", "Disposal of debris not appropriately managed (Arunachaleshwar Road)");
complaintIdToTitle.put("326", "Disposal of debris not appropriately managed (MC Road)");
complaintIdToTitle.put("327", "Disposal of debris not appropriately managed (Washermenpet Metro)");
complaintIdToTitle.put("328", "Disposal of debris not appropriately managed (Khadar Nawas Khan Road)");
complaintIdToTitle.put("329", "Disposal of debris not appropriately managed (Race Course road + Guindy MMI)");
complaintIdToTitle.put("330", " Temporary arrangement for parking not provided (Thiruvotriyur High Road)");
complaintIdToTitle.put("331", " Temporary arrangement for parking not provided (Arunachaleshwar Road)");
complaintIdToTitle.put("332", " Temporary arrangement for parking not provided (MC Road)");
complaintIdToTitle.put("333", " Temporary arrangement for parking not provided (Washermenpet Metro)");
complaintIdToTitle.put("334", " Temporary arrangement for parking not provided (Khadar Nawas Khan Road)");
complaintIdToTitle.put("335", " Temporary arrangement for parking not provided (Race Course road + Guindy MMI)");
complaintIdToTitle.put("336", "GRM and helpline numbers not displayed at worksite (Thiruvotriyur High Road)");
complaintIdToTitle.put("337", "GRM and helpline numbers not displayed at worksite (Arunachaleshwar Road)");
complaintIdToTitle.put("338", "GRM and helpline numbers not displayed at worksite (MC Road)");
complaintIdToTitle.put("339", "GRM and helpline numbers not displayed at worksite (Washermenpet Metro)");
complaintIdToTitle.put("340", "GRM and helpline numbers not displayed at worksite (Khadar Nawas Khan Road)");
complaintIdToTitle.put("341", "GRM and helpline numbers not displayed at worksite (Race Course road + Guindy MMI)");
complaintIdToTitle.put("342", "Drinking water/ other basic needs for Labour not available at worksite (Thiruvotriyur High Road)");
complaintIdToTitle.put("343", "Drinking water/ other basic needs for Labour not available at worksite (Arunachaleshwar Road)");
complaintIdToTitle.put("344", "Drinking water/ other basic needs for Labour not available at worksite (MC Road)");
complaintIdToTitle.put("345", "Drinking water/ other basic needs for Labour not available at worksite (Washermenpet Metro)");
complaintIdToTitle.put("346", "Drinking water/ other basic needs for Labour not available at worksite (Khadar Nawas Khan Road)");
complaintIdToTitle.put("347", "Drinking water/ other basic needs for Labour not available at worksite (Race Course road + Guindy MMI)");
complaintIdToTitle.put("348", "Noise levels are very high (Thiruvotriyur High Road)");
complaintIdToTitle.put("349", "Noise levels are very high (Arunachaleshwar Road)");
complaintIdToTitle.put("350", "Noise levels are very high (MC Road)");
complaintIdToTitle.put("351", "Noise levels are very high (Washermenpet Metro)");
complaintIdToTitle.put("352", "Noise levels are very high (Khadar Nawas Khan Road)");
complaintIdToTitle.put("353", "Noise levels are very high (Race Course road + Guindy MMI)");
complaintIdToTitle.put("354", " Sprinkling of water at worksite not carried out (Thiruvotriyur High Road)");
complaintIdToTitle.put("355", " Sprinkling of water at worksite not carried out (Arunachaleshwar Road)");
complaintIdToTitle.put("356", " Sprinkling of water at worksite not carried out (MC Road)");
complaintIdToTitle.put("357", " Sprinkling of water at worksite not carried out (Washermenpet Metro)");
complaintIdToTitle.put("358", " Sprinkling of water at worksite not carried out (Khadar Nawas Khan Road)");
complaintIdToTitle.put("359", " Sprinkling of water at worksite not carried out (Race Course road + Guindy MMI)");
complaintIdToTitle.put("360", "The worksite is not barricaded; (Thiruvotriyur High Road)");
complaintIdToTitle.put("361", "The worksite is not barricaded; (Arunachaleshwar Road)");
complaintIdToTitle.put("362", "The worksite is not barricaded; (MC Road)");
complaintIdToTitle.put("363", "The worksite is not barricaded; (Washermenpet Metro)");
complaintIdToTitle.put("364", "The worksite is not barricaded; (Khadar Nawas Khan Road)");
complaintIdToTitle.put("365", "The worksite is not barricaded; (Race Course road + Guindy MMI)");
complaintIdToTitle.put("366", " No information on number of labour working at the site (Thiruvotriyur High Road)");
complaintIdToTitle.put("367", " No information on number of labour working at the site (Arunachaleshwar Road)");
complaintIdToTitle.put("368", " No information on number of labour working at the site (MC Road)");
complaintIdToTitle.put("369", " No information on number of labour working at the site (Washermenpet Metro)");
complaintIdToTitle.put("370", " No information on number of labour working at the site (Khadar Nawas Khan Road)");
complaintIdToTitle.put("371", " No information on number of labour working at the site (Race Course road + Guindy MMI)");
complaintIdToTitle.put("372", "Labourer not using the safety equipment (Thiruvotriyur High Road)");
complaintIdToTitle.put("373", "Labourer not using the safety equipment (Arunachaleshwar Road)");
complaintIdToTitle.put("374", "Labourer not using the safety equipment (MC Road)");
complaintIdToTitle.put("375", "Labourer not using the safety equipment (Washermenpet Metro)");
complaintIdToTitle.put("376", "Labourer not using the safety equipment (Khadar Nawas Khan Road)");
complaintIdToTitle.put("377", "Labourer not using the safety equipment (Race Course road + Guindy MMI)");
complaintIdToTitle.put("378", "Sewerage pipe is damaged (Thiruvotriyur High Road)");
complaintIdToTitle.put("379", "Sewerage pipe is damaged (Arunachaleshwar Road)");
complaintIdToTitle.put("380", "Sewerage pipe is damaged (MC Road)");
complaintIdToTitle.put("381", "Sewerage pipe is damaged (Washermenpet Metro)");
complaintIdToTitle.put("382", "Sewerage pipe is damaged (Khadar Nawas Khan Road)");
complaintIdToTitle.put("383", "Sewerage pipe is damaged (Race Course road + Guindy MMI)");
complaintIdToTitle.put("384", "Others (Thiruvotriyur High Road)");
complaintIdToTitle.put("385", "Others (Arunachaleshwar Road)");
complaintIdToTitle.put("386", "Others (MC Road)");
complaintIdToTitle.put("387", "Others (Washermenpet Metro)");
complaintIdToTitle.put("388", "Others (Khadar Nawas Khan Road)");
complaintIdToTitle.put("389", "Others (Race Course road + Guindy MMI)");
complaintIdToTitle.put("390", "Insufficient Barricading (Thiruvotriyur High Road)");
complaintIdToTitle.put("391", "Insufficient Barricading (Arunachaleshwar Road)");
complaintIdToTitle.put("392", "Insufficient Barricading (MC Road)");
complaintIdToTitle.put("393", "Insufficient Barricading (Washermenpet Metro)");
complaintIdToTitle.put("394", "Insufficient Barricading (Khadar Nawas Khan Road)");
complaintIdToTitle.put("395", "Insufficient Barricading (Race Course road + Guindy MMI)");
complaintIdToTitle.put("396", "Non Removal of Debris (Thiruvotriyur High Road)");
complaintIdToTitle.put("397", "Non Removal of Debris (Arunachaleshwar Road)");
complaintIdToTitle.put("398", "Non Removal of Debris (MC Road)");
complaintIdToTitle.put("399", "Non Removal of Debris (Washermenpet Metro)");
complaintIdToTitle.put("400", "Non Removal of Debris (Khadar Nawas Khan Road)");
complaintIdToTitle.put("401", "Non Removal of Debris (Race Course road + Guindy MMI)");
complaintIdToTitle.put("402", "Potholes fill up (Thiruvotriyur High Road)");
complaintIdToTitle.put("403", "Potholes fill up (Arunachaleshwar Road)");
complaintIdToTitle.put("404", "Potholes fill up (MC Road)");
complaintIdToTitle.put("405", "Potholes fill up (Washermenpet Metro)");
complaintIdToTitle.put("406", "Potholes fill up (Khadar Nawas Khan Road)");
complaintIdToTitle.put("407", "Potholes fill up (Race Course road + Guindy MMI)");
complaintIdToTitle.put("408", "Damage to utilities (TNEB, CMWSSB, BSNL) (Thiruvotriyur High Road)");
complaintIdToTitle.put("409", "Damage to utilities (TNEB, CMWSSB, BSNL) (Arunachaleshwar Road)");
complaintIdToTitle.put("410", "Damage to utilities (TNEB, CMWSSB, BSNL) (MC Road)");
complaintIdToTitle.put("411", "Damage to utilities (TNEB, CMWSSB, BSNL) (Washermenpet Metro)");
complaintIdToTitle.put("412", "Damage to utilities (TNEB, CMWSSB, BSNL) (Khadar Nawas Khan Road)");
complaintIdToTitle.put("413", "Damage to utilities (TNEB, CMWSSB, BSNL) (Race Course road + Guindy MMI)");
complaintIdToTitle.put("414", "Encroaching Public Space (Thiruvotriyur High Road)");
complaintIdToTitle.put("415", "Encroaching Public Space (Arunachaleshwar Road)");
complaintIdToTitle.put("416", "Encroaching Public Space (MC Road)");
complaintIdToTitle.put("417", "Encroaching Public Space (Washermenpet Metro)");
complaintIdToTitle.put("418", "Encroaching Public Space (Khadar Nawas Khan Road)");
complaintIdToTitle.put("419", "Encroaching Public Space (Race Course road + Guindy MMI)");
complaintIdToTitle.put("420", "Need Pathway ramp (Thiruvotriyur High Road)");
complaintIdToTitle.put("421", "Need Pathway ramp (Arunachaleshwar Road)");
complaintIdToTitle.put("422", "Need Pathway ramp (MC Road)");
complaintIdToTitle.put("423", "Need Pathway ramp (Washermenpet Metro)");
complaintIdToTitle.put("424", "Need Pathway ramp (Khadar Nawas Khan Road)");
complaintIdToTitle.put("425", "Need Pathway ramp (Race Course road + Guindy MMI)");
complaintIdToTitle.put("426", "Cleanliness in Parks");
complaintIdToTitle.put("427", "Greenary in Parks");
complaintIdToTitle.put("428", "Play Equipment");
complaintIdToTitle.put("429", "Opening and closing hours");
complaintIdToTitle.put("430", "Toilets in parks");
complaintIdToTitle.put("431", "Non functional lights/ no lights in parks");
complaintIdToTitle.put("432", "Safety in parks/playgrounds");
complaintIdToTitle.put("433", "Women related safety issues in parks");
complaintIdToTitle.put("434", "Availability or cleanliness of dustbins in public toilets");
complaintIdToTitle.put("435", "Cleanliness/ water supply in toilets");
complaintIdToTitle.put("436", "Broken sinks, toilets or urinals and doors");
complaintIdToTitle.put("437", "Request for new toilet");
complaintIdToTitle.put("438", "Illegal activities in toilet");
complaintIdToTitle.put("439", "Toilets not in use/ closed");
complaintIdToTitle.put("440", "Inadequate lighting in and around the toilet");
complaintIdToTitle.put("441", "Safety in public toilets");
complaintIdToTitle.put("442", "Cleanliness in footpath");
complaintIdToTitle.put("443", "Electrical wires/obstruction on footpath");
complaintIdToTitle.put("444", "Unsafe dark spots/ corners");
complaintIdToTitle.put("445", "Public defecation/urination");
complaintIdToTitle.put("446", "Women related safety issues ");
complaintIdToTitle.put("447", "Inadequate light in a particular location or spot/ dark spots");
String expectedType;
if (complaintIdToTitle.containsKey(complaintId)) {
expectedType = complaintIdToTitle.get(complaintId).trim().toLowerCase();
} else {
// Fallback: Use sub-type text directly if not found in map (i.e. for "Others")
expectedType = complaintId.trim().toLowerCase();
}
// 2. Date range: last 7 days
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate today = LocalDate.now();
String endDate = today.format(formatter);
String startDate = today.minusDays(7).format(formatter);
int repYear = today.getYear();
// 3. Construct external URL
String externalUrl = String.format(
"https://erp.chennaicorporation.gov.in/pgr/newmobileservice?serviceId=getComplaintListWithImg" +
"&From_date=%s&To_date=%s&jsonResp=Yes&UserType=Public&Token=&PageIndex=null&Status=null&repYear=%d&MobileNo=%s",
startDate, endDate, repYear, mobileNo
);
System.out.println("External API URL: " + externalUrl);
// 4. Fetch and parse response
RestTemplate restTemplate = new RestTemplate();
String json = restTemplate.getForObject(externalUrl, String.class);
ObjectMapper mapper = new ObjectMapper();
JsonNode rootArray = mapper.readTree(json);
boolean found = false;
if (rootArray.isArray() && rootArray.size() > 0) {
JsonNode complaintList = rootArray.get(0).path("ComplaintListHistory");
if (complaintList.isArray()) {
for (JsonNode item : complaintList) {
String type = item.path("complainttype").asText("").trim().toLowerCase();
String street = item.path("Street").asText("").trim().toLowerCase();
System.out.println("Complaint type in data: " + type);
System.out.println("Expected complaint type: " + expectedType);
System.out.println("Street in data: " + street);
System.out.println("Given street name: " + streetName.trim().toLowerCase());
if (type.equals(expectedType) &&
street.equals(streetName.trim().toLowerCase())) {
found = true;
break;
}
}
}
}
// 5. Return response
Map<String, Object> response = new HashMap<>();
response.put("duplicate", found);
return ResponseEntity.ok(response);
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Collections.singletonMap("error", "Failed to process the request"));
}
}
/*
* private static final Logger log =
* LoggerFactory.getLogger(ComplaintController.class);
*
*
* @GetMapping("/getStreets") public ResponseEntity<?> getStreets(
*
* @RequestParam double lat,
*
* @RequestParam double lon ) throws Exception { // 1) raw ESRI geometry JSON
* String geomJson = String.format("{\"x\":%f,\"y\":%f}", lon, lat);
*
* // 2) build & encode the full query URL in one go String url =
* UriComponentsBuilder .fromHttpUrl("https://gisgcc.chennaicorporation.gov.in"
* + "/server/rest/services/GCCDepts/EDPMobile2025/FeatureServer/0/query")
* .queryParam("where", "") .queryParam("geometry", geomJson) // <<< raw JSON
* here .queryParam("geometryType", "esriGeometryPoint") .queryParam("inSR",
* "4326") .queryParam("spatialRel", "esriSpatialRelIntersects")
* .queryParam("distance", "25") .queryParam("units", "esriSRUnit_Meter")
* .queryParam("outFields",
* "region,new_zone,new_ward,road_id,road_name,gis_id,type")
* .queryParam("returnGeometry", "false") .queryParam("f", "geojson") .build()
* .encode() // <<< encode once .toUriString();
*
* log.info("Calling ESRI: {}", url);
*
* // 3) fetch the raw JSON String rawJson = restTemplate.getForObject(url,
* String.class); log.info("ESRI raw response: {}", rawJson);
*
* // 4) detect ESRI-level errors JsonNode root = new
* ObjectMapper().readTree(rawJson); if (root.has("error")) { String msg =
* root.path("error").path("message").asText(); return ResponseEntity
* .status(HttpStatus.BAD_GATEWAY) .body(Map.of("message",
* "ESRI service error: " + msg)); }
*
* // 5) now safe to bind only the “features” array FeatureCollection fc = new
* ObjectMapper() .readerFor(FeatureCollection.class) .readValue(root);
*
* List<Feature> feats = Optional.ofNullable(fc.getFeatures())
* .orElse(List.of());
*
* if (feats.isEmpty()) { return ResponseEntity.noContent().build(); }
*
* // 6) extract unique road names List<String> streets = feats.stream() .map(f
* -> f.getProperties().getRoadName()) .filter(Objects::nonNull) .distinct()
* .toList();
*
* return ResponseEntity.ok(Map.of("streets", streets)); }
*
* @JsonIgnoreProperties(ignoreUnknown = true) public static class
* FeatureCollection { private List<Feature> features; public List<Feature>
* getFeatures() { return features; } public void setFeatures(List<Feature>
* features) { this.features = features; } }
*
* @JsonIgnoreProperties(ignoreUnknown = true) public static class Feature {
* private Properties properties; public Properties getProperties() { return
* properties; } public void setProperties(Properties properties) {
* this.properties = properties; } }
*
* @JsonIgnoreProperties(ignoreUnknown = true) public static class Properties {
*
* @JsonProperty("road_name") private String roadName; public String
* getRoadName() { return roadName; } public void setRoadName(String roadName) {
* this.roadName = roadName; } }
*/
}

41
src/main/java/com/gcc/publicgrievance/controller/UserController.java

@ -0,0 +1,41 @@
package com.gcc.publicgrievance.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/pgr")
public class UserController {
@GetMapping({"/","", "/home"})
public String home(Model model) {
return "User/home";
}
@GetMapping("/registercomplaints")
public String registercomplaints(Model model) {
return "User/registercomplaints";
}
@GetMapping("/officercomplaint")
public String officercomplaint(Model model) {
return "officer/officercomplaint";
}
@GetMapping("/checklistofficer")
public String checklistofficer(Model model) {
return "checklistofficer/checklistofficer";
}
@GetMapping("/checkofficerhome")
public String checkofficerhome(Model model) {
return "officer/checkofficerhome";
}
@GetMapping("/staffcomplaint")
public String staffcomplaint(Model model) {
return "staff/staffcomplaint";
}
@GetMapping("/staffhome")
public String staffhome(Model model) {
return "staff/staffhome";
}
}

20
src/main/resources/application-dev.properties

@ -0,0 +1,20 @@
spring.application.name=publicgrievance
# Sets the session timeout to 60 seconds
#server.servlet.session.timeout=60s
# Sets the async request timeout to 5000 milliseconds (5 seconds)
#spring.mvc.async.request-timeout=5000ms
server.port=8072
#server.port=8061
app.baseUrl=http://localhost:8072
#For development
#assets.baseUrl=/
app.getOtpUrl=https://tmegov.onex-aura.com/api/sms?
app.erpUrl=https://erp.chennaicorporation.gov.in/pgr/newmobileservice?
app.title=GREATER CHENNAI CORPORATION - PGR

27
src/main/resources/application-prod.properties

@ -0,0 +1,27 @@
spring.application.name=publicgrievance
# Sets the session timeout to 60 seconds
#server.servlet.session.timeout=60s
# Sets the async request timeout to 5000 milliseconds (5 seconds)
#spring.mvc.async.request-timeout=5000ms
server.port=8072
#server.port=8061
#app.baseUrl=https://gccservices.chennaicorporation.gov.in/pgr/
app.baseUrl=https://gccservices.in/pgr/
#For Production
#assets.baseUrl=/pgr
app.getOtpUrl=https://tmegov.onex-aura.com/api/sms?
app.erpUrl=https://erp.chennaicorporation.gov.in/pgr/newmobileservice?
app.title=GREATER CHENNAI CORPORATION - PGR
# Disable DataSource auto-configuration since no database is being used
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

1
src/main/resources/application.properties

@ -0,0 +1 @@
spring.profiles.active= prod

BIN
src/main/resources/static/images/Thin broken ring.gif

After

Width: 64  |  Height: 64  |  Size: 7.6 KiB

494
src/main/resources/static/images/ack.pdf

@ -0,0 +1,494 @@
%PDF-1.3
%ºß¬à
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 595.2799999999999727 841.8899999999999864]
/Contents 4 0 R
>>
endobj
4 0 obj
<<
/Length 4438
>>
stream
0.5670000000000001 w
0 G
BT
/F9 10 Tf
11.5 TL
0 g
56.6929133858267775 813.5435433070865656 Td
(Information) Tj
ET
0.09 0.63 0.52 rg
0.78 G
0. w
40. 785.1970866141731449 265.9382208588956473 -21.4999999999999964 re
f
BT
/F10 10 Tf
11.5 TL
1. g
45. 771.6970866141732586 Td
(Company) Tj
ET
0.09 0.63 0.52 rg
0.78 G
0. w
305.9382208588956473 785.1970866141731449 156.283159509202477 -21.4999999999999964 re
f
BT
/F10 10 Tf
11.5 TL
1. g
310.9382208588956473 771.6970866141732586 Td
(Contact) Tj
ET
0.09 0.63 0.52 rg
0.78 G
0. w
462.2213803680980959 785.1970866141731449 93.0586196319018342 -21.4999999999999964 re
f
BT
/F10 10 Tf
11.5 TL
1. g
467.2213803680980959 771.6970866141732586 Td
(Country) Tj
ET
1. g
0.78 G
0.2834645669291339 w
40. 763.6970866141731449 265.9382208588956473 -21.4999999999999964 re
B
BT
/F9 10 Tf
11.5 TL
0.314 g
45. 750.1970866141732586 Td
(Alfreds Futterkiste) Tj
ET
1. g
0.78 G
0.2834645669291339 w
305.9382208588956473 763.6970866141731449 156.283159509202477 -21.4999999999999964 re
B
BT
/F9 10 Tf
11.5 TL
0.314 g
310.9382208588956473 750.1970866141732586 Td
( ’ ª Í ª Á • È) Tj
ET
1. g
0.78 G
0.2834645669291339 w
462.2213803680980959 763.6970866141731449 93.0586196319018342 -21.4999999999999964 re
B
BT
/F9 10 Tf
11.5 TL
0.314 g
467.2213803680980959 750.1970866141732586 Td
(Germany) Tj
ET
1. g
0.78 G
0.2834645669291339 w
40. 742.1970866141732586 265.9382208588956473 -21.4999999999999964 re
B
BT
/F9 10 Tf
11.5 TL
0.314 g
45. 728.6970866141732586 Td
(Centro comercial Moctezuma) Tj
ET
1. g
0.78 G
0.2834645669291339 w
305.9382208588956473 742.1970866141732586 156.283159509202477 -21.4999999999999964 re
B
BT
/F9 10 Tf
11.5 TL
0.314 g
310.9382208588956473 728.6970866141732586 Td
(Francisco Chang) Tj
ET
1. g
0.78 G
0.2834645669291339 w
462.2213803680980959 742.1970866141732586 93.0586196319018342 -21.4999999999999964 re
B
BT
/F9 10 Tf
11.5 TL
0.314 g
467.2213803680980959 728.6970866141732586 Td
( ’ ª Í ª Á • È) Tj
ET
1. g
0.78 G
0.2834645669291339 w
40. 720.6970866141731449 265.9382208588956473 -21.4999999999999964 re
B
BT
/F9 10 Tf
11.5 TL
0.314 g
45. 707.1970866141732586 Td
(Ernst Handel) Tj
ET
1. g
0.78 G
0.2834645669291339 w
305.9382208588956473 720.6970866141731449 156.283159509202477 -21.4999999999999964 re
B
BT
/F9 10 Tf
11.5 TL
0.314 g
310.9382208588956473 707.1970866141732586 Td
(Roland Mendel) Tj
ET
1. g
0.78 G
0.2834645669291339 w
462.2213803680980959 720.6970866141731449 93.0586196319018342 -21.4999999999999964 re
B
BT
/F9 10 Tf
11.5 TL
0.314 g
467.2213803680980959 707.1970866141732586 Td
(Austria) Tj
ET
1. g
0.78 G
0.2834645669291339 w
40. 699.1970866141732586 265.9382208588956473 -21.4999999999999964 re
B
BT
/F9 10 Tf
11.5 TL
0.314 g
45. 685.6970866141732586 Td
(Island Trading) Tj
ET
1. g
0.78 G
0.2834645669291339 w
305.9382208588956473 699.1970866141732586 156.283159509202477 -21.4999999999999964 re
B
BT
/F9 10 Tf
11.5 TL
0.314 g
310.9382208588956473 685.6970866141732586 Td
(Helen Bennett) Tj
ET
1. g
0.78 G
0.2834645669291339 w
462.2213803680980959 699.1970866141732586 93.0586196319018342 -21.4999999999999964 re
B
BT
/F9 10 Tf
11.5 TL
0.314 g
467.2213803680980959 685.6970866141732586 Td
(UK) Tj
ET
1. g
0.78 G
0.2834645669291339 w
40. 677.6970866141732586 265.9382208588956473 -21.4999999999999964 re
B
BT
/F9 10 Tf
11.5 TL
0.314 g
45. 664.1970866141732586 Td
(Laughing Bacchus Winecellars) Tj
ET
1. g
0.78 G
0.2834645669291339 w
305.9382208588956473 677.6970866141732586 156.283159509202477 -21.4999999999999964 re
B
BT
/F9 10 Tf
11.5 TL
0.314 g
310.9382208588956473 664.1970866141732586 Td
(Yoshi Tannamuri) Tj
ET
1. g
0.78 G
0.2834645669291339 w
462.2213803680980959 677.6970866141732586 93.0586196319018342 -21.4999999999999964 re
B
BT
/F9 10 Tf
11.5 TL
0.314 g
467.2213803680980959 664.1970866141732586 Td
(Canada) Tj
ET
1. g
0.78 G
0.2834645669291339 w
40. 656.1970866141732586 265.9382208588956473 -21.4999999999999964 re
B
BT
/F9 10 Tf
11.5 TL
0.314 g
45. 642.6970866141732586 Td
(Magazzini Alimentari Riuniti) Tj
ET
1. g
0.78 G
0.2834645669291339 w
305.9382208588956473 656.1970866141732586 156.283159509202477 -21.4999999999999964 re
B
BT
/F9 10 Tf
11.5 TL
0.314 g
310.9382208588956473 642.6970866141732586 Td
(Giovanni Rovelli) Tj
ET
1. g
0.78 G
0.2834645669291339 w
462.2213803680980959 656.1970866141732586 93.0586196319018342 -21.4999999999999964 re
B
BT
/F9 10 Tf
11.5 TL
0.314 g
467.2213803680980959 642.6970866141732586 Td
(Italy) Tj
ET
0.78 G
0. w
endstream
endobj
1 0 obj
<</Type /Pages
/Kids [3 0 R ]
/Count 1
>>
endobj
5 0 obj
<<
/Type /Font
/BaseFont /Helvetica
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
6 0 obj
<<
/Type /Font
/BaseFont /Helvetica-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
7 0 obj
<<
/Type /Font
/BaseFont /Helvetica-Oblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
8 0 obj
<<
/Type /Font
/BaseFont /Helvetica-BoldOblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
9 0 obj
<<
/Type /Font
/BaseFont /Courier
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
10 0 obj
<<
/Type /Font
/BaseFont /Courier-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
11 0 obj
<<
/Type /Font
/BaseFont /Courier-Oblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
12 0 obj
<<
/Type /Font
/BaseFont /Courier-BoldOblique
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
13 0 obj
<<
/Type /Font
/BaseFont /Times-Roman
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
14 0 obj
<<
/Type /Font
/BaseFont /Times-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
15 0 obj
<<
/Type /Font
/BaseFont /Times-Italic
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
16 0 obj
<<
/Type /Font
/BaseFont /Times-BoldItalic
/Subtype /Type1
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
>>
endobj
17 0 obj
<<
/Type /Font
/BaseFont /ZapfDingbats
/Subtype /Type1
/FirstChar 32
/LastChar 255
>>
endobj
18 0 obj
<<
/Type /Font
/BaseFont /Symbol
/Subtype /Type1
/FirstChar 32
/LastChar 255
>>
endobj
2 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
/F1 5 0 R
/F2 6 0 R
/F3 7 0 R
/F4 8 0 R
/F5 9 0 R
/F6 10 0 R
/F7 11 0 R
/F8 12 0 R
/F9 13 0 R
/F10 14 0 R
/F11 15 0 R
/F12 16 0 R
/F13 17 0 R
/F14 18 0 R
>>
/XObject <<
>>
>>
endobj
19 0 obj
<<
/Producer (jsPDF 2.4.0)
/CreationDate (D:20240904105942+05'30')
>>
endobj
20 0 obj
<<
/Type /Catalog
/Pages 1 0 R
/OpenAction [3 0 R /FitH null]
/PageLayout /OneColumn
>>
endobj
xref
0 21
0000000000 65535 f
0000004642 00000 n
0000006459 00000 n
0000000015 00000 n
0000000152 00000 n
0000004699 00000 n
0000004824 00000 n
0000004954 00000 n
0000005087 00000 n
0000005224 00000 n
0000005347 00000 n
0000005476 00000 n
0000005608 00000 n
0000005744 00000 n
0000005872 00000 n
0000005999 00000 n
0000006128 00000 n
0000006261 00000 n
0000006363 00000 n
0000006707 00000 n
0000006793 00000 n
trailer
<<
/Size 21
/Root 20 0 R
/Info 19 0 R
/ID [ <3A32A17A0E0AEAFDBC2A7A55641F52D9> <3A32A17A0E0AEAFDBC2A7A55641F52D9> ]
>>
startxref
6897
%%EOF

BIN
src/main/resources/static/images/bad-weather.png

After

Width: 512  |  Height: 512  |  Size: 36 KiB

BIN
src/main/resources/static/images/bt-logo.png

After

Width: 1255  |  Height: 199  |  Size: 80 KiB

BIN
src/main/resources/static/images/change.png

After

Width: 512  |  Height: 512  |  Size: 10 KiB

BIN
src/main/resources/static/images/chennai.jpg

After

Width: 225  |  Height: 228  |  Size: 82 KiB

BIN
src/main/resources/static/images/contract.png

After

Width: 512  |  Height: 512  |  Size: 26 KiB

BIN
src/main/resources/static/images/dog.png

After

Width: 512  |  Height: 512  |  Size: 30 KiB

BIN
src/main/resources/static/images/egov.jpg

After

Width: 600  |  Height: 450  |  Size: 32 KiB

BIN
src/main/resources/static/images/gcc.png

After

Width: 820  |  Height: 515  |  Size: 96 KiB

BIN
src/main/resources/static/images/gcc1.png

After

Width: 325  |  Height: 435  |  Size: 204 KiB

BIN
src/main/resources/static/images/menu.png

After

Width: 512  |  Height: 512  |  Size: 17 KiB

BIN
src/main/resources/static/images/message.png

After

Width: 512  |  Height: 512  |  Size: 16 KiB

BIN
src/main/resources/static/images/minus.png

After

Width: 512  |  Height: 512  |  Size: 17 KiB

BIN
src/main/resources/static/images/mosquito.png

After

Width: 512  |  Height: 512  |  Size: 31 KiB

BIN
src/main/resources/static/images/otp.png

After

Width: 1102  |  Height: 1020  |  Size: 234 KiB

BIN
src/main/resources/static/images/output-onlinepngtools.png

After

Width: 512  |  Height: 512  |  Size: 4.6 KiB

BIN
src/main/resources/static/images/phone-call.png

After

Width: 512  |  Height: 512  |  Size: 27 KiB

BIN
src/main/resources/static/images/plus.png

After

Width: 512  |  Height: 512  |  Size: 25 KiB

BIN
src/main/resources/static/images/portable-bathroom.png

After

Width: 512  |  Height: 512  |  Size: 13 KiB

BIN
src/main/resources/static/images/record.png

After

Width: 512  |  Height: 512  |  Size: 35 KiB

BIN
src/main/resources/static/images/recycle.png

After

Width: 512  |  Height: 512  |  Size: 29 KiB

BIN
src/main/resources/static/images/register.png

After

Width: 512  |  Height: 512  |  Size: 18 KiB

BIN
src/main/resources/static/images/ripon.jpg

After

Width: 1280  |  Height: 640  |  Size: 117 KiB

BIN
src/main/resources/static/images/road.png

After

Width: 512  |  Height: 512  |  Size: 33 KiB

BIN
src/main/resources/static/images/screenreader.png

After

Width: 512  |  Height: 512  |  Size: 9.7 KiB

BIN
src/main/resources/static/images/search.png

After

Width: 512  |  Height: 512  |  Size: 30 KiB

BIN
src/main/resources/static/images/sewage.png

After

Width: 512  |  Height: 512  |  Size: 16 KiB

BIN
src/main/resources/static/images/street-lamp.png

After

Width: 512  |  Height: 512  |  Size: 20 KiB

BIN
src/main/resources/static/images/tamil.jpg

After

Width: 529  |  Height: 470  |  Size: 138 KiB

BIN
src/main/resources/static/images/tsunami.png

After

Width: 512  |  Height: 512  |  Size: 52 KiB

BIN
src/main/resources/static/images/waste-bin.png

After

Width: 512  |  Height: 512  |  Size: 32 KiB

3
src/main/resources/static/js/invertcolor.js

@ -0,0 +1,3 @@
function invertColors() {
document.body.classList.toggle('inverted');
}

44
src/main/resources/static/js/screenreader.js

@ -0,0 +1,44 @@
// speech.js
let isSpeechEnabled = false; // Start with speech disabled
// Function to handle the speech synthesis
function speakText(text) {
if (isSpeechEnabled) {
const speech = new SpeechSynthesisUtterance(text);
speech.lang = 'en-US'; // Set language as needed
window.speechSynthesis.speak(speech);
}
}
// Function to add event listeners to all relevant elements for speech
function addSpeechListeners() {
const elementsToRead = document.querySelectorAll('label, button, input, h1, h2, h3, h4,h5,h6, p, .card-footer'); // Add any additional selectors as needed
elementsToRead.forEach(function(element) {
element.addEventListener('mouseover', function() {
// Check if it's an input field and read the placeholder if it exists
if (element.tagName.toLowerCase() === 'input') {
const placeholder = element.getAttribute('placeholder');
if (placeholder) {
speakText(placeholder.trim());
}
} else {
speakText(element.textContent.trim()); // Speak the element's text when hovered
}
});
});
}
document.addEventListener('DOMContentLoaded', function() {
addSpeechListeners(); // Add speech listeners when the document is loaded
// Add event listener to the toggle button
const toggleButton = document.getElementById('toggleSpeech');
toggleButton.addEventListener('click', function() {
isSpeechEnabled = !isSpeechEnabled; // Toggle the speech feature
// Update button text based on the state, preserving the image
const buttonText = isSpeechEnabled ? 'Turn Off Speech' : 'Turn On Speech';
toggleButton.innerHTML = `<img src="images/output-onlinepngtools.png" alt="Accessibility Icon" style="height: 30px;"> ${buttonText}`;
});
});

591
src/main/resources/templates/User/home.html

@ -0,0 +1,591 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Main Page</title>
<!--Google Font -->
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css"
integrity="sha512-Kc323vGBEqzTmouAECnVceyQqyqdsSiqLQISBL29aUW4U/M7pSPA/gEUZQqv1cwx4OnYxTxve5UMg5GT6L4JJg=="
crossorigin="anonymous" referrerpolicy="no-referrer" />
<!--Bootstrap CSS-->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script th:src="@{/js/invertcolor.js}"></script>
<style>
body {
font-family: 'Lato', sans-serif;
background-color: white;
}
body.inverted {
background-color: black;
color: white;
filter: invert(1);
}
.card {
border-radius: 15px;
border: none;
padding: 20px;
background-color: #f0f4ff;
text-align: center;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
display: flex;
flex-direction: column;
height: 100%;
/* Make sure cards take up full height of the column */
}
.card-body {
flex: 1;
/* Allow card-body to grow and take up available space */
}
.card-img {
width: 40px;
margin-bottom: 15px;
}
.card-title {
font-size: 1.2rem;
font-weight: bold;
}
.card-text {
color: #666;
margin-bottom: 20px;
}
.card-footer {
font-weight: bold;
color: #007bff;
display: flex;
align-items: center;
justify-content: center;
}
.card-footer i {
margin-left: 5px;
}
.row {
display: flex;
flex-wrap: wrap;
margin-bottom: 30px;
}
.col-md-4 {
display: flex;
/* Ensure columns use Flexbox to distribute space evenly */
padding: 0 15px;
/* Adjust padding to fit full width */
}
.container {
max-width: 1200px;
}
.container .row .col-md-4 {
padding: 0 15px;
/* Adjust padding to fit full width */
display: flex;
flex-direction: column;
}
.card {
flex-grow: 1;
/* Ensure all cards have the same height */
}
.container .row .col-md-12 {
padding: 0 15px;
}
.card-link {
text-decoration: none;
/* Remove the underline from the link */
color: inherit;
/* Inherit the text color */
display: block;
/* Make the link cover the entire card */
}
.card-link:hover .card {
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2);
/* Optional: add hover effect */
}
/* Style for reader button */
#reader-btn.active {
background-color: #28a745;
}
/*header css*/
.header {
background-color: #3b4858;
padding: 10px 20px;
display: flex;
align-items: center;
justify-content: space-between;
color: white;
}
.header .logo-left img {
height: 60px;
}
.header .title {
text-align: center;
flex-grow: 1;
}
.header .title h2 {
margin: 0;
font-size: 1.5rem;
}
.header .logos-right img {
height: 60px;
margin-left: 10px;
}
/*header buttons*/
.header {
display: flex;
align-items: center;
justify-content: space-between;
/* Space out the items within the header */
}
.header-buttons {
padding-left: 5px;
display: flex;
align-items: center;
gap: 10px;
/* Adjust spacing between buttons */
}
#reader-btn,
#invertColorBtn {
padding: 5px 10px;
font-size: 14px;
cursor: pointer;
}
/*for radio button style*/
.radio-group {
display: flex;
align-items: center;
/* Ensures all items are aligned to the center */
}
.radio-item {
display: flex;
align-items: center;
margin-right: 20px;
/* Adds space between each radio item */
}
.radio-item input[type="radio"] {
margin-right: 10px;
/* Adds space between the radio button and its label */
vertical-align: middle;
/* Ensures vertical alignment */
}
.radio-item label {
margin: 0;
/* Removes any default margins that might affect alignment */
}
</style>
</head>
<body>
<div th:insert="~{fragments/accessibility :: accessibility}"></div>
<!-- <div class="header">
<div class="logo-left">
<img src="images/gcc1.png" alt="Greater Chennai Corporation Logo">
</div>
<div class="header-buttons">
<button id="reader-btn" onclick="toggleReader()">Enable Reader</button>
<button id="invertColorBtn" onclick="invertColors()">Invert Colors</button>
</div>
<div class="title">
<h2>Public Grievance and Redressal System</h2>
</div>
<div class="logos-right">
<img src="images/tamil.jpg" alt="Tamil Nadu Logo">
<img src="images/bt-logo.png" style="width: 100px;height: 50px;" alt="bonton Logo">
</div>
</div>-->
<!-- Insert the header fragment -->
<div th:insert="~{fragments/header :: headerFragment}"></div>
<!--<button id="reader-btn" onclick="toggleReader()">Enable Reader</button>-->
<br>
<a href="https://chennaicorporation.gov.in/gcc/" class="btn btn-secondary" target="_blank" style="font-size: 17px;">
Back </i>
</a>
<!-- Cards Section -->
<div class="container mt-3">
<div id="loader" style="display: none; text-align: center;">
<img src="/pgr/images/Thin broken ring.gif" alt="Loading..." />
</div>
<!--<button id="invertColorBtn" onclick="invertColors()">Invert Colors</button>-->
<div class="row">
<div class="col-md-4">
<a href="/pgr/registercomplaints" class="card-link">
<div class="card content">
<div class="card-body">
<img src="/pgr/images/register.png" alt="register" class="card-img">
<div class="card-content">
<h5 class="card-title">Register Your<br> Complaints</h5>
<p class="card-text">Register Complaints<br> Via Internet</p>
</div>
</div>
<div class="card-footer">
Get Started <i class="fa fa-arrow-right"></i>
</div>
</div>
</a>
</div>
<div class="col-md-4">
<div class="card readable">
<div class="card-body">
<img src="/pgr/images/phone-call.png" alt="Phone" class="card-img">
<div class="card-content">
<h5 class="card-title">Register Complaint via Phone</h5>
<p class="card-text">Call 1913 to register your complaint.</p>
</div>
</div>
<div class="card-footer">
Call Now <i class="fa fa-arrow-right"></i>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card readable">
<div class="card-body">
<img src="/pgr/images/contract.png" alt="Paper" class="card-img">
<div class="card-content">
<h5 class="card-title">Complaint via Paper Form</h5>
<p class="card-text">Send your Grievance to<br><strong>The Commissioner,<br>Greater Chennai
Corporation,<br>Ripon Building, EVR Salai, Chennai - 600003.</strong></p>
</div>
</div>
</div>
</div>
</div>
<!-- Form to Check by Complaint Number -->
<div class="col-md-12">
<div class="card readable">
<div class="card-body">
<img src="/pgr/images/search.png" alt="Status" class="card-img">
<div class="card-content">
<h5 class="card-title">Check Your Complaint Status</h5>
<div class="form-group">
<input type="radio" id="c_number" name="check_method" value="c_number" checked
onchange="toggleInput()">
<label class="readable">Check By Complaint Number</label>
<input type="radio" id="m_number" name="check_method" value="m_number"
onchange="toggleInput()">
<label class="readable">Check By Mobile Number</label>
</div>
<!-- Input for Complaint Number -->
<div class="form-group" id="complaint-number-input">
<input type="text" class="form-control" id="complaint-number"
placeholder="Enter Complaint Number">
</div>
<!-- Input for Mobile Number (hidden by default) -->
<div class="form-group" id="complaint-mobile-input" style="display: none;">
<input type="text" class="form-control" id="complaint-mobile" minlength="10" maxlength="10"
placeholder="Enter Mobile Number">
</div>
</div>
</div>
<div class="card-footer">
<!-- Button for Complaint Number -->
<button class="btn btn-danger" id="check-now-btn">Check Now <i
class="fa fa-arrow-right"></i></button>
<!-- Button for Mobile Number (hidden by default) -->
<button class="btn btn-primary readable" id="check-mobile-btn" style="display: none;">Check Now <i
class="fa fa-arrow-right"></i></button>
</div>
</div>
</div>
<br>
<br>
<br>
<br>
<br>
<br>
<!-- Form to Check by Mobile Number -->
<!--<div class="col-md-6">
<div class="card readable">
<div class="card-body">
<img src="images/search.png" alt="Status" class="card-img">
<div class="card-content">
<h5 class="card-title">Check Your Complaint Status</h5>
<div class="form-group">
<label class="readable">Check By Mobile Number</label>
</div>
<div class="form-group">
<input type="text" class="form-control" id="complaint-mobile"
placeholder="Enter Mobile Number">
</div>
</div>
</div>
<div class="card-footer">
<button class="btn btn-primary readable" id="check-mobile-btn">Check Now <i
class="fa fa-arrow-right"></i></button>
</div>
</div>
</div>-->
</div>
<div class="modal fade" id="complaintDetailsModal" tabindex="-1" role="dialog"
aria-labelledby="complaintDetailsLabel" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header" style="background-color: #3c4959;color: white;">
<h5 class="modal-title" id="complaintDetailsLabel">Complaint Details</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="color: white;">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<table class="table">
<thead style="background-color: #3c4959;color: white;">
<tr>
<th>Complaint Number</th>
<th>Complaint Type</th>
<th>View</th> <!-- New column for the eye icon -->
</tr>
</thead>
<tbody>
<!-- Dynamic rows will be appended here by JavaScript -->
</tbody>
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal"
style="background-color:#3c4959 ;">Close</button>
</div>
</div>
</div>
</div>
<div th:insert="~{fragments/footer :: footerFragment}"></div>
<!-- Replace Slim jQuery with Full jQuery -->
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<!-- Popper.js (for Bootstrap tooltips, popovers, etc.) -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script>
<!-- Bootstrap JS -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<!-- Font Awesome for Icons -->
<script src="https://kit.fontawesome.com/a076d05399.js"></script>
<script>
$(document).ready(function () {
// Check by complaint number
$('#check-now-btn').click(function () {
var complaintNumber = $('#complaint-number').val();
if (complaintNumber) {
window.location.href = '/pgr/checklistofficer?complaintno=' + encodeURIComponent(complaintNumber);
} else {
alert('Please enter a complaint number.');
}
});
});
function toggleInput() {
const checkByComplaint = document.getElementById('c_number').checked;
const complaintInput = document.getElementById('complaint-number-input');
const mobileInput = document.getElementById('complaint-mobile-input');
const checkNowBtn = document.getElementById('check-now-btn');
const checkMobileBtn = document.getElementById('check-mobile-btn');
if (checkByComplaint) {
complaintInput.style.display = 'block';
checkNowBtn.style.display = 'block';
mobileInput.style.display = 'none';
checkMobileBtn.style.display = 'none';
} else {
complaintInput.style.display = 'none';
checkNowBtn.style.display = 'none';
mobileInput.style.display = 'block';
checkMobileBtn.style.display = 'block';
}
}
// ✅ Mobile number validation as user types
$('#complaint-mobile').on('input', function () {
let value = this.value;
// Allow only digits
value = value.replace(/[^0-9]/g, '');
// Prevent starting with 0
if (value.startsWith('0')) {
value = '';
//showSnackbar("Mobile number cannot start with 0.");
}
// Limit to 10 digits
if (value.length > 10) {
value = value.slice(0, 10);
}
this.value = value;
// Check for all repeating digits
if (/^(\d)\1{9}$/.test(value)) {
$(this).addClass('is-invalid');
showSnackbar("Mobile number cannot be all repeating digits.");
} else {
$(this).removeClass('is-invalid');
}
});
$(document).ready(function () {
// Trigger modal and load complaint list based on mobile number
$('#check-mobile-btn').on('click', function () {
const mobileNumber = $('#complaint-mobile').val(); // Get the entered mobile number
if (mobileNumber === "") {
alert("Please enter a mobile number.");
return;
}
if (mobileNumber.length !== 10 || !/^\d{10}$/.test(mobileNumber) || mobileNumber.startsWith('0') || /^(\d)\1{9}$/.test(mobileNumber)) {
alert("Enter a valid 10-digit mobile number.");
return;
}
$('#loader').show();
// AJAX request to fetch complaint details by mobile number
$.ajax({
url: '/pgr/api/getComplaintDetailsByMobile',
method: 'GET',
data: {mobileNo: mobileNumber},
success: function (response) {
$('#loader').hide();
const complaintList = response[0]?.ComplaintListHistory; // Assuming data is inside ComplaintListHistory
// Clear the table before adding new rows
const tableBody = $('#complaintDetailsModal tbody');
tableBody.empty();
// Check if there are complaints
if (complaintList && complaintList.length > 0) {
// Loop through each complaint and add to the table
complaintList.forEach(function (complaint) {
const complaintId = complaint.complaintid || 'N/A'; // Fallback to N/A if complaintid is null
const complaintType = complaint.complainttype || 'N/A';
const newRow = `
<tr>
<td>${complaintId}</td>
<td>${complaintType}</td>
<td>
<button class="btn btn-link view-complaint" data-complaintid="${complaintId}">
<i style="color:#3c4959" class="fa fa-eye"></i>
</button>
</td>
</tr>`;
tableBody.append(newRow); // Append the new row to the table
});
} else {
// No complaints found for the mobile number
tableBody.append('<tr><td colspan="2">No complaints found for this mobile number.</td></tr>');
}
// Display the modal after fetching the data
$('#complaintDetailsModal').modal('show');
},
error: function (error) {
console.log('Error fetching complaints:', error);
alert('There was an error fetching the complaint details. Please try again.');
$('#loader').hide();
}
});
});
// Event delegation to handle click on dynamically generated eye icons
$(document).on('click', '.view-complaint', function () {
var complaintId = $(this).data('complaintid');
if (complaintId) {
// Redirect to the complaint details page using complaintId
window.location.href = '/pgr/checklistofficer?complaintno=' + encodeURIComponent(complaintId);
} else {
alert('Complaint ID not found.');
}
});
});
</script>
<script th:src="@{/js/screenreader.js}"></script>
</body>
</html>

0
src/main/resources/templates/User/kin.html

2432
src/main/resources/templates/User/registercomplaints.html
File diff suppressed because it is too large
View File

615
src/main/resources/templates/checklistofficer/checklistofficer.html

@ -0,0 +1,615 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>CheckList User</title>
<!-- Google Font -->
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap" rel="stylesheet">
<!-- Bootstrap CSS -->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet/dist/leaflet.js"></script>
<style>
/*rating style for css*/
.rating {
direction: rtl;
display: inline-flex;
font-size: 24px;
}
.rating input {
display: none;
}
.rating label {
color: #ddd;
cursor: pointer;
margin: 0;
}
.rating input:checked~label {
color: #414f69;
}
.rating label:hover,
.rating label:hover~label {
color: #414f69;
}
/* Style for resizing content */
.resizable-content {
font-size: medium;
transition: font-size 0.3s ease;
}
.comment-table {
width: 100%;
border-collapse: collapse;
}
.comment-table td {
padding: 0.5rem;
border: 1px solid #ddd;
/* Light border color */
}
.comment-table td:first-child {
width: 25%;
/* Adjust as needed for label column width */
font-weight: bold;
}
.comment-table td:nth-child(2) {
width: 75%;
/* Adjust as needed for value column width */
}
</style>
</head>
<body>
<!-- Insert the header fragment -->
<div th:insert="~{fragments/header :: headerFragment}"></div>
<div class="container mt-4">
<!-- Loader GIF -->
<div id="loader" style="display: none; text-align: center;">
<img src="images/Thin broken ring.gif" alt="Loading..." />
</div>
<div class="mt-1">
<div class="row align-items-center justify-content-center">
<h4 class="title resizable-content" style="color: #414f69;">Check Complaint Status</h4>
</div>
</div>
<!-- Card Section -->
<div class="card p-3 resizable-content" style="margin-bottom: 8px;color: #414f69;">
<div class="card mb-3 resizable-content">
<div class="card-header text-white" style="background-color: #414f69;">1. Complaining Person's Details
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
<label>Complainant ID:</label>
<input type="text" id="complaintid" class="form-control" value="" disabled>
</div>
<div class="col-md-6">
<label>Complainant Mobile Number:</label>
<input type="text" id="complaint-mobile-number" class="form-control" value="" disabled>
</div>
<div class="col-md-6">
<label>Complainant Name:</label>
<input type="text" id="complaint-customer-name" class="form-control" value="" disabled>
</div>
</div>
</div>
</div>
<div class="card mb-3 resizable-content">
<div class="card-header text-white" style="background-color: #414f69;">2. Complaint Location Details
</div>
<div class="card-body">
<div class="row">
<div class="col-md-4">
<label>Complainant Street:</label>
<input type="text" id="street" class="form-control" disabled>
</div>
<div class="col-md-4">
<label>Complainant Zone:</label>
<input type="text" class="form-control" id="zone" disabled>
</div>
<div class="col-md-4">
<label>Complainant Ward:</label>
<input type="text" class="form-control" id="ward" disabled>
</div>
<div class="col-md-4">
<label>Complainant Area:</label>
<input type="text" class="form-control" id="area" disabled>
</div>
<div class="col-md-4">
<label>Complainant Locality:</label>
<input type="text" class="form-control" id="location" disabled>
</div>
</div>
</div>
</div>
<div class="card resizable-content">
<div class="card-header text-white" style="background-color: #414f69;">3. Complaint Type</div>
<div class="card-body">
<div class="row">
<div class="col-md-4">
<label>Complainant Type:</label>
<input type="text" class="form-control" id="complaintType" disabled>
</div>
<!--<div class="col-md-4">
Complainant Sub-Type:
<input type="text" class="form-control" disabled>
</div>
<div class="col-md-4">
Complainant Title:
<input type="text" class="form-control" disabled>
</div>-->
<div class="col-md-12">
<label>Complainant Description:</label>
<input type="text" class="form-control" id="complaintdesc" disabled>
</div>
</div>
</div>
</div>
</div>
<div class="card mb-3 resizable-content">
<div class="card-header text-white" style="background-color: #414f69;">Complaint Action</div>
<div class="card-body">
<div class="row">
<div class="col-md-4">
<label>Complaint Closed Date:</label>
<input type="text" class="form-control" id="commentDate" disabled>
</div>
<div class="col-md-4">
<label>Official Name:</label>
<input type="text" class="form-control" id="commentuser" disabled>
</div>
<div class="col-md-4">
<label>Status:</label>
<input type="text" class="form-control" id="statusshow"
style="background-color: #414f69;color: white;" disabled>
</div>
</div>
</div>
</div>
<div class="card mb-3 resizable-content">
<div class="card-header text-white" style="background-color: #414f69;">Complaint Action History</div>
<div class="card-body">
<div id="comments-container"></div> <!-- Container for comments -->
</div>
</div>
<div id="complaintActionDiv" class="card mb-3 resizable-content">
<div class="card-header text-white" style="background-color: #414f69;">Update Complaint</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
<label>Change Complaint Status:</label>
<select class="form-control" name="complaintStatusID" id="complaintStatus">
</select>
</div>
<div class="col-md-6" id="img" style="display: none;">
<label>Photo:</label>
<input type="file" class="form-control" id="photo">
</div>
</div>
<div class="row">
<div class="col-md-12">
<label>Details of Complaint:</label>
<textarea class="form-control" id="othercomplaint-details" rows="3"
placeholder="Enter complaint details" maxlength="400" required></textarea>
</div>
</div>
<div class="row align-items-center justify-content-center" style="margin-top: 5px;">
<button class="btn btn-sm" style="background-color: #414f69;color: white;">Submit</button>
</div>
</div>
</div>
<!--loader-->
<div id="loaders" style="display: none; text-align: center; margin-bottom: 50px;">
<img src="images/Thin broken ring.gif" alt="Loading..." />
</div>
<!--loader-->
</div>
<!-- Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script>
</script>
<!-- JavaScript to handle button clicks -->
<script>
// /api/getComplaintDetailsbyId
$(document).ready(function () {
var urlParams = new URLSearchParams(window.location.search);
var complaintNo = urlParams.get('complaintno');
if (complaintNo) {
$('#loader').show();
$.ajax({
url: '/pgr/api/getComplaintDetailsbyId', // Replace with your actual API endpoint
type: 'GET',
data: {complaintid: complaintNo},
success: function (response) {
console.log('API response:', response);
$('#loader').hide();
if (Array.isArray(response) && response.length > 0) {
var complaintListHistory = response[0].ComplaintListHistory;
if (Array.isArray(complaintListHistory) && complaintListHistory.length > 0) {
var complaintDetails = complaintListHistory[0];
// Decode HTML entities before populating fields
function decodeHtmlEntities(str) {
var txt = document.createElement('textarea');
txt.innerHTML = str;
return txt.value;
}
// Populate other form fields
document.getElementById("complaintid").value = complaintDetails.complaintid || '';
document.getElementById("complaint-mobile-number").value = complaintDetails.CustomerMobile || '';
document.getElementById("complaint-customer-name").value = complaintDetails.CustomerName || '';
document.getElementById("street").value = complaintDetails.Street || '';
document.getElementById("zone").value = complaintDetails.Zone || '';
document.getElementById("ward").value = complaintDetails.Division || '';
document.getElementById("area").value = complaintDetails.Area || '';
document.getElementById("location").value = complaintDetails.Location || '';
document.getElementById("complaintType").value = complaintDetails.complainttype || '';
// Decode and populate complaint description
document.getElementById("complaintdesc").value = decodeHtmlEntities(complaintDetails.complaintdetails || '');
document.getElementById("commentDate").value = complaintDetails.complaintcloseddate || '';
document.getElementById("commentuser").value = complaintDetails.Officialname || '';
let complaintCurrentStatus = complaintDetails.complaintcurrentstatus || '';
// Get the dropdown element
let complaintStatusDropdown = document.getElementById("complaintStatus");
// Function to add options to the select element
function addOption(text, value) {
let option = document.createElement("option");
option.text = text;
option.value = value;
complaintStatusDropdown.add(option);
}
// Check the current status and add the respective options
if (complaintCurrentStatus === 'REGISTERED') {
addOption('REGISTERED', '2');
addOption('WITHDRAWN', '8');
} else if (complaintCurrentStatus === 'WITHDRAWN') {
addOption('WITHDRAWN', '8');
addOption('REOPENED', '9');
}
else if (complaintCurrentStatus === 'CLOSE') {
addOption('CLOSE', '10');
addOption('REOPENED', '9');
}
else if (complaintCurrentStatus === 'REOPENED') {
addOption('REOPENED', '9');
addOption('WITHDRAWN', '8');
}
else if (complaintCurrentStatus === 'FINAL_CLOSURE') {
document.getElementById('complaintActionDiv').style.display = 'none';
//addOption('FINAL_CLOSURE', '11');
//addOption('REOPENED', '9');
}
document.getElementById("statusshow").value = complaintDetails.complaintcurrentstatus || '';
// Handle nested Comments array
if (Array.isArray(complaintDetails.Comments) && complaintDetails.Comments.length > 0) {
var commentsContainer = $('#comments-container');
commentsContainer.empty(); // Clear the container
var comments = complaintDetails.Comments;
var lastComment = comments[comments.length - 1];
// Decode HTML entities for last comment
function decodeHtmlEntities(str) {
var txt = document.createElement('textarea');
txt.innerHTML = str;
return txt.value;
}
// Convert image URL to Base64
function convertImageToBase64(url, callback) {
var xhr = new XMLHttpRequest();
xhr.onload = function () {
var reader = new FileReader();
reader.onloadend = function () {
callback(reader.result);
};
reader.readAsDataURL(xhr.response);
};
xhr.open('GET', url);
xhr.responseType = 'blob';
xhr.send();
}
// Compress the Base64 image using canvas
function compressImage(base64Str, callback, quality = 0.7, maxWidth = 800) {
var img = new Image();
img.onload = function () {
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var width = img.width;
var height = img.height;
// Adjust the image size for compression
if (width > maxWidth) {
height *= maxWidth / width;
width = maxWidth;
}
canvas.width = width;
canvas.height = height;
// Draw the image onto the canvas
ctx.drawImage(img, 0, 0, width, height);
// Convert the canvas back to Base64 with the specified quality (compression)
var compressedBase64 = canvas.toDataURL('image/jpeg', quality);
callback(compressedBase64);
};
img.src = base64Str;
}
// Handle last comment
var userImageHtml = '';
if (Array.isArray(lastComment.userimages) && lastComment.userimages.length > 0) {
var imageUrl = lastComment.userimages[0].Comp_Image;
if (imageUrl && imageUrl !== 'null') {
convertImageToBase64(imageUrl, function (base64Image) {
compressImage(base64Image, function (compressedImage) {
userImageHtml = `
<div class="col-md-12">
<img src="${compressedImage}" alt="User Image" class="img-fluid">
</div>`;
commentsContainer.append(lastCommentHtml);
});
});
}
}
var lastCommentHtml = `
<div class="row mb-3">
<table class="comment-table">
<tr>
<td style="color:#3c4959">User:</td>
<td>${lastComment.user || ''}</td>
</tr>
<tr>
<td style="color:#3c4959">Message:</td>
<td>${lastComment.message || ''}</td>
</tr>
<tr>
<td style="color:#3c4959">Comment Date:</td>
<td>${lastComment.comment_date || ''}</td>
</tr>
${userImageHtml}
</table>
</div>
<hr>`;
// Add the comment section with the compressed Base64 image
commentsContainer.append(lastCommentHtml);
// Add dropdown button for other comments
if (comments.length > 1) {
var dropdownHtml = `
<button id="show-all-comments" class="btn mt-3" style="margin-bottom: 10px;background-color: #3c4959; color: white;">Show All Comments</button>
<div id="all-comments" style="display:none;">`;
// Add all comments to dropdown
comments.forEach(function (comment, index) {
if (index < comments.length - 1) { // Skip the last comment
var userImageHtml = '';
if (Array.isArray(comment.userimages) && comment.userimages.length > 0) {
var imageUrl = comment.userimages[0].Comp_Image;
if (imageUrl && imageUrl !== 'null') {
convertImageToBase64(imageUrl, function (base64Image) {
compressImage(base64Image, function (compressedImage) {
userImageHtml = `
<div class="col-md-12">
<img src="${compressedImage}" alt="User Image" class="img-fluid">
</div>`;
});
});
}
}
dropdownHtml += `
<div class="row mb-3">
<table class="comment-table">
<tr>
<td style="color:#3c4959">User:</td>
<td>${comment.user || ''}</td>
</tr>
<tr>
<td style="color:#3c4959">Message:</td>
<td>${comment.message || ''}</td>
</tr>
<tr>
<td style="color:#3c4959">Comment Date:</td>
<td>${comment.comment_date || ''}</td>
</tr>
${userImageHtml}
</table>
</div>
<hr>`;
}
});
dropdownHtml += '</div>';
commentsContainer.append(dropdownHtml);
// Toggle display of all comments
$('#show-all-comments').click(function () {
$('#all-comments').toggle();
$(this).text($(this).text() === 'Show All Comments' ? 'Hide Comments' : 'Show All Comments');
});
}
} else {
$('#comments-container').html('<p>No comments found.</p>');
}
} else {
alert('No complaint details found in ComplaintListHistory.');
}
} else {
alert('Unexpected response structure.');
}
},
error: function (xhr, status, error) {
console.log('Error:', xhr.responseText);
alert('An error occurred while fetching complaint details.');
$('#loader').hide();
}
});
} else {
alert('No complaint number provided.');
}
});
$(document).ready(function () {
$('#complaintStatus').change(function () {
if ($(this).val() == '9') { // Show the image field if 'REOPENED' is selected
$('#img').show();
} else {
$('#img').hide();
}
});
$('.btn').click(function (e) {
e.preventDefault();
var complaintId = $('#complaintid').val();
var complaintStatus = $('#complaintStatus').val();
var message = $('#othercomplaint-details').val();
// Validate "Details of Complaint" field
if (message.trim() === "") {
Swal.fire({
title: 'Validation Error!',
text: 'Please enter the details of the complaint.',
icon: 'warning',
confirmButtonText: 'OK'
});
return;
}
if (complaintStatus == '0') {
Swal.fire({
title: 'Validation Error!',
text: 'Please select a valid complaint status.',
icon: 'warning',
confirmButtonText: 'OK'
});
return;
}
var formData = new FormData();
formData.append("ComplaintId", complaintId);
formData.append("Message", message);
formData.append("Status", complaintStatus);
var imageFile = $('#photo')[0].files[0];
if (imageFile) {
formData.append("Comp_Image", imageFile);
}
$('#loaders').show();
$.ajax({
url: '/pgr/api/updateComplaint',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function (response) {
$('#loaders').hide();
console.log(imageFile, complaintId, message, complaintStatus);
Swal.fire({
title: 'Success!',
text: 'Complaint updated successfully.',
icon: 'success',
confirmButtonText: 'OK'
}).then((result) => {
if (result.isConfirmed) {
window.location.href = 'home';
}
});
},
error: function (xhr, status, error) {
console.error('Error updating complaint:', error);
$('#loaders').hide();
let errorMessage = xhr.responseText ? xhr.responseText : 'An error occurred while updating the complaint.';
Swal.fire({
title: 'Error!',
text: errorMessage,
icon: 'error',
confirmButtonText: 'OK'
});
}
});
});
});
</script>
</body>
</html>

164
src/main/resources/templates/fragments/accessibility.html

@ -0,0 +1,164 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<base th:href="${baseURL}" />
</head>
<body>
<div th:fragment="accessibility">
<!-- accessibility panel -->
<link rel="stylesheet"
href="https://img1.digitallocker.gov.in/ux4g/UX4G-CDN-accessibility/css/accesibility-style-v2.1.css">
<div class="uwaw uw-light-theme gradient-head uwaw-initial paid_widget" id="uw-main">
<div class="relative second-panel"><h3>Accessibility options by Bonton.</h3>
<div class="uwaw-close" onclick="closeMain()"></div>
</div>
<div class="uwaw-body">
<div class="h-scroll">
<div class="uwaw-features">
<div class="uwaw-features__item reset-feature" id="featureItem_sp">
<button id="speak" class="uwaw-features__item__i"
data-uw-reader-content="Enable the UserWay screen reader"
aria-label="Enable the UserWay screen reader" aria-pressed="false"><span
class="uwaw-features__item__icon"> <span
class="ux4g-icon icon-speaker"> </span> </span> <span
class="uwaw-features__item__name">Text To Speech</span> <span
class="tick-active uwaw-features__item__enabled reset-tick" id="tickIcon_sp"
style="display: none"> </span></button>
</div>
<div class="uwaw-features__item reset-feature" id="featureItem">
<button id="btn-s9" class="uwaw-features__item__i"
data-uw-reader-content="Enable the UserWay screen reader"
aria-label="Enable the UserWay screen reader" aria-pressed="false"><span
class="uwaw-features__item__icon"> <span
class="ux4g-icon icon-bigger-text"> </span> </span><span class="uwaw-features__item__name">Bigger Text</span>
<div class="uwaw-features__item__steps reset-steps" id="featureSteps">
<!-- Steps span tags will be dynamically added here --> </div>
<span class="tick-active uwaw-features__item__enabled reset-tick" id="tickIcon"
style="display: none"> </span></button>
</div>
<div class="uwaw-features__item reset-feature" id="featureItem-st">
<button id="btn-small-text" class="uwaw-features__item__i"
data-uw-reader-content="Enable the UserWay screen reader"
aria-label="Enable the UserWay screen reader" aria-pressed="false"><span
class="uwaw-features__item__icon"> <span
class="ux4g-icon icon-small-text"> </span> </span><span class="uwaw-features__item__name">Small Text</span>
<div class="uwaw-features__item__steps reset-steps" id="featureSteps-st">
<!-- Steps span tags will be dynamically added here --> </div>
<span class="tick-active uwaw-features__item__enabled reset-tick" id="tickIcon-st"
style="display: none"> </span></button>
</div>
<div class="uwaw-features__item reset-feature" id="featureItem-lh">
<button id="btn-s12" class="uwaw-features__item__i"
data-uw-reader-content="Enable the UserWay screen reader"
aria-label="Enable the UserWay screen reader" aria-pressed="false"><span
class="uwaw-features__item__icon"> <span
class="ux4g-icon icon-line-hight"> </span> </span> <span
class="uwaw-features__item__name">Line Height</span>
<div class="uwaw-features__item__steps reset-steps" id="featureSteps-lh">
<!-- Steps span tags will be dynamically added here --> </div>
<span class="tick-active uwaw-features__item__enabled reset-tick" id="tickIcon-lh"
style="display: none"> </span></button>
</div>
<div class="uwaw-features__item reset-feature" id="featureItem-ht">
<button id="btn-s10" onclick="highlightLinks()" class="uwaw-features__item__i"
data-uw-reader-content="Enable the UserWay screen reader"
aria-label="Enable the UserWay screen reader" aria-pressed="false"><span
class="uwaw-features__item__icon"> <span
class="ux4g-icon icon-highlight-links"> </span> </span> <span
class="uwaw-features__item__name">Highlight Links</span> <span
class="tick-active uwaw-features__item__enabled reset-tick" id="tickIcon-ht"
style="display: none"> </span></button>
</div>
<div class="uwaw-features__item reset-feature" id="featureItem-ts">
<button id="btn-s13" onclick="increaseAndReset()" class="uwaw-features__item__i"
data-uw-reader-content="Enable the UserWay screen reader"
aria-label="Enable the UserWay screen reader" aria-pressed="false"><span
class="uwaw-features__item__icon"> <span
class="ux4g-icon icon-text-spacing"> </span> </span> <span
class="uwaw-features__item__name">Text Spacing</span>
<div class="uwaw-features__item__steps reset-steps" id="featureSteps-ts">
<!-- Steps span tags will be dynamically added here --> </div>
<span class="tick-active uwaw-features__item__enabled reset-tick" id="tickIcon-ts"
style="display: none"> </span></button>
</div>
<div class="uwaw-features__item reset-feature" id="featureItem-df">
<button id="btn-df" onclick="toggleFontFeature()" class="uwaw-features__item__i"
data-uw-reader-content="Enable the UserWay screen reader"
aria-label="Enable the UserWay screen reader" aria-pressed="false"><span
class="uwaw-features__item__icon"> <span
class="ux4g-icon icon-dyslexia-font"> </span> </span> <span
class="uwaw-features__item__name">Dyslexia Friendly</span> <span
class="tick-active uwaw-features__item__enabled reset-tick" id="tickIcon-df"
style="display: none"> </span></button>
</div>
<div class="uwaw-features__item reset-feature" id="featureItem-hi">
<button id="btn-s11" onclick="toggleImages()" class="uwaw-features__item__i"
data-uw-reader-content="Enable the UserWay screen reader"
aria-label="Enable the UserWay screen reader" aria-pressed="false"><span
class="uwaw-features__item__icon"> <span
class="ux4g-icon icon-hide-images"> </span> </span> <span
class="uwaw-features__item__name">Hide Images</span> <span
class="tick-active uwaw-features__item__enabled reset-tick" id="tickIcon-hi"
style="display: none"> </span></button>
</div>
<div class="uwaw-features__item reset-feature" id="featureItem-Cursor">
<button id="btn-cursor" onclick="toggleCursorFeature()" class="uwaw-features__item__i"
data-uw-reader-content="Enable the UserWay screen reader"
aria-label="Enable the UserWay screen reader" aria-pressed="false"><span
class="uwaw-features__item__icon"> <span
class="ux4g-icon icon-cursor"> </span> </span> <span
class="uwaw-features__item__name">Cursor</span> <span
class="tick-active uwaw-features__item__enabled reset-tick" id="tickIcon-cursor"
style="display: none"> </span></button>
</div>
<div class="uwaw-features__item reset-feature" id="featureItem-ht-dark">
<button id="dark-btn" class="uwaw-features__item__i"
data-uw-reader-content="Enable the UserWay screen reader"
aria-label="Enable the UserWay screen reader" aria-pressed="false"><span
class="uwaw-features__item__name"> <span class="light_dark_icon"> <input
type="checkbox" class="light_mode uwaw-featugres__item__i" id="checkbox"/> <label
for="checkbox" class="checkbox-label"> <!-- <i class="fas fa-moon-stars"></i> --> <i
class="fas fa-moon-stars"> <span
class="ux4g-icon icon-moon"></span> </i> <i
class="fas fa-sun"> <span class="ux4g-icon icon-sun"></span> </i> <span
class="ball"></span> </label> </span> <span
class="uwaw-features__item__name">Light-Dark</span> </span> <span
class="tick-active uwaw-features__item__enabled reset-tick" id="tickIcon-ht-dark"
style="display: none; pointer-events: none"> </span></button>
</div> <!-- Invert Colors Widget -->
<div class="uwaw-features__item reset-feature" id="featureItem-ic">
<button id="btn-invert" class="uwaw-features__item__i"
data-uw-reader-content="Enable the UserWay screen reader"
aria-label="Enable the UserWay screen reader" aria-pressed="false"><span
class="uwaw-features__item__icon"> <span
class="ux4g-icon icon-invert"> </span> </span> <span
class="uwaw-features__item__name">Invert Colors</span> <span
class="tick-active uwaw-features__item__enabled reset-tick" id="tickIcon-ic"
style="display: none"> </span></button>
</div>
</div>
</div> <!-- Reset Button --> </div>
<div class="reset-panel"> <!-- copyright accessibility bar -->
<div class="copyrights-accessibility">
<button class="btn-reset-all" id="reset-all" onclick="resetAll()"><span class="reset-icon"> </span> <span
class="reset-btn-text">Reset All Settings</span></button>
<a href="https://www.ux4g.gov.in" target="_blank" class="copyright-text" contenteditable="false"
style="cursor: pointer;"> <span
class="uwaw-features__item__name ux4g-copy ux4g-copyright">Created by Bonton</span> </a></div>
</div>
</div>
<button id="uw-widget-custom-trigger" class="uw-widget-custom-trigger" aria-label="Accessibility Widget"
data-uw-trigger="true" aria-haspopup="dialog" style="margin-bottom: 50px;"><img
src="data:image/svg+xml,%0A%3Csvg width='32' height='32' viewBox='0 0 32 32' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_1_1506)'%3E%3Cpath d='M16 7C15.3078 7 14.6311 6.79473 14.0555 6.41015C13.4799 6.02556 13.0313 5.47894 12.7664 4.83939C12.5015 4.19985 12.4322 3.49612 12.5673 2.81719C12.7023 2.13825 13.0356 1.51461 13.5251 1.02513C14.0146 0.535644 14.6383 0.202301 15.3172 0.0672531C15.9961 -0.0677952 16.6999 0.00151652 17.3394 0.266423C17.9789 0.53133 18.5256 0.979934 18.9101 1.55551C19.2947 2.13108 19.5 2.80777 19.5 3.5C19.499 4.42796 19.1299 5.31762 18.4738 5.97378C17.8176 6.62994 16.928 6.99901 16 7Z' fill='white'/%3E%3Cpath d='M27 7.05L26.9719 7.0575L26.9456 7.06563C26.8831 7.08313 26.8206 7.10188 26.7581 7.12125C25.595 7.4625 19.95 9.05375 15.9731 9.05375C12.2775 9.05375 7.14313 7.67875 5.50063 7.21188C5.33716 7.14867 5.17022 7.09483 5.00063 7.05063C3.81313 6.73813 3.00063 7.94438 3.00063 9.04688C3.00063 10.1388 3.98188 10.6588 4.9725 11.0319V11.0494L10.9238 12.9081C11.5319 13.1413 11.6944 13.3794 11.7738 13.5856C12.0319 14.2475 11.8256 15.5581 11.7525 16.0156L11.39 18.8281L9.37813 29.84C9.37188 29.87 9.36625 29.9006 9.36125 29.9319L9.34688 30.0112C9.20188 31.0206 9.94313 32 11.3469 32C12.5719 32 13.1125 31.1544 13.3469 30.0037C13.5813 28.8531 15.0969 20.1556 15.9719 20.1556C16.8469 20.1556 18.6494 30.0037 18.6494 30.0037C18.8838 31.1544 19.4244 32 20.6494 32C22.0569 32 22.7981 31.0162 22.6494 30.0037C22.6363 29.9175 22.6206 29.8325 22.6019 29.75L20.5625 18.8294L20.2006 16.0169C19.9387 14.3788 20.1494 13.8375 20.2206 13.7106C20.2225 13.7076 20.2242 13.7045 20.2256 13.7013C20.2931 13.5763 20.6006 13.2963 21.3181 13.0269L26.8981 11.0763C26.9324 11.0671 26.9662 11.0563 26.9994 11.0438C27.9994 10.6688 28.9994 10.15 28.9994 9.04813C28.9994 7.94625 28.1875 6.73813 27 7.05Z' fill='white'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_1_1506'%3E%3Crect width='32' height='32' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A"><span>Accessibility Options</span>
</button><!-- accessibility panel end-->
<script src="https://img1.digitallocker.gov.in/ux4g/UX4G-CDN-accessibility/js/weights-v1.js"></script>
<script>
document.getElementById('uw-widget-custom-trigger2').addEventListener('click', function() { openMain(); });
</script>
</div>
</body>
</html>

56
src/main/resources/templates/fragments/footer.html

@ -0,0 +1,56 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<div th:fragment="footerFragment" class="footer">
<meta charset="UTF-8">
<title>Footer Fragment</title>
<style>
.footer {
background-color: #414f69;
color: white;
position: fixed;
bottom: 0;
width: 100%;
padding: 10px 0;
}
.footer-content {
position: relative;
text-align: center;
font-size: 14px;
}
.footer-image {
position: absolute;
top: 50%;
transform: translateY(-50%);
opacity: 0.2; /* Light opacity */
}
.left-image {
left: 10px;
}
.right-image {
right: 10px;
}
</style>
</head>
<body>
<div class="footer">
<div class="footer-content">
<img src="/pgr/images/ripon.jpg" style="height: 51px; width: 155px;margin-top: 10px;" alt="Left Image" class="footer-image left-image">
<p>Public Grievance System provided to Greater Chennai Corporation by Bonton Software Private Limited.</p>
<img src="/pgr/images/ripon.jpg" style="height: 51px; width: 155px;margin-top: 10px;" alt="Right Image" class="footer-image right-image">
</div>
</div>
</body>
</html>

73
src/main/resources/templates/fragments/header.html

@ -0,0 +1,73 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
<title>Header Fragment</title>
<base th:href="${baseURL}" />
</head>
<body>
<div th:fragment="headerFragment">
<style>
.header {
background-color: #3b4858;
padding: 10px 20px;
display: flex;
align-items: center;
justify-content: space-between;
color: white;
}
.header .logo-left img {
height: 60px;
}
.header .title {
text-align: center;
flex-grow: 1;
}
.header .title h2 {
margin: 0;
font-size: 1.5rem;
}
.header .logos-right img {
height: 60px;
margin-left: 10px;
}
#toggleSpeech {
background-color: white;
color: black;
margin: 3px;
}
#toggleSpeech img {
height: 30px;
/* Set height for the image */
margin-right: 8px;
/* Add some space between the image and text */
}
</style>
<div class="header">
<div class="logo-left">
<img src="/pgr/images/gcc1.png" alt="Greater Chennai Corporation Logo">
<!--<button id="toggleSpeech" class="btn btn-secondary">
<img src="/staffcomplaint/images/message.png" alt="Accessibility Icon">Turn On Speech</button>-->
</div>
<div class="title">
<h2>Public Grievance and Redressal System</h2>
</div>
<!--<button id="screenReaderButton">Read Screen</button>-->
<div class="logos-right">
<img src="/pgr/images/tamil.jpg" alt="Tamil Nadu Logo">
<!--<img src="images/bt-logo.png" style="width: 100px;height: 50px;" alt="bonton Logo">-->
</div>
</div>
<script th:src="@{/js/screenreader.js}"></script>
</body>
</html>

258
src/main/resources/templates/officer/checkofficerhome.html

@ -0,0 +1,258 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Main Page</title>
<!--Google Font -->
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css"
integrity="sha512-Kc323vGBEqzTmouAECnVceyQqyqdsSiqLQISBL29aUW4U/M7pSPA/gEUZQqv1cwx4OnYxTxve5UMg5GT6L4JJg=="
crossorigin="anonymous" referrerpolicy="no-referrer" />
<!--Bootstrap CSS-->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script th:src="@{/js/invertcolor.js}"></script>
<style>
body {
font-family: 'Lato', sans-serif;
background-color: white;
}
body.inverted {
background-color: black;
color: white;
filter: invert(1);
}
.card {
border-radius: 15px;
border: none;
padding: 20px;
background-color: #f0f4ff;
text-align: center;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
display: flex;
flex-direction: column;
height: 100%;
/* Make sure cards take up full height of the column */
}
.card-body {
flex: 1;
/* Allow card-body to grow and take up available space */
}
.card-img {
width: 40px;
margin-bottom: 15px;
}
.card-title {
font-size: 1.2rem;
font-weight: bold;
}
.card-text {
color: #666;
margin-bottom: 20px;
}
.card-footer {
font-weight: bold;
color: #007bff;
display: flex;
align-items: center;
justify-content: center;
}
.card-footer i {
margin-left: 5px;
}
.row {
display: flex;
flex-wrap: wrap;
margin-bottom: 30px;
}
.col-md-4 {
display: flex;
/* Ensure columns use Flexbox to distribute space evenly */
padding: 0 15px;
/* Adjust padding to fit full width */
}
.container {
max-width: 1200px;
}
.container .row .col-md-4 {
padding: 0 15px;
/* Adjust padding to fit full width */
display: flex;
flex-direction: column;
}
.card {
flex-grow: 1;
/* Ensure all cards have the same height */
}
.container .row .col-md-12 {
padding: 0 15px;
}
.card-link {
text-decoration: none;
/* Remove the underline from the link */
color: inherit;
/* Inherit the text color */
display: block;
/* Make the link cover the entire card */
}
.card-link:hover .card {
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2);
/* Optional: add hover effect */
}
/* Style for reader button */
#reader-btn.active {
background-color: #28a745;
}
/*header css*/
.header {
background-color: #3b4858;
padding: 10px 20px;
display: flex;
align-items: center;
justify-content: space-between;
color: white;
}
.header .logo-left img {
height: 60px;
}
.header .title {
text-align: center;
flex-grow: 1;
}
.header .title h2 {
margin: 0;
font-size: 1.5rem;
}
.header .logos-right img {
height: 60px;
margin-left: 10px;
}
/*header buttons*/
.header {
display: flex;
align-items: center;
justify-content: space-between;
/* Space out the items within the header */
}
.header-buttons {
padding-left: 5px;
display: flex;
align-items: center;
gap: 10px;
/* Adjust spacing between buttons */
}
#reader-btn,
#invertColorBtn {
padding: 5px 10px;
font-size: 14px;
cursor: pointer;
}
/*for radio button style*/
.radio-group {
display: flex;
align-items: center;
/* Ensures all items are aligned to the center */
}
.radio-item {
display: flex;
align-items: center;
margin-right: 20px;
/* Adds space between each radio item */
}
.radio-item input[type="radio"] {
margin-right: 10px;
/* Adds space between the radio button and its label */
vertical-align: middle;
/* Ensures vertical alignment */
}
.radio-item label {
margin: 0;
/* Removes any default margins that might affect alignment */
}
</style>
</head>
<body>
<div th:insert="~{fragments/accessibility :: accessibility}"></div>
<!-- Insert the header fragment -->
<div th:insert="fragments/header :: headerFragment"></div>
<!-- Cards Section -->
<!-- Cards Section -->
<div class="container d-flex justify-content-center align-items-center" style="height: 100vh;">
<!--card to register complaint-->
<div class="col-md-12">
<a href="/pgr/registercomplaints" class="card-link">
<div class="card content" style="margin-bottom: 12%;">
<div class="card-body">
<img src="images/register.png" alt="register" class="card-img">
<div class="card-content">
<h5 class="card-title">Register Your<br> Complaints</h5>
<p class="card-text">Register Complaints<br> Via Internet</p>
</div>
</div>
<div class="card-footer">
Get Started <i class="fa fa-arrow-right"></i>
</div>
</div>
</a>
</div>
</div>
<div th:insert="fragments/footer :: footerFragment"></div>
<script th:src="@{/js/screenreader.js}"></script>
<!-- Replace Slim jQuery with Full jQuery -->
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<!-- Popper.js (for Bootstrap tooltips, popovers, etc.) -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script>
<!-- Bootstrap JS -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<!-- Font Awesome for Icons -->
<script src="https://kit.fontawesome.com/a076d05399.js"></script>
</body>
</html>

528
src/main/resources/templates/officer/checkofficerstatus.html

@ -0,0 +1,528 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>CheckList User</title>
<!-- Google Font -->
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap" rel="stylesheet">
<!-- Bootstrap CSS -->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet/dist/leaflet.js"></script>
<style>
/*rating style for css*/
.rating {
direction: rtl;
display: inline-flex;
font-size: 24px;
}
.rating input {
display: none;
}
.rating label {
color: #ddd;
cursor: pointer;
margin: 0;
}
.rating input:checked~label {
color: #414f69;
}
.rating label:hover,
.rating label:hover~label {
color: #414f69;
}
/* Style for resizing content */
.resizable-content {
font-size: medium;
transition: font-size 0.3s ease;
}
.comment-table {
width: 100%;
border-collapse: collapse;
}
.comment-table td {
padding: 0.5rem;
border: 1px solid #ddd;
/* Light border color */
}
.comment-table td:first-child {
width: 25%;
/* Adjust as needed for label column width */
font-weight: bold;
}
.comment-table td:nth-child(2) {
width: 75%;
/* Adjust as needed for value column width */
}
</style>
</head>
<body>
<!-- Insert the header fragment -->
<div th:insert="~{fragments/header :: headerFragment}"></div>
<div class="container mt-4">
<!-- Loader GIF -->
<div id="loader" style="display: none; text-align: center;">
<img src="images/Thin broken ring.gif" alt="Loading..." />
</div>
<div class="mt-1">
<div class="row align-items-center justify-content-center">
<h4 class="title resizable-content" style="color: #414f69;">Check Complaint Status</h4>
</div>
</div>
<!-- Card Section -->
<div class="card p-3 resizable-content" style="margin-bottom: 8px;color: #414f69;">
<div class="card mb-3 resizable-content">
<div class="card-header text-white" style="background-color: #414f69;">1. Complaining Person's Details
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
Complainant ID:
<input type="text" id="complaintid" class="form-control" value="" disabled>
</div>
<div class="col-md-6">
Complainant Mobile Number:
<input type="text" id="complaint-mobile-number" class="form-control" value="" disabled>
</div>
<div class="col-md-6">
Complainant Name:
<input type="text" id="complaint-customer-name" class="form-control" value="" disabled>
</div>
<!--<div class="col-md-6">
Gender:
<select class="form-control" id="gender" disabled>
<option value="0">Select Gender</option>
<option value="male">Male</option>
<option value="female">Female</option>
<option value="transgender">Transgender</option>
</select>
</div>-->
</div>
</div>
</div>
<div class="card mb-3 resizable-content">
<div class="card-header text-white" style="background-color: #414f69;">2. Complaint Location Details
</div>
<div class="card-body">
<div class="row">
<div class="col-md-4">
Complainant Street:
<input type="text" id="street" class="form-control" disabled>
</div>
<div class="col-md-4">
Complainant Zone:
<input type="text" class="form-control" id="zone" disabled>
</div>
<div class="col-md-4">
Complainant Ward:
<input type="text" class="form-control" id="ward" disabled>
</div>
<div class="col-md-4">
Complainant Area:
<input type="text" class="form-control" id="area" disabled>
</div>
<div class="col-md-4">
Complainant Locality:
<input type="text" class="form-control" id="location" disabled>
</div>
</div>
</div>
</div>
<div class="card resizable-content">
<div class="card-header text-white" style="background-color: #414f69;">3. Complaint Type</div>
<div class="card-body">
<div class="row">
<div class="col-md-4">
Complainant Type:
<input type="text" class="form-control" id="complaintType" disabled>
</div>
<!--<div class="col-md-4">
Complainant Sub-Type:
<input type="text" class="form-control" disabled>
</div>
<div class="col-md-4">
Complainant Title:
<input type="text" class="form-control" disabled>
</div>-->
<div class="col-md-12">
Complainant Description:
<input type="text" class="form-control" id="complaintdesc" disabled>
</div>
</div>
</div>
</div>
</div>
<div class="card mb-3 resizable-content">
<div class="card-header text-white" style="background-color: #414f69;">Complaint Action</div>
<div class="card-body">
<div class="row">
<div class="col-md-4">
Complaint Closed Date:
<input type="text" class="form-control" id="commentDate" disabled>
</div>
<div class="col-md-4">
Official Name:
<input type="text" class="form-control" id="commentuser" disabled>
</div>
<div class="col-md-4">
Status:
<input type="text" class="form-control" id="statusshow"
style="background-color: #414f69;color: white;" disabled>
</div>
</div>
</div>
</div>
<div class="card mb-3 resizable-content">
<div class="card-header text-white" style="background-color: #414f69;">Complaint Action History</div>
<div class="card-body">
<div id="comments-container"></div> <!-- Container for comments -->
</div>
</div>
<div class="card mb-3 resizable-content">
<div class="card-header text-white" style="background-color: #414f69;">Update Complaint</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
Change Complaint Status:
<select class="form-control" name="complaintStatusID" id="complaintStatus">
<option value="0">Choose</option>
<option value="8">WITHDRAW</option>
<option value="9">REOPENED</option>
</select>
</div>
<div class="col-md-6" id="img" style="display: none;">
Photo:
<input type="file" class="form-control" id="photo">
</div>
</div>
<div class="row">
<div class="col-md-12">
Details of Complaint:
<textarea class="form-control" id="othercomplaint-details" rows="3"
placeholder="Enter complaint details" maxlength="400" required></textarea>
</div>
</div>
<div class="row align-items-center justify-content-center" style="margin-top: 5px;">
<button class="btn btn-sm" style="background-color: #414f69;color: white;">Submit</button>
</div>
</div>
</div>
</div>
<!-- Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script>
</script>
<!-- JavaScript to handle button clicks -->
<script>
// /api/getComplaintDetailsbyId
$(document).ready(function () {
var urlParams = new URLSearchParams(window.location.search);
var complaintNo = urlParams.get('complaintno');
if (complaintNo) {
$('#loader').show();
$.ajax({
url: '/pgr/api/getComplaintDetailsbyId', // Replace with your actual API endpoint
type: 'GET',
data: {complaintid: complaintNo},
success: function (response) {
console.log('API response:', response);
$('#loader').hide();
if (Array.isArray(response) && response.length > 0) {
var complaintListHistory = response[0].ComplaintListHistory;
if (Array.isArray(complaintListHistory) && complaintListHistory.length > 0) {
var complaintDetails = complaintListHistory[0];
// Decode HTML entities before populating fields
function decodeHtmlEntities(str) {
var txt = document.createElement('textarea');
txt.innerHTML = str;
return txt.value;
}
// Populate other form fields
document.getElementById("complaintid").value = complaintDetails.complaintid || '';
document.getElementById("complaint-mobile-number").value = complaintDetails.CustomerMobile || '';
document.getElementById("complaint-customer-name").value = complaintDetails.CustomerName || '';
document.getElementById("street").value = complaintDetails.Street || '';
document.getElementById("zone").value = complaintDetails.Zone || '';
document.getElementById("ward").value = complaintDetails.Division || '';
document.getElementById("area").value = complaintDetails.Area || '';
document.getElementById("location").value = complaintDetails.Location || '';
document.getElementById("complaintType").value = complaintDetails.complainttype || '';
// Decode and populate complaint description
document.getElementById("complaintdesc").value = decodeHtmlEntities(complaintDetails.complaintdetails || '');
document.getElementById("commentDate").value = complaintDetails.complaintcloseddate || '';
document.getElementById("commentuser").value = complaintDetails.Officialname || '';
document.getElementById("statusshow").value = complaintDetails.complaintcurrentstatus || '';
// Handle nested Comments array
if (Array.isArray(complaintDetails.Comments) && complaintDetails.Comments.length > 0) {
var commentsContainer = $('#comments-container');
commentsContainer.empty(); // Clear the container
var comments = complaintDetails.Comments;
var lastComment = comments[comments.length - 1];
// Decode HTML entities for last comment
function decodeHtmlEntities(str) {
var txt = document.createElement('textarea');
txt.innerHTML = str;
return txt.value;
}
// Handle last comment
var userImageHtml = '';
if (Array.isArray(lastComment.userimages) && lastComment.userimages.length > 0) {
var imageUrl = lastComment.userimages[0].Comp_Image;
if (imageUrl && imageUrl !== 'null') {
userImageHtml = `
<div class="col-md-12">
<img src="${imageUrl}" alt="User Image" class="img-fluid">
</div>`;
}
}
var lastCommentHtml = `
<div class="row mb-3">
<table class="comment-table">
<tr>
<td style="color:#3c4959">User:</td>
<td>${lastComment.user || ''}</td>
</tr>
<tr>
<td style="color:#3c4959">Message:</td>
<td>${lastComment.message || ''}</td>
</tr>
<tr>
<td style="color:#3c4959">Comment Date:</td>
<td>${lastComment.comment_date || ''}</td>
</tr>
${userImageHtml}
</table>
</div>
<hr>`;
commentsContainer.append(lastCommentHtml);
// Add dropdown button for other comments
if (comments.length > 1) {
var dropdownHtml = `
<button id="show-all-comments" class="btn mt-3" style="margin-bottom: 10px;background-color: #3c4959;
color: white;">Show All Comments</button>
<div id="all-comments" style="display:none;">`;
// Add all comments to dropdown
comments.forEach(function (comment, index) {
if (index < comments.length - 1) { // Skip the last comment
var userImageHtml = '';
if (Array.isArray(comment.userimages) && comment.userimages.length > 0) {
var imageUrl = comment.userimages[0].Comp_Image;
if (imageUrl && imageUrl !== 'null') {
userImageHtml = `
<div class="col-md-12">
<img src="${imageUrl}" alt="User Image" class="img-fluid">
</div>`;
}
}
dropdownHtml += `
<div class="row mb-3">
<table class="comment-table">
<tr>
<td style="color:#3c4959">User:</td>
<td>${comment.user || ''}</td>
</tr>
<tr>
<td style="color:#3c4959">Message:</td>
<td>${comment.message || ''}</td>
</tr>
<tr>
<td style="color:#3c4959">Comment Date:</td>
<td>${comment.comment_date || ''}</td>
</tr>
${userImageHtml}
</table>
</div>
<hr>`;
}
});
dropdownHtml += '</div>';
commentsContainer.append(dropdownHtml);
// Toggle display of all comments
$('#show-all-comments').click(function () {
$('#all-comments').toggle();
$(this).text($(this).text() === 'Show All Comments' ? 'Hide Comments' : 'Show All Comments');
});
}
} else {
$('#comments-container').html('<p>No comments found.</p>');
}
} else {
alert('No complaint details found in ComplaintListHistory.');
}
} else {
alert('Unexpected response structure.');
}
},
error: function (xhr, status, error) {
console.log('Error:', xhr.responseText);
alert('An error occurred while fetching complaint details.');
$('#loader').hide();
}
});
} else {
alert('No complaint number provided.');
}
});
$(document).ready(function () {
$('#complaintStatus').change(function () {
if ($(this).val() == '9') { // Show the image field if 'REOPENED' is selected
$('#img').show();
} else {
$('#img').hide();
}
});
$('.btn').click(function (e) {
e.preventDefault();
var complaintId = $('#complaintid').val();
var complaintStatus = $('#complaintStatus').val();
var message = $('#othercomplaint-details').val();
// Validate "Details of Complaint" field
if (message.trim() === "") {
Swal.fire({
title: 'Validation Error!',
text: 'Please enter the details of the complaint.',
icon: 'warning',
confirmButtonText: 'OK'
});
return;
}
if (complaintStatus == '0') {
Swal.fire({
title: 'Validation Error!',
text: 'Please select a valid complaint status.',
icon: 'warning',
confirmButtonText: 'OK'
});
return;
}
var formData = new FormData();
formData.append("ComplaintId", complaintId);
formData.append("Message", message);
formData.append("Status", complaintStatus);
var imageFile = $('#photo')[0].files[0];
if (imageFile) {
formData.append("Comp_Image", imageFile);
}
$.ajax({
url: '/publicgrievance/updateComplaint',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function (response) {
console.log(imageFile,complaintId,message,complaintStatus);
Swal.fire({
title: 'Success!',
text: 'Complaint updated successfully.',
icon: 'success',
confirmButtonText: 'OK'
}).then((result) => {
if (result.isConfirmed) {
window.location.href = 'home';
}
});
},
error: function (xhr, status, error) {
console.error('Error updating complaint:', error);
let errorMessage = xhr.responseText ? xhr.responseText : 'An error occurred while updating the complaint.';
Swal.fire({
title: 'Error!',
text: errorMessage,
icon: 'error',
confirmButtonText: 'OK'
});
}
});
});
});
</script>
<script th:src="@{/js/screenreader.js}"></script>
</body>
</html>

614
src/main/resources/templates/staff/staffcheckstatus.html

@ -0,0 +1,614 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>CheckList User</title>
<!-- Google Font -->
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap" rel="stylesheet">
<!-- Bootstrap CSS -->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet/dist/leaflet.js"></script>
<style>
/*rating style for css*/
.rating {
direction: rtl;
display: inline-flex;
font-size: 24px;
}
.rating input {
display: none;
}
.rating label {
color: #ddd;
cursor: pointer;
margin: 0;
}
.rating input:checked~label {
color: #414f69;
}
.rating label:hover,
.rating label:hover~label {
color: #414f69;
}
/* Style for resizing content */
.resizable-content {
font-size: medium;
transition: font-size 0.3s ease;
}
.comment-table {
width: 100%;
border-collapse: collapse;
}
.comment-table td {
padding: 0.5rem;
border: 1px solid #ddd;
/* Light border color */
}
.comment-table td:first-child {
width: 25%;
/* Adjust as needed for label column width */
font-weight: bold;
}
.comment-table td:nth-child(2) {
width: 75%;
/* Adjust as needed for value column width */
}
</style>
</head>
<body>
<!-- Insert the header fragment -->
<div th:insert="~{fragments/header :: headerFragment}"></div>
<div class="container mt-4">
<!-- Loader GIF -->
<div id="loader" style="display: none; text-align: center;">
<img src="images/Thin broken ring.gif" alt="Loading..." />
</div>
<div class="mt-1">
<div class="row align-items-center justify-content-center">
<h4 class="title resizable-content" style="color: #414f69;">Check Complaint Status</h4>
</div>
</div>
<!-- Card Section -->
<div class="card p-3 resizable-content" style="margin-bottom: 8px;color: #414f69;">
<div class="card mb-3 resizable-content">
<div class="card-header text-white" style="background-color: #414f69;">1. Complaining Person's Details
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
<label>Complainant ID:</label>
<input type="text" id="complaintid" class="form-control" value="" disabled>
</div>
<div class="col-md-6">
<label>Complainant Mobile Number:</label>
<input type="text" id="complaint-mobile-number" class="form-control" value="" disabled>
</div>
<div class="col-md-6">
<label>Complainant Name:</label>
<input type="text" id="complaint-customer-name" class="form-control" value="" disabled>
</div>
</div>
</div>
</div>
<div class="card mb-3 resizable-content">
<div class="card-header text-white" style="background-color: #414f69;">2. Complaint Location Details
</div>
<div class="card-body">
<div class="row">
<div class="col-md-4">
<label>Complainant Street:</label>
<input type="text" id="street" class="form-control" disabled>
</div>
<div class="col-md-4">
<label>Complainant Zone:</label>
<input type="text" class="form-control" id="zone" disabled>
</div>
<div class="col-md-4">
<label>Complainant Ward:</label>
<input type="text" class="form-control" id="ward" disabled>
</div>
<div class="col-md-4">
<label>Complainant Area:</label>
<input type="text" class="form-control" id="area" disabled>
</div>
<div class="col-md-4">
<label>Complainant Locality:</label>
<input type="text" class="form-control" id="location" disabled>
</div>
</div>
</div>
</div>
<div class="card resizable-content">
<div class="card-header text-white" style="background-color: #414f69;">3. Complaint Type</div>
<div class="card-body">
<div class="row">
<div class="col-md-4">
<label>Complainant Type:</label>
<input type="text" class="form-control" id="complaintType" disabled>
</div>
<!--<div class="col-md-4">
Complainant Sub-Type:
<input type="text" class="form-control" disabled>
</div>
<div class="col-md-4">
Complainant Title:
<input type="text" class="form-control" disabled>
</div>-->
<div class="col-md-12">
<label>Complainant Description:</label>
<input type="text" class="form-control" id="complaintdesc" disabled>
</div>
</div>
</div>
</div>
</div>
<div class="card mb-3 resizable-content">
<div class="card-header text-white" style="background-color: #414f69;">Complaint Action</div>
<div class="card-body">
<div class="row">
<div class="col-md-4">
<label>Complaint Closed Date:</label>
<input type="text" class="form-control" id="commentDate" disabled>
</div>
<div class="col-md-4">
<label>Official Name:</label>
<input type="text" class="form-control" id="commentuser" disabled>
</div>
<div class="col-md-4">
<label>Status:</label>
<input type="text" class="form-control" id="statusshow"
style="background-color: #414f69;color: white;" disabled>
</div>
</div>
</div>
</div>
<div class="card mb-3 resizable-content">
<div class="card-header text-white" style="background-color: #414f69;">Complaint Action History</div>
<div class="card-body">
<div id="comments-container"></div> <!-- Container for comments -->
</div>
</div>
<div class="card mb-3 resizable-content">
<div class="card-header text-white" style="background-color: #414f69;">Update Complaint</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
<label>Change Complaint Status:</label>
<select class="form-control" name="complaintStatusID" id="complaintStatus">
</select>
</div>
<div class="col-md-6" id="img" style="display: none;">
<label>Photo:</label>
<input type="file" class="form-control" id="photo">
</div>
</div>
<div class="row">
<div class="col-md-12">
<label>Details of Complaint:</label>
<textarea class="form-control" id="othercomplaint-details" rows="3"
placeholder="Enter complaint details" maxlength="400" required></textarea>
</div>
</div>
<div class="row align-items-center justify-content-center" style="margin-top: 5px;">
<button class="btn btn-sm" style="background-color: #414f69;color: white;">Submit</button>
</div>
</div>
</div>
<!--loader-->
<div id="loaders" style="display: none; text-align: center; margin-bottom: 50px;">
<img src="images/Thin broken ring.gif" alt="Loading..." />
</div>
<!--loader-->
</div>
<!-- Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script>
</script>
<!-- JavaScript to handle button clicks -->
<script>
// /api/getComplaintDetailsbyId
$(document).ready(function () {
var urlParams = new URLSearchParams(window.location.search);
var complaintNo = urlParams.get('complaintno');
if (complaintNo) {
$('#loader').show();
$.ajax({
url: '/pgr/api/getComplaintDetailsbyId', // Replace with your actual API endpoint
type: 'GET',
data: {complaintid: complaintNo},
success: function (response) {
console.log('API response:', response);
$('#loader').hide();
if (Array.isArray(response) && response.length > 0) {
var complaintListHistory = response[0].ComplaintListHistory;
if (Array.isArray(complaintListHistory) && complaintListHistory.length > 0) {
var complaintDetails = complaintListHistory[0];
// Decode HTML entities before populating fields
function decodeHtmlEntities(str) {
var txt = document.createElement('textarea');
txt.innerHTML = str;
return txt.value;
}
// Populate other form fields
document.getElementById("complaintid").value = complaintDetails.complaintid || '';
document.getElementById("complaint-mobile-number").value = complaintDetails.CustomerMobile || '';
document.getElementById("complaint-customer-name").value = complaintDetails.CustomerName || '';
document.getElementById("street").value = complaintDetails.Street || '';
document.getElementById("zone").value = complaintDetails.Zone || '';
document.getElementById("ward").value = complaintDetails.Division || '';
document.getElementById("area").value = complaintDetails.Area || '';
document.getElementById("location").value = complaintDetails.Location || '';
document.getElementById("complaintType").value = complaintDetails.complainttype || '';
// Decode and populate complaint description
document.getElementById("complaintdesc").value = decodeHtmlEntities(complaintDetails.complaintdetails || '');
document.getElementById("commentDate").value = complaintDetails.complaintcloseddate || '';
document.getElementById("commentuser").value = complaintDetails.Officialname || '';
let complaintCurrentStatus = complaintDetails.complaintcurrentstatus || '';
// Get the dropdown element
let complaintStatusDropdown = document.getElementById("complaintStatus");
// Function to add options to the select element
function addOption(text, value) {
let option = document.createElement("option");
option.text = text;
option.value = value;
complaintStatusDropdown.add(option);
}
// Check the current status and add the respective options
if (complaintCurrentStatus === 'REGISTERED') {
addOption('REGISTERED', '2');
addOption('WITHDRAWN', '8');
} else if (complaintCurrentStatus === 'WITHDRAWN') {
addOption('WITHDRAWN', '8');
addOption('REOPENED', '9');
}
else if (complaintCurrentStatus === 'CLOSE') {
addOption('CLOSE', '10');
addOption('REOPENED', '9');
}
else if (complaintCurrentStatus === 'REOPENED') {
addOption('REOPENED', '9');
addOption('WITHDRAWN', '8');
}
else if (complaintCurrentStatus === 'FINAL_CLOSURE') {
addOption('FINAL_CLOSURE', '11');
addOption('REOPENED', '9');
}
document.getElementById("statusshow").value = complaintDetails.complaintcurrentstatus || '';
// Handle nested Comments array
if (Array.isArray(complaintDetails.Comments) && complaintDetails.Comments.length > 0) {
var commentsContainer = $('#comments-container');
commentsContainer.empty(); // Clear the container
var comments = complaintDetails.Comments;
var lastComment = comments[comments.length - 1];
// Decode HTML entities for last comment
function decodeHtmlEntities(str) {
var txt = document.createElement('textarea');
txt.innerHTML = str;
return txt.value;
}
// Convert image URL to Base64
function convertImageToBase64(url, callback) {
var xhr = new XMLHttpRequest();
xhr.onload = function () {
var reader = new FileReader();
reader.onloadend = function () {
callback(reader.result);
};
reader.readAsDataURL(xhr.response);
};
xhr.open('GET', url);
xhr.responseType = 'blob';
xhr.send();
}
// Compress the Base64 image using canvas
function compressImage(base64Str, callback, quality = 0.7, maxWidth = 800) {
var img = new Image();
img.onload = function () {
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var width = img.width;
var height = img.height;
// Adjust the image size for compression
if (width > maxWidth) {
height *= maxWidth / width;
width = maxWidth;
}
canvas.width = width;
canvas.height = height;
// Draw the image onto the canvas
ctx.drawImage(img, 0, 0, width, height);
// Convert the canvas back to Base64 with the specified quality (compression)
var compressedBase64 = canvas.toDataURL('image/jpeg', quality);
callback(compressedBase64);
};
img.src = base64Str;
}
// Handle last comment
var userImageHtml = '';
if (Array.isArray(lastComment.userimages) && lastComment.userimages.length > 0) {
var imageUrl = lastComment.userimages[0].Comp_Image;
if (imageUrl && imageUrl !== 'null') {
convertImageToBase64(imageUrl, function (base64Image) {
compressImage(base64Image, function (compressedImage) {
userImageHtml = `
<div class="col-md-12">
<img src="${compressedImage}" alt="User Image" class="img-fluid">
</div>`;
commentsContainer.append(lastCommentHtml);
});
});
}
}
var lastCommentHtml = `
<div class="row mb-3">
<table class="comment-table">
<tr>
<td style="color:#3c4959">User:</td>
<td>${lastComment.user || ''}</td>
</tr>
<tr>
<td style="color:#3c4959">Message:</td>
<td>${lastComment.message || ''}</td>
</tr>
<tr>
<td style="color:#3c4959">Comment Date:</td>
<td>${lastComment.comment_date || ''}</td>
</tr>
${userImageHtml}
</table>
</div>
<hr>`;
// Add the comment section with the compressed Base64 image
commentsContainer.append(lastCommentHtml);
// Add dropdown button for other comments
if (comments.length > 1) {
var dropdownHtml = `
<button id="show-all-comments" class="btn mt-3" style="margin-bottom: 10px;background-color: #3c4959; color: white;">Show All Comments</button>
<div id="all-comments" style="display:none;">`;
// Add all comments to dropdown
comments.forEach(function (comment, index) {
if (index < comments.length - 1) { // Skip the last comment
var userImageHtml = '';
if (Array.isArray(comment.userimages) && comment.userimages.length > 0) {
var imageUrl = comment.userimages[0].Comp_Image;
if (imageUrl && imageUrl !== 'null') {
convertImageToBase64(imageUrl, function (base64Image) {
compressImage(base64Image, function (compressedImage) {
userImageHtml = `
<div class="col-md-12">
<img src="${compressedImage}" alt="User Image" class="img-fluid">
</div>`;
});
});
}
}
dropdownHtml += `
<div class="row mb-3">
<table class="comment-table">
<tr>
<td style="color:#3c4959">User:</td>
<td>${comment.user || ''}</td>
</tr>
<tr>
<td style="color:#3c4959">Message:</td>
<td>${comment.message || ''}</td>
</tr>
<tr>
<td style="color:#3c4959">Comment Date:</td>
<td>${comment.comment_date || ''}</td>
</tr>
${userImageHtml}
</table>
</div>
<hr>`;
}
});
dropdownHtml += '</div>';
commentsContainer.append(dropdownHtml);
// Toggle display of all comments
$('#show-all-comments').click(function () {
$('#all-comments').toggle();
$(this).text($(this).text() === 'Show All Comments' ? 'Hide Comments' : 'Show All Comments');
});
}
} else {
$('#comments-container').html('<p>No comments found.</p>');
}
} else {
alert('No complaint details found in ComplaintListHistory.');
}
} else {
alert('Unexpected response structure.');
}
},
error: function (xhr, status, error) {
console.log('Error:', xhr.responseText);
alert('An error occurred while fetching complaint details.');
$('#loader').hide();
}
});
} else {
alert('No complaint number provided.');
}
});
$(document).ready(function () {
$('#complaintStatus').change(function () {
if ($(this).val() == '9') { // Show the image field if 'REOPENED' is selected
$('#img').show();
} else {
$('#img').hide();
}
});
$('.btn').click(function (e) {
e.preventDefault();
var complaintId = $('#complaintid').val();
var complaintStatus = $('#complaintStatus').val();
var message = $('#othercomplaint-details').val();
// Validate "Details of Complaint" field
if (message.trim() === "") {
Swal.fire({
title: 'Validation Error!',
text: 'Please enter the details of the complaint.',
icon: 'warning',
confirmButtonText: 'OK'
});
return;
}
if (complaintStatus == '0') {
Swal.fire({
title: 'Validation Error!',
text: 'Please select a valid complaint status.',
icon: 'warning',
confirmButtonText: 'OK'
});
return;
}
var formData = new FormData();
formData.append("ComplaintId", complaintId);
formData.append("Message", message);
formData.append("Status", complaintStatus);
var imageFile = $('#photo')[0].files[0];
if (imageFile) {
formData.append("Comp_Image", imageFile);
}
$('#loaders').show();
$.ajax({
url: '/updateComplaint',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function (response) {
$('#loaders').hide();
console.log(imageFile, complaintId, message, complaintStatus);
Swal.fire({
title: 'Success!',
text: 'Complaint updated successfully.',
icon: 'success',
confirmButtonText: 'OK'
}).then((result) => {
if (result.isConfirmed) {
window.location.href = 'home';
}
});
},
error: function (xhr, status, error) {
console.error('Error updating complaint:', error);
$('#loaders').hide();
let errorMessage = xhr.responseText ? xhr.responseText : 'An error occurred while updating the complaint.';
Swal.fire({
title: 'Error!',
text: errorMessage,
icon: 'error',
confirmButtonText: 'OK'
});
}
});
});
});
</script>
</body>
</html>

1538
src/main/resources/templates/staff/staffcomplaint.html
File diff suppressed because it is too large
View File

543
src/main/resources/templates/staff/staffhome.html

@ -0,0 +1,543 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Main Page</title>
<!--Google Font -->
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css"
integrity="sha512-Kc323vGBEqzTmouAECnVceyQqyqdsSiqLQISBL29aUW4U/M7pSPA/gEUZQqv1cwx4OnYxTxve5UMg5GT6L4JJg=="
crossorigin="anonymous" referrerpolicy="no-referrer" />
<!--Bootstrap CSS-->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script th:src="@{/js/invertcolor.js}"></script>
<style>
body {
font-family: 'Lato', sans-serif;
background-color: white;
}
body.inverted {
background-color: black;
color: white;
filter: invert(1);
}
.card {
border-radius: 15px;
border: none;
padding: 20px;
background-color: #f0f4ff;
text-align: center;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
display: flex;
flex-direction: column;
height: 100%;
/* Make sure cards take up full height of the column */
}
.card-body {
flex: 1;
/* Allow card-body to grow and take up available space */
}
.card-img {
width: 40px;
margin-bottom: 15px;
}
.card-title {
font-size: 1.2rem;
font-weight: bold;
}
.card-text {
color: #666;
margin-bottom: 20px;
}
.card-footer {
font-weight: bold;
color: #007bff;
display: flex;
align-items: center;
justify-content: center;
}
.card-footer i {
margin-left: 5px;
}
.row {
display: flex;
flex-wrap: wrap;
margin-bottom: 30px;
}
.col-md-4 {
display: flex;
/* Ensure columns use Flexbox to distribute space evenly */
padding: 0 15px;
/* Adjust padding to fit full width */
}
.container {
max-width: 1200px;
}
.container .row .col-md-4 {
padding: 0 15px;
/* Adjust padding to fit full width */
display: flex;
flex-direction: column;
}
.card {
flex-grow: 1;
/* Ensure all cards have the same height */
}
.container .row .col-md-12 {
padding: 0 15px;
}
.card-link {
text-decoration: none;
/* Remove the underline from the link */
color: inherit;
/* Inherit the text color */
display: block;
/* Make the link cover the entire card */
}
.card-link:hover .card {
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2);
/* Optional: add hover effect */
}
/* Style for reader button */
#reader-btn.active {
background-color: #28a745;
}
/*header css*/
.header {
background-color: #3b4858;
padding: 10px 20px;
display: flex;
align-items: center;
justify-content: space-between;
color: white;
}
.header .logo-left img {
height: 60px;
}
.header .title {
text-align: center;
flex-grow: 1;
}
.header .title h2 {
margin: 0;
font-size: 1.5rem;
}
.header .logos-right img {
height: 60px;
margin-left: 10px;
}
/*header buttons*/
.header {
display: flex;
align-items: center;
justify-content: space-between;
/* Space out the items within the header */
}
.header-buttons {
padding-left: 5px;
display: flex;
align-items: center;
gap: 10px;
/* Adjust spacing between buttons */
}
#reader-btn,
#invertColorBtn {
padding: 5px 10px;
font-size: 14px;
cursor: pointer;
}
/*for radio button style*/
.radio-group {
display: flex;
align-items: center;
/* Ensures all items are aligned to the center */
}
.radio-item {
display: flex;
align-items: center;
margin-right: 20px;
/* Adds space between each radio item */
}
.radio-item input[type="radio"] {
margin-right: 10px;
/* Adds space between the radio button and its label */
vertical-align: middle;
/* Ensures vertical alignment */
}
.radio-item label {
margin: 0;
/* Removes any default margins that might affect alignment */
}
</style>
</head>
<body>
<div th:insert="~{fragments/accessibility :: accessibility}"></div>
<!-- <div class="header">
<div class="logo-left">
<img src="images/gcc1.png" alt="Greater Chennai Corporation Logo">
</div>
<div class="header-buttons">
<button id="reader-btn" onclick="toggleReader()">Enable Reader</button>
<button id="invertColorBtn" onclick="invertColors()">Invert Colors</button>
</div>
<div class="title">
<h2>Public Grievance and Redressal System</h2>
</div>
<div class="logos-right">
<img src="images/tamil.jpg" alt="Tamil Nadu Logo">
<img src="images/bt-logo.png" style="width: 100px;height: 50px;" alt="bonton Logo">
</div>
</div>-->
<!-- Insert the header fragment -->
<div th:insert="~{fragments/header :: headerFragment}"></div>
<!--<button id="reader-btn" onclick="toggleReader()">Enable Reader</button>-->
<!-- Cards Section -->
<div class="container mt-3">
<div id="loader" style="display: none; text-align: center;">
<img src="images/Thin broken ring.gif" alt="Loading..." />
</div>
<!--<button id="invertColorBtn" onclick="invertColors()">Invert Colors</button>-->
<div class="row">
<div class="col-md-4">
<a href="staffcomplaint" class="card-link">
<div class="card content">
<div class="card-body">
<img src="images/register.png" alt="register" class="card-img">
<div class="card-content">
<h5 class="card-title">Register Your<br> Complaints</h5>
<p class="card-text">Register Complaints<br> Via Internet</p>
</div>
</div>
<div class="card-footer">
Get Started <i class="fa fa-arrow-right"></i>
</div>
</div>
</a>
</div>
<div class="col-md-4">
<div class="card readable">
<div class="card-body">
<img src="images/phone-call.png" alt="Phone" class="card-img">
<div class="card-content">
<h5 class="card-title">Register Complaint via Phone</h5>
<p class="card-text">Call 1913 to register your complaint.</p>
</div>
</div>
<div class="card-footer">
Call Now <i class="fa fa-arrow-right"></i>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card readable">
<div class="card-body">
<img src="images/contract.png" alt="Paper" class="card-img">
<div class="card-content">
<h5 class="card-title">Complaint via Paper Form</h5>
<p class="card-text">Send your Grievance to<br><strong>The Commissioner,<br>Greater Chennai
Corporation,<br>Ripon Building, EVR Salai, Chennai - 600003.</strong></p>
</div>
</div>
</div>
</div>
</div>
<!-- Form to Check by Complaint Number -->
<div class="col-md-12">
<div class="card readable">
<div class="card-body">
<img src="images/search.png" alt="Status" class="card-img">
<div class="card-content">
<h5 class="card-title">Check Your Complaint Status</h5>
<div class="form-group">
<input type="radio" id="c_number" name="check_method" value="c_number" checked
onchange="toggleInput()">
<label class="readable">Check By Complaint Number</label>
<input type="radio" id="m_number" name="check_method" value="m_number"
onchange="toggleInput()">
<label class="readable">Check By Mobile Number</label>
</div>
<!-- Input for Complaint Number -->
<div class="form-group" id="complaint-number-input">
<input type="text" class="form-control" id="complaint-number"
placeholder="Enter Complaint Number">
</div>
<!-- Input for Mobile Number (hidden by default) -->
<div class="form-group" id="complaint-mobile-input" style="display: none;">
<input type="text" class="form-control" id="complaint-mobile"
placeholder="Enter Mobile Number">
</div>
</div>
</div>
<div class="card-footer">
<!-- Button for Complaint Number -->
<button class="btn btn-danger" id="check-now-btn">Check Now <i
class="fa fa-arrow-right"></i></button>
<!-- Button for Mobile Number (hidden by default) -->
<button class="btn btn-primary readable" id="check-mobile-btn" style="display: none;">Check Now <i
class="fa fa-arrow-right"></i></button>
</div>
</div>
</div>
<!-- Form to Check by Mobile Number -->
<!--<div class="col-md-6">
<div class="card readable">
<div class="card-body">
<img src="images/search.png" alt="Status" class="card-img">
<div class="card-content">
<h5 class="card-title">Check Your Complaint Status</h5>
<div class="form-group">
<label class="readable">Check By Mobile Number</label>
</div>
<div class="form-group">
<input type="text" class="form-control" id="complaint-mobile"
placeholder="Enter Mobile Number">
</div>
</div>
</div>
<div class="card-footer">
<button class="btn btn-primary readable" id="check-mobile-btn">Check Now <i
class="fa fa-arrow-right"></i></button>
</div>
</div>
</div>-->
</div>
<div class="modal fade" id="complaintDetailsModal" tabindex="-1" role="dialog"
aria-labelledby="complaintDetailsLabel" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header" style="background-color: #3c4959;color: white;">
<h5 class="modal-title" id="complaintDetailsLabel">Complaint Details</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="color: white;">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<table class="table">
<thead style="background-color: #3c4959;color: white;">
<tr>
<th>Complaint Number</th>
<th>Complaint Type</th>
<th>View</th> <!-- New column for the eye icon -->
</tr>
</thead>
<tbody>
<!-- Dynamic rows will be appended here by JavaScript -->
</tbody>
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal"
style="background-color:#3c4959 ;">Close</button>
</div>
</div>
</div>
</div>
<div th:insert="~{fragments/footer :: footerFragment}"></div>
<!-- Replace Slim jQuery with Full jQuery -->
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<!-- Popper.js (for Bootstrap tooltips, popovers, etc.) -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script>
<!-- Bootstrap JS -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<!-- Font Awesome for Icons -->
<script src="https://kit.fontawesome.com/a076d05399.js"></script>
<script>
$(document).ready(function () {
// Check by complaint number
$('#check-now-btn').click(function () {
var complaintNumber = $('#complaint-number').val();
if (complaintNumber) {
window.location.href = 'checklistofficer?complaintno=' + encodeURIComponent(complaintNumber);
} else {
alert('Please enter a complaint number.');
}
});
});
function toggleInput() {
const checkByComplaint = document.getElementById('c_number').checked;
const complaintInput = document.getElementById('complaint-number-input');
const mobileInput = document.getElementById('complaint-mobile-input');
const checkNowBtn = document.getElementById('check-now-btn');
const checkMobileBtn = document.getElementById('check-mobile-btn');
if (checkByComplaint) {
complaintInput.style.display = 'block';
checkNowBtn.style.display = 'block';
mobileInput.style.display = 'none';
checkMobileBtn.style.display = 'none';
} else {
complaintInput.style.display = 'none';
checkNowBtn.style.display = 'none';
mobileInput.style.display = 'block';
checkMobileBtn.style.display = 'block';
}
}
$(document).ready(function () {
// Trigger modal and load complaint list based on mobile number
$('#check-mobile-btn').on('click', function () {
const mobileNumber = $('#complaint-mobile').val(); // Get the entered mobile number
if (mobileNumber === "") {
alert("Please enter a mobile number.");
return;
}
$('#loader').show();
// AJAX request to fetch complaint details by mobile number
$.ajax({
url: '/pgr/api/getComplaintDetailsByMobile', // Replace with your correct API path
method: 'GET',
data: {mobileNo: mobileNumber},
success: function (response) {
$('#loader').hide();
const complaintList = response[0]?.ComplaintListHistory; // Assuming data is inside ComplaintListHistory
// Clear the table before adding new rows
const tableBody = $('#complaintDetailsModal tbody');
tableBody.empty();
// Check if there are complaints
if (complaintList && complaintList.length > 0) {
// Loop through each complaint and add to the table
complaintList.forEach(function (complaint) {
const complaintId = complaint.complaintid || 'N/A'; // Fallback to N/A if complaintid is null
const complaintType = complaint.complainttype || 'N/A';
const newRow = `
<tr>
<td>${complaintId}</td>
<td>${complaintType}</td>
<td>
<button class="btn btn-link view-complaint" data-complaintid="${complaintId}">
<i style="color:#3c4959" class="fa fa-eye"></i>
</button>
</td>
</tr>`;
tableBody.append(newRow); // Append the new row to the table
});
} else {
// No complaints found for the mobile number
tableBody.append('<tr><td colspan="2">No complaints found for this mobile number.</td></tr>');
}
// Display the modal after fetching the data
$('#complaintDetailsModal').modal('show');
},
error: function (error) {
console.log('Error fetching complaints:', error);
alert('There was an error fetching the complaint details. Please try again.');
$('#loader').hide();
}
});
});
// Event delegation to handle click on dynamically generated eye icons
$(document).on('click', '.view-complaint', function () {
var complaintId = $(this).data('complaintid');
if (complaintId) {
// Redirect to the complaint details page using complaintId
window.location.href = 'checklistofficer?complaintno=' + encodeURIComponent(complaintId);
} else {
alert('Complaint ID not found.');
}
});
});
</script>
<script th:src="@{/js/screenreader.js}"></script>
</body>
</html>

BIN
uploads/1724728439636_gcc1.png

After

Width: 325  |  Height: 435  |  Size: 204 KiB

Loading…
Cancel
Save