Update all plugins

This commit is contained in:
Bogdan Bodnarjuk 2016-04-19 16:52:00 +03:00 committed by bodnarjuk
parent 2f89620270
commit 22b733d8ff
5 changed files with 186 additions and 229 deletions

View file

@ -38,8 +38,7 @@ import org.libreplan.business.common.daos.IJobSchedulerConfigurationDAO;
* *
* @author Miciele Ghiorghis <m.ghiorghis@antoniusziekenhuis.nl> * @author Miciele Ghiorghis <m.ghiorghis@antoniusziekenhuis.nl>
*/ */
public class JobSchedulerConfiguration extends BaseEntity implements public class JobSchedulerConfiguration extends BaseEntity implements IHumanIdentifiable {
IHumanIdentifiable {
public static JobSchedulerConfiguration create() { public static JobSchedulerConfiguration create() {
return create(new JobSchedulerConfiguration()); return create(new JobSchedulerConfiguration());
@ -125,15 +124,13 @@ public class JobSchedulerConfiguration extends BaseEntity implements
if ( StringUtils.isBlank(jobGroup) && StringUtils.isBlank(jobName) ) { if ( StringUtils.isBlank(jobGroup) && StringUtils.isBlank(jobName) ) {
return true; return true;
} }
IJobSchedulerConfigurationDAO jobSchedulerConfigurationDAO = Registry IJobSchedulerConfigurationDAO jobSchedulerConfigurationDAO = Registry.getJobSchedulerConfigurationDAO();
.getJobSchedulerConfigurationDAO();
if ( isNewObject() ) { if ( isNewObject() ) {
return !jobSchedulerConfigurationDAO return !jobSchedulerConfigurationDAO.existsByJobGroupAndJobNameAnotherTransaction(this);
.existsByJobGroupAndJobNameAnotherTransaction(this);
} else { } else {
JobSchedulerConfiguration found = jobSchedulerConfigurationDAO JobSchedulerConfiguration found =
.findUniqueByJobGroupAndJobNameAnotherTransaction(jobGroup, jobSchedulerConfigurationDAO.findUniqueByJobGroupAndJobNameAnotherTransaction(jobGroup, jobName);
jobName);
return found == null || found.getId().equals(getId()); return found == null || found.getId().equals(getId());
} }
} }

View file

@ -39,11 +39,11 @@ public class SendEmailOnMilestoneReachedJob extends QuartzJobBean {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
ApplicationContext applicationContext = (ApplicationContext) context.getJobDetail(). ApplicationContext applicationContext =
getJobDataMap().get("applicationContext"); (ApplicationContext) context.getJobDetail().getJobDataMap().get("applicationContext");
IEmailNotificationJob milestoneReached = (SendEmailOnMilestoneReached) applicationContext IEmailNotificationJob milestoneReached =
.getBean("SendEmailOnMilestoneReached"); (SendEmailOnMilestoneReached) applicationContext.getBean("SendEmailOnMilestoneReached");
milestoneReached.sendEmail(); milestoneReached.sendEmail();
} }

View file

@ -138,8 +138,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
@Autowired @Autowired
private IAdHocTransactionService transactionService; private IAdHocTransactionService transactionService;
private static final org.apache.commons.logging.Log LOG = LogFactory private static final org.apache.commons.logging.Log LOG = LogFactory.getLog(OrderElementTreeController.class);
.getLog(OrderElementTreeController.class);
public List<org.libreplan.business.labels.entities.Label> getLabels() { public List<org.libreplan.business.labels.entities.Label> getLabels() {
return orderModel.getLabels(); return orderModel.getLabels();
@ -150,8 +149,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
return renderer; return renderer;
} }
public OrderElementTreeController(IOrderModel orderModel, public OrderElementTreeController(IOrderModel orderModel, OrderElementController orderElementController,
OrderElementController orderElementController,
IMessagesForUser messagesForUser) { IMessagesForUser messagesForUser) {
super(OrderElement.class); super(OrderElement.class);
this.orderModel = orderModel; this.orderModel = orderModel;
@ -217,8 +215,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
new IOnResult<OrderElementTemplate>() { new IOnResult<OrderElementTemplate>() {
@Override @Override
public void found(OrderElementTemplate template) { public void found(OrderElementTemplate template) {
OrderLineGroup parent = (OrderLineGroup) getModel() OrderLineGroup parent = (OrderLineGroup) getModel().getRoot();
.getRoot();
orderModel.createFrom(parent, template); orderModel.createFrom(parent, template);
getModel().addNewlyAddedChildrenOf(parent); getModel().addNewlyAddedChildrenOf(parent);
@ -233,12 +230,12 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
tree.invalidate(); tree.invalidate();
} }
void doEditFor(Order order) { void doEditFor() {
Util.reloadBindings(tree); Util.reloadBindings(tree);
} }
public void disabledCodeBoxes(boolean disabled) { public void disabledCodeBoxes(boolean disabled) {
Set<Treeitem> childrenSet = new HashSet<Treeitem>(); Set<Treeitem> childrenSet = new HashSet<>();
Treechildren treeChildren = tree.getTreechildren(); Treechildren treeChildren = tree.getTreechildren();
if ( treeChildren != null ) { if ( treeChildren != null ) {
childrenSet.addAll((Collection<Treeitem>) treeChildren.getItems()); childrenSet.addAll((Collection<Treeitem>) treeChildren.getItems());
@ -250,12 +247,11 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
private void disableCodeBoxes(Treeitem item, boolean disabled) { private void disableCodeBoxes(Treeitem item, boolean disabled) {
Treerow row = item.getTreerow(); Treerow row = item.getTreerow();
InputElement codeBox = (InputElement) ((Treecell) row.getChildren() InputElement codeBox = (InputElement) ((Treecell) row.getChildren().get(1)).getChildren().get(0);
.get(1)).getChildren().get(0);
codeBox.setDisabled(disabled); codeBox.setDisabled(disabled);
codeBox.invalidate(); codeBox.invalidate();
Set<Treeitem> childrenSet = new HashSet<Treeitem>(); Set<Treeitem> childrenSet = new HashSet<>();
Treechildren children = item.getTreechildren(); Treechildren children = item.getTreechildren();
if ( children != null ) { if ( children != null ) {
childrenSet.addAll((Collection<Treeitem>) children.getItems()); childrenSet.addAll((Collection<Treeitem>) children.getItems());
@ -274,27 +270,20 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
// Configuration of the order elements filter // Configuration of the order elements filter
Component filterComponent = Executions.createComponents( Component filterComponent = Executions.createComponents(
"/orders/_orderElementTreeFilter.zul", orderElementFilter, "/orders/_orderElementTreeFilter.zul",
orderElementFilter,
new HashMap<String, String>()); new HashMap<String, String>());
filterComponent.setVariable("treeController", this, true); filterComponent.setVariable("treeController", this, true);
bdFiltersOrderElement = (BandboxMultipleSearch) filterComponent bdFiltersOrderElement = (BandboxMultipleSearch) filterComponent.getFellow("bdFiltersOrderElement");
.getFellow("bdFiltersOrderElement"); filterOptionsPopup = (Popup) filterComponent.getFellow("filterOptionsPopup");
filterOptionsPopup = (Popup) filterComponent filterStartDateOrderElement = (Datebox) filterOptionsPopup.getFellow("filterStartDateOrderElement");
.getFellow("filterOptionsPopup"); filterFinishDateOrderElement = (Datebox) filterOptionsPopup.getFellow("filterFinishDateOrderElement");
filterStartDateOrderElement = (Datebox) filterOptionsPopup labelsWithoutInheritance = (Checkbox) filterOptionsPopup.getFellow("labelsWithoutInheritance");
.getFellow("filterStartDateOrderElement"); filterNameOrderElement = (Textbox) filterComponent.getFellow("filterNameOrderElement");
filterFinishDateOrderElement = (Datebox) filterOptionsPopup labelsWithoutInheritance = (Checkbox) filterComponent.getFellow("labelsWithoutInheritance");
.getFellow("filterFinishDateOrderElement"); templateFinderPopup = (TemplateFinderPopup) comp.getFellow("templateFinderPopupAtTree");
labelsWithoutInheritance = (Checkbox) filterOptionsPopup operationsForOrderElement.tree(tree).orderTemplates(this.orderTemplates);
.getFellow("labelsWithoutInheritance");
filterNameOrderElement = (Textbox) filterComponent
.getFellow("filterNameOrderElement");
labelsWithoutInheritance = (Checkbox) filterComponent
.getFellow("labelsWithoutInheritance");
templateFinderPopup = (TemplateFinderPopup) comp
.getFellow("templateFinderPopupAtTree");
operationsForOrderElement.tree(tree)
.orderTemplates(this.orderTemplates);
importOrderFiltersFromSession(); importOrderFiltersFromSession();
disableCreateTemplateButtonIfNeeded(comp); disableCreateTemplateButtonIfNeeded(comp);
@ -302,35 +291,29 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
private void importOrderFiltersFromSession() { private void importOrderFiltersFromSession() {
Order order = orderModel.getOrder(); Order order = orderModel.getOrder();
filterNameOrderElement.setValue(FilterUtils filterNameOrderElement.setValue(FilterUtils.readOrderTaskName(order));
.readOrderTaskName(order)); filterStartDateOrderElement.setValue(FilterUtils.readOrderStartDate(order));
filterStartDateOrderElement.setValue(FilterUtils filterFinishDateOrderElement.setValue(FilterUtils.readOrderEndDate(order));
.readOrderStartDate(order));
filterFinishDateOrderElement.setValue(FilterUtils
.readOrderEndDate(order));
if ( FilterUtils.readOrderParameters(order) != null ) { if ( FilterUtils.readOrderParameters(order) != null ) {
for (FilterPair each : (List<FilterPair>) FilterUtils for (FilterPair each : FilterUtils.readOrderParameters(order)) {
.readOrderParameters(order)) {
if ( toOrderFilterEnum(each) != null ) { if ( toOrderFilterEnum(each) != null ) {
bdFiltersOrderElement bdFiltersOrderElement.addSelectedElement(toOrderFilterEnum(each));
.addSelectedElement(toOrderFilterEnum(each));
} }
} }
} }
if ( FilterUtils.readOrderInheritance(order) != null ) { if ( FilterUtils.readOrderInheritance(order) != null ) {
labelsWithoutInheritance.setChecked(FilterUtils labelsWithoutInheritance.setChecked(FilterUtils.readOrderInheritance(order));
.readOrderInheritance(order));
} }
} }
private FilterPair toOrderFilterEnum(FilterPair each) { private FilterPair toOrderFilterEnum(FilterPair each) {
switch ((TaskElementFilterEnum) each.getType()) { switch ((TaskElementFilterEnum) each.getType()) {
case Label: case Label:
return new FilterPair(OrderElementFilterEnum.Label, return new FilterPair(OrderElementFilterEnum.Label, each.getPattern(), each.getValue());
each.getPattern(), each.getValue());
case Criterion: case Criterion:
return new FilterPair(OrderElementFilterEnum.Criterion, return new FilterPair(OrderElementFilterEnum.Criterion, each.getPattern(), each.getValue());
each.getPattern(), each.getValue());
case Resource: case Resource:
// Resources are discarded on WBS filter // Resources are discarded on WBS filter
} }
@ -338,14 +321,11 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
} }
private void disableCreateTemplateButtonIfNeeded(Component comp) { private void disableCreateTemplateButtonIfNeeded(Component comp) {
Button createTemplateButton = (Button) comp Button createTemplateButton = (Button) comp.getFellowIfAny("createTemplateButton");
.getFellowIfAny("createTemplateButton");
if ( createTemplateButton != null ) { if ( createTemplateButton != null ) {
if (!SecurityUtils if ( !SecurityUtils.isSuperuserOrUserInRoles(UserRole.ROLE_TEMPLATES) ) {
.isSuperuserOrUserInRoles(UserRole.ROLE_TEMPLATES)) {
createTemplateButton.setDisabled(true); createTemplateButton.setDisabled(true);
createTemplateButton createTemplateButton.setTooltiptext(_("Not enough permissions to create templates"));
.setTooltiptext(_("Not enough permissions to create templates"));
} }
} }
} }
@ -385,7 +365,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
} }
public void expandAll() { public void expandAll() {
Set<Treeitem> childrenSet = new HashSet<Treeitem>(); Set<Treeitem> childrenSet = new HashSet<>();
Treechildren children = tree.getTreechildren(); Treechildren children = tree.getTreechildren();
if ( children != null ) { if ( children != null ) {
childrenSet.addAll((Collection<Treeitem>) children.getItems()); childrenSet.addAll((Collection<Treeitem>) children.getItems());
@ -398,7 +378,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
private void expandAll(Treeitem item) { private void expandAll(Treeitem item) {
item.setOpen(true); item.setOpen(true);
Set<Treeitem> childrenSet = new HashSet<Treeitem>(); Set<Treeitem> childrenSet = new HashSet<>();
Treechildren children = item.getTreechildren(); Treechildren children = item.getTreechildren();
if ( children != null ) { if ( children != null ) {
childrenSet.addAll((Collection<Treeitem>) children.getItems()); childrenSet.addAll((Collection<Treeitem>) children.getItems());
@ -448,6 +428,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
orderElementForThisRow.setName(value); orderElementForThisRow.setName(value);
} }
}); });
if ( readOnly ) { if ( readOnly ) {
textBox.setDisabled(true); textBox.setDisabled(true);
} }
@ -457,16 +438,13 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
} }
@Override @Override
protected SchedulingState getSchedulingStateFrom( protected SchedulingState getSchedulingStateFrom(OrderElement currentElement) {
OrderElement currentElement) {
return currentElement.getSchedulingState(); return currentElement.getSchedulingState();
} }
@Override @Override
protected void onDoubleClickForSchedulingStateCell( protected void onDoubleClickForSchedulingStateCell(final OrderElement currentOrderElement) {
final OrderElement currentOrderElement) { IOrderElementModel model = orderModel.getOrderElementModel(currentOrderElement);
IOrderElementModel model = orderModel
.getOrderElementModel(currentOrderElement);
orderElementController.openWindow(model); orderElementController.openWindow(model);
updateColumnsFor(currentOrderElement); updateColumnsFor(currentOrderElement);
} }
@ -482,6 +460,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
private void addTextbox(final OrderElement orderElement) { private void addTextbox(final OrderElement orderElement) {
Textbox textBoxCode = new Textbox(); Textbox textBoxCode = new Textbox();
Util.bind(textBoxCode, new Util.Getter<String>() { Util.bind(textBoxCode, new Util.Getter<String>() {
@Override @Override
public String get() { public String get() {
@ -494,14 +473,14 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
orderElement.setCode(value); orderElement.setCode(value);
} }
}); });
textBoxCode.setConstraint(new Constraint() { textBoxCode.setConstraint(new Constraint() {
@Override @Override
public void validate(Component comp, Object value) public void validate(Component comp, Object value) throws WrongValueException {
throws WrongValueException {
if ( !orderElement.isFormatCodeValid((String) value) ) { if ( !orderElement.isFormatCodeValid((String) value) ) {
throw new WrongValueException( throw new WrongValueException(comp,
comp, _("Value is not valid.\n Code cannot contain chars like '_' \n " +
_("Value is not valid.\n Code cannot contain chars like '_' \n and should not be empty")); "and should not be empty"));
} }
} }
}); });
@ -518,20 +497,17 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
String code = orderElement.getCode(); String code = orderElement.getCode();
A hyperlink = new A(code); A hyperlink = new A(code);
Connector connector = connectorDAO Connector connector = connectorDAO.findUniqueByName(PredefinedConnectors.JIRA.getName());
.findUniqueByName(PredefinedConnectors.JIRA.getName());
if ( connector == null ) { if ( connector == null ) {
return; return;
} }
String jiraUrl = connector.getPropertiesAsMap().get( String jiraUrl = connector.getPropertiesAsMap().get(PredefinedConnectorProperties.SERVER_URL);
PredefinedConnectorProperties.SERVER_URL);
String codeWithoutPrefix = StringUtils.removeStart(code, PredefinedConnectorProperties.JIRA_CODE_PREFIX);
String codeWithoutPrefix = StringUtils.removeStart(code,
PredefinedConnectorProperties.JIRA_CODE_PREFIX);
codeWithoutPrefix = StringUtils.removeStart(codeWithoutPrefix, codeWithoutPrefix = StringUtils.removeStart(codeWithoutPrefix,
orderElement.getOrder().getCode() orderElement.getOrder().getCode() + EntitySequence.CODE_SEPARATOR_CHILDREN);
+ EntitySequence.CODE_SEPARATOR_CHILDREN);
hyperlink.setHref(jiraUrl + "/browse/" + codeWithoutPrefix); hyperlink.setHref(jiraUrl + "/browse/" + codeWithoutPrefix);
@ -558,6 +534,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
} }
}); });
if ( readOnly ) { if ( readOnly ) {
dinamicDatebox.setDisabled(true); dinamicDatebox.setDisabled(true);
} }
@ -580,9 +557,11 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
currentOrderElement.setDeadline(value); currentOrderElement.setDeadline(value);
} }
}); });
if (readOnly
|| (currentOrderElement.getTaskSource() != null && currentOrderElement if ( readOnly ||
.getTaskSource().getTask().isSubcontracted())) { (currentOrderElement.getTaskSource() != null &&
currentOrderElement.getTaskSource().getTask().isSubcontracted()) ) {
dinamicDatebox.setDisabled(true); dinamicDatebox.setDisabled(true);
} }
addDateCell(dinamicDatebox, _("end")); addDateCell(dinamicDatebox, _("end"));
@ -590,14 +569,11 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
} }
@Override @Override
protected void addOperationsCell(final Treeitem item, protected void addOperationsCell(final Treeitem item, final OrderElement currentOrderElement) {
final OrderElement currentOrderElement) { addCell(createEditButton(item), createRemoveButton(currentOrderElement));
addCell(createEditButton(currentOrderElement, item),
createRemoveButton(currentOrderElement));
} }
private Button createEditButton(final OrderElement currentOrderElement, private Button createEditButton(final Treeitem item) {
final Treeitem item) {
Button editbutton = createButton("/common/img/ico_editar1.png", Button editbutton = createButton("/common/img/ico_editar1.png",
_("Edit"), "/common/img/ico_editar.png", "icono", _("Edit"), "/common/img/ico_editar.png", "icono",
new EventListener() { new EventListener() {
@ -606,6 +582,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
showEditionOrderElement(item); showEditionOrderElement(item);
} }
}); });
return editbutton; return editbutton;
} }
@ -625,8 +602,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
@Override @Override
protected boolean isPredicateApplied() { protected boolean isPredicateApplied() {
return (predicate != null) return (predicate != null) && !((OrderElementPredicate) predicate).isEmpty();
&& !((OrderElementPredicate) predicate).isEmpty();
} }
/** /**
@ -646,18 +622,13 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
private void writeFilterParameters() { private void writeFilterParameters() {
Order order = orderModel.getOrder(); Order order = orderModel.getOrder();
FilterUtils.writeOrderStartDate(order, FilterUtils.writeOrderStartDate(order, filterStartDateOrderElement.getValue());
filterStartDateOrderElement.getValue()); FilterUtils.writeOrderEndDate(order, filterFinishDateOrderElement.getValue());
FilterUtils.writeOrderEndDate(order, FilterUtils.writeOrderTaskName(order, filterNameOrderElement.getValue());
filterFinishDateOrderElement.getValue()); FilterUtils.writeOrderInheritance(order, labelsWithoutInheritance.isChecked());
FilterUtils List<FilterPair> result = new ArrayList<>();
.writeOrderTaskName(order,
filterNameOrderElement.getValue()); for (FilterPair filterPair : (List<FilterPair>) bdFiltersOrderElement.getSelectedElements()) {
FilterUtils.writeOrderInheritance(order,
labelsWithoutInheritance.isChecked());
List<FilterPair> result = new ArrayList<FilterPair>();
for (FilterPair filterPair : (List<FilterPair>) bdFiltersOrderElement
.getSelectedElements()) {
result.add(toTasKElementFilterEnum(filterPair)); result.add(toTasKElementFilterEnum(filterPair));
} }
FilterUtils.writeOrderParameters(order, result); FilterUtils.writeOrderParameters(order, result);
@ -667,30 +638,25 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
private FilterPair toTasKElementFilterEnum(FilterPair each) { private FilterPair toTasKElementFilterEnum(FilterPair each) {
switch ((OrderElementFilterEnum) each.getType()) { switch ((OrderElementFilterEnum) each.getType()) {
case Label: case Label:
return new FilterPair(TaskElementFilterEnum.Label, return new FilterPair(TaskElementFilterEnum.Label, each.getPattern(), each.getValue());
each.getPattern(), each.getValue());
case Criterion: case Criterion:
return new FilterPair(TaskElementFilterEnum.Criterion, return new FilterPair(TaskElementFilterEnum.Criterion, each.getPattern(), each.getValue());
each.getPattern(), each.getValue());
} }
return null; return null;
} }
private OrderElementPredicate createPredicate() { private OrderElementPredicate createPredicate() {
List<FilterPair> listFilters = (List<FilterPair>) bdFiltersOrderElement List<FilterPair> listFilters = (List<FilterPair>) bdFiltersOrderElement.getSelectedElements();
.getSelectedElements();
Date startDate = filterStartDateOrderElement.getValue(); Date startDate = filterStartDateOrderElement.getValue();
Date finishDate = filterFinishDateOrderElement.getValue(); Date finishDate = filterFinishDateOrderElement.getValue();
boolean ignoreLabelsInheritance = Boolean boolean ignoreLabelsInheritance = Boolean.valueOf(labelsWithoutInheritance.isChecked());
.valueOf(labelsWithoutInheritance.isChecked());
String name = filterNameOrderElement.getValue(); String name = filterNameOrderElement.getValue();
if (listFilters.isEmpty() && startDate == null && finishDate == null if ( listFilters.isEmpty() && startDate == null && finishDate == null && name == null ) {
&& name == null) {
return null; return null;
} }
return new OrderElementPredicate(listFilters, startDate, finishDate, return new OrderElementPredicate(listFilters, startDate, finishDate, name, ignoreLabelsInheritance);
name, ignoreLabelsInheritance);
} }
public TreeModel getFilteredTreeModel() { public TreeModel getFilteredTreeModel() {
@ -717,8 +683,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
} }
private void filterByPredicate(OrderElementPredicate predicate) { private void filterByPredicate(OrderElementPredicate predicate) {
OrderElementTreeModel orderElementTreeModel = orderModel OrderElementTreeModel orderElementTreeModel = orderModel.getOrderElementsFilteredByPredicate(predicate);
.getOrderElementsFilteredByPredicate(predicate);
tree.setModel(orderElementTreeModel.asTree()); tree.setModel(orderElementTreeModel.asTree());
tree.invalidate(); tree.invalidate();
} }
@ -756,24 +721,28 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
protected String createTooltipText(OrderElement elem) { protected String createTooltipText(OrderElement elem) {
StringBuilder tooltipText = new StringBuilder(); StringBuilder tooltipText = new StringBuilder();
tooltipText.append(elem.getName() + ". "); tooltipText.append(elem.getName() + ". ");
if ((elem.getDescription() != null)
&& (!elem.getDescription().equals(""))) { if ( (elem.getDescription() != null) && (!elem.getDescription().equals("")) ) {
tooltipText.append(elem.getDescription()); tooltipText.append(elem.getDescription());
tooltipText.append(". "); tooltipText.append(". ");
} }
if ( (elem.getLabels() != null) && (!elem.getLabels().isEmpty()) ) { if ( (elem.getLabels() != null) && (!elem.getLabels().isEmpty()) ) {
tooltipText.append(" " + _("Labels") + ":"); tooltipText.append(" " + _("Labels") + ":");
tooltipText.append(StringUtils.join(elem.getLabels(), ",")); tooltipText.append(StringUtils.join(elem.getLabels(), ","));
tooltipText.append("."); tooltipText.append(".");
} }
if ((elem.getCriterionRequirements() != null)
&& (!elem.getCriterionRequirements().isEmpty())) { if ( (elem.getCriterionRequirements() != null) && (!elem.getCriterionRequirements().isEmpty()) ) {
ArrayList<String> criterionNames = new ArrayList<String>(); ArrayList<String> criterionNames = new ArrayList<>();
for(CriterionRequirement each:elem.getCriterionRequirements()) { for(CriterionRequirement each:elem.getCriterionRequirements()) {
if ( each.isValid() ) { if ( each.isValid() ) {
criterionNames.add(each.getCriterion().getName()); criterionNames.add(each.getCriterion().getName());
} }
} }
if ( !criterionNames.isEmpty() ) { if ( !criterionNames.isEmpty() ) {
tooltipText.append(" " + _("Criteria") + ":"); tooltipText.append(" " + _("Criteria") + ":");
tooltipText.append(StringUtils.join(criterionNames, ",")); tooltipText.append(StringUtils.join(criterionNames, ","));
@ -792,8 +761,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
public void showEditionOrderElement(final Treeitem item) { public void showEditionOrderElement(final Treeitem item) {
OrderElement currentOrderElement = (OrderElement) item.getValue(); OrderElement currentOrderElement = (OrderElement) item.getValue();
markModifiedTreeitem(item.getTreerow()); markModifiedTreeitem(item.getTreerow());
IOrderElementModel model = orderModel IOrderElementModel model = orderModel.getOrderElementModel(currentOrderElement);
.getOrderElementModel(currentOrderElement);
orderElementController.openWindow(model); orderElementController.openWindow(model);
refreshRow(item); refreshRow(item);
} }
@ -808,7 +776,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
} }
public Treeitem getTreeitemByOrderElement(OrderElement element) { public Treeitem getTreeitemByOrderElement(OrderElement element) {
List<Treeitem> listItems = new ArrayList<Treeitem>(this.tree.getItems()); List<Treeitem> listItems = new ArrayList<>(this.tree.getItems());
for (Treeitem item : listItems) { for (Treeitem item : listItems) {
OrderElement orderElement = (OrderElement) item.getValue(); OrderElement orderElement = (OrderElement) item.getValue();
if ( orderElement.getId().equals(element.getId()) ) { if ( orderElement.getId().equals(element.getId()) ) {
@ -824,16 +792,15 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
public Constraint checkConstraintFinishDate() { public Constraint checkConstraintFinishDate() {
return new Constraint() { return new Constraint() {
@Override @Override
public void validate(Component comp, Object value) public void validate(Component comp, Object value) throws WrongValueException {
throws WrongValueException {
Date finishDate = (Date) value; Date finishDate = (Date) value;
if ((finishDate != null)
&& (filterStartDateOrderElement.getValue() != null) if ( (finishDate != null) &&
&& (finishDate.compareTo(filterStartDateOrderElement (filterStartDateOrderElement.getValue() != null) &&
.getValue()) < 0)) { (finishDate.compareTo(filterStartDateOrderElement.getValue()) < 0) ) {
filterFinishDateOrderElement.setValue(null); filterFinishDateOrderElement.setValue(null);
throw new WrongValueException(comp, throw new WrongValueException(comp, _("must be after start date"));
_("must be after start date"));
} }
} }
}; };
@ -842,16 +809,15 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
public Constraint checkConstraintStartDate() { public Constraint checkConstraintStartDate() {
return new Constraint() { return new Constraint() {
@Override @Override
public void validate(Component comp, Object value) public void validate(Component comp, Object value) throws WrongValueException {
throws WrongValueException {
Date startDate = (Date) value; Date startDate = (Date) value;
if ((startDate != null)
&& (filterFinishDateOrderElement.getValue() != null) if ( (startDate != null) &&
&& (startDate.compareTo(filterFinishDateOrderElement (filterFinishDateOrderElement.getValue() != null) &&
.getValue()) > 0)) { (startDate.compareTo(filterFinishDateOrderElement.getValue()) > 0) ) {
filterStartDateOrderElement.setValue(null); filterStartDateOrderElement.setValue(null);
throw new WrongValueException(comp, throw new WrongValueException(comp, _("must be lower than end date"));
_("must be lower than end date"));
} }
} }
}; };
@ -859,12 +825,9 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
@Override @Override
public void remove(OrderElement element) { public void remove(OrderElement element) {
boolean hasImputedExpenseSheets = orderModel boolean hasImputedExpenseSheets = orderModel.hasImputedExpenseSheetsThisOrAnyOfItsChildren(element);
.hasImputedExpenseSheetsThisOrAnyOfItsChildren(element);
if ( hasImputedExpenseSheets ) { if ( hasImputedExpenseSheets ) {
messagesForUser messagesForUser.showMessage(Level.ERROR,
.showMessage(
Level.ERROR,
_("You can not remove the project \"{0}\" because this one has imputed expense sheets.", _("You can not remove the project \"{0}\" because this one has imputed expense sheets.",
element.getName())); element.getName()));
return; return;
@ -872,20 +835,17 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
boolean alreadyInUse = orderModel.isAlreadyInUse(element); boolean alreadyInUse = orderModel.isAlreadyInUse(element);
if ( alreadyInUse ) { if ( alreadyInUse ) {
messagesForUser messagesForUser.showMessage(Level.ERROR,
.showMessage(
Level.ERROR,
_("You cannot remove the task \"{0}\" because it has work reported on it or any of its children", _("You cannot remove the task \"{0}\" because it has work reported on it or any of its children",
element.getName())); element.getName()));
return; return;
} }
boolean onlyChildAndParentAlreadyInUseByHoursOrExpenses = orderModel boolean onlyChildAndParentAlreadyInUseByHoursOrExpenses =
.isOnlyChildAndParentAlreadyInUseByHoursOrExpenses(element); orderModel.isOnlyChildAndParentAlreadyInUseByHoursOrExpenses(element);
if ( onlyChildAndParentAlreadyInUseByHoursOrExpenses ) { if ( onlyChildAndParentAlreadyInUseByHoursOrExpenses ) {
messagesForUser messagesForUser.showMessage(Level.ERROR,
.showMessage(
Level.ERROR,
_("You cannot remove the task \"{0}\" because it is the only child of its parent and its parent has tracked time or imputed expenses", _("You cannot remove the task \"{0}\" because it is the only child of its parent and its parent has tracked time or imputed expenses",
element.getName())); element.getName()));
return; return;
@ -934,8 +894,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
} }
@Override @Override
public void setBudgetHours(OrderElement element, public void setBudgetHours(OrderElement element, BigDecimal budget) {
BigDecimal budget) {
if ( element instanceof OrderLine ) { if ( element instanceof OrderLine ) {
OrderLine line = (OrderLine) element; OrderLine line = (OrderLine) element;
line.setBudget(budget); line.setBudget(budget);

View file

@ -28,7 +28,6 @@ import static org.libreplan.web.test.WebappGlobalNames.WEBAPP_SPRING_CONFIG_TEST
import static org.libreplan.web.test.WebappGlobalNames.WEBAPP_SPRING_SECURITY_CONFIG_TEST_FILE; import static org.libreplan.web.test.WebappGlobalNames.WEBAPP_SPRING_SECURITY_CONFIG_TEST_FILE;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
import java.util.Date; import java.util.Date;
import java.util.Properties; import java.util.Properties;
@ -62,8 +61,12 @@ import org.springframework.transaction.annotation.Transactional;
* @author Miciele Ghiorghis <m.ghiorghis@antoniusziekenhuis.nl> * @author Miciele Ghiorghis <m.ghiorghis@antoniusziekenhuis.nl>
*/ */
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { BUSINESS_SPRING_CONFIG_FILE, @ContextConfiguration(locations = {
WEBAPP_SPRING_CONFIG_FILE, WEBAPP_SPRING_CONFIG_TEST_FILE, BUSINESS_SPRING_CONFIG_FILE,
WEBAPP_SPRING_CONFIG_FILE,
WEBAPP_SPRING_CONFIG_TEST_FILE,
WEBAPP_SPRING_SECURITY_CONFIG_FILE, WEBAPP_SPRING_SECURITY_CONFIG_FILE,
WEBAPP_SPRING_SECURITY_CONFIG_TEST_FILE }) WEBAPP_SPRING_SECURITY_CONFIG_TEST_FILE })
public class ExportTimesheetsToTimTest { public class ExportTimesheetsToTimTest {
@ -74,7 +77,7 @@ public class ExportTimesheetsToTimTest {
IExportTimesheetsToTim exportTimesheetsToTim; IExportTimesheetsToTim exportTimesheetsToTim;
@Before @Before
public void loadProperties() throws FileNotFoundException, IOException { public void loadProperties() throws IOException {
String filename = System.getProperty("user.dir") + "/../scripts/tim-connector/tim-conn.properties"; String filename = System.getProperty("user.dir") + "/../scripts/tim-connector/tim-conn.properties";
properties = new Properties(); properties = new Properties();
properties.load(new FileInputStream(filename)); properties.load(new FileInputStream(filename));
@ -119,8 +122,7 @@ public class ExportTimesheetsToTimTest {
} }
private Order givenOrder() { private Order givenOrder() {
return transactionService return transactionService.runOnAnotherTransaction(new IOnTransaction<Order>() {
.runOnAnotherTransaction(new IOnTransaction<Order>() {
@Override @Override
public Order execute() { public Order execute() {
return givenValidOrderAlreadyStored(); return givenValidOrderAlreadyStored();
@ -133,8 +135,7 @@ public class ExportTimesheetsToTimTest {
order.setCode(UUID.randomUUID().toString()); order.setCode(UUID.randomUUID().toString());
order.setName("Order name " + UUID.randomUUID()); order.setName("Order name " + UUID.randomUUID());
order.setInitDate(new Date()); order.setInitDate(new Date());
order.setCalendar(configurationDAO.getConfiguration() order.setCalendar(configurationDAO.getConfiguration().getDefaultCalendar());
.getDefaultCalendar());
OrderVersion version = setupVersionUsing(scenarioManager, order); OrderVersion version = setupVersionUsing(scenarioManager, order);
order.useSchedulingDataFor(version); order.useSchedulingDataFor(version);
@ -147,8 +148,7 @@ public class ExportTimesheetsToTimTest {
} }
} }
private OrderVersion setupVersionUsing(IScenarioManager scenarioManager, private OrderVersion setupVersionUsing(IScenarioManager scenarioManager, Order order) {
Order order) {
Scenario current = scenarioManager.getCurrent(); Scenario current = scenarioManager.getCurrent();
OrderVersion result = OrderVersion.createInitialVersion(current); OrderVersion result = OrderVersion.createInitialVersion(current);
order.setVersionForScenario(current, result); order.setVersionForScenario(current, result);

35
pom.xml
View file

@ -84,8 +84,8 @@
<libreplan.mode>dev</libreplan.mode> <libreplan.mode>dev</libreplan.mode>
<!-- Hibernate properties --> <!-- Hibernate properties -->
<hibernate.show_sql>false</hibernate.show_sql> <hibernate.show_sql>false</hibernate.show_sql>
<hibernate.format_sql>true</hibernate.format_sql> <hibernate.format_sql>false</hibernate.format_sql>
<hibernate.use_sql_comments>true</hibernate.use_sql_comments> <hibernate.use_sql_comments>false</hibernate.use_sql_comments>
<hibernate.hbm2ddl.auto>validate</hibernate.hbm2ddl.auto> <hibernate.hbm2ddl.auto>validate</hibernate.hbm2ddl.auto>
<!-- Enable example users (wsreader, wswriter, wssubcontracting, <!-- Enable example users (wsreader, wswriter, wssubcontracting,
@ -614,7 +614,7 @@
<dependency> <dependency>
<groupId>net.sf.mpxj</groupId> <groupId>net.sf.mpxj</groupId>
<artifactId>mpxj</artifactId> <artifactId>mpxj</artifactId>
<version>5.2.1</version> <version>5.2.2</version>
</dependency> </dependency>
<!-- ZK fileupload --> <!-- ZK fileupload -->
@ -742,9 +742,9 @@
<!-- =========================================================== --> <!-- =========================================================== -->
<!-- Gettext configuration --> <!-- Gettext configuration -->
<plugin> <plugin>
<groupId>org.xnap.commons</groupId> <groupId>com.googlecode.gettext-commons</groupId>
<artifactId>maven-gettext-plugin</artifactId> <artifactId>gettext-maven-plugin</artifactId>
<version>1.2.0</version> <version>1.2.4</version>
<configuration> <configuration>
<targetBundle>i18n.Messages</targetBundle> <targetBundle>i18n.Messages</targetBundle>
</configuration> </configuration>
@ -755,11 +755,11 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version> <version>3.5.1</version>
<configuration> <configuration>
<verbose>true</verbose> <verbose>true</verbose>
<source>1.6</source> <source>1.7</source>
<target>1.6</target> <target>1.7</target>
<encoding>UTF-8</encoding> <encoding>UTF-8</encoding>
</configuration> </configuration>
</plugin> </plugin>
@ -778,7 +778,7 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId> <artifactId>maven-war-plugin</artifactId>
<version>2.2</version> <version>2.6</version>
<configuration> <configuration>
<webResources> <webResources>
<resource> <resource>
@ -796,7 +796,7 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId> <artifactId>maven-surefire-plugin</artifactId>
<version>2.17</version> <version>2.19.1</version>
<configuration> <configuration>
<runOrder>alphabetical</runOrder> <runOrder>alphabetical</runOrder>
</configuration> </configuration>
@ -843,24 +843,24 @@
<dependency> <dependency>
<groupId>com.jolbox</groupId> <groupId>com.jolbox</groupId>
<artifactId>bonecp</artifactId> <artifactId>bonecp</artifactId>
<version>0.7.1.RELEASE</version> <version>0.8.0.RELEASE</version>
</dependency> </dependency>
<!-- connection pooling dependencies --> <!-- connection pooling dependencies -->
<dependency> <dependency>
<groupId>org.slf4j</groupId> <groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId> <artifactId>slf4j-api</artifactId>
<version>1.5.5</version> <version>1.7.21</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.slf4j</groupId> <groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId> <artifactId>slf4j-simple</artifactId>
<version>1.5.5</version> <version>1.7.21</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.google.guava</groupId> <groupId>com.google.guava</groupId>
<artifactId>guava</artifactId> <artifactId>guava</artifactId>
<version>14.0.1</version> <version>19.0</version>
</dependency> </dependency>
</dependencies> </dependencies>
</plugin> </plugin>
@ -882,13 +882,14 @@
<plugin> <plugin>
<groupId>org.codehaus.mojo</groupId> <groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId> <artifactId>cobertura-maven-plugin</artifactId>
<version>2.4</version> <version>2.7</version>
<configuration> <configuration>
<formats> <formats>
<format>xml</format> <format>xml</format>
<format>html</format> <format>html</format>
</formats> </formats>
<maxmem>512M</maxmem> <maxmem>512M</maxmem>
<check/>
</configuration> </configuration>
</plugin> </plugin>
@ -897,7 +898,7 @@
<plugin> <plugin>
<groupId>org.liquibase</groupId> <groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId> <artifactId>liquibase-maven-plugin</artifactId>
<version>2.0.5</version> <version>3.5.0</version>
</plugin> </plugin>
</plugins> </plugins>