[Bprocessor-commit] model/src/net/sourceforge/bprocessor/model Space.java, 1.224, 1.225 Persistence
Status: Pre-Alpha
Brought to you by:
henryml
From: Michael L. <he...@us...> - 2007-12-13 12:15:47
|
Update of /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv26856/src/net/sourceforge/bprocessor/model Modified Files: Space.java Persistence.java Container.java Log Message: Move elements from space to container Index: Persistence.java =================================================================== RCS file: /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model/Persistence.java,v retrieving revision 1.70 retrieving revision 1.71 diff -C2 -d -r1.70 -r1.71 *** Persistence.java 13 Dec 2007 12:00:31 -0000 1.70 --- Persistence.java 13 Dec 2007 12:15:40 -0000 1.71 *************** *** 990,996 **** map.put(space, xml); if (!space.isInstance()) { //Only save geometry if space isn't a instance { ! List elements = new LinkedList(space.getElements()); Entity.sort(elements); Iterator iter = elements.iterator(); --- 990,997 ---- map.put(space, xml); if (!space.isInstance()) { + Container container = (Container) space; //Only save geometry if space isn't a instance { ! List elements = new LinkedList(container.getElements()); Entity.sort(elements); Iterator iter = elements.iterator(); *************** *** 1001,1005 **** } { ! List surfaces = new LinkedList(space.getSurfaces()); Entity.sort(surfaces); Iterator iter = surfaces.iterator(); --- 1002,1006 ---- } { ! List surfaces = new LinkedList(container.getSurfaces()); Entity.sort(surfaces); Iterator iter = surfaces.iterator(); *************** *** 1010,1014 **** } { ! List edges = new LinkedList(space.getEdges()); Entity.sort(edges); Iterator iter = edges.iterator(); --- 1011,1015 ---- } { ! List edges = new LinkedList(container.getEdges()); Entity.sort(edges); Iterator iter = edges.iterator(); *************** *** 1019,1023 **** } { ! List vertices = new LinkedList(space.getVertices()); Entity.sort(vertices); Iterator iter = vertices.iterator(); --- 1020,1024 ---- } { ! List vertices = new LinkedList(container.getVertices()); Entity.sort(vertices); Iterator iter = vertices.iterator(); *************** *** 1028,1032 **** } { ! Iterator iter = space.getConstructors().iterator(); while (iter.hasNext()) { Constructor current = (Constructor) iter.next(); --- 1029,1033 ---- } { ! Iterator iter = container.getConstructors().iterator(); while (iter.hasNext()) { Constructor current = (Constructor) iter.next(); Index: Space.java =================================================================== RCS file: /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model/Space.java,v retrieving revision 1.224 retrieving revision 1.225 diff -C2 -d -r1.224 -r1.225 *** Space.java 13 Dec 2007 12:00:31 -0000 1.224 --- Space.java 13 Dec 2007 12:15:40 -0000 1.225 *************** *** 84,88 **** /** The next element id */ ! private long nextElementId; /** The vertices */ --- 84,88 ---- /** The next element id */ ! protected long nextElementId; /** The vertices */ *************** *** 187,191 **** initializeContainers(); empty = new Container("Void", FUNCTIONAL, false); ! this.add(empty); } } --- 187,191 ---- initializeContainers(); empty = new Container("Void", FUNCTIONAL, false); ! ((Container) this).add(empty); } } *************** *** 352,356 **** nextConstructorId = 1; empty.clear(); ! add(empty); } } --- 352,356 ---- nextConstructorId = 1; empty.clear(); ! ((Container) this).add(empty); } } *************** *** 874,890 **** } - /** - * Find element by name - * @param name String - * @return element - */ - public Space find(String name) { - for (Space element : getElements()) { - if (element.getName().equals(name)) { - return element; - } - } - return null; - } /** --- 874,877 ---- *************** *** 951,963 **** } ! /** ! * Set the elements ! * @param elements HashMap ! */ ! public void setElements(HashMap<Long, Space> elements) { ! this.elements = elements; ! nextElementId = Entity.maxId(elements.values()) + 1; ! } ! /** --- 938,942 ---- } ! /** *************** *** 988,1083 **** } - /** - * Add a space as element - * @param element The space to add as element - */ - public void add(Space element) { - if (container && elements != null) { - Long id; - if (element.getId() != null) { - id = element.getId(); - nextElementId = Math.max(nextElementId, id.longValue() + 1); - } else { - id = new Long(nextElementId++); - element.setId(id); - } - elements.put(id, element); - element.setOwner((Container) this); - } else { - throw new Error("adding element to non-container " + this); - } - } - /** - * Remove a space as element - * @param element The space to remove as element - */ - public void remove(Container element) { - if (container) { - Set surfs = element.getEnvelope(); - element.setEnvelope(new HashSet<Surface>()); - if (surfs != null) { - Iterator iter = surfs.iterator(); - while (iter.hasNext()) { - Surface current = (Surface)iter.next(); - Container back = current.getBackDomain(); - Container front = current.getFrontDomain(); - if (back == element) { - current.setBackDomain(empty); - } - if (front == element) { - current.setFrontDomain(empty); - } - } - } - if (element != null) { - Container superSpace = findElement(element); - if (superSpace != null) { - superSpace.elements.remove(element.getId()); - element.setId(null); - } - } - if (element.getModellor() != null) { - element.getModellor().delete(); - } - } - } - /** - * Finds an element contained in this space or some subspace of this space. - * @param element the element to be found. - * @return the space that directly contains the element in its elements set - * that space maybe a subspace of this space. If the element is not found null - * is returned. - */ - protected Container findElement(Container element) { - if (elements != null) { - if (elements.get(element.getId()) == element) { - return (Container) this; - } else { - Iterator it = elements.values().iterator(); - while (it.hasNext()) { - Container space = (Container)it.next(); - Container result = space.findElement(element); - if (result != null) { - return result; - } - } - } - } - return null; - } ! /** ! * Get elements ! * @return Elements ! */ ! public Collection<Space> getElements() { ! if (container) { ! return elements.values(); ! } else { ! return Collections.EMPTY_LIST; ! } ! } /** --- 967,974 ---- } ! /** *************** *** 1371,1386 **** } ! /** ! * Collect all interior surfaces to specified container ! * @param surfaces Set of surfaces ! */ ! public void collectSurfaces(Collection<Surface> surfaces) { ! surfaces.addAll(getSurfaces()); ! Iterator iter = getElements().iterator(); ! while (iter.hasNext()) { ! Container element = (Container) iter.next(); ! element.collectSurfaces(surfaces); ! } ! } /** {@inheritDoc} */ --- 1262,1266 ---- } ! /** {@inheritDoc} */ *************** *** 1497,1579 **** } - /** - * Perform a consistency check of the geometry. - * @return True of sucessful - */ - public boolean check() { - { - { - 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<Surface> mark = new HashSet<Surface>(); - while (current != null) { - if (mark.contains(current)) { - throw new Error("cycle in exterior " + current); - } else { - mark.add(current); - current = current.getExterior(); - } - } - } - } - } - { - for (Space element : getElements()) { - for (Surface surface : element.getEnvelope()) { - if (surface.getOwner() != this) { - throw new Error("inconsistency in envelope of " + element); - } - } - } - } - return true; - } /** --- 1377,1380 ---- *************** *** 2217,2234 **** /** - * Verify that everything is OK - */ - public void verify() { - for (Space space : getElements()) { - for (Surface surface : space.getEnvelope()) { - if (surface.getOwner() == null) { - System.out.println(" NOT OK"); - } - } - } - } - - - /** * Info * @param object Object --- 2018,2021 ---- Index: Container.java =================================================================== RCS file: /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model/Container.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Container.java 12 Dec 2007 14:38:43 -0000 1.3 --- Container.java 13 Dec 2007 12:15:41 -0000 1.4 *************** *** 8,11 **** --- 8,18 ---- package net.sourceforge.bprocessor.model; + import java.util.Collection; + import java.util.Collections; + import java.util.HashMap; + import java.util.HashSet; + import java.util.Iterator; + import java.util.Set; + /** * *************** *** 35,37 **** --- 42,253 ---- return false; } + + /** + * Add a space as element + * @param element The space to add as element + */ + public void add(Space element) { + if (container && elements != null) { + Long id; + if (element.getId() != null) { + id = element.getId(); + nextElementId = Math.max(nextElementId, id.longValue() + 1); + } else { + id = new Long(nextElementId++); + element.setId(id); + } + elements.put(id, element); + element.setOwner((Container) this); + } else { + throw new Error("adding element to non-container " + this); + } + } + + /** + * Remove a space as element + * @param element The space to remove as element + */ + public void remove(Container element) { + if (container) { + Set surfs = element.getEnvelope(); + element.setEnvelope(new HashSet<Surface>()); + if (surfs != null) { + Iterator iter = surfs.iterator(); + while (iter.hasNext()) { + Surface current = (Surface)iter.next(); + Container back = current.getBackDomain(); + Container front = current.getFrontDomain(); + if (back == element) { + current.setBackDomain(empty); + } + if (front == element) { + current.setFrontDomain(empty); + } + } + } + if (element != null) { + Container superSpace = findElement(element); + if (superSpace != null) { + superSpace.elements.remove(element.getId()); + element.setId(null); + } + } + if (element.getModellor() != null) { + element.getModellor().delete(); + } + } + } + + /** + * Finds an element contained in this space or some subspace of this space. + * @param element the element to be found. + * @return the space that directly contains the element in its elements set + * that space maybe a subspace of this space. If the element is not found null + * is returned. + */ + protected Container findElement(Container element) { + if (elements != null) { + if (elements.get(element.getId()) == element) { + return (Container) this; + } else { + Iterator it = elements.values().iterator(); + while (it.hasNext()) { + Container space = (Container)it.next(); + Container result = space.findElement(element); + if (result != null) { + return result; + } + } + } + } + return null; + } + + /** + * Get elements + * @return Elements + */ + public Collection<Space> getElements() { + if (container) { + return elements.values(); + } else { + return Collections.EMPTY_LIST; + } + } + + /** + * Set the elements + * @param elements HashMap + */ + public void setElements(HashMap<Long, Space> elements) { + this.elements = elements; + nextElementId = Entity.maxId(elements.values()) + 1; + } + + /** + * Find element by name + * @param name String + * @return element + */ + public Space find(String name) { + for (Space element : getElements()) { + if (element.getName().equals(name)) { + return element; + } + } + return null; + } + + /** + * Collect all interior surfaces to specified container + * @param surfaces Set of surfaces + */ + public void collectSurfaces(Collection<Surface> surfaces) { + surfaces.addAll(getSurfaces()); + Iterator iter = getElements().iterator(); + while (iter.hasNext()) { + Container element = (Container) iter.next(); + element.collectSurfaces(surfaces); + } + } + + /** + * Perform a consistency check of the geometry. + * @return True of sucessful + */ + public boolean check() { + { + { + 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<Surface> mark = new HashSet<Surface>(); + while (current != null) { + if (mark.contains(current)) { + throw new Error("cycle in exterior " + current); + } else { + mark.add(current); + current = current.getExterior(); + } + } + } + } + } + { + for (Space element : getElements()) { + for (Surface surface : element.getEnvelope()) { + if (surface.getOwner() != this) { + throw new Error("inconsistency in envelope of " + element); + } + } + } + } + return true; + } } |