001 /*
002 *
003 * $Id: Coerce.java,v 1.3 2003/09/23 14:56:15 gus Exp $
004 *
005 * Developed for "Rethinking CS101", a project of Lynn Andrea Stein's AP Group.
006 * For more information, see <a href="http://www.ai.mit.edu/projects/cs101/">the
007 * CS101 homepage</a> or email <las@ai.mit.edu>.
008 *
009 * Copyright (C) 1996 Massachusetts Institute of Technology.
010 * Please do not redistribute without obtaining permission.
011 */
012
013 package cs101.util;
014
015 import java.util.Hashtable;
016 import java.awt.Color;
017
018 /**
019 * Coerce implements some coercion utilities for a variety of java
020 * classes. <p>
021 *
022 * This file was created for
023 * <a href="http://www.ai.mit.edu/projects/cs101/">
024 * Rethinking CS101
025 * </a> project of Lynn Andrea Stein's AP Group at the MIT
026 * Artificial Intelligence Laboratory.<p>
027 * <p>
028 * Copyright 1996 Massachusetts Institute of Technology
029 *
030 * @see java.lang.String
031 * @see java.lang.Double
032 * @see java.awt.Color
033 *
034 * @author Lynn Andrea Stein, las@ai.mit.edu
035 * @version $Id: Coerce.java,v 1.3 2003/09/23 14:56:15 gus Exp $
036 *
037 */
038 public final class Coerce {
039
040 // StringTodouble( String )
041 /**
042 * Given a string representing a floating point number, returns the
043 * corresponding (unwrapped) double.
044 *
045 * Note: this is <i>not</i> Double StringToDouble( String ), which
046 * would be just Double.valueOf( s );
047 *
048 * @param s A string representing a floating point number.
049 * @return the corresponding (unwrapped) double.
050 */
051 public static final double stringToDouble( String s ) {
052 return Double.valueOf( s ).doubleValue();
053 }
054
055
056 private static final Hashtable colorNameTable = new Hashtable(13);
057 // 13 is initial capacity
058 static {
059 colorNameTable.put("Black", java.awt.Color.black);
060 colorNameTable.put("Blue", java.awt.Color.blue);
061 colorNameTable.put("Cyan", java.awt.Color.cyan);
062 colorNameTable.put("DarkGray", java.awt.Color.darkGray);
063 colorNameTable.put("Gray", java.awt.Color.gray);
064 colorNameTable.put("Green", java.awt.Color.green);
065 colorNameTable.put("LightGray", java.awt.Color.lightGray);
066 colorNameTable.put("Magenta", java.awt.Color.magenta);
067 colorNameTable.put("Orange", java.awt.Color.orange);
068 colorNameTable.put("Pink", java.awt.Color.pink);
069 colorNameTable.put("Red", java.awt.Color.red);
070 colorNameTable.put("White", java.awt.Color.white);
071 colorNameTable.put("Yellow", java.awt.Color.yellow);
072 }
073
074 // StringToColor( String )
075 /**
076 * Given a string representing the name of one of java's built-in
077 * colors, returns the corresponding Color object.
078 *
079 * @param colorName A string representing a java Color.
080 * @return the corresponding Color object.
081 */
082 public static final Color stringToColor ( String colorName ) {
083 Object c = Coerce.colorNameTable.get(colorName);
084 if ( c == null ) {
085 return Color.black;
086 } else {
087 return (Color) c;
088 }
089 }
090
091 // NewInstanceByClassname( String )
092 /**
093 * Given a String representing the name of a class, returns an
094 * initilized instance of the corresponding class (as an object).
095 * Throws CreationException if the indicated class cannot be
096 * instantianted for any reason.
097 */
098 public static final Object newInstanceByClassname( String s ) throws CreationException {
099 try {
100 Class c = Class.forName(s);
101 return c.newInstance();
102 } catch (Exception e) {
103 throw new CreationException(s + " could not be created");
104 }
105 }
106
107 /**
108 * Prevent instantiation
109 */
110 private Coerce() {}
111 }
112 /* Comments:
113 *
114 * History:
115 * $Log: Coerce.java,v $
116 * Revision 1.3 2003/09/23 14:56:15 gus
117 * javadoc fix and make stringToColor do proper typechecking.
118 *
119 * Revision 1.2 2003/03/28 18:45:36 gus
120 * rename methods to have consistant captializations scheme.
121 *
122 * Revision 1.1.1.1 2002/06/05 21:56:32 root
123 * CS101 comes to Olin finally.
124 *
125 * Revision 1.5 1998/07/24 17:19:23 tparnell
126 * Placate new javadoc behavior
127 *
128 * Revision 1.4 1998/07/21 19:23:21 tparnell
129 * added private Coerce()
130 *
131 * Revision 1.3 1998/06/07 16:59:52 tparnell
132 * changed name to NewInstanceByClassname
133 *
134 * Revision 1.2 1998/06/04 23:18:12 tparnell
135 * added a StringToObject method in Coerce, and a generic Main wrapper so
136 * students can avoid public static void main(String[] argv)
137 *
138 * Revision 1.1 1998/03/13 22:18:09 tparnell
139 * Import from server crash. I think the src and class files match up.
140 *
141 * Revision 1.3 1996/08/01 18:26:18 reuben
142 * More javadoc tweaking (hopefully the final pass)
143 *
144 * Revision 1.2 1996/07/30 17:25:59 reuben
145 * Added/corrected javadoc comments.
146 *
147 * Revision 1.1.1.1 1996/07/18 17:38:24 sit
148 * Import from /mit/6.096/share/classes after 6.80s session
149 *
150 * Revision 1.2 1996/07/02 21:47:51 las
151 * Added Color (String name to String) coercions.
152 *
153 * Revision 1.1 1996/06/25 22:23:36 las
154 * Initial revision
155 *
156 * */