[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] fenfire ./TODO-loom org/fenfire/loom/Cursor.jav...
From: |
Benja Fallenstein |
Subject: |
[Gzz-commits] fenfire ./TODO-loom org/fenfire/loom/Cursor.jav... |
Date: |
Tue, 04 Mar 2003 05:50:45 -0500 |
CVSROOT: /cvsroot/fenfire
Module name: fenfire
Changes by: Benja Fallenstein <address@hidden> 03/03/04 05:50:43
Modified files:
. : TODO-loom
org/fenfire/loom: Cursor.java Cursor.test Loom.java
NodeView.java SimpleView.java SimpleView.test
WheelView.java WheelView.test
org/fenfire/test: test.py
Log message:
Fix test framework; show properties
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/TODO-loom.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/loom/Cursor.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/loom/Cursor.test.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/loom/Loom.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/loom/NodeView.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/loom/SimpleView.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/loom/SimpleView.test.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/loom/WheelView.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/loom/WheelView.test.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/test/test.py.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
Patches:
Index: fenfire/TODO-loom
diff -u fenfire/TODO-loom:1.5 fenfire/TODO-loom:1.6
--- fenfire/TODO-loom:1.5 Sat Mar 1 14:26:21 2003
+++ fenfire/TODO-loom Tue Mar 4 05:50:42 2003
@@ -11,7 +11,6 @@
- adapt Makefile: dependencies, build system, release system
- draw UML diagrams similar to Gzz "Core APIs"
- - show predicates somehow
- fix interpolation
- make mouse work
Index: fenfire/org/fenfire/loom/Cursor.java
diff -u fenfire/org/fenfire/loom/Cursor.java:1.1
fenfire/org/fenfire/loom/Cursor.java:1.2
--- fenfire/org/fenfire/loom/Cursor.java:1.1 Fri Feb 28 12:41:28 2003
+++ fenfire/org/fenfire/loom/Cursor.java Tue Mar 4 05:50:43 2003
@@ -50,6 +50,28 @@
*/
public Comparator order;
+ /** Compare statements by their subjects.
+ * <code>subjOrder</code> orders statements by applying
+ * <code>order</code> to their subjects.
+ */
+ protected Comparator subjOrder = new Comparator() {
+ public int compare(Object o1, Object o2) {
+ Statement s1 = (Statement)o1, s2 = (Statement)o2;
+ return order.compare(s1.getSubject(), s2.getSubject());
+ }
+ };
+
+ /** Compare statements by their objects.
+ * <code>objOrder</code> orders statements by applying
+ * <code>order</code> to their objects.
+ */
+ protected Comparator objOrder = new Comparator() {
+ public int compare(Object o1, Object o2) {
+ Statement s1 = (Statement)o1, s2 = (Statement)o2;
+ return order.compare(s1.getObject(), s2.getObject());
+ }
+ };
+
/** Create a new cursor without giving it a position yet.
*/
public Cursor(Comparator order) {
@@ -72,16 +94,21 @@
}
/** Set the position of the cursor.
- * Ambiguity of <code>rotation</code> (is it posward
- * or negward?) might be a problem?
*/
public void set(Resource focus, int dir, RDFNode rotation) {
this.focus = focus;
SortedSet set = getConnections(dir);
- if(!set.contains(rotation))
- throw new NoSuchElementException("Rotation: "+rotation);
+ Iterator iter=set.iterator();
+ for(int i=0; iter.hasNext(); i++) {
+ Statement stmt = (Statement)iter.next();
+ RDFNode node = (dir<0) ? stmt.getSubject() : stmt.getObject();
+ if(node.equals(rotation)) {
+ this.rotation = i-(set.size()-1)/2;
+ return;
+ }
+ }
- this.rotation = set.headSet(rotation).size()-(set.size()-1)/2;
+ throw new NoSuchElementException("Rotation: "+rotation);
}
/** Get <code>rotation</code> from the middle connection.
@@ -96,19 +123,21 @@
* in order. XXX refactor-- we need only a subset of all properties,
* and recursion... currently slow because we iterate though
* ALL triples in the graph.
+ * <p>
+ * Returns a set of <em>statements</em>, not a set of nodes.
*/
public SortedSet getConnections(int dir) {
try {
- SortedSet nodes = new TreeSet(order);
+ SortedSet nodes = new TreeSet(dir<0 ? subjOrder : objOrder);
StmtIterator i = focus.getModel().listStatements();
for(; i.hasNext();) {
Statement stmt = i.next();
if(dir < 0) {
if(stmt.getObject().equals(focus))
- nodes.add(stmt.getSubject());
+ nodes.add(stmt);
} else {
if(stmt.getSubject().equals(focus))
- nodes.add(stmt.getObject());
+ nodes.add(stmt);
}
}
i.close();
@@ -173,7 +202,8 @@
// nothing there
return null;
- return (RDFNode)iter.next();
+ Statement stmt = (Statement)iter.next();
+ return (dir<0) ? stmt.getSubject() : stmt.getObject();
}
/** Move left/right. XXX
Index: fenfire/org/fenfire/loom/Cursor.test
diff -u fenfire/org/fenfire/loom/Cursor.test:1.2
fenfire/org/fenfire/loom/Cursor.test:1.3
--- fenfire/org/fenfire/loom/Cursor.test:1.2 Sat Mar 1 04:23:30 2003
+++ fenfire/org/fenfire/loom/Cursor.test Tue Mar 4 05:50:43 2003
@@ -24,15 +24,6 @@
from org.fenfire.test.gfx import getvs
from com.hp.hpl.mesa.rdf import jena
-model = jena.mem.ModelMem()
-p = model.createProperty("http://fenfire.org/2003/02/test#", "test-property")
-n = [model.createResource() for i in range(10)]
-
-n[0].addProperty(p, n[1])
-n[1].addProperty(p, n[2])
-for i in range(3,10):
- n[2].addProperty(p, n[i])
-
class Cmp(java.util.Comparator):
def compare(self, r1, r2):
if (not r1) or (not r2):
@@ -41,32 +32,51 @@
# Nodes are compared by order of index:
# n[4] > n[2], n[7] > n[4] etc.
return n.index(r1) - n.index(r2)
-c = gzz.loom.Cursor(Cmp())
def list(set):
l = []; i = set.iterator()
while i.hasNext(): l.append(i.next())
return l
+def listObs(set):
+ return [stmt.getObject() for stmt in list(set)]
+
+def listSubs(set):
+ return [stmt.getSubject() for stmt in list(set)]
+
+def setUp():
+ global model, p, n, c
+
+ model = jena.mem.ModelMem()
+ p = model.createProperty("http://fenfire.org/2003/02/test#",
"test-property")
+ n = [model.createResource() for i in range(10)]
+
+ n[0].addProperty(p, n[1])
+ n[1].addProperty(p, n[2])
+ for i in range(3,10):
+ n[2].addProperty(p, n[i])
+
+ c = gzz.loom.Cursor(Cmp())
+
def testGetConnections():
n[6].addProperty(p, n[1])
c.set(n[0], 1, n[1])
- assert list(c.getConnections(1)) == [n[1]]
- assert list(c.getConnections(-1)) == []
+ assert listObs(c.getConnections(1)) == [n[1]]
+ assert listSubs(c.getConnections(-1)) == []
c.set(n[1], 1, n[2])
- assert list(c.getConnections(1)) == [n[2]]
- assert list(c.getConnections(-1)) == [n[0], n[6]]
+ assert listObs(c.getConnections(1)) == [n[2]]
+ assert listSubs(c.getConnections(-1)) == [n[0], n[6]]
c.set(n[2], 1, n[3])
- assert list(c.getConnections(1)) == n[3:]
- assert list(c.getConnections(-1)) == [n[1]]
+ assert listObs(c.getConnections(1)) == n[3:]
+ assert listSubs(c.getConnections(-1)) == [n[1]]
c.set(n[6], 1, n[1])
- assert list(c.getConnections(1)) == [n[1]]
- assert list(c.getConnections(-1)) == [n[2]]
+ assert listObs(c.getConnections(1)) == [n[1]]
+ assert listSubs(c.getConnections(-1)) == [n[2]]
def testConnectedTwoWays():
Index: fenfire/org/fenfire/loom/Loom.java
diff -u fenfire/org/fenfire/loom/Loom.java:1.1
fenfire/org/fenfire/loom/Loom.java:1.2
--- fenfire/org/fenfire/loom/Loom.java:1.1 Fri Feb 28 12:41:28 2003
+++ fenfire/org/fenfire/loom/Loom.java Tue Mar 4 05:50:43 2003
@@ -43,10 +43,7 @@
*/
public class Loom {
- protected Class[] viewclasses = {
- SimpleView.class,
- WheelView.class
- };
+ protected View[] views;
int viewcur = 0;
public static Model load(String filename) throws RDFException,
@@ -93,19 +90,31 @@
final TextStyle style = api.getTextStyle("Serif", 0, 12);
final NodeView nodeView = new NodeView() {
public void render(VobScene sc, int into, RDFNode node,
- int dir) {
+ Property prop, int dir) {
RectBgVob bg = new RectBgVob();
if(node.equals(cursor.getRotationNode(dir))) // if selected
bg.addColor(Color.red);
if(!(node instanceof Resource)) // if literal
bg.addColor(Color.yellow);
sc.map.put(bg, into);
+
String s = node.toString();
if(s.length() > 25) s = s.substring(s.length()-25);
- sc.map.put(new TextVob(style, s),
- sc.unitSqCS(into, "text"));
+
+ int unitSqCs = sc.unitSqCS(into, "text");
+ int propCs = sc.orthoCS(unitSqCs, "property",
+ 0, 0, -.7f, .7f, .7f);
+ sc.map.put(new TextVob(style, s), unitSqCs);
+
+ if(prop != null) {
+ s = prop.toString();
+ if(s.length() > 25) s = s.substring(s.length()-25);
+ sc.map.put(new TextVob(style, s), propCs);
+ }
}
};
+ views = new View[] { new SimpleView(nodeView),
+ new WheelView(nodeView) };
final Shower s = new Shower() {
Screen screen;
public void setScreen(Screen s) {
@@ -114,17 +123,7 @@
public VobScene generate() {
VobScene sc = this.screen.window.createVobScene();
sc.map.put(new SolidBgVob(java.awt.Color.white), 0);
- View view;
- try {
- view = (View) viewclasses[viewcur]
- .getConstructor(new Class[] {NodeView.class})
- .newInstance(new Object[] {nodeView});
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
-
- view.render(sc, 0, cursor);
+ views[viewcur].render(sc, 0, cursor);
return sc;
}
public void chg() {}
@@ -141,10 +140,10 @@
else if(s.equals("Right"))
cursor.move(1);
else if(s.equals("PgUp")) // previous view wanted
- viewcur = (viewcur-1+viewclasses.length)
- % viewclasses.length;
+ viewcur = (viewcur-1+views.length)
+ % views.length;
else if(s.equals("PgDown")) // next view wanted
- viewcur = (viewcur+1) % viewclasses.length;
+ viewcur = (viewcur+1) % views.length;
AbstractUpdateManager.chg();
}
Index: fenfire/org/fenfire/loom/NodeView.java
diff -u fenfire/org/fenfire/loom/NodeView.java:1.1
fenfire/org/fenfire/loom/NodeView.java:1.2
--- fenfire/org/fenfire/loom/NodeView.java:1.1 Fri Feb 28 12:41:28 2003
+++ fenfire/org/fenfire/loom/NodeView.java Tue Mar 4 05:50:43 2003
@@ -39,12 +39,16 @@
* @param into The coordinate system inside <code>vs</code>
* to render the node into.
* @param node The node to render.
+ * @param prop The property through which the node
+ * is related to the focus (<code>null</code>
+ * for the focus itself).
* @param dir Larger than zero if the node is posward
* from the focus; smaller than zero if the node
* is negward from the focus; zero if the node
* <em>is</em> the focus.
*/
- void render(VobScene vs, int into, RDFNode node, int dir);
+ void render(VobScene vs, int into, RDFNode node,
+ Property prop, int dir);
/** Get the default size of a node.
* @param node The node to get size for, or null for a default size.
Index: fenfire/org/fenfire/loom/SimpleView.java
diff -u fenfire/org/fenfire/loom/SimpleView.java:1.1
fenfire/org/fenfire/loom/SimpleView.java:1.2
--- fenfire/org/fenfire/loom/SimpleView.java:1.1 Fri Feb 28 12:41:28 2003
+++ fenfire/org/fenfire/loom/SimpleView.java Tue Mar 4 05:50:43 2003
@@ -61,7 +61,7 @@
int midx = sc.size.width/2, midy = sc.size.height/2;
int cs = sc.orthoBoxCS(into, c.focus, 0, midx-sizex/2, midy-sizey/2,
1, 1, sizex, sizey);
- nodeView.render(sc, cs, c.focus, 0);
+ nodeView.render(sc, cs, c.focus, null, 0);
int before = c.getRotationIndex(1);
@@ -69,9 +69,10 @@
y = midy - sizey/2 - before*(gapy+sizey);
for(Iterator j=c.getConnections(1).iterator(); j.hasNext();) {
- RDFNode node = (RDFNode)j.next();
+ Statement stmt = (Statement)j.next();
+ RDFNode node = stmt.getObject();
int cs2 = sc.orthoBoxCS(into, node, 0, x, y, 1, 1, sizex, sizey);
- nodeView.render(sc, cs2, node, 1);
+ nodeView.render(sc, cs2, node, stmt.getPredicate(), 1);
sc.map.put(conn, cs, cs2);
y += sizey + gapy;
}
@@ -81,9 +82,10 @@
y = midy - sizey/2 - before*(gapy+sizey);
for(Iterator j=c.getConnections(-1).iterator(); j.hasNext();) {
- RDFNode node = (RDFNode)j.next();
+ Statement stmt = (Statement)j.next();
+ RDFNode node = stmt.getSubject();
int cs2 = sc.orthoBoxCS(into, node, 0, x, y, 1, 1, sizex, sizey);
- nodeView.render(sc, cs2, node, -1);
+ nodeView.render(sc, cs2, node, stmt.getPredicate(), -1);
sc.map.put(conn, cs2, cs);
y += sizey + gapy;
}
Index: fenfire/org/fenfire/loom/SimpleView.test
diff -u fenfire/org/fenfire/loom/SimpleView.test:1.1
fenfire/org/fenfire/loom/SimpleView.test:1.2
--- fenfire/org/fenfire/loom/SimpleView.test:1.1 Fri Feb 28 12:41:28 2003
+++ fenfire/org/fenfire/loom/SimpleView.test Tue Mar 4 05:50:43 2003
@@ -21,7 +21,7 @@
import gzz, java
import jarray
-from test.tools.gfx import getvs
+from org.fenfire.test.gfx import getvs
from com.hp.hpl.mesa.rdf import jena
model = jena.mem.ModelMem()
@@ -33,12 +33,13 @@
v = model.createResource()
w = model.createResource()
-nodes, dirs = {}, {}
+nodes, dirs, props = {}, {}, {}
class NodeView(gzz.loom.NodeView):
- def render(self, vs, cs, node, dir):
+ def render(self, vs, cs, node, prop, dir):
nodes[node] = cs
dirs[node] = dir
+ props[node] = prop
class Cmp(java.util.Comparator):
def compare(self, r1, r2):
@@ -120,3 +121,6 @@
assert dirs[r] == 0
assert dirs[s] == dirs[t] == dirs[u] == dirs[v] == 1
assert dirs[w] == -1
+
+ assert props[r] == None
+ for x in (s,t,u,v,w): assert props[x] == p
Index: fenfire/org/fenfire/loom/WheelView.java
diff -u fenfire/org/fenfire/loom/WheelView.java:1.1
fenfire/org/fenfire/loom/WheelView.java:1.2
--- fenfire/org/fenfire/loom/WheelView.java:1.1 Fri Feb 28 12:41:28 2003
+++ fenfire/org/fenfire/loom/WheelView.java Tue Mar 4 05:50:43 2003
@@ -65,7 +65,7 @@
int midx = sc.size.width/2, midy = sc.size.height/2;
int cs = sc.orthoBoxCS(into, c.focus, 0, midx-sizex/2, midy-sizey/2,
1, 1, sizex, sizey);
- nodeView.render(sc, cs, c.focus, 0);
+ nodeView.render(sc, cs, c.focus, null, 0);
int totpos = c.getConnections(1).size();
int totneg = c.getConnections(-1).size();
@@ -83,12 +83,13 @@
int before = c.getRotationIndex(1);
double cura = -(before * rota);
for(Iterator j=c.getConnections(1).iterator(); j.hasNext();) {
- RDFNode node = (RDFNode)j.next();
+ Statement stmt = (Statement)j.next();
+ RDFNode node = stmt.getObject();
int cs2 = sc.orthoBoxCS(into, node, Math.abs(before),
midx+x(cura, r)-sizex/2,
midy+y(cura, r)-sizey/2,
1, 1, sizex, sizey);
- nodeView.render(sc, cs2, node, 1);
+ nodeView.render(sc, cs2, node, stmt.getPredicate(), 1);
sc.map.put(conn, cs, cs2);
cura+=rota;
before--;
@@ -98,12 +99,13 @@
before = c.getRotationIndex(-1);
cura = Math.PI-(before * rota);
for(Iterator j=c.getConnections(-1).iterator(); j.hasNext();) {
- RDFNode node = (RDFNode)j.next();
+ Statement stmt = (Statement)j.next();
+ RDFNode node = stmt.getSubject();
int cs2 = sc.orthoBoxCS(into, node, Math.abs(before),
midx+x(cura, r)-sizex/2,
midy+y(cura, r)-sizey/2,
1, 1, sizex, sizey);
- nodeView.render(sc, cs2, node, -1);
+ nodeView.render(sc, cs2, node, stmt.getPredicate(), -1);
sc.map.put(conn, cs2, cs);
cura+=rota;
before--;
Index: fenfire/org/fenfire/loom/WheelView.test
diff -u fenfire/org/fenfire/loom/WheelView.test:1.1
fenfire/org/fenfire/loom/WheelView.test:1.2
--- fenfire/org/fenfire/loom/WheelView.test:1.1 Fri Feb 28 12:41:28 2003
+++ fenfire/org/fenfire/loom/WheelView.test Tue Mar 4 05:50:43 2003
@@ -22,7 +22,7 @@
import gzz, java
import jarray
import math
-from test.tools.gfx import getvs
+from org.fenfire.test.gfx import getvs
from com.hp.hpl.mesa.rdf import jena
model = jena.mem.ModelMem()
@@ -34,12 +34,13 @@
v = model.createResource()
w = model.createResource()
-nodes, dirs = {}, {}
+nodes, dirs, props = {}, {}, {}
class NodeView(gzz.loom.NodeView):
- def render(self, vs, cs, node, dir):
+ def render(self, vs, cs, node, prop, dir):
nodes[node] = cs
dirs[node] = dir
+ props[node] = prop
class Cmp(java.util.Comparator):
def compare(self, r1, r2):
@@ -140,3 +141,6 @@
assert dirs[r] == 0
assert dirs[s] == dirs[t] == dirs[u] == dirs[v] == 1
assert dirs[w] == -1
+
+ assert props[r] == None
+ for x in (s,t,u,v,w): assert props[x] == p
Index: fenfire/org/fenfire/test/test.py
diff -u fenfire/org/fenfire/test/test.py:1.3
fenfire/org/fenfire/test/test.py:1.4
--- fenfire/org/fenfire/test/test.py:1.3 Mon Mar 3 14:10:02 2003
+++ fenfire/org/fenfire/test/test.py Tue Mar 4 05:50:43 2003
@@ -53,13 +53,15 @@
fn = getattr(module, test)
if not fn.__doc__:
- name = test
+ name = '%s.%s' % (module.__name__, test)
else:
lines = fn.__doc__.split('\n')
if lines[0] == '':
- name = '%s (%s)' % (test, lines[1].strip())
+ name = '%s.%s (%s)' % (module.__name__, test,
+ lines[1].strip())
else:
- name = '%s (%s)' % (test, lines[0].strip())
+ name = '%s.%s (%s)' % (module.__name__, test,
+ lines[0].strip())
print name + "... ",
@@ -102,7 +104,9 @@
def load(file):
- name = os.path.splitext(os.path.basename(file))[0]
+ name = os.path.splitext(file)[0]
+ name = '.'.join(name.split('/'))
+ name = '.'.join(name.split('\\'))
module = imp.new_module(name)
execfile(file, module.__dict__)
@@ -132,7 +136,7 @@
def main(args):
global runfail
- runfail = []
+ runfail = [None]
opts, args = getopt.getopt(args,
org.fenfire.test.dbg.short + "f:",
@@ -163,15 +167,15 @@
print
- for exc in exceptions:
- print 75 * '-'
- traceback.print_exception(*exc['exception'])
-
+ for exc in exceptions:
print 75 * '-'
- print
- print "%s test failures." % len(exceptions)
+ traceback.print_exception(*exc['exception'])
+
+ print 75 * '-'
+ print
+ print "%s test failures." % len(exceptions)
- java.lang.System.exit(exceptions != [])
+ java.lang.System.exit(exceptions != [])
gzz.client.GraphicsAPI.getInstance().startUpdateManager(Starter(dirs))
- [Gzz-commits] fenfire ./TODO-loom org/fenfire/loom/Cursor.jav...,
Benja Fallenstein <=