Users should be able to define, save, edit, and delete configured data definitions through the UI. These interfaces should be modeled directly off of the Cohort Definition management pages. They should:
- Use the @ConfigurationProperty annotation to determine what properties are available on a given definition, and how to group them together in fieldsets on the page
- Use the @Localized annotation and display taglib to display property and class names with appropriate message property text
- Use htmlwidgets on the page and in the controller to render appropriate edit fields and for collection user input
Ideally, any Controller written that is largely a copy of the Cohort Definition controller should find the common ground, and create an abstract superclass.
The final product should provide a means for users to list available data definitions by type, to add a new data definition of a particular type, to edit an existing data definition, to delete an existing data definition, and to preview an existing data definition.