Now Libreplan can be run on Java8.
This implied some changes:
* Latest versions of hibernate use the Bean Validation API. This
implied renaming the imports and use ConstraintViolationException
instead of InvalidValue. Besides some constraints had to be renamed,
otherwise they wouldn't be recognized by Hibernate validation. In
the new version of Hibernate validator @AssertTrue can only be
applied to properties. So all methods it was applied to must follow
the is.* format.
Automatic execution of Bean Validation API is disabled, otherwise an
infinite loop would happen. This is because there are some
validation constraints that do launch queries to the database. This
causes a flush of the objects in the session and automatic
validation is called again.
* A new library for persisting JodaTime is necessary since
joda-time-hibernate is incompatible with hibernate 4. This library
can automatically register its types for Date conversion so they're
removed from configuration.
* Now, in some places, an InvalidDataAccessApiUsageException is thrown
instead of a DataIntegrityViolationException.
This is because no constraint is violated, the API is being used
incorrectly because a transient instance is being provided where a
persisted one was expected.
* In hibernate 4 listeners cannot be configured via properties.
HibernateDatabaseModificationsListener registers itself in its @PostConstruct method.
* ehcache classes used are now different.
The modules names are obtained from the *.wpd files.
The version value should be updated every time we release a new LibrePlan
version.
FEA: ItEr77S04BugFixing
The problem was that OrderModel.getOrders() was been called several times to
show the list of projects.
After reviewing the problem several issues were detected:
* Util.createBindingsFor was always calling .loadAll() for each binder it
creates, however this was not needed. Moreover a lot of times
Util.reloadBindings is called just after Util.createBindings so the same thing
is called twice.
* If you go via the entry point or the icon to the project list, the binder for
the page is properly initialized or not. If you come from the entry point, the
binder is already working as expected, however if you come from the icon the
binder has to be created manually. It has been added a method
CreatedOnDemandTab.afterCreateAction() that is called or not depending if the
user comes from the entry point or the icon.
FEA: ItEr77S04BugFixing
This was happening when clicking too fast on the node deletion
column on the tree, wich caused an exception due to trying to remove
an already deleted element.
FEA: ItEr77S04BugFixing
This is done using the entry point /planner/index.zul;order=order-code which also helps
browser history management to enable bookmarking, refreshing or use the back button.
The link to the taks from the project view is not added due to an interaction it has with
the system to prevent from leaving the current URL, which would need to be written with anchors
to avoid this interaction.
FEA: ItEr77S03Community
Both bars will work like the money cost bar was already working.
The change is done due to the problem that appears when you adapt the planning,
and some planning remains before the start of the task. In that cases the bars
were not being printed properly.
Moreover current implementation was quite complex, and even if it gives some
useful information in specific cases, it also causes some misunderstandings to
the users.
FEA: ItEr77S12AdaptPlanningAccordingTimesheets
* TaskElements are marked or not as updatedFromTimesheets
* TaskElement start date is set with a START_IN_FIXED_DATE constraint to the
first date in the timesheets
* TaskElement end date is set to the last date in the timesheets if this is
later than the current end date of the task
* Depending on if the task is marked as finishedFromTimesheets, a progress of
type TIMESHEETS is added or not. If the task is finished, the end date is set
according to last date in the timesheets
* TaskElement size and position is updated in the Gantt
FEA: ItEr77S12AdaptPlanningAccordingTimesheets
It has been added a new method ICommand.isPlannerCommand() to define if a button
should be added in the planner toolbar or in the common toolbar (save and cancel
buttons).
For the moment, we are using a hard-coded value to know how many buttons we
should add in the plannerToolbar. At this moment we have 2 buttons: reassign and
adapt planning.
FEA: ItEr77S12AdaptPlanningAccordingTimesheets