1 21 package com.db4o.inside.fieldindex; 22 23 import com.db4o.*; 24 import com.db4o.foundation.*; 25 26 public class IndexedPath extends IndexedNodeBase { 27 28 public static IndexedNode newParentPath(IndexedNode next, QCon constraint) { 29 if (!canFollowParent(constraint)) { 30 return null; 31 } 32 return new IndexedPath((QConObject) constraint.parent(), next); 33 } 34 35 private static boolean canFollowParent(QCon con) { 36 final QCon parent = con.parent(); 37 final YapField parentField = getYapField(parent); 38 if (null == parentField) return false; 39 final YapField conField = getYapField(con); 40 if (null == conField) return false; 41 return parentField.hasIndex() 42 && parentField.getParentYapClass().isAssignableFrom(conField.getParentYapClass()); 43 } 44 45 private static YapField getYapField(QCon con) { 46 QField field = con.getField(); 47 if (null == field) return null; 48 return field.getYapField(); 49 } 50 51 private IndexedNode _next; 52 53 public IndexedPath(QConObject parent, IndexedNode next) { 54 super(parent); 55 _next = next; 56 } 57 58 public Iterator4 iterator() { 59 return new IndexedPathIterator(this, _next.iterator()); 60 } 61 62 public int resultSize() { 63 throw new NotSupportedException(); 64 } 65 } 66 | Popular Tags |