@Override protected void getExtraFields(final List<ObjectAssociation> existingFields) { if (priorFields != null) { for (final ObjectAssociation priorField1 : priorFields) { if (existingFields.contains(priorField1) == false) { existingFields.add(priorField1); } else { LOG.debug("Skipping prior field: " + priorField1.getName()); } } } }
public static void write(final Request content, final ObjectAssociation field, final String delimiter) { final String description = field.getDescription(); final String titleSegment = description == null || description.equals("") ? null : ("title=\"" + description + "\""); content.appendHtml("<span class=\"label\"" + titleSegment + ">"); content.appendAsHtmlEncoded(field.getName()); if (delimiter != null) { content.appendHtml("<span class=\"delimiter\">" + delimiter + "</span>"); } content.appendHtml("</span>"); }
private ObjectData createObjectData(final ObjectAdapter adapter) { final Oid adapterOid = clone(adapter.getOid()); transientObjects.add(adapterOid); final ObjectSpecification cls = adapter.getSpecification(); final List<ObjectAssociation> associations = cls.getAssociations(Contributed.EXCLUDED); final ObjectData data = new ObjectData(adapterOid, cls.getFullIdentifier()); for (int i = 0; i < associations.size(); i++) { if (associations.get(i).isNotPersisted()) { if (associations.get(i).isOneToManyAssociation()) { continue; } if (associations.get(i).containsFacet(PropertyOrCollectionAccessorFacet.class) && !associations.get(i).containsFacet(PropertySetterFacet.class)) { LOG.debug("ignoring not-settable field {}", associations.get(i).getName()); continue; } } createAssociationData(adapter, data, associations.get(i)); } return data; }
private ObjectData createObjectData(final ObjectAdapter adapter) { transientObjects.add(adapter.getOid()); final ObjectSpecification cls = adapter.getSpecification(); final List<ObjectAssociation> fields = cls.getAssociations(); final ObjectData data = new ObjectData(adapter.getOid(), adapter.getResolveState().name(), cls.getFullIdentifier()); for (int i = 0; i < fields.size(); i++) { if (fields.get(i).isNotPersisted()) { if (fields.get(i).isOneToManyAssociation()) { continue; } if (fields.get(i).containsFacet(PropertyOrCollectionAccessorFacet.class) && !fields.get(i).containsFacet(PropertySetterFacet.class)) { LOG.debug("ignoring not-settable field " + fields.get(i).getName()); continue; } } createFieldData(adapter, data, fields.get(i)); } return data; }
@Override public void debugData(final DebugBuilder debug) { debug.appendln(field.getName(), "collection"); debug.indent(); debug.appendln("ID mapping", idMapping); debug.appendln("Version mapping", versionMapping); debug.unindent(); }
private void specificationGraph(final ObjectSpecification spec, final DebugBuilder view, final ArrayList<ObjectSpecification> visited) { final List<ObjectAssociation> fields = new ArrayList<ObjectAssociation>(spec.getAssociations()); Collections.sort(fields, new Comparator<ObjectAssociation>() { @Override public int compare(final ObjectAssociation o1, final ObjectAssociation o2) { return o1.getName().compareTo(o2.getName()); } }); for (int i = 0; i < fields.size(); i++) { final ObjectAssociation field = fields.get(i); final ObjectSpecification specification = field.getSpecification(); if (!specification.isValue()) { final boolean contains = visited.contains(specification); final String aggregated = specification.isAggregated() ? "++" : ""; view.appendln(aggregated + field.getName() + " (<a href=\"./debug.shtml?type=specification-graph&value=" + specification.getFullIdentifier() + "\">" + specification.getFullIdentifier() + "</a>" + (contains ? "..." : "") + ")"); if (!contains) { visited.add(specification); view.indent(); specificationGraph(specification, view, visited); view.unindent(); } } } }
@Override public String invalidReason(final ObjectValidityContext context) { final StringBuilder buf = new StringBuilder(); final ObjectAdapter adapter = context.getTarget(); for (final ObjectAssociation property : adapter.getSpecification().getAssociations(ObjectAssociationFilters.PROPERTIES)) { // ignore hidden properties if (property.isVisible(context.getSession(), adapter).isVetoed()) { continue; } // ignore disabled properties if (property.isUsable(context.getSession(), adapter).isVetoed()) { continue; } final OneToOneAssociation otoa = (OneToOneAssociation) property; final ObjectAdapter value = otoa.get(adapter); if (otoa.isAssociationValid(adapter, value).isVetoed()) { if (buf.length() > 0) { buf.append(", "); } buf.append(property.getName()); } } if (buf.length() > 0) { return "Invalid properties: " + buf.toString(); } return null; }
private void updateFields(final ObjectAdapter object, final Data state) { final ObjectData od = (ObjectData) state; final List<ObjectAssociation> fields = object.getSpecification().getAssociations(); for (final ObjectAssociation field : fields) { if (field.isNotPersisted()) { if (field.isOneToManyAssociation()) { continue; } if (field.containsFacet(PropertyOrCollectionAccessorFacet.class) && !field.containsFacet(PropertySetterFacet.class)) { LOG.debug("ignoring not-settable field " + field.getName()); continue; } } updateField(object, od, field); } }
private void updateFields(final ObjectAdapter object, final Data state) { final ObjectData od = (ObjectData) state; final List<ObjectAssociation> fields = object.getSpecification().getAssociations(Contributed.EXCLUDED); for (final ObjectAssociation field : fields) { if (field.isNotPersisted()) { if (field.isOneToManyAssociation()) { continue; } if (field.containsFacet(PropertyOrCollectionAccessorFacet.class) && !field.containsFacet(PropertySetterFacet.class)) { LOG.debug("ignoring not-settable field {}", field.getName()); continue; } } updateField(object, od, field); } }
@Override public void debugData(final DebugBuilder debug) { debug.appendln(field.getName(), "collection"); debug.indent(); debug.appendln("Table", tableName); debug.appendln("ID mapping", idMapping); debug.appendln("Element mapping", elementMapping); debug.unindent(); }
@Override protected void addField(final Request request, final ObjectAdapter object, final ObjectAssociation field, final LinkedObject linkedObject, final boolean showIcons) { if (field.isOneToManyAssociation()) { final String noColumnsString = request.getOptionalProperty("no-columns", "3"); final String tableClass = request.getOptionalProperty("table-class"); final String rowClassesList = request.getOptionalProperty("row-classes", ODD_ROW_CLASS + "|" + EVEN_ROW_CLASS); String[] rowClasses = new String[0]; if (rowClassesList != null) { rowClasses = rowClassesList.split("[,|/]"); } int noColumns; IsisContext.getPersistenceSession().resolveField(object, field); final ObjectAdapter collection = field.get(object); final ObjectSpecification elementSpec = collection.getElementSpecification(); final List<ObjectAssociation> fields = elementSpec.getAssociations(ObjectAssociationFilters.STATICALLY_VISIBLE_ASSOCIATIONS); if (noColumnsString.equalsIgnoreCase("all")) { noColumns = fields.size(); } else { noColumns = Math.min(fields.size(), Integer.valueOf(noColumnsString)); } final boolean isFieldEditable = field.isUsable(IsisContext.getAuthenticationSession(), object).isAllowed(); final String summary = "Table of elements in " + field.getName(); TableView.write(request, summary, object, field, collection, noColumns, fields, isFieldEditable, showIconByDefault(), tableClass, rowClasses); } else { super.addField(request, object, field, linkedObject, showIcons); } }
@Override public void debugData(final DebugBuilder debug) { debug.appendln(field.getName(), "collection"); debug.indent(); debug.appendln("Foreign key name", foreignKeyName); debug.appendln("Foreign key mapping", foreignKeyMapping); debug.appendln("ID mapping", idMapping); debug.appendln("Version mapping", versionMapping); debug.appendln("Original mapping", originalMapping); debug.unindent(); }
final ObjectAdapter collection = field.get(object); if (collection == null) { throw new ObjectPersistenceException("Collection " + field.getName() + " does not exist in " + object.getSpecification().getFullIdentifier());
@Override public void process(final Request request) { final RequestContext context = request.getContext(); if (context.isDebugDisabled()) { return; } if (request.isRequested("always") || context.getDebug() == RequestContext.Debug.ON) { request.appendHtml("<div class=\"debug\">"); request.appendHtml("<pre>"); final String id = request.getOptionalProperty("object"); final ObjectAdapter object = context.getMappedObjectOrResult(id); final ObjectSpecification specification = object.getSpecification(); request.appendHtml(specification.getSingularName() + " (" + specification.getFullIdentifier() + ") \n"); final List<ObjectAssociation> fields = specification.getAssociations(); for (int i = 0; i < fields.size(); i++) { request.appendHtml(" " + fields.get(i).getName() + " (" + fields.get(i).getSpecification().getSingularName() + ") \n"); } request.appendHtml("</pre>"); request.appendHtml("</div>"); } }
continue; headers[h++] = fields.get(i).getName();
final ObjectAdapter collection = field.get(object); if (collection == null) { throw new ObjectPersistenceException("Collection " + field.getName() + " does not exist in " + object.getSpecification().getFullIdentifier());
LOG.warn("No data found for " + referenceOid + " so field '" + field.getName() + "' not set in object '" + object.titleString() + "'"); } else { final ObjectAdapter reference = getPersistenceSession().recreateAdapter(referenceOid, specFor(fieldData));
@Override public void process(final Request request) { final String id = request.getOptionalProperty(OBJECT); final String fieldName = request.getRequiredProperty(FIELD); final ObjectAdapter object = request.getContext().getMappedObjectOrResult(id); final ObjectAssociation field = object.getSpecification().getAssociation(fieldName); if (field == null) { throw new ScimpiException("No field " + fieldName + " in " + object.getSpecification().getFullIdentifier()); } if (field.isVisible(IsisContext.getAuthenticationSession(), object).isVetoed()) { throw new ForbiddenException(field, ForbiddenException.VISIBLE); } request.appendAsHtmlEncoded(field.getName()); }
request.appendAsHtmlEncoded(field.getName()); request.appendHtml(":</span>"); final LinkedObject linkedObject = linkFields[i];