public bool sendVisitEvent(VisitEvent ve) { callbackTray.resp = VisitResponse.success; if (empty) { empty = false; sendVisitEvent(VisitEvent.visitStart); } dvp.processVisitEvent(ve, callbackTray); if (VisitResponse.abort == callbackTray.resp) { throw new DustException(); } return(VisitResponse.success == callbackTray.resp); }
public void processVisitEvent(VisitEvent visitEvent, DustVisitTray tray) { int kfi = kf.indexOf((DustEntity)tray.key); object kfk = kf.keyOf(kfi); // Console.WriteLine("DrawVisitor processVisitEvent {0} - {1}", visitEvent, tray.value); // return; switch (visitEvent) { case VisitEvent.entityStartOpt: DustEntity pt = DustUtils.getValue(tray.entity, (DustEntity)null, DataLinks.EntityPrimaryType); if (OB_TYPES.ContainsKey(pt)) { tray.readerObject = Activator.CreateInstance(OB_TYPES[pt]); var geo = tray.readerObject as GeometricData; if (null != geo) { readingGeoData = geo; } } break; case VisitEvent.keyStartOpt: if (-1 == kfi) { tray.resp = VisitResponse.skip; } else { if (COORDS.Contains(kfk)) { readingCoord = (GeometryValues)kfk; } else if (ROLES.Contains(kfk)) { readingRole = (GeometryValues)kfk; } Console.WriteLine("Entering {0} ", kf.keyOf(kfi)); } break; case VisitEvent.keyEnd: if (CollectionLinks.SequenceMembers == kfk) { var sp = tray.readerParent as ShapePath; if (null != sp) { sp.Add((GeometricData)tray.readerObject); } var sc = tray.readerParent as ShapeComposite; if (null != sc) { sc.Add((GeometricInclusion)tray.readerObject); } } else if (GeometryLinks.GeometricInclusionTarget == kfk) { var gi = tray.readerParent as GeometricInclusion; if (null != gi) { gi.target = (ShapeSource)tray.readerObject; } } else if (GeometryLinks.GeometricInclusionParameters == kfk) { var gi = tray.readerParent as GeometricInclusion; if ((null != gi) && (readingRole != null)) { gi[readingRole] = (GeometricData)tray.readerObject; } } Console.WriteLine("Leaving {0} ", kf.keyOf(kfi)); break; case VisitEvent.entityEnd: if (null != tray.readerObject) { lastReadObject = tray.readerObject; } break; } }