private void processStartEmbeddedAttribute(Attributes atts) { String name = atts.getValue("", "name"); String type = atts.getValue("", "type"); embeddedAttribute = new EmbeddedAttribute(name); embeddedAttribute.setType(type); objEntity.addAttribute(embeddedAttribute); }
((EmbeddedAttribute) attribute).removeAttributeOverride(keysForDelete.get(i)); ((EmbeddedAttribute) attribute).addAttributeOverride(key, currentOverrAttr.get(key));
private void validateEmbeddable(EmbeddedAttribute attribute, ValidationResult validationResult) { Embeddable embeddable = attribute.getEmbeddable(); String msg = attribute.getType() == null ? "EmbeddedAttribute '%s' has no Embeddable" : "EmbeddedAttribute '%s' has incorrect Embeddable"; addFailure(validationResult, attribute, msg, attribute.getName()); return; Map<String, String> attrOverrides = attribute.getAttributeOverrides(); addFailure(validationResult, attribute, "EmbeddedAttribute '%s' has no DbAttribute mapping", attribute.getName()); } else if (attribute.getEntity() .getDbEntity() .getAttribute(dbAttributeName) == null) { addFailure(validationResult, attribute, "EmbeddedAttribute '%s' has incorrect DbAttribute mapping", attribute.getName());
/** * Returns an ObjAttribute for a given name, taking into account column name * overrides. */ public ObjAttribute getAttribute(String name) { Embeddable e = getEmbeddable(); if (e == null) { return null; } EmbeddableAttribute ea = e.getAttribute(name); if (ea == null) { return null; } return makeObjAttribute(ea); }
private ObjAttribute makeObjAttribute( EmbeddableAttribute embeddableAttribute, String dbPath) { String fullName = getName() + "." + embeddableAttribute.getName(); ObjAttribute oa = new ObjAttribute( fullName, embeddableAttribute.getType(), (ObjEntity) getEntity()); oa.setDbAttributePath(dbPath); return oa; }
private void copyObjAttribute(ObjAttribute attributeSaved, ObjAttribute attribute) { attributeSaved.setDbAttributePath(attribute.getDbAttributePath()); attributeSaved.setName(attribute.getName()); attributeSaved.setEntity(attribute.getEntity()); attributeSaved.setParent(attribute.getParent()); attributeSaved.setType(attribute.getType()); attributeSaved.setUsedForLocking(attribute.isUsedForLocking()); if (attributeSaved instanceof EmbeddedAttribute) { Map<String, String> attrOverrides; if (attribute instanceof EmbeddedAttribute) { attrOverrides = ((EmbeddedAttribute) attribute).getAttributeOverrides(); } else { attrOverrides = new HashMap<>(); } if (attrOverrides.size() > 0) { Iterator it = attrOverrides.entrySet().iterator(); while (it.hasNext()) { Map.Entry attrOv = (Map.Entry) it.next(); ((EmbeddedAttribute) attributeSaved).addAttributeOverride(attrOv.getKey().toString(), attrOv .getValue().toString()); } } } }
@Override public void encodeAsXML(XMLEncoder encoder) { encoder.print("<embedded-attribute name=\"" + getName() + '\"'); if (getType() != null) { encoder.print(" type=\""); encoder.print(getType()); encoder.print('\"'); } if (attributeOverrides.isEmpty()) { encoder.println("/>"); return; } encoder.println('>'); encoder.indent(1); for (Map.Entry<String, String> e : attributeOverrides.entrySet()) { encoder.print("<embeddable-attribute-override name=\""); encoder.print(e.getKey()); encoder.print("\" db-attribute-path=\""); encoder.print(e.getValue()); encoder.println("\"/>"); } encoder.indent(-1); encoder.println("</embedded-attribute>"); }
protected void createEmbeddedAttributeProperty(PersistentDescriptor descriptor, EmbeddedAttribute embeddedAttribute, ObjAttribute attribute) { Class<?> embeddableClass = embeddedAttribute.getJavaClass(); String propertyPath = attribute.getName(); int lastDot = propertyPath.lastIndexOf('.'); if (lastDot <= 0 || lastDot == propertyPath.length() - 1) { throw new IllegalArgumentException("Invalid embeddable path: " + propertyPath); } String embeddableName = propertyPath.substring(lastDot + 1); EmbeddableDescriptor embeddableDescriptor = createEmbeddableDescriptor(embeddedAttribute); Accessor embeddedAccessor = createAccessor(descriptor, embeddedAttribute.getName(), embeddableClass); Accessor embeddedableAccessor = createEmbeddableAccessor(embeddableDescriptor, embeddableName, attribute.getJavaClass()); Accessor accessor = new EmbeddedFieldAccessor(embeddableDescriptor, embeddedAccessor, embeddedableAccessor); descriptor.addDeclaredProperty(new SimpleAttributeProperty(descriptor, accessor, attribute)); }
public OverrideEmbeddableAttributeTableModel(ProjectController mediator, Object eventSource, Collection<EmbeddableAttribute> embAttr, ObjAttribute attr) { super(mediator, eventSource, new ArrayList<Object>(embAttr)); this.embeddableList = new ArrayList<EmbeddableAttribute>(embAttr); this.attr = attr; this.isAttributeOverrideChange = false; if (attr instanceof EmbeddedAttribute) { EmbeddedAttribute embeddedAttribute = (EmbeddedAttribute) attr; this.overrideAttr = embeddedAttribute.getAttributeOverrides(); } else { this.overrideAttr = null; } Iterator<EmbeddableAttribute> it = embeddableList.iterator(); while (it.hasNext()) { EmbeddableAttribute emb = it.next(); if (overrideAttr != null) { if (overrideAttr.get(emb.getName()) != null) { emb.setDbAttributeName(overrideAttr.get(emb.getName())); } } } }
public void itemStateChanged(ItemEvent e) { if (lastObjectType != null) { if (!lastObjectType.equals(e.getItemSelectable())) { if (embeddableNames.contains(e.getItemSelectable().getSelectedObjects()[0].toString())) { if (attributeSaved instanceof ObjAttribute) { EmbeddedAttribute copyAttrSaved = new EmbeddedAttribute(); copyObjAttribute(copyAttrSaved, attributeSaved); attributeSaved = copyAttrSaved; } } else { if (attributeSaved instanceof EmbeddedAttribute) { ObjAttribute copyAttrSaved = new ObjAttribute(); copyObjAttribute(copyAttrSaved, attributeSaved); attributeSaved = copyAttrSaved; } } attributeSaved.setType(e.getItemSelectable().getSelectedObjects()[0].toString()); rebuildTable(); setEnabledSaveButton(); } } } });
for (ObjAttribute objAttribute : embedded.getAttributes()) { createEmbeddedAttributeProperty(descriptor, embedded, objAttribute);
private void processStartEmbeddableAttributeOverride(Attributes atts) { String name = atts.getValue("", "name"); String dbName = atts.getValue("", "db-attribute-path"); embeddedAttribute.addAttributeOverride(name, dbName); }
/** * Returns Java class of an object property described by this attribute. Wraps any * thrown exceptions into CayenneRuntimeException. */ @Override public Class<?> getJavaClass() { if (this.getType() == null) { return null; } try { return Util.getJavaClass(getType()); } catch (ClassNotFoundException e) { throw new CayenneRuntimeException("Failed to load class for name '" + this.getType() + "': " + e.getMessage(), e); } }
/** * Creates a descriptor of the embedded property. */ protected EmbeddableDescriptor createEmbeddableDescriptor(EmbeddedAttribute embeddedAttribute) { // TODO: andrus, 11/19/2007 = avoid creation of descriptor for every // property of // embeddable; look up reusable descriptor instead. return new FieldEmbeddableDescriptor(embeddedAttribute.getEmbeddable(), "owner", "embeddedProperty"); } }
/** * Returns guaranteed non-null MappingNamespace of this relationship. If it happens to * be null, and exception is thrown. This method is intended for internal use by * Relationship class. */ final MappingNamespace getNonNullNamespace() { if (entity == null) { throw new CayenneRuntimeException("Embedded attribute '%s' has no parent Entity.", getName()); } return entity.getNonNullNamespace(); } }
/** * Returns ObjAttribute of this entity that maps to <code>dbAttribute</code> * parameter. Returns null if no such attribute is found. */ public ObjAttribute getAttributeForDbAttribute(DbAttribute dbAttribute) { for (ObjAttribute next : getAttributeMap().values()) { if (next instanceof EmbeddedAttribute) { ObjAttribute embeddedAttribute = ((EmbeddedAttribute) next) .getAttributeForDbPath(dbAttribute.getName()); if (embeddedAttribute != null) { return embeddedAttribute; } } else { if (next.getDbAttribute() == dbAttribute) { return next; } } } return null; }
ObjAttribute embedded = getAttribute(name.substring(0, dot)); if (embedded instanceof EmbeddedAttribute) { return ((EmbeddedAttribute) embedded).getAttribute(name.substring(dot + 1));
/** * Returns a Collection of ObjAttributes of an embedded object taking into account * column name overrides. */ public Collection<ObjAttribute> getAttributes() { Embeddable e = getEmbeddable(); if (e == null) { return Collections.emptyList(); } Collection<EmbeddableAttribute> embeddableAttributes = e.getAttributes(); Collection<ObjAttribute> objectAttributes = new ArrayList<>(embeddableAttributes.size()); for (EmbeddableAttribute ea : embeddableAttributes) { objectAttributes.add(makeObjAttribute(ea)); } return objectAttributes; }
Map<String, String> overrides = ((EmbeddedAttribute) attributeSaved).getAttributeOverrides(); Map<String, String> currentOverrAttr = getCurrentOverrideAttribute(); if (embeddableModel.isAttributeOverrideChange()) { Map<String, String> overrides; overrides = ((EmbeddedAttribute) attribute).getAttributeOverrides(); Map<String, String> currentOverrAttr = ((EmbeddedAttribute) attributeSaved).getAttributeOverrides();
this.attributeSaved = new EmbeddedAttribute(); } else { this.attributeSaved = new ObjAttribute(); EmbeddedAttribute copyAttrSaved = new EmbeddedAttribute(); copyObjAttribute(copyAttrSaved, attributeSaved); attributeSaved = copyAttrSaved;