Oliver
There are couple of references to slide tables in RDBMSComparableResourcesPool.java
( method - compileJoins() ) however i couldn't access AbstractRDBMSAdapter from this
class. AbstractRDBMSStore.java has a protected member adapter but this is of type
RDBMSAdapter. Any idea how to change RDBMSComparableResourcesPool.java ?
regards
Var George
Oliver Zeigermann <[EMAIL PROTECTED]> wrote:
Why modifying AbstractRDBMSStore in the first place?
Oliver
Var George schrieb:
> Thank you Oliver (and Warwick). I completed this using slide.properties and I am now
> switching the implementation to base it on Domain.xml.
>
>
>
> There are few issues in using Domain.xml.
>
>
>
> Once I use domain XML I can no longer statically initialize the table names because
> initialization should be done inside the public void setParameters(Hashtable
> parameters) method of AbstractRDBMSAdapter and AdbtractRDBMSStore, and it will
> increase the total number of lines of code.
> To implement changes in RDBMSComparableResourcesPool.java, I need to modify
> AdbtractRDBMSStore (same change as in AbstractRDBMSAdapter). I cannot single source
> the following code in AdbtractRDBMSStore.java because AbstractRDBMSAdapter has
> access to only the interface Service, not the AdbtractRDBMSStore class. Even though
> it�s a small fragment of code duplicating it in 2 classes doesn�t look clean.
>
> Moving these parameters to Domain xml will require some duplication of code as
> explained in (2). If you prefer the parameters in Domin.xml then I will make the
> remaining changes and will send you the code. Otherwise I can send you the changes
> based on parameters in slide.properties.. Please let me know your preference.
>
>
>
> regards
>
> Var George
>
>
>
> -------------------------------------------------------------------------------
>
> This code need to be duplicated in the following classes
>
> -- AdbtractRDBMSStore.java
>
> -- AbstractRDBMSAdapter.java
>
>
>
> New Instance variables:
>
> --------------------------
>
>
>
> //setParameters(Hashtable parameters) will be called before SQL
>
> //so all the _TABLE variables will be initialized appropriately.
>
> protected String URI_TABLE;
>
> protected String OBJECT_TABLE;
>
> protected String BINDING_TABLE;
>
> protected String PARENT_BINDING_TABLE;
>
> protected String LINKS_TABLE;
>
> protected String LOCKS_TABLE;
>
> protected String BRANCH_TABLE;
>
> protected String LABEL_TABLE;
>
> protected String VERSION_TABLE;
>
> protected String VERSION_HISTORY_TABLE;
>
> protected String VERSION_PREDS_TABLE;
>
> protected String VERSION_LABELS_TABLE;
>
> protected String VERSION_CONTENT_TABLE;
>
> protected String PROPERTIES_TABLE;
>
> protected String PERMISSIONS_TABLE;
>
>
>
> existing method - public void setParameters(Hashtable parameters):
>
> ------------------------------------------------------------
>
> //call resolveRDBMSObjectNames(parameters) to init _TABLE variables;
>
> resolveRDBMSObjectNames(parameters);
>
>
>
> new method -
>
> ---------------
>
>
>
> /**
>
> * Resolve rdbms objects names
>
> *
>
> * Default rbdms objects names may be overridden by setting store specific
>
> * parameters in Domain xml file as (e.g. for URI)
>
> *
SLIDE_URI
>
> *
>
> * @param parameters Hashtable of parameters set in domain xml file
>
> * @return void
>
> */
>
> private void resolveRDBMSObjectNames(Hashtable parameters)
>
> {
>
>
>
> URI_TABLE = getResolvedRDBMSObjectName(parameters, "URI");
>
> OBJECT_TABLE = getResolvedRDBMSObjectName(parameters, "OBJECT");
>
> BINDING_TABLE = getResolvedRDBMSObjectName(parameters, "BINDING");
>
> PARENT_BINDING_TABLE = getResolvedRDBMSObjectName(parameters, "PARENT_BINDING");
>
> LINKS_TABLE = getResolvedRDBMSObjectName(parameters, "LINKS");
>
> LOCKS_TABLE = getResolvedRDBMSObjectName(parameters, "LOCKS");
>
> BRANCH_TABLE = getResolvedRDBMSObjectName(parameters, "BRANCH");
>
> LABEL_TABLE = getResolvedRDBMSObjectName(parameters, "LABEL");
>
> VERSION_TABLE = getResolvedRDBMSObjectName(parameters, "VERSION");
>
> VERSION_HISTORY_TABLE = getResolvedRDBMSObjectName(parameters, "VERSION_HISTORY");
>
> VERSION_PREDS_TABLE = getResolvedRDBMSObjectName(parameters, "VERSION_PREDS");
>
> VERSION_LABELS_TABLE = getResolvedRDBMSObjectName(parameters, "VERSION_LABELS");
>
> VERSION_CONTENT_TABLE = getResolvedRDBMSObjectName(parameters, "VERSION_CONTENT");
>
> PROPERTIES_TABLE = getResolvedRDBMSObjectName(parameters, "PROPERTIES");
>
> PERMISSIONS_TABLE = getResolvedRDBMSObjectName(parameters, "PERMISSIONS");
>
> }
>
>
>
> /**
>
> * Resolve RDBMS Object name that corresponds to default a object name
>
> *
>
> * @param parameters Hashtable of parameters set in domain xml file
>
> * @param defaultName Default object name (e.g. URI)
>
> * @return Return resolved rdbms object name.
>
> * if property is not set the return default name
>
> *
>
> */
>
> private String getResolvedRDBMSObjectName(Hashtable parameters, String defaultName)
>
> {
>
> String rbdmsObjectName = defaultName;
>
>
>
> String key = "rdbmsobjectname."+ defaultName;
>
> String value = (String)parameters.get(key);
>
>
>
> if (null != value){
>
> rbdmsObjectName = value;
>
> }
>
>
>
> return rbdmsObjectName;
>
> }
> -------------------------------------------------------------------------------------------------------------------
>
> Oliver Zeigermann wrote:No changes required at all. Just add a
> element to the store
> definition and it will be passed as a parameter to the store's
> setParameters method.
>
> Oliver
>
> Var George schrieb:
>
>
>>Oliver
>>
>>
>>
>>Thank you. Is there a simple way to access domain xml from AbstractRDBMSAdapter.java
>>?
>>
>>
>>
>>I was considering to do the following
>>
>>
>>
>>slide.properties:
>>
>>----------------------
>>
>>
>>
>># RDBMS Object Name for URI
>>
>># Default: URI (if missing or not set then URI is used)
>>
>>org.apache.slide.store.impl.rdbms.rdbmsobjectname.URI=SLIDE_URI
>>
>>
>>
>>
>>
>>AbstratRDBMSAdapter.java:
>>
>>--------------------------------------------
>>
>>
>>
>>private static String resolveRDBMSObjectName(String name)
>>
>>{
>>
>>//rdbms object name is configured in slide.properties
>>
>>//as proertynames prefixed with
>>
>>// "org.apache.slide.store.impl.rdbms.rdbmsobjectname."
>>
>>//for example, property name for URI will be set as
>>
>>// org.apache.slide.store.impl.rdbms.rdbmsobjectname.URI=SLIDE_URI
>>
>>String propertyName = "org.apache.slide.store.impl.rdbms.rdbmsobjectname."+ name;
>>
>>
>>
>>//return the original name if property is not set so that slide
>>
>>//will stay backward compatible.
>>
>>return org.apache.slide.util.Configuration.getDefault().getProperty(propertyName ,
>>name);
>>
>>}
>>
>>
>>
>>Code changes to support entries in slide.properties look very simple. I can move it
>>to domain.xml instead of slide.properties, if that's more appropriate in line with
>>slide development standards. Could you guide me on how you would like Domain.xml to
>>be modified?
>>
>>-- xml fragment to be added to Domain.xml ?
>>
>>-- does it require any changes to any DTD/Schema files?
>>
>>-- does it require changes to Domain.java?
>>
>>-- any code fragment for simple access of these setting from Domain xml
>>
>>
>>
>>Thanks for your help. Look forward to your response.
>>
>>
>>
>>regards
>>
>>Var George
>>
>>
>>Oliver Zeigermann wrote: Sounds like a good idea to me. What about configuring the
>>table names in
>>Domain.xml?
>>
>>Also having the old table names as default would be good for backward
>>compatibility.
>>
>>Oliver
>>
>>Var George schrieb:
>>
>>
>>
>>>When I try to create slide tables on my existing application schema, I have some
>>>name conflicts because slide tables are named without any namespace prefix (e.g.
>>>PERMISSIONS vs SLIDE_PERMISSIONS). I would like to make slide table names
>>>configurable to solve this problem.
>>>
>>>
>>>
>>>Here are the changes that I am considering
>>>
>>>
>>>
>>>1. AbstratRDBMSAdapter.java:
>>>
>>>---------------------------------------
>>>
>>>Define constants for all table names and statically initialize them from a property
>>>file (slide.properties ?). if property files doesn�t exist or property is not
>>>configured then initialize them to use default names (this way these changes will
>>>be backward compatible)
>>>
>>>
>>>
>>>e.g.
>>>
>>>protected final String URI_TABLE = resolveRDBMSObjectName(�URI�);;
>>>
>>>
>>>
>>>
>>>
>>>2. StandardRDBMSAdapter.java
>>>
>>>--------------------------------------------
>>>
>>>Update this class to use the constants instead of hard coded table names
>>>
>>>
>>>
>>>e.g.
>>>
>>>connection.prepareStatement("select 1 from " + OBJECT_TABLE + " o, " + URI_TABLE +
>>>" u " + where o.URI_ID=u.URI_ID and u.URI_STRING=?");
>>>
>>>
>>>
>>>3. CommonRDBMSAdapter.java
>>>
>>>----------------------------------------
>>>
>>>Update this class to use the constants instead of hard coded table names, similar
>>>to (2)
>>>
>>>
>>>
>>>4. RDBMSComparableResourcesPool.java
>>>
>>>---------------------------------------------------------
>>>
>>>Update this class to use the constants instead of hard coded table names, similar
>>>to (2)
>>>
>>>
>>>
>>>I am using CommonRDBMSAdapter against Oracle 9i so I am not sure how many of the
>>>platform specific **RDBMSAdapter classes are required but the strategy will be to
>>>apply changes to all required classes similar to (2)
>>>
>>>
>>>
>>>Please let know you your thoughts on this approach. Also I would like to know if
>>>slide team is interested to pull these changes into slide as a standard
>>>enhancement. I will be glad to send my changes if you are interested.
>>>
>>>
>>>
>>>regards
>>>
>>>Var George
>>>
>>>
>>>
>>>---------------------------------
>>>Do you Yahoo!?
>>>Read only the mail you want - Yahoo! Mail SpamGuard.
>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>>
>>
>>
>>---------------------------------
>>Do you Yahoo!?
>>Yahoo! Mail Address AutoComplete - You start. We finish.
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
>
>
> ---------------------------------
> Do you Yahoo!?
> vote.yahoo.com - Register online to vote today!
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------
Do you Yahoo!?
Yahoo! Mail Address AutoComplete - You start. We finish.