Interacts with Jira RESTful web service and supports only get method. Moreover it does
basic authentication check using org.libreplan.ws.common.impl.Util.addAuthorizationHeader()
An implementation of the interface IJiraTimesheetSynchronizer.
It synchronizes the timesheets of order-tasks of an existing order with jira issues.
Loops through all jira issues and creates or updates timesheets(WorkReports) for an
existing order. As a pre condition a WorkReportType with the name 'jira-connector'
must be created and configured properly prior to synchronization of timesheets.
An implementation of the interface IJiraOrderElementSynchronizer.
It synchronizes order-elements inclusive progress assignments and measurements of an
existing order with jira issues.
Loops through all jira issues and creates or updates order-lines/order-elements, hoursgroup,
progress assignments and measurements
An interface that JiraTimesheetSynchronizer implements.
It synchronizes the timesheets of order-tasks of an existing order with jira issues
A WorkReportType object with the name 'jira-connector' must exist and configured properly
prior to start synchronization of timesheets
An interface that JiraOrderElementSynchronizer implements.
It synchronizes order-elements inclusive progress assignments and measurements of
an existing order with jira issues
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
Otherwise the MutableTreeModel associated is initialized with a Order
that is not saved yet. When it's used, e.g., when adding a
subtask, it fails.
The MutableTreeModel#nodesByDomainObject map wouldn't find the node
associated to the Order, because the hashCode is different. At first
the Order is a new object so it returns a different hashCode, once
saved another. With these changes, when initializing the
MutableTreeModel it has already been saved.
A mechanism for ignoring in a scope the calls to createBindings has
been added. When accessing from the entry point the page is been
created and the AnnotatedDataBinder created automatically will track
the created tab. So in these cases we must ignore createBindings
calls.
Sometimes reloadBindings is called several times in the same request.
Now only the first call would force the reload and the others would be
ignored.
For example, when switching to Projects List reloadBindings is called
after the tab being created and another time when calling
org.libreplan.web.orders.OrderCRUDController.goToList(). Now the
second call is ignored.
Fix 2 issues in Util.createBindingsFor:
* Avoid to go over all the children of the component as it seems enough with
create the data binder in the root component.
* Avoid to call .loadAll() for each binder as the method Util.reloadBindings is
usually used before when needed.
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