[Bprocessor-commit] model/src/net/sourceforge/bprocessor/model Space.java, 1.53, 1.54
Status: Pre-Alpha
Brought to you by:
henryml
From: Michael L. <he...@us...> - 2006-08-31 13:01:48
|
Update of /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv8113/src/net/sourceforge/bprocessor/model Modified Files: Space.java Log Message: Implemented a space-checking method that is invoked by the menu on a space Index: Space.java =================================================================== RCS file: /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model/Space.java,v retrieving revision 1.53 retrieving revision 1.54 diff -C2 -d -r1.53 -r1.54 *** Space.java 30 Aug 2006 09:53:15 -0000 1.53 --- Space.java 31 Aug 2006 13:01:39 -0000 1.54 *************** *** 1670,1672 **** --- 1670,1744 ---- } } + + /** + * Perform a consistency check of the geometry. + * @return True of sucessful + */ + public boolean check() { + { + // Check ownership relation + { + Iterator iter = getElements().iterator(); + while (iter.hasNext()) { + Geometric current = (Geometric) iter.next(); + if (current.getOwner() != this) { + throw new Error(current + " not owned by " + this); + } + } + } + { + Iterator iter = getSurfaces().iterator(); + while (iter.hasNext()) { + Geometric current = (Geometric) iter.next(); + if (current.getOwner() != this) { + throw new Error(current + " not owned by " + this); + } + } + } + { + Iterator iter = getEdges().iterator(); + while (iter.hasNext()) { + Geometric current = (Geometric) iter.next(); + if (current.getOwner() != this) { + throw new Error(current + " not owned by " + this); + } + } + } + { + Iterator iter = getVertices().iterator(); + while (iter.hasNext()) { + Geometric current = (Geometric) iter.next(); + if (current.getOwner() != this) { + throw new Error(current + " not owned by " + this); + } + } + } + } + { + // Exterior - hole check + { + Iterator iter = getSurfaces().iterator(); + while (iter.hasNext()) { + Surface current = (Surface) iter.next(); + Iterator holes = current.getHoles().iterator(); + while (holes.hasNext()) { + Surface hole = (Surface) holes.next(); + if (hole.getExterior() != current) { + throw new Error(current + " not exterior to " + hole); + } + } + Set mark = new HashSet(); + while (current != null) { + if (mark.contains(current)) { + throw new Error("cycle in exterior " + current); + } else { + mark.add(current); + current = current.getExterior(); + } + } + } + } + } + return true; + } } |