diff --git a/src/eva2/gui/DPointSetMultiIcon.java b/src/eva2/gui/DPointSetMultiIcon.java index 5645fd3c..480fa993 100644 --- a/src/eva2/gui/DPointSetMultiIcon.java +++ b/src/eva2/gui/DPointSetMultiIcon.java @@ -8,7 +8,6 @@ import java.awt.Point; import java.awt.Stroke; import java.util.ArrayList; -import eva2.tools.IntegerArrayList; import eva2.tools.chart2d.DArray; import eva2.tools.chart2d.DBorder; import eva2.tools.chart2d.DComponent; @@ -37,7 +36,7 @@ public class DPointSetMultiIcon extends DComponent class JumpManager { protected int index = -1; - protected IntegerArrayList jumps = new IntegerArrayList(); + protected ArrayList jumps = new ArrayList(); public void addJump() { diff --git a/src/eva2/tools/IntegerArrayList.java b/src/eva2/tools/IntegerArrayList.java deleted file mode 100644 index 77c59372..00000000 --- a/src/eva2/tools/IntegerArrayList.java +++ /dev/null @@ -1,161 +0,0 @@ -/** - * Filename: $RCSfile: IntegerArrayList.java,v $ - * Purpose: This class is similar to 'java.util.ArrayList', except that it can - * only hold and manage integer values. - * Language: Java - * Compiler: JDK 1.2 - * Authors: Fred Rapp - * Version: $Revision: 1.1.1.1 $ - * $Date: 2003/07/03 14:59:40 $ - * $Author: ulmerh $ - * Copyright (c) Dept. Computer Architecture, University of Tuebingen, Germany - */ - -package eva2.tools; - -/*==========================================================================* - * CLASS DECLARATION - *==========================================================================*/ - -/** - * This class is similar to 'java.util.ArrayList', except that it can - * only hold and manage integer values. - */ -public class IntegerArrayList -{ - /*-------------------------------------------------------------------------* - * private member variables - *-------------------------------------------------------------------------*/ - - private int[] integerArray = null; - private int integerCount = 0; - - private int initialSize; - private int incrementFactor; - - /*------------------------------------------------------------------------* - * constructor - *------------------------------------------------------------------------*/ - - public IntegerArrayList() - { - // call other constructor with default values - this(100, 3); - } - - public IntegerArrayList(int initialSize, int incrementFactor) - { - this.initialSize = initialSize; - this.incrementFactor = incrementFactor; - - // create new integer array of initial size - integerArray = new int[initialSize]; - } - - public void destroy() { integerArray = null; integerCount = 0; } - - /*-------------------------------------------------------------------------* - * public methods - *-------------------------------------------------------------------------*/ - - /** - * Clears the contents of this integer list and sets it back to it's initial state. - */ - public void clear() { integerArray = new int[initialSize]; integerCount = 0; } - - /** - * Returns the number of components in this list. - */ - public int size() { return integerCount; } - - /** - * Parses given string to integer and adds it to the integer list. - * @return true if parsing was successful, false if an error occured. - */ - public boolean add(String stringValue) - { - boolean success = false; - try { - int value = Integer.parseInt(stringValue); - add(value); - success = true; - } - catch (Exception e) {} - return success; - } - - /** - * Adds a new integer value to the integer list. - */ - public void add(int value) - { - // check integer array size - if (integerCount == integerArray.length) - { - // increase size of int array - int old_length = integerArray.length; - int new_length = incrementFactor * old_length; - int[] new_array = new int[new_length]; - for (int i=0; i= integerCount)) { return Integer.MIN_VALUE; } - - return integerArray[index]; - } - - /** - * Returns the contents of this list as an array of integer values. - * @param exactLength determines if the returned array should have the exactly right length, or if longer arrays are allowed - */ - public int[] getIntegerArray(boolean exactLength) - { - // check if we can simply return our internal integer array - if (!exactLength || (integerArray.length == integerCount)) { return integerArray; } - - // make a copy of the array with the exactly right length - int size = integerCount; - int[] new_array = new int[ size]; - for (int i=0; i< size; i++) { new_array[i] = integerArray[i]; } - return new_array; - } - - /** - * Returns the contents of this list as an array of double values. - */ - public double[] getDoubleArray() - { - // make a copy of the array - int size = integerCount; - double[] new_array = new double[ size]; - for (int i=0; i< size; i++) { new_array[i] = integerArray[i]; } - return new_array; - } - - /** - * Returns the contents of this list as an array of strings. - */ - public String[] getStringArray() - { - // make a copy of the array - int size = integerCount; - String[] new_array = new String[ size]; - for (int i=0; i 1) { + jumper.restore(); + while (jumper.hasMoreIntervals()) { + int[] interval = jumper.nextInterval(); + Point p1 = null, p2; + for (int i = interval[0]; i < interval[1]; i++) { + p2 = m.getPoint(x.getImage(i), y.getImage(i)); + if (p1 != null) { + g.drawLine(p1.x, p1.y, p2.x, p2.y); + } + if (icon != null) { + g.setStroke(new BasicStroke()); + g.translate(p2.x, p2.y); + icon.paint(g); + g.translate(-p2.x, -p2.y); + g.setStroke(stroke); + } + p1 = p2; + } + } + } else { + Point p; + for (int i = 0; i < size; i++) { + p = m.getPoint(x.getImage(i), y.getImage(i)); + if (icon == null) { + g.drawLine(p.x - 1, p.y - 1, p.x + 1, p.y + 1); + g.drawLine(p.x + 1, p.y - 1, p.x - 1, p.y + 1); + } else { + g.setStroke(new BasicStroke()); + g.translate(p.x, p.y); + icon.paint(g); + g.translate(-p.x, -p.y); + } + } + } + g.setStroke(new BasicStroke()); + } - public DPointSet(DIntDoubleMap x_values, DIntDoubleMap y_values){ - if( x_values.getSize() != y_values.getSize() ) throw - new IllegalArgumentException( - "The number of x-values has to be the same than the number of y-values" - ); - x = x_values; - y = y_values; - restore(); - setDBorder(new DBorder(1,1,1,1)); - } + public void addDPoint(DPoint p) { + x.addImage(p.x); + y.addImage(p.y); + rectangle.insert(p); + repaint(); + } - /*-------------------------------------------------------------------------* - * public methods - *-------------------------------------------------------------------------*/ + public void addDPoint(double x, double y) { + addDPoint(new DPoint(x, y)); + } - public void paint( DMeasures m ){ - Graphics2D g = (Graphics2D)m.getGraphics(); - g.setStroke(stroke); - if( color != null ) g.setColor( color ); - int size = getSize(); - if( connected && size > 1 ){ - jumper.restore(); - while( jumper.hasMoreIntervals() ){ - int[] interval = jumper.nextInterval(); - Point p1 = null, p2; - for( int i=interval[0]; i= x.getSize()) { + System.out.println("getDPoint() index" + index); + System.out.println("x.getSize() " + x.getSize()); + throw new ArrayIndexOutOfBoundsException(index); + } + DPoint p = new DPoint(x.getImage(index), y.getImage(index)); + p.setIcon(icon); + p.setColor(color); + return p; + } - /** - * method causes the DPointSet to interupt the connected painting at the - * current position - */ - public void jump(){ - jumper.addJump(); - } + /** + * method puts the given DPoint at the given position in the set + * + * @param index the index of the point + * @param p the point to insert + */ + public void setDPoint(int index, DPoint p) { + if (index >= x.getSize()) { + throw new ArrayIndexOutOfBoundsException(index); + } + rectangle.insert(p); + x.setImage(index, p.x); + y.setImage(index, p.y); + restore(); + repaint(); + } - /** - * method removes all jump positions - * if the DPointSet is connected, all points will be painted connected to - * their following point - */ - public void removeJumps(){ - jumper.reset(); - } + /** + * method sets an icon for a better displaying of the point set + * + * @param icon the DPointIcon + */ + public void setIcon(DPointIcon icon) { + this.icon = icon; + if (icon == null) { + setDBorder(new DBorder(1, 1, 1, 1)); + } else { + setDBorder(icon.getDBorder()); + } + } - /** - * method returns the DPoint at the given index - * - * @param index the index of the DPoint - * @return the DPoint at the given index - */ - public DPoint getDPoint( int index ){ - if( index >= x.getSize() ) { - System.out.println("getDPoint() index"+index); - System.out.println("x.getSize() "+x.getSize()); - throw new ArrayIndexOutOfBoundsException(index); - } - DPoint p = new DPoint( x.getImage( index ), y.getImage( index ) ); - p.setIcon( icon ); - p.setColor( color ); - return p; - } + /** + * method returns the current icon of the point set + * + * @return the DPointIcon + */ + public DPointIcon getIcon() { + return icon; + } - /** - * method puts the given DPoint at the given position in the set - * - * @param index the index of the point - * @param p the point to insert - */ - public void setDPoint( int index, DPoint p ){ - if( index >= x.getSize() ) throw new ArrayIndexOutOfBoundsException(index); - rectangle.insert(p); - x.setImage(index,p.x); - y.setImage(index,p.y); - restore(); - repaint(); - } + /** + * method sets the stroke of the line if the points were not connected, they now will be + * connected + * + * @param s the new stroke + */ + public void setStroke(Stroke s) { + if (s == null) { + s = new BasicStroke(); + } + stroke = s; + repaint(); + } - /** - * method sets an icon for a better displaying of the point set - * - * @param icon the DPointIcon - */ - public void setIcon( DPointIcon icon ){ - this.icon = icon; - if( icon == null ) setDBorder(new DBorder(1,1,1,1)); - else setDBorder( icon.getDBorder() ); - } + /** + * method returns the current stroke of the line + * + * @return the stroke + */ + public Stroke getStroke() { + return stroke; + } - /** - * method returns the current icon of the point set - * - * @return the DPointIcon - */ - public DPointIcon getIcon(){ - return icon; - } + /** + * Return the minimum y value in the point set. + * + * @return the minimum y value in the point set + */ + public double getMinYVal() { + return y.getMinImageValue(); + } - /** - * method sets the stroke of the line - * if the points were not connected, they now will be connected - * - * @param s the new stroke - */ - public void setStroke( Stroke s ){ - if( s == null ) s = new BasicStroke(); - stroke = s; - repaint(); - } + public double getMinPositiveYValue() { + return y.getMinPositiveImageValue(); + } - /** - * method returns the current stroke of the line - * - * @return the stroke - */ - public Stroke getStroke(){ - return stroke; - } - - /** - * Return the minimum y value in the point set. - * - * @return the minimum y value in the point set - */ - public double getMinYVal() { - return y.getMinImageValue(); - } - - public double getMinPositiveYValue() { - return y.getMinPositiveImageValue(); - } + public void setConnected(boolean aFlag) { + boolean changed = !(aFlag == connected); + connected = aFlag; + if (changed) { + repaint(); + } + } - public void setConnected( boolean aFlag ){ - boolean changed = !( aFlag == connected ); - connected = aFlag; - if( changed ) repaint(); - } + public void removeAllPoints() { + if (x.getSize() == 0) { + return; + } + x.reset(); + y.reset(); + jumper.reset(); + repaint(); + rectangle = DRectangle.getEmpty(); + } - public void removeAllPoints(){ - if( x.getSize() == 0 ) return; - x.reset(); - y.reset(); - jumper.reset(); - repaint(); - rectangle = DRectangle.getEmpty(); - } + public String toString() { + String text = "eva2.tools.chart2d.DPointSet[size:" + getSize(); + for (int i = 0; i < x.getSize(); i++) { + text += ",(" + x.getImage(i) + "," + y.getImage(i) + ")"; + } + text += "]"; + return text; + } - public String toString(){ - String text = "eva2.tools.chart2d.DPointSet[size:"+getSize(); - for( int i=0; iDPoint in this + * DPointSet. + * + * @return the index to the nearest + * DPoint. -1 if no nearest + * DPoint was found. + */ + public int getNearestDPointIndex(DPoint point) { + double minValue = Double.MAX_VALUE; + int minIndex = -1; + for (int i = 0; i < x.getSize(); i++) { + double dx = point.x - x.getImage(i); + double dy = point.y - y.getImage(i); + double dummy = dx * dx + dy * dy; + if (dummy < minValue) { + minValue = dummy; + minIndex = i; + } + } + return minIndex; + } - /** - * method returns the index to the nearest DPoint in this DPointSet. - * - * @return the index to the nearest DPoint. -1 if no nearest DPoint was found. - */ - public int getNearestDPointIndex(DPoint point){ - double minValue = Double.MAX_VALUE; - int minIndex = -1; - for( int i=0; iDPoint in this + * DPointSet. + * + * @return the nearest + * DPoint + */ + public DPoint getNearestDPoint(DPoint point) { + int minIndex = getNearestDPointIndex(point); - /** - * method returns the nearest DPoint in this DPointSet. - * - * @return the nearest DPoint - */ - public DPoint getNearestDPoint(DPoint point){ - int minIndex = getNearestDPointIndex(point); - - if(minIndex == -1) return null; - else return new DPoint(x.getImage(minIndex), y.getImage(minIndex)); - } + if (minIndex == -1) { + return null; + } else { + return new DPoint(x.getImage(minIndex), y.getImage(minIndex)); + } + } // public int getSize(){ // int size = x.getSize(); @@ -293,76 +304,79 @@ public class DPointSet extends DComponent // ); // return size; // } - /** - * - */ - public int getSize(){ // testhu - int size = x.getSize(); - if( size <= y.getSize() ) - return size; - return x.getSize(); - } + /** + * + */ + public int getSize() { // testhu + int size = x.getSize(); + if (size <= y.getSize()) { + return size; + } + return x.getSize(); + } + protected void restore() { + if (getSize() == 0) { + rectangle = DRectangle.getEmpty(); + return; + } + double min_x = x.getMinImageValue(), + max_x = x.getMaxImageValue(), + min_y = y.getMinImageValue(), + max_y = y.getMaxImageValue(); + if (Mathematics.areFinite(min_x, max_x, min_y, max_y) == -1) { + rectangle = new DRectangle(min_x, min_y, max_x - min_x, max_y - min_y); + } + } - protected void restore(){ - if( getSize() == 0){ - rectangle = DRectangle.getEmpty(); - return; - } - double min_x = x.getMinImageValue(), - max_x = x.getMaxImageValue(), - min_y = y.getMinImageValue(), - max_y = y.getMaxImageValue(); - if (Mathematics.areFinite(min_x, max_x, min_y, max_y) == -1) - rectangle = new DRectangle(min_x, min_y, max_x - min_x, max_y - min_y ); -// else -// System.err.println("Warning, rectangle not restored due to invalid (infinite/NaN) values."); - } + /** + * this class stores the jump positions (see this.jump) + */ + class JumpManager { - /** - * this class stores the jump positions (see this.jump) - */ - class JumpManager{ - protected IntegerArrayList jumps = new IntegerArrayList(); - protected int index = -1; + protected ArrayList jumps = new ArrayList(); + protected int index = -1; - public void addJump(){ - jumps.add(getSize()); - } + public void addJump() { + jumps.add(getSize()); + } - public int[] nextInterval(){ - int no_jumps = jumps.size(); - if( index >= no_jumps ) throw - new ArrayIndexOutOfBoundsException("No more intervals in JumpManager"); + public int[] nextInterval() { + int noJumps = jumps.size(); + if (index >= noJumps) { + throw new ArrayIndexOutOfBoundsException("No more intervals in JumpManager"); + } - int[] inter = new int[2]; + int[] inter = new int[2]; - if( index == -1 ) inter[0] = 0; - else inter[0] = jumps.get(index); + if (index == -1) { + inter[0] = 0; + } else { + inter[0] = jumps.get(index); + } - index++; + index++; - if( index < no_jumps ) inter[1] = jumps.get(index); - else inter[1] = getSize(); + if (index < noJumps) { + inter[1] = jumps.get(index); + } else { + inter[1] = getSize(); + } - return inter; - } + return inter; + } - public boolean hasMoreIntervals(){ - return index < jumps.size(); - } + public boolean hasMoreIntervals() { + return index < jumps.size(); + } - public void restore(){ - index = -1; - } + public void restore() { + index = -1; + } - public void reset(){ - index = -1; - jumps.clear(); - } - } + public void reset() { + index = -1; + jumps.clear(); + } + } } - -/**************************************************************************** - * END OF FILE - ****************************************************************************/ diff --git a/test/eva2/tools/StringToolsTest.java b/test/eva2/tools/StringToolsTest.java new file mode 100644 index 00000000..ff3f2693 --- /dev/null +++ b/test/eva2/tools/StringToolsTest.java @@ -0,0 +1,59 @@ +package eva2.tools; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import org.junit.After; +import static org.junit.Assert.assertEquals; +import org.junit.Before; +import org.junit.Test; + +/** + * + * @author becker + */ +public class StringToolsTest { + + public StringToolsTest() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + /** + * Test of humaniseCamelCase method, of class StringTools. + */ + @Test + public void testHumaniseCamelCase() { + HashMap map = new HashMap(); + map.put("camelCase", "Camel Case"); + map.put("Camel Case", "Camel Case"); + map.put("thisIsAwesome", "This Is Awesome"); + map.put("THQIsNice", "THQ Is Nice"); + map.put("iLikeABC", "I Like ABC"); + + String key, value; + Iterator iter = map.entrySet().iterator(); + while (iter.hasNext()) { + Map.Entry pairs = (Map.Entry) iter.next(); + key = (String) pairs.getKey(); + value = (String) pairs.getValue(); + String result = StringTools.humaniseCamelCase(key); + assertEquals(value, result); + } + } + + /** + * Test of upcaseFirst method, of class StringTools. + */ + @Test + public void testUpcaseFirst() { + assertEquals("Camel", StringTools.upcaseFirst("camel")); + assertEquals("UpWeGo", StringTools.upcaseFirst("upWeGo")); + } +}