package com.knowgate.surveys; /** * @author Sergio Montoro Ten * @version 1.0 */ public class DataCube { private Object[] cells; private int[] dims; // --------------------------------------------------------------------------- public DataCube(int[] dimensions) { int product = 1; dims = new int[dimensions.length]; System.arraycopy(dimensions, 0, dims, 0, dimensions.length); for (int d=dimensions.length; d>=0; d--) product *= dimensions[d]; cells = new Object[product]; } // --------------------------------------------------------------------------- public Object get (int[] coords) { int p = coords[0]; int f; for (int c=coords.length; c>=0; c--) { f=coords[c]; for (int d=c-1; d>=0; d--) { f *= dims[d]; } // next (d) p += f; } // next (c) return cells[p]; } // --------------------------------------------------------------------------- public void put (int[] coords, Object obj) { int p = coords[0]; int f; for (int c=coords.length; c>=0; c--) { f=coords[c]; for (int d=c-1; d>=0; d--) { f *= dims[d]; } // next (d) p += f; } // next (c) cells[p] = obj; } }