From 7c279747beb43c7e88633a6228a155a30e6834f7 Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Mon, 27 May 2024 11:38:33 -0400 Subject: Initial import --- .../collections/nspace/SparseNSpace.java | 165 +++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100755 israfil-foundation-nspace/src/main/java/net/israfil/foundation/collections/nspace/SparseNSpace.java (limited to 'israfil-foundation-nspace/src/main/java/net/israfil/foundation/collections/nspace/SparseNSpace.java') diff --git a/israfil-foundation-nspace/src/main/java/net/israfil/foundation/collections/nspace/SparseNSpace.java b/israfil-foundation-nspace/src/main/java/net/israfil/foundation/collections/nspace/SparseNSpace.java new file mode 100755 index 0000000..4c48842 --- /dev/null +++ b/israfil-foundation-nspace/src/main/java/net/israfil/foundation/collections/nspace/SparseNSpace.java @@ -0,0 +1,165 @@ +/* + * Copyright (c) 2003, Mishkin Berteig and Christian Gruber + * + * $Id: SparseNSpace.java 260 2005-05-15 13:08:53Z cgruber $ + */ +package net.israfil.foundation.collections.nspace; + +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +/** + * An implementatino of NSpace that is sparsely populated. + * + * @author Mishkin Berteig + * @author Christian Gruber + * @version $Revision: 260 $ + */ +public class SparseNSpace implements NSpace { + + private final Set dimensions = new HashSet(); + + public SparseNSpace() { + super(); + } + + public SparseNSpace(Set initialDimensions) { + this(); + for (Dimension d : dimensions) { + // This is temporary, until we have an internal protected mutator. + dimensions.add(d); + } + } + + /** + * @see org.frugenplat.framework.nspace.NSpace#createDimension(java.lang.String, java.lang.String) + */ + public Dimension createDimension(String name, String initialSlot) + throws DimensionExistsException { + Dimension d = new SimpleDimension(name,initialSlot); + dimensions.add(d); + return d; + } + + /** + * @see org.frugenplat.framework.nspace.NSpace#deleteDimension(org.frugenplat.framework.nspace.Dimension) + */ + public void deleteDimension(Dimension dimension) { + throw new UnsupportedOperationException("Not yet implemented."); + } + + /** + * @see org.frugenplat.framework.nspace.NSpace#dimensionAddedPosition(org.frugenplat.framework.nspace.Dimension, java.lang.String) + */ + public void dimensionAddedPosition(Dimension dimension, String position) { + throw new UnsupportedOperationException("Not yet implemented."); + } + + /** + * @see org.frugenplat.framework.nspace.NSpace#dimensionRemovedPosition(org.frugenplat.framework.nspace.Dimension, java.lang.String) + */ + public void dimensionRemovedPosition( + Dimension dimension, + String position) { + throw new UnsupportedOperationException("Not yet implemented."); + } + + /** + * @see org.frugenplat.framework.nspace.NSpace#getDimension(java.lang.String) + */ + public Dimension getDimension(String name) { + throw new UnsupportedOperationException("Not yet implemented."); + } + + /** + * Returns an immutable set of dimensions for inspection.. + * @see org.frugenplat.framework.nspace.NSpace#getDimensions() + */ + public Set getDimensions() { + return Collections.unmodifiableSet(dimensions); + } + + /** + * Exposes the internal dimensions set to any children + * @return Set + */ + protected Set getInternalDimensions() { + return dimensions; + } + + /** + * @see org.frugenplat.framework.nspace.NSpace#getValue() + */ + public Object getValue(Coordinate c) { + // SparseNSpace s = _slice(c); + throw new UnsupportedOperationException("Not yet implemented."); + } + + Object _findValue() { + throw new UnsupportedOperationException("Not yet implemented."); + } + + /** + * @see org.frugenplat.framework.nspace.NSpace#isPoint() + */ + public boolean isPoint() { + if (dimensions.size() == 0) return true; + else { + boolean hasThinDimensions = true; + for(Dimension d : dimensions){ + hasThinDimensions = hasThinDimensions && + (d.size() == 1); + } + return hasThinDimensions; + } + + } + + /** + * @see org.frugenplat.framework.nspace.NSpace#lookup(org.frugenplat.framework.nspace.Coordinate) + */ + public NSpace lookup(Coordinate c) { + return _lookup(c); + } + + /** + * @see org.frugenplat.framework.nspace.NSpace#setValue(org.frugenplat.framework.nspace.Coordinate, org.frugenplat.framework.nspace.NSpace) + */ + public NSpace setValue(Coordinate c, NSpace value) + throws InvalidDimensionalityException { + throw new UnsupportedOperationException("Not yet implemented."); + } + + /** + * @see org.frugenplat.framework.nspace.NSpace#setValue(org.frugenplat.framework.nspace.Coordinate, java.lang.Object) + */ + public NSpace setValue(Coordinate c, Object value) + throws InvalidDimensionalityException { + throw new UnsupportedOperationException("Not yet implemented."); + } + + /** + * @see org.frugenplat.framework.nspace.NSpace#slice(org.frugenplat.framework.nspace.Coordinate) + */ + public NSpace slice(Coordinate c) { + return _slice(c); + } + + private SparseNSpace _lookup(Coordinate c) { + if (c.equals(Coordinate.EMPTY)) return this; + throw new UnsupportedOperationException("Not yet implemented."); + } + + private SparseNSpace _slice(Coordinate c) { + if (c.equals(Coordinate.EMPTY)) return this; + throw new UnsupportedOperationException("Not yet implemented."); + } + /* (non-Javadoc) + * @see org.frugenplat.framework.nspace.NSpace#slice(org.frugenplat.framework.nspace.Dimension) + */ + public NSpace[] slice(Dimension d) { + // TODO Auto-generated method stub + return null; + } +} -- cgit v1.2.3