public NakedObjectSpecification getSpecification() { return field.getSpecification(); } }
public int getPreferredWidth(final int i, final NakedObjectAssociation specification) { final NakedObjectSpecification type = specification.getSpecification(); if (type == null) { return 200; } final Integer t = (Integer) types.get(type); if (t != null) { return t.intValue(); } else if (type.isObject()) { return 120; } else { return 100; } } }
public CollectionLink( final NakedObjectAssociation field, final NakedObject collection, final String description, final String objectId) { this.description = description; this.objectId = objectId; fieldId = field.getId(); title = collection.titleString(); specification = field.getSpecification(); }
public CollectionLink( final NakedObjectAssociation field, final NakedObject collection, final String description, final String objectId) { this.description = description; this.objectId = objectId; fieldId = field.getId(); title = collection.titleString(); specification = field.getSpecification(); }
public String getDescription() { final String name = getFieldName(); String type = getField().getSpecification().getSingularName(); type = name.indexOf(type) == -1 ? " (" + type + ")" : ""; final String description = getOneToOneAssociation().getDescription(); return name + type + " " + description; }
@Override public String getDescription() { final String name = getFieldName(); String type = getField().getSpecification().getSingularName(); type = name.indexOf(type) == -1 ? " (" + type + ")" : ""; final String description = getOneToManyAssociation().getDescription(); return name + type + " " + description; }
private NakedObjectAssociation[] tableFields(final NakedObjectAssociation[] viewFields, final Content content) { for (int i = 0; i < viewFields.length; i++) { final NakedObjectAssociation nakedObjectAssociation = viewFields[i]; // TODO reinstate check to skip unsuitable types /* * if (viewFields[i].getSpecification().isOfType( * NakedObjectsContext.getReflector().loadSpecification(ImageValue.class))) { continue; } */ if (!nakedObjectAssociation.isVisible(NakedObjectsContext.getAuthenticationSession(), content.getNaked()).isAllowed()) { continue; } LOG.debug("column " + nakedObjectAssociation.getSpecification()); // if(viewFields[i].getSpecification().isOfType(NakedObjects.getSpecificationLoader().lo)); } final NakedObjectAssociation[] tableFields = new NakedObjectAssociation[viewFields.length]; int c = 0; for (int i = 0; i < viewFields.length; i++) { if (!(viewFields[i] instanceof OneToManyAssociation)) { tableFields[c++] = viewFields[i]; } } final NakedObjectAssociation[] results = new NakedObjectAssociation[c]; System.arraycopy(tableFields, 0, results, 0, c); return results; } }
public Component createParseableField(final NakedObjectAssociation field, final NakedObject value, final boolean isEditable) { final BooleanValueFacet facet = field.getSpecification().getFacet(BooleanValueFacet.class); if (facet != null) { return createCheckboxBlock(isEditable, facet.isSet(value)); } else { final String titleString = value != null ? value.titleString() : ""; final MultiLineFacet multiLineFacet = field.getSpecification().getFacet(MultiLineFacet.class); final boolean isWrapped = multiLineFacet != null && !multiLineFacet.preventWrapping(); if (isWrapped) { return createInlineBlock("value", "<pre>" + titleString + "</pre>", null); } else { return createInlineBlock("value", titleString, null); } } }
public void resolveField(final NakedObject adapter, final NakedObjectAssociation field) { if (field.getSpecification().isCollectionOrIsAggregated()) { return; } final NakedObject referenceAdapter = field.get(adapter); if (referenceAdapter != null && referenceAdapter.getResolveState().isResolved()) { return; } if (referenceAdapter == null || !referenceAdapter.isPersistent()) { return; } if (LOG.isInfoEnabled()) { LOG.info("resolveField on server: " + adapter + "/" + field.getId()); } resolveFieldFromPersistenceLayer(adapter, field); }
public Component createParseableField(final NakedObjectAssociation field, final NakedObject value, final boolean isEditable) { final BooleanValueFacet facet = field.getSpecification().getFacet(BooleanValueFacet.class); if (facet != null) { return createCheckboxBlock(isEditable, facet.isSet(value)); } else { final String titleString = value != null ? value.titleString() : ""; final MultiLineFacet multiLineFacet = field.getSpecification().getFacet(MultiLineFacet.class); final boolean isWrapped = multiLineFacet != null && !multiLineFacet.preventWrapping(); if (isWrapped) { return createInlineBlock("value", "<pre>" + titleString + "</pre>", null); } else { return createInlineBlock("value", titleString, null); } } }
public void resolveField(final NakedObject adapter, final NakedObjectAssociation field) { if (field.getSpecification().isCollectionOrIsAggregated()) { return; } final NakedObject referenceAdapter = field.get(adapter); if (referenceAdapter != null && referenceAdapter.getResolveState().isResolved()) { return; } if (referenceAdapter == null || !referenceAdapter.isPersistent()) { return; } if (LOG.isInfoEnabled()) { LOG.info("resolveField on server: " + adapter + "/" + field.getId()); } resolveFieldFromPersistenceLayer(adapter, field); }
private void updateField(final NakedObject object, final ObjectData od, final NakedObjectAssociation field) { final Object fieldData = od.getEntry(field.getId()); if (field.isOneToManyAssociation()) { updateOneToManyAssociation(object, (OneToManyAssociation) field, (CollectionData) fieldData); } else if (field.getSpecification().containsFacet(EncodableFacet.class)) { final EncodableFacet facet = field.getSpecification().getFacet(EncodableFacet.class); final NakedObject value = facet.fromEncodedString((String) fieldData); ((OneToOneAssociation) field).initAssociation(object, value); } else if (field.isOneToOneAssociation()) { updateOneToOneAssociation(object, (OneToOneAssociation) field, (Data) fieldData); } }
public Content createFieldContent(final NakedObjectAssociation field, final NakedObject object) { Content content; NakedObject association = field.get(object); if (field instanceof OneToManyAssociation) { content = new OneToManyFieldImpl(object, association, (OneToManyAssociation) field); } else if (field instanceof OneToOneAssociation) { final NakedObjectSpecification fieldSpecification = field.getSpecification(); if (fieldSpecification.isParseable()) { content = new TextParseableFieldImpl(object, association, (OneToOneAssociation) field); } else { content = new OneToOneFieldImpl(object, association, (OneToOneAssociation) field); } } else { throw new NakedObjectException(); } return content; }
private void createFieldData(final NakedObject object, final ObjectData data, final NakedObjectAssociation field) { Object fieldData; if (field.isOneToManyAssociation()) { final NakedObject coll = field.get(object); fieldData = createCollectionData(coll); } else if (field.getSpecification().isEncodeable()) { final EncodableFacet facet = field.getSpecification().getFacet(EncodableFacet.class); final NakedObject value = field.get(object); fieldData = facet.toEncodedString(value); } else if (field.isOneToOneAssociation()) { final NakedObject ref = ((OneToOneAssociation) field).get(object); fieldData = createReferenceData(ref); } else { throw new UnknownTypeException(field); } data.addField(field.getId(), fieldData); }
private Content fieldContent(Content content) { NakedObjectSpecification spec = content.getSpecification(); NakedObject target = content.getNaked(); AuthenticationSession session = NakedObjectsContext.getAuthenticationSession(); NakedObjectAssociation[] fields = spec.getAssociations(NakedObjectAssociationFilters.dynamicallyVisible(session, target)); for (NakedObjectAssociation field : fields) { if (field.isOneToOneAssociation() && !field.getSpecification().isParseable()) { return Toolkit.getContentFactory().createFieldContent(field, target); } } return null; }
public void resolveField(final NakedObject objectAdapter, final NakedObjectAssociation field) { if (field.getSpecification().isCollectionOrIsAggregated()) { return; } final NakedObject referenceAdapter = field.get(objectAdapter); if (referenceAdapter == null || referenceAdapter.getResolveState().isResolved()) { return; } if (!referenceAdapter.isPersistent()) { return; } if (LOG.isInfoEnabled()) { // don't log object - it's toString() may use the unresolved field // or unresolved collection LOG.info("resolve field " + objectAdapter.getSpecification().getShortName() + "." + field.getId() + ": " + referenceAdapter.getSpecification().getShortName() + " " + referenceAdapter.getResolveState().code() + " " + referenceAdapter.getOid()); } resolveFieldFromPersistenceLayer(objectAdapter, field); }
private void setUpFields( final NakedObject adapter, final ObjectData adapterData, final KnownObjectsRequest knownObjects) { final Data[] fieldContent = adapterData.getFieldContent(); if (fieldContent != null && fieldContent.length > 0) { final NakedObjectAssociation[] fields = fieldOrderCache.getFields(adapter.getSpecification()); if (fields.length != fieldContent.length) { throw new NakedObjectsRemoteException("Data received for different number of fields; expected " + fields.length + ", but was " + fieldContent.length); } for (int i = 0; i < fields.length; i++) { final NakedObjectAssociation field = fields[i]; final Data fieldData = fieldContent[i]; if (fieldData == null || !field.isNotDerived()) { LOG.debug("no data for field " + field.getId()); continue; } if (field.isOneToManyAssociation()) { setUpCollectionField(adapter, adapterData, field, (CollectionData) fieldData, knownObjects); } else if (field.getSpecification().isEncodeable()) { setUpEncodedField(adapter, (OneToOneAssociation) field, fieldData); } else { setUpReferenceField(adapter, (OneToOneAssociation) field, fieldData, knownObjects); } } } }
private void setUpFields( final NakedObject adapter, final ObjectData adapterData, final KnownObjectsRequest knownObjects) { final Data[] fieldContent = adapterData.getFieldContent(); if (fieldContent != null && fieldContent.length > 0) { final NakedObjectAssociation[] fields = fieldOrderCache.getFields(adapter.getSpecification()); if (fields.length != fieldContent.length) { throw new NakedObjectsRemoteException("Data received for different number of fields; expected " + fields.length + ", but was " + fieldContent.length); } for (int i = 0; i < fields.length; i++) { final NakedObjectAssociation field = fields[i]; final Data fieldData = fieldContent[i]; if (fieldData == null || field.isDerived()) { LOG.debug("no data for field " + field.getId()); continue; } if (field.isOneToManyAssociation()) { setUpCollectionField(adapter, adapterData, field, (CollectionData) fieldData, knownObjects); } else if (field.getSpecification().isEncodeable()) { setUpEncodedField(adapter, (OneToOneAssociation) field, fieldData); } else { setUpReferenceField(adapter, (OneToOneAssociation) field, fieldData, knownObjects); } } } }
private Consent setFieldOfMatchingType(final NakedObject targetAdapter, final NakedObject sourceAdapter) { if (targetAdapter.isTransient() && sourceAdapter.isPersistent()) { // TODO: use Facet for this test instead. return new Veto("Can't set field in persistent object with reference to non-persistent object"); } final NakedObjectAssociation[] fields = targetAdapter.getSpecification().getAssociations( NakedObjectAssociationFilters.dynamicallyVisible(NakedObjectsContext.getAuthenticationSession(), targetAdapter)); for (final NakedObjectAssociation fld : fields) { if (!fld.isOneToOneAssociation()) { continue; } if (!sourceAdapter.getSpecification().isOfType(fld.getSpecification())) { continue; } if (fld.get(targetAdapter) != null) { continue; } final Consent associationValid = ((OneToOneAssociation) fld).isAssociationValid(targetAdapter, sourceAdapter); if (associationValid.isAllowed()) { return associationValid.setDescription("Set field " + fld.getName()); } } // TODO: use Facet for this test instead return new Veto(String.format("No empty field accepting object of type %s in %s", sourceAdapter.getSpecification() .getSingularName(), title())); }
private void initObject(final NakedObject object, final ObjectData data) { if (object.getResolveState().canChangeTo(ResolveState.RESOLVING)) { PersistorUtil.start(object, ResolveState.RESOLVING); final NakedObjectAssociation[] fields = object.getSpecification().getAssociations(); for (int i = 0; i < fields.length; i++) { final NakedObjectAssociation field = fields[i]; if (!field.isPersisted()) { continue; } final NakedObjectSpecification fieldSpecification = field.getSpecification(); if (fieldSpecification.isEncodeable()) { final EncodeableFacet encoder = fieldSpecification.getFacet(EncodeableFacet.class); NakedObject value; final String valueData = data.value(field.getId()); if (valueData == null || valueData.equals("NULL")) { value = null; } else { value = encoder.fromEncodedString(valueData); } ((OneToOneAssociation) field).initAssociation(object, value); } else if (field.isOneToManyAssociation()) { initObjectSetupCollection(object, data, field); } else if (field.isOneToOneAssociation()) { initObjectSetupReference(object, data, field); } } object.setOptimisticLock(data.getVersion()); PersistorUtil.end(object); } }