Beispiel #1
0
  @Override
  public void clearValues() {

    editedEntity = null;

    for (Map<String, FormItem> groupItems : formItems.values()) {
      for (String key : groupItems.keySet()) {
        visitItem(
            key,
            new FormItemVisitor() {
              @Override
              public void visit(FormItem item) {
                item.clearValue();
              }
            });
      }
    }

    setOperational(false);
    if (toolsCallback != null) setEnabled(false);
    refreshPlainView();
  }
Beispiel #2
0
  @Override
  public void edit(ModelNode bean) {

    // Needs to be declared (i.e. when creating new instances)
    if (null == bean) throw new IllegalArgumentException("Invalid entity: null");

    // the edit buttons becomes visible
    setOperational(true);

    this.editedEntity = bean;

    // prevent modification of the source
    // the DMR getter otherwise mutate the bean
    this.editedEntity.protect();

    final Map<String, String> exprMap = getExpressions(editedEntity);

    // final List<ModelNode> filteredDMRNames = bean.hasDefined("_filtered-attributes") ?
    //        bean.get("_filtered-attributes").asList() : Collections.EMPTY_LIST;

    // visit form
    ModelNodeInspector inspector = new ModelNodeInspector(bean);
    inspector.accept(
        new ModelNodeVisitor() {

          private boolean isComplex = false;

          @Override
          public boolean visitValueProperty(
              final String propertyName, final ModelNode value, final PropertyContext ctx) {

            if (isComplex) return true; // skip complex types

            visitItem(
                propertyName,
                new FormItemVisitor() {

                  public void visit(FormItem item) {

                    item.resetMetaData();

                    // expressions
                    String exprValue = exprMap.get(propertyName);
                    if (exprValue != null) {
                      item.setUndefined(false);
                      item.setExpressionValue(exprValue);
                    }

                    // values
                    // values
                    else if (value.isDefined()) {
                      item.setUndefined(false);
                      Object castedValue = downCast(value, (ModelNode) item.getMetadata());
                      item.setValue(castedValue);
                    } else if (defaults.containsKey(propertyName)) {
                      item.setUndefined(false);
                      item.setValue(
                          downCast(defaults.get(propertyName), (ModelNode) item.getMetadata()));
                    } else {
                      // when no value is given we still need to validate the input
                      item.setUndefined(true);
                      item.setModified(true); // don't escape validation
                    }

                    // RBAC: attribute level constraints

                    /*for(ModelNode att : filteredDMRNames)
                    {
                        if(att.asString().equals(propertyName))
                        {
                            item.setFiltered(true);
                            break;
                        }
                    } */
                  }
                });

            return true;
          }

          @Override
          public boolean visitReferenceProperty(
              String propertyName, ModelNode value, PropertyContext ctx) {
            isComplex = true;
            return true;
          }

          @Override
          public void endVisitReferenceProperty(
              String propertyName, ModelNode value, PropertyContext ctx) {
            isComplex = false;
          }

          @Override
          public boolean visitCollectionProperty(
              String propertyName, final ModelNode value, PropertyContext ctx) {
            visitItem(
                propertyName,
                new FormItemVisitor() {

                  public void visit(FormItem item) {

                    item.resetMetaData();

                    if (value != null) {
                      item.setUndefined(false);
                      // TODO: item.setValue(value.asList());
                      item.setValue(Collections.EMPTY_LIST);
                    } else {
                      item.setUndefined(true);
                      item.setModified(true); // don't escape validation
                    }
                  }
                });

            return true;
          }
        });

    // plain views
    refreshPlainView();
  }