/** * see {@link BasicPartDefinition#BasicPartDefinition(Class, String, int)} */ public BasicPartDefinition(Class<?>[] valueTypes, String sqlAttribute, int operator, boolean plainBind) { this(ClassIdentifier.convertClassArrayToClassIdentifierArray(valueTypes), sqlAttribute, operator, plainBind); }
@Override public Class<?> next() { if (m_index < 0) { throw new NoSuchElementException(); } Class<?> next = m_identifier.getSegment(m_index); m_index--; return next; }
public P_ClassIdentifierReverseIterator(ClassIdentifier identifier) { m_identifier = identifier; // ignore last segment m_index = m_identifier.size() - 2; }
Class<?> c = classIdentifier.getLastSegment(); if (AbstractPropertyData.class.isAssignableFrom(c)) { throw new IllegalArgumentException("" + c + " is not of type AbstractPropertyData or AbstractFormFieldData"); Class<?>[] classes = classIdentifier.getClasses(); for (int i = 0; i < classes.length - 1; i++) { Class<?> containerClass = classes[i];
if (AbstractFormFieldData.class.isAssignableFrom(valueTypes[i].getLastSegment())) { AbstractFormFieldData field = formData.findFieldByClass(fieldsBreathFirstMap, valueTypes[i]); valueDatas.add(field); else if (AbstractPropertyData.class.isAssignableFrom(valueTypes[i].getLastSegment())) { AbstractPropertyData<?> property = formData.findPropertyByClass(propertiesBreathFirstMap, valueTypes[i]); valueDatas.add(property);
break; if (t.getLastSegment() == v.getClass()) { part = f;
Class<?> newModelContainerClass = newModelContainerClassIdentifier.getLastSegment();
protected boolean matchesClassIdentifier(ICompositeField container, ClassIdentifier identifier) { if (identifier.size() <= 1) { // identifier has only one single segment, i.e. no deep linking. No additional checks required return true; } P_FormFieldParentIterator fieldParentIterator = new P_FormFieldParentIterator(container); P_ClassIdentifierReverseIterator identifierIterator = new P_ClassIdentifierReverseIterator(identifier); while (identifierIterator.hasNext() && fieldParentIterator.hasNext()) { Class<?> nextSegment = identifierIterator.next(); boolean parentIsInstanceOfSegment = false; while (!parentIsInstanceOfSegment && fieldParentIterator.hasNext()) { Object parent = fieldParentIterator.next(); if (nextSegment.isInstance(parent)) { parentIsInstanceOfSegment = true; } } if (!parentIsInstanceOfSegment) { // field parent iterator has no more next elements and the identifier's current segment does not match. -> no match return false; } } return !identifierIterator.hasNext(); }