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;
+ }
}
|