Adapted CriterionAdminController to extend BaseCRUDController.
FEA: ItEr75S14ShowInformationEditedEntity
This commit is contained in:
parent
fa457a0e0e
commit
fe288512c6
5 changed files with 89 additions and 141 deletions
|
|
@ -35,6 +35,7 @@ import org.hibernate.validator.NotEmpty;
|
|||
import org.hibernate.validator.NotNull;
|
||||
import org.hibernate.validator.Valid;
|
||||
import org.navalplanner.business.advance.entities.AdvanceAssignment;
|
||||
import org.navalplanner.business.common.IHumanIdentifiable;
|
||||
import org.navalplanner.business.common.IntegrationEntity;
|
||||
import org.navalplanner.business.common.Registry;
|
||||
import org.navalplanner.business.common.entities.EntitySequence;
|
||||
|
|
@ -49,7 +50,7 @@ import org.springframework.stereotype.Component;
|
|||
*/
|
||||
@Component
|
||||
public class CriterionType extends IntegrationEntity implements
|
||||
ICriterionType<Criterion> {
|
||||
ICriterionType<Criterion>, IHumanIdentifiable {
|
||||
|
||||
public static CriterionType create() {
|
||||
return create(new CriterionType());
|
||||
|
|
@ -556,4 +557,9 @@ public class CriterionType extends IntegrationEntity implements
|
|||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getHumanId() {
|
||||
return name;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,33 +28,29 @@ import java.util.List;
|
|||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.hibernate.validator.InvalidValue;
|
||||
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
import org.navalplanner.business.resources.entities.CriterionType;
|
||||
import org.navalplanner.business.resources.entities.ICriterionType;
|
||||
import org.navalplanner.business.resources.entities.ResourceEnum;
|
||||
import org.navalplanner.web.common.IMessagesForUser;
|
||||
import org.navalplanner.web.common.BaseCRUDController;
|
||||
import org.navalplanner.web.common.Level;
|
||||
import org.navalplanner.web.common.MessagesForUser;
|
||||
import org.navalplanner.web.common.OnlyOneVisible;
|
||||
import org.navalplanner.web.common.Util;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.zkoss.zk.ui.Component;
|
||||
import org.zkoss.zk.ui.event.CheckEvent;
|
||||
import org.zkoss.zk.ui.event.Event;
|
||||
import org.zkoss.zk.ui.util.GenericForwardComposer;
|
||||
import org.zkoss.zul.Checkbox;
|
||||
import org.zkoss.zul.Combobox;
|
||||
import org.zkoss.zul.Comboitem;
|
||||
import org.zkoss.zul.Messagebox;
|
||||
import org.zkoss.zul.Tree;
|
||||
import org.zkoss.zul.Window;
|
||||
|
||||
/**
|
||||
* Controller for Criterions <br />
|
||||
*/
|
||||
public class CriterionAdminController extends GenericForwardComposer {
|
||||
public class CriterionAdminController extends BaseCRUDController<CriterionType> {
|
||||
|
||||
private static final Log LOG = LogFactory
|
||||
.getLog(CriterionAdminController.class);
|
||||
|
|
@ -62,97 +58,17 @@ public class CriterionAdminController extends GenericForwardComposer {
|
|||
@Autowired
|
||||
private ICriterionsModel criterionsModel;
|
||||
|
||||
private Component messagesContainer;
|
||||
|
||||
private IMessagesForUser messagesForUser;
|
||||
|
||||
private Window listing;
|
||||
|
||||
private Window editWindow;
|
||||
|
||||
private Checkbox cbHierarchy;
|
||||
|
||||
private OnlyOneVisible onlyOneVisible;
|
||||
|
||||
private CriterionTreeController editionTree;
|
||||
|
||||
@Override
|
||||
public void doAfterCompose(Component comp) throws Exception {
|
||||
super.doAfterCompose(comp);
|
||||
onlyOneVisible = new OnlyOneVisible(listing, editWindow, editWindow);
|
||||
onlyOneVisible.showOnly(listing);
|
||||
comp.setVariable("controller", this, false);
|
||||
messagesForUser = new MessagesForUser(messagesContainer);
|
||||
cbHierarchy = (Checkbox) editWindow.getFellow("cbHierarchy");
|
||||
setupResourceCombobox((Combobox) editWindow.getFellowIfAny("resourceCombobox"));
|
||||
}
|
||||
|
||||
public void goToCreateForm() {
|
||||
try {
|
||||
criterionsModel.prepareForCreate();
|
||||
setupCriterionTreeController(editWindow);
|
||||
showEditWindow(_("Create Criterion Type"));
|
||||
} catch (Exception e) {
|
||||
messagesForUser.showMessage(Level.ERROR,
|
||||
_("Error setting up creation form."));
|
||||
LOG.error(_("Error setting up creation form for Criterion Type"), e);
|
||||
}
|
||||
}
|
||||
|
||||
private void showEditWindow(String title) {
|
||||
editWindow.setTitle(title);
|
||||
onlyOneVisible.showOnly(editWindow);
|
||||
setResourceComboboxValue((Combobox) editWindow.getFellowIfAny("resourceCombobox"));
|
||||
Util.reloadBindings(editWindow);
|
||||
}
|
||||
|
||||
public void goToEditForm(CriterionType criterionType) {
|
||||
try {
|
||||
criterionsModel.prepareForEdit(criterionType);
|
||||
setupCriterionTreeController(editWindow);
|
||||
showEditWindow(_("Edit Criterion Type"));
|
||||
} catch (Exception e) {
|
||||
messagesForUser.showMessage(Level.ERROR,
|
||||
_("Error setting up edition form."));
|
||||
LOG.error(
|
||||
_("Error setting up edition form for Criterion Type with id: {0}",
|
||||
criterionType.getId()), e);
|
||||
}
|
||||
}
|
||||
|
||||
public void confirmRemove(CriterionType criterionType) {
|
||||
if (!criterionsModel.canRemove(criterionType)) {
|
||||
messagesForUser
|
||||
.showMessage(
|
||||
Level.WARNING,
|
||||
_("This criterion type cannot be deleted because it has assignments to projects or resources"));
|
||||
return;
|
||||
}
|
||||
showConfirmRemoveWindow(criterionType);
|
||||
}
|
||||
|
||||
private void showConfirmRemoveWindow(CriterionType criterionType) {
|
||||
try {
|
||||
int status = Messagebox.show(
|
||||
_("Confirm deleting {0}. Are you sure?",
|
||||
criterionType.getName()), _("Delete"),
|
||||
Messagebox.OK | Messagebox.CANCEL, Messagebox.QUESTION);
|
||||
if (Messagebox.OK == status) {
|
||||
remove(criterionType);
|
||||
}
|
||||
|
||||
} catch (InterruptedException e) {
|
||||
messagesForUser.showMessage(Level.ERROR, e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public void remove(CriterionType criterionType) {
|
||||
criterionsModel.confirmRemove(criterionType);
|
||||
Util.reloadBindings(listing);
|
||||
messagesForUser.showMessage(
|
||||
Level.INFO, _("Removed {0}", criterionType.getName()));
|
||||
}
|
||||
|
||||
public void confirmDisabledHierarchy() {
|
||||
if (!cbHierarchy.isChecked()){
|
||||
showConfirmingHierarchyWindow();
|
||||
|
|
@ -197,7 +113,7 @@ public class CriterionAdminController extends GenericForwardComposer {
|
|||
Level.INFO,
|
||||
_("Tree {0} sucessfully flattened", criterionsModel
|
||||
.getCriterionType().getName()));
|
||||
Util.reloadBindings(listing);
|
||||
Util.reloadBindings(listWindow);
|
||||
}
|
||||
|
||||
public void changeEnabled(Checkbox checkbox) {
|
||||
|
|
@ -208,49 +124,6 @@ public class CriterionAdminController extends GenericForwardComposer {
|
|||
return editionTree;
|
||||
}
|
||||
|
||||
public void saveAndClose(){
|
||||
try {
|
||||
clearUserMessages();
|
||||
save();
|
||||
close();
|
||||
} catch (ValidationException e) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void close() {
|
||||
onlyOneVisible.showOnly(listing);
|
||||
Util.reloadBindings(listing);
|
||||
}
|
||||
|
||||
private void save() throws ValidationException {
|
||||
try {
|
||||
criterionsModel.saveCriterionType();
|
||||
messagesForUser.showMessage(Level.INFO,
|
||||
_("CriterionType and its criteria saved"));
|
||||
} catch (ValidationException e) {
|
||||
for (InvalidValue invalidValue : e.getInvalidValues()) {
|
||||
String message = invalidValue.getPropertyName() + " : "
|
||||
+ _(invalidValue.getMessage());
|
||||
messagesForUser.showMessage(Level.ERROR, message);
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
private void clearUserMessages() {
|
||||
messagesForUser.clearMessages();
|
||||
}
|
||||
|
||||
public void saveAndContinue() {
|
||||
try{
|
||||
save();
|
||||
reloadCriterionType();
|
||||
} catch (ValidationException e) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void reloadCriterionType() {
|
||||
Tree tree = (Tree) editWindow.getFellowIfAny("tree");
|
||||
criterionsModel.reloadCriterionType();
|
||||
|
|
@ -285,8 +158,8 @@ public class CriterionAdminController extends GenericForwardComposer {
|
|||
CriterionType criterionType = (CriterionType) getCriterionType();
|
||||
for (Object object : combo.getItems()) {
|
||||
Comboitem item = (Comboitem) object;
|
||||
if(criterionType != null &&
|
||||
item.getValue().equals(criterionType.getResource())) {
|
||||
if (criterionType != null
|
||||
&& item.getValue().equals(criterionType.getResource())) {
|
||||
combo.setSelectedItem(item);
|
||||
}
|
||||
}
|
||||
|
|
@ -322,4 +195,71 @@ public class CriterionAdminController extends GenericForwardComposer {
|
|||
editionTree.reloadTree();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getEntityType() {
|
||||
return "Criterion Type";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getPluralEntityType() {
|
||||
return "Criterion Types";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initCreate() {
|
||||
criterionsModel.prepareForCreate();
|
||||
try {
|
||||
setupCriterionTreeController(editWindow);
|
||||
} catch (Exception e) {
|
||||
LOG.error(
|
||||
_("Error setting up creationg form for Criterion Type with id}"),
|
||||
e);
|
||||
}
|
||||
setResourceComboboxValue((Combobox) editWindow
|
||||
.getFellowIfAny("resourceCombobox"));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initEdit(CriterionType criterionType) {
|
||||
criterionsModel.prepareForEdit(criterionType);
|
||||
try {
|
||||
setupCriterionTreeController(editWindow);
|
||||
} catch (Exception e) {
|
||||
LOG.error(
|
||||
_("Error setting up edition form for Criterion Type with id: {0}",
|
||||
criterionType.getId()), e);
|
||||
}
|
||||
setResourceComboboxValue((Combobox) editWindow
|
||||
.getFellowIfAny("resourceCombobox"));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void save() throws ValidationException {
|
||||
criterionsModel.saveCriterionType();
|
||||
reloadCriterionType();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected CriterionType getEntityBeingEdited() {
|
||||
return (CriterionType) criterionsModel.getCriterionType();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void delete(CriterionType criterionType)
|
||||
throws InstanceNotFoundException {
|
||||
criterionsModel.confirmRemove(criterionType);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean beforeDeleting(CriterionType criterionType) {
|
||||
if (!criterionsModel.canRemove(criterionType)) {
|
||||
messagesForUser
|
||||
.showMessage(
|
||||
Level.WARNING,
|
||||
_("This criterion type cannot be deleted because it has assignments to projects or resources"));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
<?component name="criterionsTree" inline="true" macroURI="_criterionsTree.zul"?>
|
||||
|
||||
<window id="${arg.id}" title="${arg.title}">
|
||||
<window id="${arg.id}">
|
||||
<tabbox>
|
||||
<tabs>
|
||||
<tab label="${i18n:_('Edit')}" width="850"></tab>
|
||||
|
|
@ -36,7 +36,8 @@
|
|||
<rows>
|
||||
<row>
|
||||
<label value="${i18n:_('Name')}" />
|
||||
<textbox width="390px" value="@{controller.criterionType.name}"/>
|
||||
<textbox width="390px" value="@{controller.criterionType.name}"
|
||||
onBlur="controller.updateWindowTitle()" />
|
||||
</row>
|
||||
<row>
|
||||
<label value="${i18n:_('Type')}" />
|
||||
|
|
@ -84,11 +85,11 @@
|
|||
</tabpanels>
|
||||
</tabbox>
|
||||
<hbox>
|
||||
<button id="save" onClick="controller.saveAndClose();"
|
||||
<button id="save" onClick="controller.saveAndExit();"
|
||||
label="${i18n:_('Save')}" sclass="save-button global-action" />
|
||||
<button id="save_and_continue" onClick="controller.saveAndContinue();"
|
||||
label="${i18n:_('Save & Continue')}" sclass="saveandcontinue-button global-action"/>
|
||||
<button id="close" onClick="controller.close();"
|
||||
<button id="close" onClick="controller.cancelForm();"
|
||||
label="${i18n:_('Cancel')}" sclass="cancel-button global-action"/>
|
||||
</hbox>
|
||||
</window>
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<window id="listing" title="${i18n:_('Criterion Type List')}">
|
||||
<window id="listWindow" title="${i18n:_('Criterion Type List')}">
|
||||
<newdatasortablegrid model="@{controller.criterionTypes}" fixedLayout="true" sclass="clickable-rows">
|
||||
<columns>
|
||||
<newdatasortablecolumn label="${i18n:_('Name')}" sort="auto(lower(name))" sortDirection="ascending" />
|
||||
|
|
@ -42,7 +42,8 @@
|
|||
</button>
|
||||
<button sclass="icono" image="/common/img/ico_borrar1.png"
|
||||
hoverImage="/common/img/ico_borrar.png"
|
||||
tooltiptext="${i18n:_('Delete')}" disabled="@{criterionType.immutable}" onClick="controller.confirmRemove(self.parent.parent.value);">
|
||||
tooltiptext="${i18n:_('Delete')}" disabled="@{criterionType.immutable}"
|
||||
onClick="controller.confirmDelete(self.parent.parent.value);">
|
||||
</button>
|
||||
</hbox>
|
||||
</row>
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@
|
|||
|
||||
<vbox id="messagesContainer" />
|
||||
|
||||
<list top_id="listWindow" />
|
||||
<list id="listWindow" />
|
||||
|
||||
<edition id="editWindow"
|
||||
save_button_label="${i18n:_('Save')}"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue