SolarMetric Kodo JDO 2.5.0 Reverse Schema Tool

com.solarmetric.rd.kodo.runtime
Class PersistenceManagerImpl

java.lang.Object
  |
  +--com.solarmetric.rd.kodo.runtime.PersistenceManagerImpl
All Implemented Interfaces:
javax.resource.cci.Connection, javax.resource.cci.ConnectionMetaData, javax.jdo.PersistenceManager, javax.transaction.Synchronization, javax.jdo.Transaction

public class PersistenceManagerImpl
extends java.lang.Object
implements javax.jdo.PersistenceManager, javax.jdo.Transaction, javax.transaction.Synchronization, javax.resource.cci.Connection, javax.resource.cci.ConnectionMetaData

Concrete PersistenceManager for use with this common runtime. The PersistenceManager handles JDO-specific behavior, but leaves all interaction with the data store to a StoreManager that must be supplied at initialization.

All options defined in the JDO 1.0 specification are supported, with the exception of non durable identity and changing primary keys.


Constructor Summary
PersistenceManagerImpl()
           
 
Method Summary
 void afterCompletion(int status)
           
 void beforeCompletion()
           
 void begin()
           
 void checkActiveTransaction()
           
 void checkClosed()
           
 void checkNontransactionalRead()
           
protected  com.solarmetric.rd.kodo.runtime.StateManagerImpl checkValid(java.lang.Object pc)
           
 void close()
           
 void commit()
           
 void commitAndResume()
          API extension.
 javax.resource.cci.Interaction createInteraction()
           
 javax.jdo.Transaction currentTransaction()
          Obtain the PersistenceManager's current transaction.
 void deletePersistent(java.lang.Object pc)
           
 void deletePersistentAll(java.util.Collection pcs)
           
 void deletePersistentAll(java.lang.Object[] pcs)
           
protected  void endTransaction(int status)
          End the current transaction, making appropriate state transitions.
 void evict(java.lang.Object pc)
           
 void evictAll()
           
 void evictAll(java.lang.Class cls)
          API Extension.
 void evictAll(java.util.Collection pcs)
           
 void evictAll(javax.jdo.Extent extent)
          API Extension.
 void evictAll(java.lang.Object[] pcs)
           
protected  void finalize()
          Close on finalize.
protected  void flush()
          Flush the transactional state to the data store.
protected  void free()
          Free the resources used by this persistence manager.
 java.lang.Object getCachedObjectById(java.lang.Object oid)
          API extension.
 java.lang.ClassLoader getClassLoader()
          Return the current thread's class loader at the time this persistence manager was obtained from the persistence manager factory.
 com.solarmetric.rd.kodo.conf.JDOConfiguration getConfiguration()
          Return the configuration associated with this persistence manager.
 java.lang.String getConnectionPassword()
          Return the connection password.
 java.lang.String getConnectionUserName()
          Return the connection user name.
 com.solarmetric.rd.kodo.runtime.StoreManager getDelegatingStoreManager()
          API Extension.
 java.lang.String getEISProductName()
           
 java.lang.String getEISProductVersion()
           
 javax.jdo.Extent getExtent(java.lang.Class type, boolean subclasses)
           
 boolean getIgnoreCache()
           
 javax.resource.cci.LocalTransaction getLocalTransaction()
           
 java.util.Collection getManagedObjects()
          API Extension.
 com.solarmetric.rd.kodo.runtime.ManagedRuntime getManagedRuntime()
          Return the managed runtime in use.
 javax.resource.cci.ConnectionMetaData getMetaData()
           
 boolean getMultithreaded()
           
 boolean getNontransactionalRead()
           
 boolean getNontransactionalWrite()
           
 java.lang.Object getObjectById(java.lang.Object oid, boolean validate)
           
 java.lang.Object getObjectById(java.lang.Object oid, java.lang.Object connection)
          API extension.
protected  java.lang.Object getObjectById(java.lang.Object oid, java.lang.Object connection, boolean validate, boolean copyOid, boolean allowNew)
           
 java.lang.Object getObjectId(java.lang.Object pc)
           
 java.lang.Class getObjectIdClass(java.lang.Class cls)
           
 boolean getOptimistic()
           
 javax.jdo.PersistenceManager getPersistenceManager()
           
 javax.jdo.PersistenceManagerFactory getPersistenceManagerFactory()
           
 boolean getRestoreValues()
           
 javax.resource.cci.ResultSetInfo getResultSetInfo()
           
 boolean getRetainValues()
           
 com.solarmetric.rd.kodo.runtime.StateManagerImpl getState(java.lang.Object oid)
          API extension.
protected  com.solarmetric.rd.kodo.runtime.StateManagerImpl getState(java.lang.Object oid, boolean allowNew)
          API extension.
 com.solarmetric.rd.kodo.runtime.StoreManager getStoreManager()
          API Extension.
 javax.transaction.Synchronization getSynchronization()
           
 java.lang.Object getTransactionalObjectId(java.lang.Object pc)
           
 java.util.Collection getTransactionalObjects()
          API Extension.
 java.lang.String getUserName()
           
 java.lang.Object getUserObject()
           
 void initialize(com.solarmetric.rd.kodo.runtime.PersistenceManagerFactoryImpl factory, com.solarmetric.rd.kodo.runtime.StoreManager sm, com.solarmetric.rd.kodo.runtime.ManagedRuntime runtime, java.lang.String user, java.lang.String pass)
          Initialize the persistence manager.
 boolean isActive()
           
 boolean isClosed()
           
protected  void lock()
          Synchronizes on an internal lock if the Multithreaded flag is set to true.
 com.solarmetric.rd.kodo.runtime.StateManagerImpl makeEmbedded(java.lang.Object pc, com.solarmetric.rd.kodo.runtime.StateManagerImpl owner, int ownerField)
          For implementation use only.
 void makeNontransactional(java.lang.Object pc)
           
 void makeNontransactionalAll(java.util.Collection pcs)
           
 void makeNontransactionalAll(java.lang.Object[] pcs)
           
 void makePersistent(java.lang.Object pc)
           
 void makePersistentAll(java.util.Collection pcs)
           
 void makePersistentAll(java.lang.Object[] pcs)
           
 void makeTransactional(java.lang.Object pc)
           
 void makeTransactionalAll(java.util.Collection pcs)
           
 void makeTransactionalAll(java.lang.Object[] pcs)
           
 void makeTransient(java.lang.Object pc)
           
 void makeTransientAll(java.util.Collection pcs)
           
 void makeTransientAll(java.lang.Object[] pcs)
           
protected  java.util.Map newManagedObjectCache()
          Create a Map to be used for the managed object cache.
 java.lang.Object newObjectIdInstance(java.lang.Class cls, java.lang.String str)
           
 javax.jdo.Query newQuery()
           
 javax.jdo.Query newQuery(java.lang.Class cls)
           
 javax.jdo.Query newQuery(java.lang.Class cls, java.util.Collection cln)
           
 javax.jdo.Query newQuery(java.lang.Class cls, java.util.Collection cln, java.lang.String filter)
           
 javax.jdo.Query newQuery(java.lang.Class cls, java.lang.String filter)
           
 javax.jdo.Query newQuery(javax.jdo.Extent ext)
           
 javax.jdo.Query newQuery(javax.jdo.Extent ext, java.lang.String filter)
           
 javax.jdo.Query newQuery(java.lang.Object compiled)
           
 javax.jdo.Query newQuery(java.lang.String language, java.lang.Object compiled)
           
 void refresh(java.lang.Object pc)
           
 void refreshAll()
           
 void refreshAll(java.util.Collection pcs)
           
 void refreshAll(java.lang.Object[] pcs)
           
 void retrieve(java.lang.Object pc)
           
 void retrieveAll(java.util.Collection pcs)
           
 void retrieveAll(java.lang.Object[] pcs)
           
 void rollback()
           
 void setIgnoreCache(boolean val)
           
 void setMultithreaded(boolean multithreaded)
           
 void setNontransactionalRead(boolean val)
           
 void setNontransactionalWrite(boolean val)
           
 void setOptimistic(boolean val)
           
 void setRestoreValues(boolean val)
           
 void setRetainValues(boolean val)
           
 void setSynchronization(javax.transaction.Synchronization synch)
           
 void setUserObject(java.lang.Object o)
           
protected  void unlock()
          Releases the internal lock.
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PersistenceManagerImpl

public PersistenceManagerImpl()
Method Detail

initialize

public void initialize(com.solarmetric.rd.kodo.runtime.PersistenceManagerFactoryImpl factory,
                       com.solarmetric.rd.kodo.runtime.StoreManager sm,
                       com.solarmetric.rd.kodo.runtime.ManagedRuntime runtime,
                       java.lang.String user,
                       java.lang.String pass)
Initialize the persistence manager. This method is called automatically by the factory before use.

Parameters:
factory - the PersistenceManagerFactory used to create this PersistenceManager
runtime - the managed runtime to use for transaction control
user - the username this PersistenceManager represents; used when pooling managers to make sure that a request to the PersistenceManagerFactory for a connection with an explicit user is delegated to a suitable PersistenceManager
pass - the password for the above user

finalize

protected void finalize()
                 throws java.lang.Throwable
Close on finalize.

Overrides:
finalize in class java.lang.Object
java.lang.Throwable

newManagedObjectCache

protected java.util.Map newManagedObjectCache()
Create a Map to be used for the managed object cache. By default, this creates a ReferenceMap with soft values.


getConfiguration

public com.solarmetric.rd.kodo.conf.JDOConfiguration getConfiguration()
Return the configuration associated with this persistence manager.


getManagedRuntime

public com.solarmetric.rd.kodo.runtime.ManagedRuntime getManagedRuntime()
Return the managed runtime in use.


getClassLoader

public java.lang.ClassLoader getClassLoader()
Return the current thread's class loader at the time this persistence manager was obtained from the persistence manager factory.


getConnectionUserName

public java.lang.String getConnectionUserName()
Return the connection user name.


getConnectionPassword

public java.lang.String getConnectionPassword()
Return the connection password.


getMetaData

public javax.resource.cci.ConnectionMetaData getMetaData()
Specified by:
getMetaData in interface javax.resource.cci.Connection

createInteraction

public javax.resource.cci.Interaction createInteraction()
                                                 throws javax.resource.NotSupportedException
Specified by:
createInteraction in interface javax.resource.cci.Connection
javax.resource.NotSupportedException

getLocalTransaction

public javax.resource.cci.LocalTransaction getLocalTransaction()
                                                        throws javax.resource.NotSupportedException
Specified by:
getLocalTransaction in interface javax.resource.cci.Connection
javax.resource.NotSupportedException

getResultSetInfo

public javax.resource.cci.ResultSetInfo getResultSetInfo()
                                                  throws javax.resource.NotSupportedException
Specified by:
getResultSetInfo in interface javax.resource.cci.Connection
javax.resource.NotSupportedException

getEISProductName

public java.lang.String getEISProductName()
Specified by:
getEISProductName in interface javax.resource.cci.ConnectionMetaData

getEISProductVersion

public java.lang.String getEISProductVersion()
Specified by:
getEISProductVersion in interface javax.resource.cci.ConnectionMetaData

getUserName

public java.lang.String getUserName()
Specified by:
getUserName in interface javax.resource.cci.ConnectionMetaData

getPersistenceManager

public javax.jdo.PersistenceManager getPersistenceManager()
Specified by:
getPersistenceManager in interface javax.jdo.Transaction

getNontransactionalRead

public boolean getNontransactionalRead()
Specified by:
getNontransactionalRead in interface javax.jdo.Transaction

setNontransactionalRead

public void setNontransactionalRead(boolean val)
Specified by:
setNontransactionalRead in interface javax.jdo.Transaction

getNontransactionalWrite

public boolean getNontransactionalWrite()
Specified by:
getNontransactionalWrite in interface javax.jdo.Transaction

setNontransactionalWrite

public void setNontransactionalWrite(boolean val)
Specified by:
setNontransactionalWrite in interface javax.jdo.Transaction

getOptimistic

public boolean getOptimistic()
Specified by:
getOptimistic in interface javax.jdo.Transaction

setOptimistic

public void setOptimistic(boolean val)
Specified by:
setOptimistic in interface javax.jdo.Transaction

getRetainValues

public boolean getRetainValues()
Specified by:
getRetainValues in interface javax.jdo.Transaction

setRetainValues

public void setRetainValues(boolean val)
Specified by:
setRetainValues in interface javax.jdo.Transaction

getRestoreValues

public boolean getRestoreValues()
Specified by:
getRestoreValues in interface javax.jdo.Transaction

setRestoreValues

public void setRestoreValues(boolean val)
Specified by:
setRestoreValues in interface javax.jdo.Transaction

getIgnoreCache

public boolean getIgnoreCache()
Specified by:
getIgnoreCache in interface javax.jdo.PersistenceManager

setIgnoreCache

public void setIgnoreCache(boolean val)
Specified by:
setIgnoreCache in interface javax.jdo.PersistenceManager

begin

public void begin()
Specified by:
begin in interface javax.jdo.Transaction

commit

public void commit()
Specified by:
commit in interface javax.jdo.Transaction

rollback

public void rollback()
Specified by:
rollback in interface javax.jdo.Transaction

commitAndResume

public void commitAndResume()
API extension. Issue a commit and then start a new transaction. This is identical to:
	pm.currentTransaction ().commit ();
	pm.currentTransaction ().begin ();
	
except that the PersistenceManager's internal atomic lock is utilized, so this method can be safely executed from multiple threads.

Since:
2.4
See Also:
Transaction.commit(), Transaction.begin()

getSynchronization

public javax.transaction.Synchronization getSynchronization()
Specified by:
getSynchronization in interface javax.jdo.Transaction

setSynchronization

public void setSynchronization(javax.transaction.Synchronization synch)
Specified by:
setSynchronization in interface javax.jdo.Transaction

isActive

public boolean isActive()
Specified by:
isActive in interface javax.jdo.Transaction

beforeCompletion

public void beforeCompletion()
Specified by:
beforeCompletion in interface javax.transaction.Synchronization

afterCompletion

public void afterCompletion(int status)
Specified by:
afterCompletion in interface javax.transaction.Synchronization

flush

protected void flush()
Flush the transactional state to the data store.


endTransaction

protected void endTransaction(int status)
End the current transaction, making appropriate state transitions.


getPersistenceManagerFactory

public javax.jdo.PersistenceManagerFactory getPersistenceManagerFactory()
Specified by:
getPersistenceManagerFactory in interface javax.jdo.PersistenceManager

getUserObject

public java.lang.Object getUserObject()
Specified by:
getUserObject in interface javax.jdo.PersistenceManager

setUserObject

public void setUserObject(java.lang.Object o)
Specified by:
setUserObject in interface javax.jdo.PersistenceManager

getMultithreaded

public boolean getMultithreaded()
Specified by:
getMultithreaded in interface javax.jdo.PersistenceManager

setMultithreaded

public void setMultithreaded(boolean multithreaded)
Specified by:
setMultithreaded in interface javax.jdo.PersistenceManager

isClosed

public boolean isClosed()
Specified by:
isClosed in interface javax.jdo.PersistenceManager

close

public void close()
Specified by:
close in interface javax.jdo.PersistenceManager

free

protected void free()
Free the resources used by this persistence manager.


currentTransaction

public javax.jdo.Transaction currentTransaction()
Obtain the PersistenceManager's current transaction.

Specified by:
currentTransaction in interface javax.jdo.PersistenceManager

getObjectId

public java.lang.Object getObjectId(java.lang.Object pc)
Specified by:
getObjectId in interface javax.jdo.PersistenceManager

getTransactionalObjectId

public java.lang.Object getTransactionalObjectId(java.lang.Object pc)
Specified by:
getTransactionalObjectId in interface javax.jdo.PersistenceManager

getObjectIdClass

public java.lang.Class getObjectIdClass(java.lang.Class cls)
Specified by:
getObjectIdClass in interface javax.jdo.PersistenceManager

newObjectIdInstance

public java.lang.Object newObjectIdInstance(java.lang.Class cls,
                                            java.lang.String str)
Specified by:
newObjectIdInstance in interface javax.jdo.PersistenceManager

getObjectById

public java.lang.Object getObjectById(java.lang.Object oid,
                                      boolean validate)
Specified by:
getObjectById in interface javax.jdo.PersistenceManager

getObjectById

public java.lang.Object getObjectById(java.lang.Object oid,
                                      java.lang.Object connection)
API extension. Return the object with the given oid. If present, the cached instance will be returned. Otherwise, the instance will be initialized through the store as usual; however, in this case the store will be passed the given connection information. This method is provided as an optimization opportunity to concrete jdo implementations built on this common runtime. It is not for use by client code.


getObjectById

protected java.lang.Object getObjectById(java.lang.Object oid,
                                         java.lang.Object connection,
                                         boolean validate,
                                         boolean copyOid,
                                         boolean allowNew)

getCachedObjectById

public java.lang.Object getCachedObjectById(java.lang.Object oid)
API extension. Return the cached instance for the given oid/object, or null if not cached.

Parameters:
oid - the object's id
Returns:
the cached object, or null if not cached

makePersistentAll

public void makePersistentAll(java.util.Collection pcs)
Specified by:
makePersistentAll in interface javax.jdo.PersistenceManager

makePersistentAll

public void makePersistentAll(java.lang.Object[] pcs)
Specified by:
makePersistentAll in interface javax.jdo.PersistenceManager

makePersistent

public void makePersistent(java.lang.Object pc)
Specified by:
makePersistent in interface javax.jdo.PersistenceManager

deletePersistentAll

public void deletePersistentAll(java.util.Collection pcs)
Specified by:
deletePersistentAll in interface javax.jdo.PersistenceManager

deletePersistentAll

public void deletePersistentAll(java.lang.Object[] pcs)
Specified by:
deletePersistentAll in interface javax.jdo.PersistenceManager

deletePersistent

public void deletePersistent(java.lang.Object pc)
Specified by:
deletePersistent in interface javax.jdo.PersistenceManager

makeNontransactionalAll

public void makeNontransactionalAll(java.util.Collection pcs)
Specified by:
makeNontransactionalAll in interface javax.jdo.PersistenceManager

makeNontransactionalAll

public void makeNontransactionalAll(java.lang.Object[] pcs)
Specified by:
makeNontransactionalAll in interface javax.jdo.PersistenceManager

makeNontransactional

public void makeNontransactional(java.lang.Object pc)
Specified by:
makeNontransactional in interface javax.jdo.PersistenceManager

makeTransactionalAll

public void makeTransactionalAll(java.util.Collection pcs)
Specified by:
makeTransactionalAll in interface javax.jdo.PersistenceManager

makeTransactionalAll

public void makeTransactionalAll(java.lang.Object[] pcs)
Specified by:
makeTransactionalAll in interface javax.jdo.PersistenceManager

makeTransactional

public void makeTransactional(java.lang.Object pc)
Specified by:
makeTransactional in interface javax.jdo.PersistenceManager

makeTransientAll

public void makeTransientAll(java.util.Collection pcs)
Specified by:
makeTransientAll in interface javax.jdo.PersistenceManager

makeTransientAll

public void makeTransientAll(java.lang.Object[] pcs)
Specified by:
makeTransientAll in interface javax.jdo.PersistenceManager

makeTransient

public void makeTransient(java.lang.Object pc)
Specified by:
makeTransient in interface javax.jdo.PersistenceManager

makeEmbedded

public com.solarmetric.rd.kodo.runtime.StateManagerImpl makeEmbedded(java.lang.Object pc,
                                                                     com.solarmetric.rd.kodo.runtime.StateManagerImpl owner,
                                                                     int ownerField)
For implementation use only. Make the given instance embedded.

Parameters:
pc - the instance to embed, or null to embed a newly-created instance that will be loaded with datastore data
owner - the owning state manager
ownerField - the field number of the owning object
Returns:
the state manager for the embedded instance

refreshAll

public void refreshAll()
Specified by:
refreshAll in interface javax.jdo.PersistenceManager

refreshAll

public void refreshAll(java.util.Collection pcs)
Specified by:
refreshAll in interface javax.jdo.PersistenceManager

refreshAll

public void refreshAll(java.lang.Object[] pcs)
Specified by:
refreshAll in interface javax.jdo.PersistenceManager

refresh

public void refresh(java.lang.Object pc)
Specified by:
refresh in interface javax.jdo.PersistenceManager

retrieveAll

public void retrieveAll(java.util.Collection pcs)
Specified by:
retrieveAll in interface javax.jdo.PersistenceManager

retrieveAll

public void retrieveAll(java.lang.Object[] pcs)
Specified by:
retrieveAll in interface javax.jdo.PersistenceManager

retrieve

public void retrieve(java.lang.Object pc)
Specified by:
retrieve in interface javax.jdo.PersistenceManager

evictAll

public void evictAll()
Specified by:
evictAll in interface javax.jdo.PersistenceManager

evictAll

public void evictAll(java.util.Collection pcs)
Specified by:
evictAll in interface javax.jdo.PersistenceManager

evictAll

public void evictAll(java.lang.Object[] pcs)
Specified by:
evictAll in interface javax.jdo.PersistenceManager

evictAll

public void evictAll(java.lang.Class cls)
API Extension. Evict all persistent-clean and persistent-nontransactional instances in the extent of the given class (including subclasses).


evictAll

public void evictAll(javax.jdo.Extent extent)
API Extension. Evict all persistent-clean and persistent-nontransactional instances in the given Exent.


evict

public void evict(java.lang.Object pc)
Specified by:
evict in interface javax.jdo.PersistenceManager

getExtent

public javax.jdo.Extent getExtent(java.lang.Class type,
                                  boolean subclasses)
Specified by:
getExtent in interface javax.jdo.PersistenceManager

newQuery

public javax.jdo.Query newQuery()
Specified by:
newQuery in interface javax.jdo.PersistenceManager

newQuery

public javax.jdo.Query newQuery(java.lang.Class cls)
Specified by:
newQuery in interface javax.jdo.PersistenceManager

newQuery

public javax.jdo.Query newQuery(java.lang.Class cls,
                                java.util.Collection cln)
Specified by:
newQuery in interface javax.jdo.PersistenceManager

newQuery

public javax.jdo.Query newQuery(javax.jdo.Extent ext)
Specified by:
newQuery in interface javax.jdo.PersistenceManager

newQuery

public javax.jdo.Query newQuery(java.lang.Class cls,
                                java.util.Collection cln,
                                java.lang.String filter)
Specified by:
newQuery in interface javax.jdo.PersistenceManager

newQuery

public javax.jdo.Query newQuery(javax.jdo.Extent ext,
                                java.lang.String filter)
Specified by:
newQuery in interface javax.jdo.PersistenceManager

newQuery

public javax.jdo.Query newQuery(java.lang.Class cls,
                                java.lang.String filter)
Specified by:
newQuery in interface javax.jdo.PersistenceManager

newQuery

public javax.jdo.Query newQuery(java.lang.Object compiled)
Specified by:
newQuery in interface javax.jdo.PersistenceManager

newQuery

public javax.jdo.Query newQuery(java.lang.String language,
                                java.lang.Object compiled)
Specified by:
newQuery in interface javax.jdo.PersistenceManager

lock

protected void lock()
Synchronizes on an internal lock if the Multithreaded flag is set to true. Make sure to call unlock() in a finally clause of the same method.


unlock

protected void unlock()
Releases the internal lock.


getDelegatingStoreManager

public com.solarmetric.rd.kodo.runtime.StoreManager getDelegatingStoreManager()
API Extension. Return the store manager in use, which may be a DelegatingStoreManager around the native store manager.


getStoreManager

public com.solarmetric.rd.kodo.runtime.StoreManager getStoreManager()
API Extension. Return the native store manager for this runtime.


getState

public com.solarmetric.rd.kodo.runtime.StateManagerImpl getState(java.lang.Object oid)
API extension. Return the StateManager for the instance with the given oid. Includes object made persistent in the current transaction.


getState

protected com.solarmetric.rd.kodo.runtime.StateManagerImpl getState(java.lang.Object oid,
                                                                    boolean allowNew)
API extension. Return the StateManager for the instance with the given id.

Parameters:
allowNew - if true, objects made persistent in the current transaction will be included in the search; if multiple new objects match the given oid, it is undetermined which will be returned

getManagedObjects

public java.util.Collection getManagedObjects()
API Extension. Return a list of all managed instances.


getTransactionalObjects

public java.util.Collection getTransactionalObjects()
API Extension. Return a list of current transaction instances.


checkClosed

public void checkClosed()

checkActiveTransaction

public void checkActiveTransaction()

checkNontransactionalRead

public void checkNontransactionalRead()

checkValid

protected com.solarmetric.rd.kodo.runtime.StateManagerImpl checkValid(java.lang.Object pc)

SolarMetric Kodo JDO 2.5.0 Reverse Schema Tool

Copyright 2001,2002,2003 SolarMetric, Inc. All Rights Reserved.