gzz-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gzz-commits] fenfire/org/fenfire demo/buoyoing.py impl/Simpl...


From: Tuomas J. Lukka
Subject: [Gzz-commits] fenfire/org/fenfire demo/buoyoing.py impl/Simpl...
Date: Sun, 27 Apr 2003 16:19:25 -0400

CVSROOT:        /cvsroot/fenfire
Module name:    fenfire
Changes by:     Tuomas J. Lukka <address@hidden>        03/04/27 16:19:25

Modified files:
        org/fenfire/demo: buoyoing.py 
        org/fenfire/impl: SimpleNodeContent.java simplenodecontent.test 
        org/fenfire/index/impl: EnfiladeOverlapIndex.java 
                                TransientXuIndexer.java 
        org/fenfire/modules/pp: PPActionsImpl.test 
        org/fenfire/swamp: ConstGraph.java makeswamp.py 
                           observablegraphtest.py 
        org/fenfire/swamp/impl: AbstractConstGraph.java HashGraph.java 
                                StdObservedConstGraph.java 
                                StdObserver.java stdobserver.test 
        org/fenfire/util: ObsDoubler.java RDFUtil.test 
        org/fenfire/view: PageScrollView2D.java PageSpanLayout.java 
        org/fenfire/view/buoy: PPLinker.test TransclusionConnector.java 
Added files:
        org/fenfire/swamp: TripleSetObs.java 
        org/fenfire/util: TripleObsDoubler.java 
        org/fenfire/view: irregularviewport.test 

Log message:
        Getting the enfilade index running

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/buoyoing.py.diff?tr1=1.30&tr2=1.31&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/impl/SimpleNodeContent.java.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/impl/simplenodecontent.test.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/index/impl/EnfiladeOverlapIndex.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/index/impl/TransientXuIndexer.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/modules/pp/PPActionsImpl.test.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/swamp/TripleSetObs.java?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/swamp/ConstGraph.java.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/swamp/makeswamp.py.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/swamp/observablegraphtest.py.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/swamp/impl/AbstractConstGraph.java.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/swamp/impl/HashGraph.java.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/swamp/impl/StdObservedConstGraph.java.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/swamp/impl/StdObserver.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/swamp/impl/stdobserver.test.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/util/TripleObsDoubler.java?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/util/ObsDoubler.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/util/RDFUtil.test.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/irregularviewport.test?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/PageScrollView2D.java.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/PageSpanLayout.java.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/PPLinker.test.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/TransclusionConnector.java.diff?tr1=1.2&tr2=1.3&r1=text&r2=text

Patches:
Index: fenfire/org/fenfire/demo/buoyoing.py
diff -u fenfire/org/fenfire/demo/buoyoing.py:1.30 
fenfire/org/fenfire/demo/buoyoing.py:1.31
--- fenfire/org/fenfire/demo/buoyoing.py:1.30   Sun Apr 27 04:05:32 2003
+++ fenfire/org/fenfire/demo/buoyoing.py        Sun Apr 27 16:19:24 2003
@@ -64,6 +64,7 @@
 fen.graph = fen.constgraph = ff.swamp.impl.HashGraph()
 fen.txt = ff.impl.SimpleNodeContent(fen, myalph);
 fen.txtfunc = fen.txt.getNodeFunction()
+fen.enfiladeOverlap = fen.txt.getTransclusionIndex()
 
 # Create the buoy view elements
 scrollblockLinker = ff.view.buoy.ScrollBlockNodeLinker(fen)
Index: fenfire/org/fenfire/impl/SimpleNodeContent.java
diff -u fenfire/org/fenfire/impl/SimpleNodeContent.java:1.7 
fenfire/org/fenfire/impl/SimpleNodeContent.java:1.8
--- fenfire/org/fenfire/impl/SimpleNodeContent.java:1.7 Fri Apr 25 11:40:31 2003
+++ fenfire/org/fenfire/impl/SimpleNodeContent.java     Sun Apr 27 16:19:24 2003
@@ -9,10 +9,14 @@
 import org.nongnu.alph.xml.SpanSerializer;
 
 import org.fenfire.*;
+import org.fenfire.util.*;
+import org.fenfire.swamp.*;
 import org.fenfire.vocab.FF;
 import org.fenfire.swamp.Nodes;
 import org.fenfire.swamp.Literal;
 
+import java.util.*;
+
 
 /** A trivial, NON-CACHING node content using FF.content.
  * If you want performance using caching, you need to wrap
@@ -21,7 +25,7 @@
 
 public class SimpleNodeContent implements NodeContent {
     public static boolean dbg = true;
-public static final String rcsid = "$Id: SimpleNodeContent.java,v 1.7 
2003/04/25 15:40:31 benja Exp $";
+public static final String rcsid = "$Id: SimpleNodeContent.java,v 1.8 
2003/04/27 20:19:24 tjl Exp $";
     private static void pa(String s) { System.out.println("AlphContent: "+s); }
     SpanReader spanReader;
 
@@ -62,9 +66,36 @@
        }
     }
 
+
     Func func = new Func();
     public org.fenfire.swamp.NodeFunction getNodeFunction() { 
        return func; 
+    }
+
+    org.fenfire.index.impl.EnfiladeOverlapIndex trIndex;
+    private void rereadIndex() {
+       if(dbg) pa("SNC TRINDEX: Rereading whole index!!!!");
+       TripleSetObs obs = new TripleSetObs() {
+           public void chg() { rereadIndex(); }
+           public void chgTriple(int dir, Object o1, Object o2, Object o3) {
+               if(dbg) pa("SNC TRINDEX: Single triple chgd!!!!");
+               trIndex.set(dir, o1, o3);
+           }
+       };
+       trIndex.clear();
+       for(Iterator i = fen.constgraph.findN_X1A_Iter(FF.content, obs); 
i.hasNext();) {
+           Object node = i.next();
+           Object content = fen.constgraph.find1_11X(node, FF.content);
+           trIndex.set(1, node, content);
+       }
+    }
+
+    public org.fenfire.index.Index getTransclusionIndex() {
+       if(trIndex == null) {
+           trIndex = new org.fenfire.index.impl.EnfiladeOverlapIndex();
+           rereadIndex();
+       }
+       return trIndex;
     }
 
 
Index: fenfire/org/fenfire/impl/simplenodecontent.test
diff -u fenfire/org/fenfire/impl/simplenodecontent.test:1.3 
fenfire/org/fenfire/impl/simplenodecontent.test:1.4
--- fenfire/org/fenfire/impl/simplenodecontent.test:1.3 Thu Apr 24 09:29:12 2003
+++ fenfire/org/fenfire/impl/simplenodecontent.test     Sun Apr 27 16:19:24 2003
@@ -2,6 +2,7 @@
 
 from com.hp.hpl.mesa.rdf import jena
 
+import org
 from org import fenfire
 from org.nongnu import alph, storm
 
@@ -14,7 +15,10 @@
     fen = fenfire.Fen()
     fen.graph = fen.constgraph = fenfire.swamp.impl.HashGraph()
 
-    snc = fenfire.impl.SimpleNodeContent(fen)
+    snc = fenfire.impl.SimpleNodeContent(fen, 
+               alph.impl.StormAlph(
+                   storm.impl.TransientPool(
+                       java.util.HashSet())))
     fen.txt = snc
     fen.txtfunc = snc.getNodeFunction()
     
Index: fenfire/org/fenfire/index/impl/EnfiladeOverlapIndex.java
diff -u fenfire/org/fenfire/index/impl/EnfiladeOverlapIndex.java:1.1 
fenfire/org/fenfire/index/impl/EnfiladeOverlapIndex.java:1.2
--- fenfire/org/fenfire/index/impl/EnfiladeOverlapIndex.java:1.1        Wed Mar 
26 18:48:14 2003
+++ fenfire/org/fenfire/index/impl/EnfiladeOverlapIndex.java    Sun Apr 27 
16:19:24 2003
@@ -35,10 +35,21 @@
  * overlaps with the given one.
  * VERY INEFFICIENT.
  */
-public class EnfiladeOverlapIndex implements Indexer, Index {
+public class EnfiladeOverlapIndex implements Index {
 
-    private HashMap map = new HashMap();  
-    public void set(Object entryName, Object value) {
+    private HashMap map;
+    public Map getContents() { 
+       return Collections.con
+    }
+
+    public EnfiladeOverlapIndex() {
+       clear();
+    }
+    public void clear() {
+       map = new HashMap();  
+    }
+
+    public void set(int dir, Object entryName, Object value) {
        if(value == null) {
            map.remove(entryName);
            return;
@@ -46,6 +57,7 @@
        if(!(value instanceof Enfilade1DImpl)) return;
        map.put(entryName, value);
     }
+
     public Collection getMatches(Object o) {
        Set s = map.entrySet();
        List ret = new ArrayList();
Index: fenfire/org/fenfire/index/impl/TransientXuIndexer.java
diff -u fenfire/org/fenfire/index/impl/TransientXuIndexer.java:1.1 
fenfire/org/fenfire/index/impl/TransientXuIndexer.java:1.2
--- fenfire/org/fenfire/index/impl/TransientXuIndexer.java:1.1  Wed Mar 26 
18:48:14 2003
+++ fenfire/org/fenfire/index/impl/TransientXuIndexer.java      Sun Apr 27 
16:19:24 2003
@@ -40,12 +40,12 @@
     public Index getBackwardIndex() { return b; }
 
     public void add(XuLink link) {
-       f.set(link, link.from);
-       b.set(link, link.to);
+       f.set(1, link, link.from);
+       b.set(1, link, link.to);
     }
     
     public void remove(XuLink link) {
-       f.set(link, null);
-       b.set(link, null);
+       f.set(-1,link, link.from);
+       b.set(-1,link, link.to);
     }
 }
Index: fenfire/org/fenfire/modules/pp/PPActionsImpl.test
diff -u fenfire/org/fenfire/modules/pp/PPActionsImpl.test:1.6 
fenfire/org/fenfire/modules/pp/PPActionsImpl.test:1.7
--- fenfire/org/fenfire/modules/pp/PPActionsImpl.test:1.6       Tue Apr 15 
13:27:26 2003
+++ fenfire/org/fenfire/modules/pp/PPActionsImpl.test   Sun Apr 27 16:19:24 2003
@@ -10,6 +10,8 @@
 from org.nongnu.alph import impl
 
 from org.fenfire.test.gfx import getvs
+from org.nongnu import alph, storm
+import java
 
 # from java.util import Iterator
 
@@ -19,7 +21,10 @@
     global fen, act
     fen = fenfire.Fen()
     fen.constgraph = fen.graph = fenfire.swamp.impl.HashGraph()
-    fen.txt = fenfire.impl.SimpleNodeContent(fen)
+    fen.txt = fenfire.impl.SimpleNodeContent(fen, 
+               alph.impl.StormAlph(
+                   storm.impl.TransientPool(
+                       java.util.HashSet())))
     act = PPActionsImpl(fen)
 
 def testNewPaper():
Index: fenfire/org/fenfire/swamp/ConstGraph.java
diff -u fenfire/org/fenfire/swamp/ConstGraph.java:1.5 
fenfire/org/fenfire/swamp/ConstGraph.java:1.6
--- fenfire/org/fenfire/swamp/ConstGraph.java:1.5       Thu Apr 24 08:59:07 2003
+++ fenfire/org/fenfire/swamp/ConstGraph.java   Sun Apr 27 16:19:24 2003
@@ -27,22 +27,26 @@
 Object find1_X11(Object e1,Object e2) ;
 Object find1_1XA(Object e0) ;
 Object find1_XAA() ;
+Object find1_X1A(Object e1) ;
 Iterator findN_11X_Iter(Object e0,Object e1) ;
 Iterator findN_1X1_Iter(Object e0,Object e2) ;
 Iterator findN_X11_Iter(Object e1,Object e2) ;
 Iterator findN_1XA_Iter(Object e0) ;
 Iterator findN_XAA_Iter() ;
+Iterator findN_X1A_Iter(Object e1) ;
 
     Object find1_11X(Object e0,Object e1,Obs obs) ;
 Object find1_1X1(Object e0,Object e2,Obs obs) ;
 Object find1_X11(Object e1,Object e2,Obs obs) ;
 Object find1_1XA(Object e0,Obs obs) ;
 Object find1_XAA(Obs obs) ;
+Object find1_X1A(Object e1,Obs obs) ;
 Iterator findN_11X_Iter(Object e0,Object e1,Obs obs) ;
 Iterator findN_1X1_Iter(Object e0,Object e2,Obs obs) ;
 Iterator findN_X11_Iter(Object e1,Object e2,Obs obs) ;
 Iterator findN_1XA_Iter(Object e0,Obs obs) ;
 Iterator findN_XAA_Iter(Obs obs) ;
+Iterator findN_X1A_Iter(Object e1,Obs obs) ;
 
 
 }
Index: fenfire/org/fenfire/swamp/impl/AbstractConstGraph.java
diff -u fenfire/org/fenfire/swamp/impl/AbstractConstGraph.java:1.4 
fenfire/org/fenfire/swamp/impl/AbstractConstGraph.java:1.5
--- fenfire/org/fenfire/swamp/impl/AbstractConstGraph.java:1.4  Thu Apr 24 
08:59:07 2003
+++ fenfire/org/fenfire/swamp/impl/AbstractConstGraph.java      Sun Apr 27 
16:19:25 2003
@@ -32,6 +32,9 @@
 public Object find1_XAA() {
         return  this.find1_XAA(null);
 }
+public Object find1_X1A(Object e1) {
+        return  this.find1_X1A(e1,null);
+}
 public Iterator findN_11X_Iter(Object e0,Object e1) {
         return  this.findN_11X_Iter(e0,e1,null);
 }
@@ -46,6 +49,9 @@
 }
 public Iterator findN_XAA_Iter() {
         return  this.findN_XAA_Iter(null);
+}
+public Iterator findN_X1A_Iter(Object e1) {
+        return  this.findN_X1A_Iter(e1,null);
 }
 
 
Index: fenfire/org/fenfire/swamp/impl/HashGraph.java
diff -u fenfire/org/fenfire/swamp/impl/HashGraph.java:1.6 
fenfire/org/fenfire/swamp/impl/HashGraph.java:1.7
--- fenfire/org/fenfire/swamp/impl/HashGraph.java:1.6   Tue Apr 15 07:51:08 2003
+++ fenfire/org/fenfire/swamp/impl/HashGraph.java       Sun Apr 27 16:19:25 2003
@@ -19,6 +19,7 @@
        private HashMap ind_012 = new HashMap();
 private HashMap ind_021 = new HashMap();
 private HashMap ind_120 = new HashMap();
+private HashMap ind_102 = new HashMap();
 
 
        private HashSet emptySet = new HashSet();
@@ -140,6 +141,19 @@
                throw new NotUniqueError(null,null,null);
            }
 
+public Object find1_X1A(Object e1,Obs obs) {
+if(obs != null) observer.addObs(observer.WILDCARD, e1, observer.WILDCARD, obs);
+
+                   HashMap hash1 = (HashMap) ind_102.get(e1);
+                   if(hash1 == null) return null; 
+               
+                       Set resSet = hash1.keySet();
+                   
+               if(resSet.size() == 0) return null;
+               if(resSet.size() == 1) return resSet.iterator().next();
+               throw new NotUniqueError(null,e1,null);
+           }
+
 public Iterator findN_11X_Iter(Object e0,Object e1,Obs obs) {
 if(obs != null) observer.addObs(e0, e1, observer.WILDCARD, obs);
 
@@ -196,6 +210,16 @@
                    return resSet.iterator();
 }
 
+public Iterator findN_X1A_Iter(Object e1,Obs obs) {
+if(obs != null) observer.addObs(observer.WILDCARD, e1, observer.WILDCARD, obs);
+
+                   HashMap hash1 = (HashMap) ind_102.get(e1);
+                   if(hash1 == null) return emptySet.iterator(); 
+               
+                       Set resSet = hash1.keySet();
+                   return resSet.iterator();
+}
+
 
 
 
@@ -217,8 +241,10 @@
        
            rm_ind(ind_120, e1, e2, e0);
        
+           rm_ind(ind_102, e1, e0, e2);
+       
 
-           observer.triggerObs(e0, e1, e2);
+           observer.triggerObs(-1, e0, e1, e2);
        }
 
        public void add(Object e0, Object e1, Object e2) {
@@ -229,8 +255,10 @@
        
            add_ind(ind_120, e1, e2, e0);
        
+           add_ind(ind_102, e1, e0, e2);
+       
 
-           observer.triggerObs(e0, e1, e2);
+           observer.triggerObs(1, e0, e1, e2);
        }
 
     }
Index: fenfire/org/fenfire/swamp/impl/StdObservedConstGraph.java
diff -u fenfire/org/fenfire/swamp/impl/StdObservedConstGraph.java:1.4 
fenfire/org/fenfire/swamp/impl/StdObservedConstGraph.java:1.5
--- fenfire/org/fenfire/swamp/impl/StdObservedConstGraph.java:1.4       Thu Apr 
24 08:59:07 2003
+++ fenfire/org/fenfire/swamp/impl/StdObservedConstGraph.java   Sun Apr 27 
16:19:25 2003
@@ -50,6 +50,9 @@
 public Object find1_XAA() {
         return  constgraph.find1_XAA(obs);
 }
+public Object find1_X1A(Object e1) {
+        return  constgraph.find1_X1A(e1,obs);
+}
 public Iterator findN_11X_Iter(Object e0,Object e1) {
         return  constgraph.findN_11X_Iter(e0,e1,obs);
 }
@@ -65,6 +68,9 @@
 public Iterator findN_XAA_Iter() {
         return  constgraph.findN_XAA_Iter(obs);
 }
+public Iterator findN_X1A_Iter(Object e1) {
+        return  constgraph.findN_X1A_Iter(e1,obs);
+}
 
     public Object find1_11X(Object e0,Object e1,Obs obs) {
        throw new Error("DoubleObs");
@@ -81,6 +87,9 @@
 public Object find1_XAA(Obs obs) {
        throw new Error("DoubleObs");
     }
+public Object find1_X1A(Object e1,Obs obs) {
+       throw new Error("DoubleObs");
+    }
 public Iterator findN_11X_Iter(Object e0,Object e1,Obs obs) {
        throw new Error("DoubleObs");
     }
@@ -94,6 +103,9 @@
        throw new Error("DoubleObs");
     }
 public Iterator findN_XAA_Iter(Obs obs) {
+       throw new Error("DoubleObs");
+    }
+public Iterator findN_X1A_Iter(Object e1,Obs obs) {
        throw new Error("DoubleObs");
     }
 
Index: fenfire/org/fenfire/swamp/impl/StdObserver.java
diff -u fenfire/org/fenfire/swamp/impl/StdObserver.java:1.1 
fenfire/org/fenfire/swamp/impl/StdObserver.java:1.2
--- fenfire/org/fenfire/swamp/impl/StdObserver.java:1.1 Sat Apr 12 06:39:12 2003
+++ fenfire/org/fenfire/swamp/impl/StdObserver.java     Sun Apr 27 16:19:25 2003
@@ -2,6 +2,7 @@
 
 package org.fenfire.swamp.impl;
 import org.fenfire.Obs;
+import org.fenfire.util.*;
 import org.fenfire.swamp.*;
 
 import java.util.HashMap;
@@ -29,35 +30,45 @@
            m2.put(p, m3);
        }
        Obs os = (Obs)m3.get(o);
-       if(os != null)
-           os = new org.fenfire.util.ObsDoubler(os, obs);
-       else
+       if(os != null) {
+           if((os instanceof TripleSetObs) ||
+              (obs instanceof TripleSetObs)) 
+               os = new org.fenfire.util.TripleObsDoubler(os, obs);
+           else
+               os = new org.fenfire.util.ObsDoubler(os, obs);
+       } else
            os = obs;
        m3.put(o, os);
     }
-    private void triggerObs_single(Object s, Object p, Object o) {
+
+    private void triggerObs_single(int dir, Object o1, Object o2, Object o3,
+                           Object s, Object p, Object o) {
        HashMap m2 = (HashMap)obs_spo.get(s);
        if(m2 == null) return;
        HashMap m3 = (HashMap)m2.get(p);
        if(m3 == null) return;
        Obs os = (Obs)m3.get(o);
        if(os != null) {
-           os.chg();
-           m3.remove(o);
+           if(os instanceof TripleSetObs) {
+               ((TripleSetObs)os).chgTriple(dir, o1, o2, o3);
+           } else {
+               os.chg();
+               m3.remove(o);
+           }
        }
     }
 
     /** The parameters must not be wildcard!
      */
-    public void triggerObs(Object s, Object p, Object o) {
-       triggerObs_single(s, p, o);
-       triggerObs_single(s, p, WILDCARD);
-       triggerObs_single(s, WILDCARD, o);
-       triggerObs_single(s, WILDCARD, WILDCARD);
-       triggerObs_single(WILDCARD, p, o);
-       triggerObs_single(WILDCARD, p, WILDCARD);
-       triggerObs_single(WILDCARD, WILDCARD, o);
-       triggerObs_single(WILDCARD, WILDCARD, WILDCARD);
+    public void triggerObs(int dir, Object s, Object p, Object o) {
+       triggerObs_single(dir, s, p, o, s, p, o);
+       triggerObs_single(dir, s, p, o, s, p, WILDCARD);
+       triggerObs_single(dir, s, p, o, s, WILDCARD, o);
+       triggerObs_single(dir, s, p, o, s, WILDCARD, WILDCARD);
+       triggerObs_single(dir, s, p, o, WILDCARD, p, o);
+       triggerObs_single(dir, s, p, o, WILDCARD, p, WILDCARD);
+       triggerObs_single(dir, s, p, o, WILDCARD, WILDCARD, o);
+       triggerObs_single(dir, s, p, o, WILDCARD, WILDCARD, WILDCARD);
     }
 
 }
Index: fenfire/org/fenfire/swamp/impl/stdobserver.test
diff -u fenfire/org/fenfire/swamp/impl/stdobserver.test:1.1 
fenfire/org/fenfire/swamp/impl/stdobserver.test:1.2
--- fenfire/org/fenfire/swamp/impl/stdobserver.test:1.1 Sat Apr 12 06:39:12 2003
+++ fenfire/org/fenfire/swamp/impl/stdobserver.test     Sun Apr 27 16:19:25 2003
@@ -20,8 +20,9 @@
     o1 = _Obs()
     o.addObs(1, 2, 3, o1)
     assert o1.t == 0
-    o.triggerObs(1, 2, 3)
+    o.triggerObs(1, 1, 2, 3)
     assert o1.t == 1
-    o.triggerObs(1, 2, 3)
+    o.triggerObs(-1, 1, 2, 3)
     assert o1.t == 1
 
+# XXX Triple!
Index: fenfire/org/fenfire/swamp/makeswamp.py
diff -u fenfire/org/fenfire/swamp/makeswamp.py:1.6 
fenfire/org/fenfire/swamp/makeswamp.py:1.7
--- fenfire/org/fenfire/swamp/makeswamp.py:1.6  Thu Apr 24 08:59:07 2003
+++ fenfire/org/fenfire/swamp/makeswamp.py      Sun Apr 27 16:19:25 2003
@@ -8,7 +8,7 @@
 for n in (1,"N"):
     for pattern in (
            "11X","1X1","X11",
-           "1XA", "XAA"):
+           "1XA", "XAA", "X1A"):
        constgraph.append({
            "Type": "find", 
            "NVal": n, 
@@ -273,7 +273,7 @@
 # Indices: 123, 132, 231
 
 def makeHashGraph():
-    hashIndices = [(0,1,2),(0,2,1),(1,2,0)]
+    hashIndices = [(0,1,2),(0,2,1),(1,2,0),(1,0,2)]
     hashNames = ["ind_"+"".join([str(i) for i in codes]) 
                    for codes in hashIndices]
 
@@ -461,13 +461,13 @@
        public void rm_111(Object e0, Object e1, Object e2) {
            %(rm_triple)s
 
-           observer.triggerObs(e0, e1, e2);
+           observer.triggerObs(-1, e0, e1, e2);
        }
 
        public void add(Object e0, Object e1, Object e2) {
            %(add_triple)s
 
-           observer.triggerObs(e0, e1, e2);
+           observer.triggerObs(1, e0, e1, e2);
        }
 
     }
Index: fenfire/org/fenfire/swamp/observablegraphtest.py
diff -u fenfire/org/fenfire/swamp/observablegraphtest.py:1.4 
fenfire/org/fenfire/swamp/observablegraphtest.py:1.5
--- fenfire/org/fenfire/swamp/observablegraphtest.py:1.4        Thu Apr 24 
09:06:48 2003
+++ fenfire/org/fenfire/swamp/observablegraphtest.py    Sun Apr 27 16:19:25 2003
@@ -14,6 +14,15 @@
     def chg(self):
        self.t += 1
 
+class _TripleObs(org.fenfire.swamp.TripleSetObs):
+    def __init__(self):
+       self.t = 0
+       self.c = []
+    def chg(self):
+       self.t += 1
+    def chgTriple(self, *args):
+       self.c.append(args)
+
 def setUpObservableGraphTest(thegraph):
     global graph
     graph = thegraph
@@ -54,6 +63,24 @@
 
     assert o1.t == 2
     assert o2.t == 2
+
+def test_ObservableGraph_TripleObs():
+    node = _node
+    to1 = _TripleObs()
+    graph.set1_11X(node[0], node[1], node[2])
+    assert graph.find1_11X(node[0], node[1], to1) == node[2]
+    graph.set1_11X(node[0], node[1], node[3])
+
+    assert to1.t == 0
+    print "CHANGES: ", to1.c
+    assert len(to1.c) == 2
+    assert to1.c[0][0] == -1
+    assert to1.c[0][3] == node[2]
+
+    assert to1.c[1][0] == 1
+    assert to1.c[1][3] == node[3]
+
+
 
 def test_ObservableGraph_Func():
     node = _node
Index: fenfire/org/fenfire/util/ObsDoubler.java
diff -u fenfire/org/fenfire/util/ObsDoubler.java:1.1 
fenfire/org/fenfire/util/ObsDoubler.java:1.2
--- fenfire/org/fenfire/util/ObsDoubler.java:1.1        Sat Apr 12 06:39:12 2003
+++ fenfire/org/fenfire/util/ObsDoubler.java    Sun Apr 27 16:19:25 2003
@@ -13,8 +13,8 @@
     }
 
     public void chg() {
-       o1.chg();
-       o2.chg();
+       if(o1 != null) o1.chg();
+       if(o2 != null) o2.chg();
     }
 
 }
Index: fenfire/org/fenfire/util/RDFUtil.test
diff -u fenfire/org/fenfire/util/RDFUtil.test:1.2 
fenfire/org/fenfire/util/RDFUtil.test:1.3
--- fenfire/org/fenfire/util/RDFUtil.test:1.2   Tue Apr 15 13:41:57 2003
+++ fenfire/org/fenfire/util/RDFUtil.test       Sun Apr 27 16:19:25 2003
@@ -10,6 +10,9 @@
 
 from org.fenfire.test.gfx import getvs
 
+from org.nongnu import alph, storm
+import java
+
 # from java.util import Iterator
 
 
@@ -18,7 +21,10 @@
     global fen, act
     fen = fenfire.Fen()
     fen.constgraph = fen.graph = fenfire.swamp.impl.HashGraph()
-    fen.txt = fenfire.impl.SimpleNodeContent(fen)
+    fen.txt = fenfire.impl.SimpleNodeContent(fen, 
+               alph.impl.StormAlph(
+                   storm.impl.TransientPool(
+                       java.util.HashSet())))
 
 def testNewObjWithType():
     type = Nodes.get('This is a test type')
Index: fenfire/org/fenfire/view/PageScrollView2D.java
diff -u fenfire/org/fenfire/view/PageScrollView2D.java:1.4 
fenfire/org/fenfire/view/PageScrollView2D.java:1.5
--- fenfire/org/fenfire/view/PageScrollView2D.java:1.4  Sun Apr 27 07:40:27 2003
+++ fenfire/org/fenfire/view/PageScrollView2D.java      Sun Apr 27 16:19:25 2003
@@ -64,7 +64,7 @@
        PageSpanLayout layout = (PageSpanLayout)scroll2layout.f(null, block);
        int paper2box = vs.invertCS(box2paper, "PGSVinv");
        int paper2screen = vs.concatCS(box2screen, "PGSVconc", paper2box);
-       layout.place(vs, paper2screen, 1, 1, box2screen);
+       layout.place(vs, paper2screen, 1, 1, box2screen, matchingParent);
     }
 
 
Index: fenfire/org/fenfire/view/PageSpanLayout.java
diff -u fenfire/org/fenfire/view/PageSpanLayout.java:1.6 
fenfire/org/fenfire/view/PageSpanLayout.java:1.7
--- fenfire/org/fenfire/view/PageSpanLayout.java:1.6    Sun Apr 27 07:40:27 2003
+++ fenfire/org/fenfire/view/PageSpanLayout.java        Sun Apr 27 16:19:25 2003
@@ -172,14 +172,19 @@
      *      all objects should be culled.
      */
     public void place(VobScene vs, int into, float importance, float 
pixelscale, int cullCS) {
+       this.place(vs, into, importance, pixelscale, cullCS, into);
+    }
+    public void place(VobScene vs, int into, float importance, float 
pixelscale, int cullCS,
+                       int matchCs) {
        float curx = 0;
        // Now we can draw the pages.
        for(int p = 0; p < npages; p++) {
            // We want a coordinate system
            // whose box is exactly the span
-           int around = vs.orthoBoxCS(into, pages[p], 0, 
+           int around = vs.coords.orthoBox(into, 0, 
                            curx, 0, scale, scale,
                            xywh[4*p+2], xywh[4*p+3]);
+           vs.matcher.add(matchCs, around, pages[p]);
            if(cullCS >= 0)
                around = vs.cullCS(around, "CULL", cullCS);
            // and then translate to the whole page.
@@ -187,6 +192,7 @@
            curx += scale * xywh[4*p + 2];
 
            psps[p].request(importance, scale * pixelscale);
+
            vs.map.put(GLRen.createFixedPaperQuad(psps[p].getPaper(useBg, 
useText), 
                        xywh[4*p + 0], 
                        xywh[4*p + 1], 
Index: fenfire/org/fenfire/view/buoy/PPLinker.test
diff -u fenfire/org/fenfire/view/buoy/PPLinker.test:1.7 
fenfire/org/fenfire/view/buoy/PPLinker.test:1.8
--- fenfire/org/fenfire/view/buoy/PPLinker.test:1.7     Wed Apr 16 05:32:08 2003
+++ fenfire/org/fenfire/view/buoy/PPLinker.test Sun Apr 27 16:19:25 2003
@@ -13,12 +13,17 @@
 
 from org.fenfire.test.gfx import getvs
 
+from org.nongnu import alph, storm
+import java
 
 def setUp():
     global fen
     fen = fenfire.Fen()
     fen.constgraph = fen.graph = fenfire.swamp.impl.HashGraph()
-    fen.txt = fenfire.impl.SimpleNodeContent(fen)
+    fen.txt = fenfire.impl.SimpleNodeContent(fen, 
+               alph.impl.StormAlph(
+                   storm.impl.TransientPool(
+                       java.util.HashSet())))
 
     global uriA, uriB
     global nodeA, nodeB
Index: fenfire/org/fenfire/view/buoy/TransclusionConnector.java
diff -u fenfire/org/fenfire/view/buoy/TransclusionConnector.java:1.2 
fenfire/org/fenfire/view/buoy/TransclusionConnector.java:1.3
--- fenfire/org/fenfire/view/buoy/TransclusionConnector.java:1.2        Sun Apr 
27 07:40:27 2003
+++ fenfire/org/fenfire/view/buoy/TransclusionConnector.java    Sun Apr 27 
16:19:25 2003
@@ -20,7 +20,7 @@
 /** Hang transclusion buoys.
  */
 public class TransclusionConnector implements BuoyViewConnector {
-public static final String rcsid = "$Id: TransclusionConnector.java,v 1.2 
2003/04/27 11:40:27 tjl Exp $";
+public static final String rcsid = "$Id: TransclusionConnector.java,v 1.3 
2003/04/27 20:19:25 tjl Exp $";
     public static boolean dbg = true;
     private static void pa(String s) { System.out.println("PPLinker:"+s); }
 
@@ -52,7 +52,6 @@
        this.fen = fen;
        this.scrollBlockForNode = new CachedNodeFunction(1000,
                    fen.constgraph, new SB4Node());
-       
     }
 
     public void addBuoys(VobScene vs, int parentCs,
@@ -60,8 +59,8 @@
                         BuoyLinkListener l) {
        if(!(mainNode instanceof MainNode2D)) return;
        MainNode2D mn2d = (MainNode2D)mainNode;
+       DefaultVobMatcher m = (DefaultVobMatcher)vs.matcher;
        if(mn2d.getView2D() == normalNodeNodeType.getView2D()) {
-           DefaultVobMatcher m = (DefaultVobMatcher)vs.matcher;
            // Loop over the placed nodes' keys
            for(Iterator i=m.getKeys(parentCs).iterator(); i.hasNext();) {
                Object key = i.next();
@@ -85,11 +84,41 @@
            }
 
        } else if(mn2d.getView2D() == pageImageScrollNodeType.getView2D()) {
-           pa("TransclusionConnector: Pagescroll -> outside not impl");
-       } else {}
+           pa("TransclusionConnector: Pagescroll -> outside");
+           for(Iterator i=m.getKeys(parentCs).iterator(); i.hasNext();) {
+               Object key = i.next();
+               if(!(key instanceof PageImageSpan)) continue;
+               PageImageSpan span = (PageImageSpan)key;
+
+               if(dbg) pa("TRC: span "+key);
+               int cs =m.getCS(parentCs, key);
+
+               Enfilade1D tmpEnf = fen.enfMaker.makeEnfilade(span);
+               for(Iterator nodes = 
fen.enfiladeOverlap.getMatches(tmpEnf).iterator(); nodes.hasNext(); ) {
+                   Object node = nodes.next();
+                   if(dbg) pa("TRC: overlap "+node);
+                   Object plane = fen.constgraph.find1_X11(PP.contains, node);
+                   if(plane == null) {
+                       if(dbg) pa("No plane!");
+                       continue;
+                   }
+                   Object anchor = new Pair(plane, getRect(node));
+                   l.link(-1, cs, normalNodeNodeType,
+                           new Pair(node, span.getScrollBlock()),
+                           anchor);
+
+               }
+           }
+       } else {
            pa("TransclusionConnector: Unknown view2d type");
        }
+    }
 
+    protected java.awt.Rectangle getRect(Object node) {
+       int x = RDFUtil.getInt(fen, node, SPATIAL.coordX);
+       int y = RDFUtil.getInt(fen, node, SPATIAL.coordY);
+       return new java.awt.Rectangle(x-20, y-20, 240, 140);
+    }
 
 
 }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]