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

View file

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

View file

@ -1,15 +1,55 @@
<zk> <zk>
<vbox id="${arg.top_id}"> <tabbox id="${arg.top_id}">
<hbox> <tabs>
<label value="name" /> <tab label="Edición" closable="false" />
<textbox value="@{controller.criterionName}" /> <tab label="Trabajadores" closable="false"
<checkbox checked="@{controller.criterionActive}" visible="@{controller.editing}"></checkbox> visible="@{controller.isApplyableToWorkers}" />
</hbox> </tabs>
<hbox> <tabpanels>
<button onClick="controller.save();" <tabpanel>
label="${arg.save_button_label}" /> <vbox>
<button onClick="controller.cancel();" <hbox>
label="${arg.cancel_button_label}" /> <label value="name" />
</hbox> <textbox value="@{controller.criterionName}" />
</vbox> <checkbox
checked="@{controller.criterionActive}"
visible="@{controller.editing}">
</checkbox>
</hbox>
<hbox>
<button onClick="controller.save();"
label="${arg.save_button_label}" />
<button onClick="controller.cancel();"
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> </zk>

View file

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