Using Java Reflection:
BasePeer tbl = (BasePeer) Class.forName(tabelName+"Peer"
).newInstance();
String currentDB = (String) Class.forName(tabelName+
"Peer").getField("DATABASE_NAME").get(tbl);
String currentTable = (String) Class.forName(tabelName+
"Peer").getField("TABLE_NAME").get(tbl);
Criteria criteria = new Criteria();
criteria.setDbName(currentDB);
// .. criteria.add(..) ...
Class[] o = new Class[1];
o[0] = criteria.getClass();
Method doSelect = Class.forName(tabelName+"Peer").getMethod(
"doSelect",o);
Object[] obs = new Object[1];
obs[0] = (Object) criteria;
ArrayList results = (ArrayList) doSelect.invoke(tbl, obs);
Hope this help you!
Bye
Ing. Luca Forni
SORMA S.p.a.
Corso Vinzaglio, 4 - 10121
TORINO (ITALY)
Tel. +39 011 53 33 22
http://www.sorma.com
"Cameron
Hickey" To: "'Apache Torque Users List'" <[EMAIL
PROTECTED]>
<[EMAIL PROTECTED] cc:
os.com> Subject: Dynamically Accessing Torque
Objects
29/07/2003
09.22
Please respond
to "Apache
Torque Users
List"
I realize that this may seem both strange, and na�ve, but I want to be
able to choose which Torque Data object to access by passing in a String
value. Has anyone else attempted something similar to this before?
What would be a logical syntax for it?
This obviously shows my lack of fluency with Java, but here is what I am
trying:
String theObjStr = (String)request.getParameter("ObjType");
String objectPeerStr = "RentalApp.torque.om." + theObjStr +
"Peer";
Class c = Class.forName(objectPeerStr);
BasePeer objectRef = (BasePeer)c.newInstance();
Criteria crit = new Criteria();
List v = objectRef.doSelect(crit);
This does not actually work properly, although it does manage to load
the proper class, because I don't know what class it is ahead of time, I
cast the class to to BasePeer, but the BasePeer object cannot manage the
connection to the database properly, because it does not know which
table it should be connected to.
Is there some other way of doing this? This is a java question, but: Is
there a way to cast my newly created object to the appropriate class
without knowing what it is ahead of time?
Sadly, because this seems a little futile, I may end up going back to
regurlar old SQL in my servlets, which really seems like too many steps
backward, unless I can get something like this working.
Thanks for any help
Cameron
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]