The people   Coding standards   Design   Rewrite rule   TODO   DONE   Sun Java  
Javadocs   Class Hierarchy   Index   NAWS   MTRX   security   servlets   Skang   Squeal & Stuff   zen developer  
This is a temporary holding area for TODO items that are now DONE. Since I tend to write a large amount of descriptive text for TODO items, it is useful to use that as the starting point for documenting them once they are DONE. However, until I pull my finger out, the relevant text will just be cut and pasted into here. Note that some items that have not been DONE may get dragged into here, they will get dragged back when I pull my finger out. Also note that the DONE item may differ from the TODO item, but the documentation here will reflect the TODO item.
GetParameters currently scans through the current set of parameters each time a
new module is loaded. This reprocesses all the old modules parameters, we should
fix that. While args is an array of strings, and .properties is a Hashtable,
applet parameters can only be accessed by name, making it hard to just list what
we where passed. Gotta worry about important things like modules and skinURL
getting overwritten by later modules.
New parameter parsing method. Get rid of "modules" USAGE parameter. Parameters
are parsed in this order -
Make ThingSpace.params static, manage values through per user ThingSpace.sortedParameters and groking.
ThingSpace.grokParameters(int aPriority, *) - set sortedParameters[aPriority] from *
ThingSpace.ungrokParameters(boolean shouldSet, String aName) - maybe set Parameter aName from sortedParameters,
return value
ThingSpace.groakParameters(int aPriority, boolean inFullness) - clear sortedParameters[aPriority]
maybe grokInFullness(null)
ThingSpace.grokInFullness(ThingSpace that) - set all Parameters from sortedParameters
if that, do it for that and create Parameters in that (used in ThingSpace.copy())
ThingSpace.regrokAppletParameters(Skang base) - grok(this, APPLET, , ) then ungrok(, true, )
with values from ((Applet)base).getParameter(thing.name)
only done during Skang.init, first time.
Playing with OpenCMS's ContentDefinition has taught me the value of generalizing
collections of stuff. I should do something similar. For the following, we could replace
"table" with "ContentDefinition", then ContentDefinition becomes an abstraction layer.
I should think this through carefully. Should call it "Stuff".
Things have a name which is the default field name, anything with a blank table name
is not a database field. Things inherit their table name from their parent Thing.
Squeal.java
-----------
Vector squealAtVector(String, boolean)
boolean squealOutOfDatabase(String, String, String, String)
boolean squealAtDatabase(String, String, String, String, Hashtable)
boolean squealIntoDatabase(String, String, String, Hashtable)
| -> %P
% -> %%
Vector
if boolean then first element is ResultSetMetaData
Each element is a Hashtable row
Each row is String fieldName, String value pairs
4
fieldName|subStuff|meta,meta,meta
fieldName|subStuff|meta,meta,meta
fieldName|subStuff|meta,meta,meta
fieldName|subStuff|meta,meta,meta
3
value|value|value|value
value|value|value|value
value|value|value|value
Hashtable
String fieldName, String value pairs
fieldName=value|fieldName=value|fieldName=value|fieldName=value
Problem types
CHAR - must escape or quote '|'
BINARY - raw bytes
NULL -
OTHER - Object
ResultSetMetaData
try
{cols = meta.getColumnCount();}
catch (Exception e)
public MetaData(int column, String aName, ResultSetMetaData meta) throws SQLException
{
this( (aName == null) ? meta.getColumnName(column) : aName,
meta.getColumnLabel(column),
meta.getColumnType(column),
meta.getColumnDisplaySize(column),
meta.getPrecision(column),
meta.getScale(column),
meta.isNullable(column) == ResultSetMetaData.columnNullable,
meta.isSigned(column),
meta.isCurrency(column));
this.isSQL = true;
}
public MetaData(String aName, String aHeading, int anSQLType, int aWidth, int aPrecision, int aScale, boolean maybeNullable, boolean maybeSigned, boolean maybeCurrency)
aName = "fieldName|subStuff|meta,meta,meta"
switch (index++)
{
case 0 : aHeading = meta; break;
case 1 : anSQLType = stringToSQLType(meta); break;
case 2 : aWidth = new Integer(meta).intValue(); break;
case 3 : aPrecision = new Integer(meta).intValue(); break;
case 4 : aScale = new Integer(meta).intValue(); break;
case 5 : maybeNullable = What.isBoolean(meta).booleanValue(); break;
case 6 : maybeSigned = What.isBoolean(meta).booleanValue(); break;
case 7 : maybeCurrency = What.isBoolean(meta).booleanValue(); break;
}
This file was last modified on Saturday, 16-Jul-2005 08:25:48 EST