All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.nakedobjects.metamodel.facets.object.validprops.ObjectValidPropertiesFacetImpl Maven / Gradle / Ivy

The newest version!
package org.nakedobjects.metamodel.facets.object.validprops;

import org.nakedobjects.metamodel.adapter.NakedObject;
import org.nakedobjects.metamodel.facets.FacetHolder;
import org.nakedobjects.metamodel.interactions.ObjectValidityContext;
import org.nakedobjects.metamodel.spec.feature.NakedObjectAssociation;
import org.nakedobjects.metamodel.spec.feature.NakedObjectAssociationFilters;
import org.nakedobjects.metamodel.spec.feature.OneToOneAssociation;


public class ObjectValidPropertiesFacetImpl extends ObjectValidPropertiesFacetAbstract {

    public ObjectValidPropertiesFacetImpl(final FacetHolder holder) {
        super(holder);
    }

    public String invalidReason(final ObjectValidityContext context) {
        final StringBuilder buf = new StringBuilder();
        final NakedObject nakedObject = context.getTarget();
        for (final NakedObjectAssociation property : nakedObject.getSpecification().getAssociations(
                NakedObjectAssociationFilters.PROPERTIES)) {
            // ignore hidden properties
            if (property.isVisible(context.getSession(), nakedObject).isVetoed()) {
                continue;
            }
            // ignore disabled properties
            if (property.isUsable(context.getSession(), nakedObject).isVetoed()) {
                continue;
            }
            final OneToOneAssociation otoa = (OneToOneAssociation) property;
            final NakedObject value = otoa.get(nakedObject);
            if (otoa.isAssociationValid(nakedObject, value).isVetoed()) {
                if (buf.length() > 0) {
                    buf.append(", ");
                }
                buf.append(property.getName());
            }
        }
        if (buf.length() > 0) {
            return "Invalid properties: " + buf.toString();
        }
        return null;
    }

}

// Copyright (c) Naked Objects Group Ltd.




© 2015 - 2024 Weber Informatics LLC | Privacy Policy