For Java Desktop Application
Is there a tool that would allow the user to customize his/her own reports such that the user would be able to:
1) End user would be able to drag & drop tables, select the fields etc
2) Join 2 or more tables & select the fields to be displayed
3) Create custom filters for the reports
4) Save the report template so that they can generate the created report in future without having to go through step 1 - 3
I
I would split your requirements into two features:
For the first point, you can use a query designer tool like Active Query Builder, personally i've used the .NET version, but they have a Java version as well.
For the second point, this question suggest you use Dynamic Jasper, personally i've never used it, but it may be worth the shot, alternatively, you may be able to modify iReport to integrate it in your application or create your application around it, but it's not an easy feat (i've tried it before with little success), in any case, you must be fully aware of any licensing issues in your project, specially if you add open source and closed source software or libraries into the mix.