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.

Reply via email to