ItEr09S09AdministracionGrupos: Shows the resources for a criterion

This commit is contained in:
Óscar González Fernández 2009-05-21 14:12:38 +02:00 committed by Javier Moran Rua
parent e797f6e350
commit 906c9763d9
5 changed files with 93 additions and 20 deletions

View file

@ -5,6 +5,7 @@ import java.util.List;
import org.navalplanner.business.common.exceptions.ValidationException;
import org.navalplanner.business.resources.entities.Criterion;
import org.navalplanner.business.resources.entities.ICriterionType;
import org.navalplanner.business.resources.entities.Worker;
import org.navalplanner.web.common.IMessagesForUser;
import org.navalplanner.web.common.MessagesForUser;
import org.navalplanner.web.common.OnlyOneVisible;
@ -116,6 +117,15 @@ public class CriterionAdminController extends GenericForwardComposer {
return criterionsModel.isEditing();
}
public boolean isApplyableToWorkers() {
return criterionsModel.isApplyableToWorkers();
}
public List<Worker> getWorkersForCurrentCriterion() {
return criterionsModel
.getResourcesSatisfyingCurrentCriterionOfType(Worker.class);
}
public boolean isCriterionActive() {
return criterionsModel.isCriterionActive();
}

View file

@ -1,5 +1,6 @@
package org.navalplanner.web.resources;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@ -10,6 +11,8 @@ import org.navalplanner.business.common.exceptions.ValidationException;
import org.navalplanner.business.resources.bootstrap.ICriterionsBootstrap;
import org.navalplanner.business.resources.entities.Criterion;
import org.navalplanner.business.resources.entities.ICriterionType;
import org.navalplanner.business.resources.entities.Resource;
import org.navalplanner.business.resources.entities.Worker;
import org.navalplanner.business.resources.services.CriterionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
@ -34,7 +37,7 @@ public class CriterionsModel implements ICriterionsModel {
@Autowired
private CriterionService criterionService;
private ICriterionType<Criterion> criterionType;
private ICriterionType<?> criterionType;
private Criterion criterion;
@ -63,7 +66,7 @@ public class CriterionsModel implements ICriterionsModel {
}
@Override
public void prepareForCreate(ICriterionType<Criterion> criterionType) {
public void prepareForCreate(ICriterionType<?> criterionType) {
this.criterionType = criterionType;
this.criterion = null;
}
@ -72,7 +75,7 @@ public class CriterionsModel implements ICriterionsModel {
public void prepareForEdit(Criterion criterion) {
Validate.notNull(criterion);
this.criterion = criterion;
this.criterionType = null;
this.criterionType = getTypeFor(criterion);
}
@Override
@ -101,7 +104,8 @@ public class CriterionsModel implements ICriterionsModel {
}
private void create() throws ValidationException {
Criterion criterion = criterionType.createCriterion(nameForCriterion);
Criterion criterion = (Criterion) criterionType
.createCriterion(nameForCriterion);
InvalidValue[] invalidValues = criterionValidator
.getInvalidValues(criterion);
if (invalidValues.length > 0)
@ -133,4 +137,18 @@ public class CriterionsModel implements ICriterionsModel {
public void setCriterionActive(boolean active) {
criterion.setActive(active);
}
@Override
public boolean isApplyableToWorkers() {
return criterionType != null
&& criterionType.criterionCanBeRelatedTo(Worker.class);
}
@Override
public <T extends Resource> List<T> getResourcesSatisfyingCurrentCriterionOfType(
Class<T> klass) {
if (criterion == null)
return new ArrayList<T>();
return criterionService.getResourcesSatisfying(klass, criterion);
}
}

View file

@ -6,6 +6,7 @@ import java.util.List;
import org.navalplanner.business.common.exceptions.ValidationException;
import org.navalplanner.business.resources.entities.Criterion;
import org.navalplanner.business.resources.entities.ICriterionType;
import org.navalplanner.business.resources.entities.Resource;
/**
* CriterionsModel contract <br />
@ -19,7 +20,7 @@ public interface ICriterionsModel {
Criterion getCriterion();
void prepareForCreate(ICriterionType<Criterion> criterionType);
void prepareForCreate(ICriterionType<?> criterionType);
void prepareForEdit(Criterion criterion);
@ -37,4 +38,9 @@ public interface ICriterionsModel {
void setCriterionActive(boolean active);
boolean isApplyableToWorkers();
<T extends Resource> List<T> getResourcesSatisfyingCurrentCriterionOfType(
Class<T> klass);
}

View file

@ -1,9 +1,20 @@
<zk>
<vbox id="${arg.top_id}">
<tabbox id="${arg.top_id}">
<tabs>
<tab label="Edición" closable="false" />
<tab label="Trabajadores" closable="false"
visible="@{controller.isApplyableToWorkers}" />
</tabs>
<tabpanels>
<tabpanel>
<vbox>
<hbox>
<label value="name" />
<textbox value="@{controller.criterionName}" />
<checkbox checked="@{controller.criterionActive}" visible="@{controller.editing}"></checkbox>
<checkbox
checked="@{controller.criterionActive}"
visible="@{controller.editing}">
</checkbox>
</hbox>
<hbox>
<button onClick="controller.save();"
@ -12,4 +23,33 @@
label="${arg.cancel_button_label}" />
</hbox>
</vbox>
</tabpanel>
<tabpanel>
<grid
model="@{controller.workersForCurrentCriterion}"
mold="paging" pageSize="5">
<columns>
<column label="operations" />
<column label="First Name"
sort="auto(firstName)" />
<column label="Surname" sort="auto(surname)" />
<column label="nif" sort="auto(nif)" />
</columns>
<rows>
<row self="@{each='worker'}"
value="@{worker}">
<label value="@{worker.firstName}" />
<label value="@{worker.surname}" />
<label value="@{worker.nif}" />
<hbox>
<button label="Edit">
</button>
</hbox>
</row>
</rows>
</grid>
</tabpanel>
</tabpanels>
</tabbox>
</zk>

View file

@ -20,8 +20,7 @@
</row>
<row>
<label value="daily_hours" />
<textbox value="@{controller.worker.dailyHours}"
/>
<textbox value="@{controller.worker.dailyHours}"/>
</row>
</rows>
</grid>