View Javadoc

1   package org.naftulin.configmgr.content;
2   
3   import java.util.LinkedList;
4   import java.util.List;
5   
6   import org.naftulin.configmgr.ConfigurationManagerException;
7   import org.naftulin.configmgr.parsers.ConfigEntryParser;
8   import org.naftulin.configmgr.parsers.DbJndiParserImpl;
9   
10  /***
11   * Represents a db jndi entry, with it's key, name-value pairs and parser class.
12   * Intended to mirror master configuration rules for external configuration.
13   * The external configuraton xml is:
14   * <pre>
15   * 	&lt;dbjndi key="the key"
16  		initialContextFactory="optional contenxt factory" 
17  		jndiName="jdni name"		
18  		sql="sql that selects at least key and value columns from any table(s) or view with any static where condition"
19  		keyColumnName="column name where the key is selected"
20  		valueColumnName="column name where the value is selected"
21   * 
22   * &gt;
23  		&lt;param name="key1" value="value1" /&gt;
24  		.....
25  		&lt;param name="keyn" value="valuen" /&gt;
26  	&lt;/dbjndi&gt;
27   * </pre>
28   * 
29   * @author Henry Henry
30   * @since 1.3
31   */
32  public class DbJndiRecordImpl extends AbstractRecordImpl {
33  	private String initialContextFactory;
34  	private String jndiName;
35  	private String sql;
36  	private String keyColumnName;
37  	private String valueColumnName;
38  	private final List<NameValuePairImpl> nameValuePairs = new LinkedList<NameValuePairImpl>();
39  	private ConfigEntryParser parser;
40  
41  	
42  	
43  	public String getKeyColumnName() {
44  		return keyColumnName;
45  	}
46  
47  	public void setKeyColumnName(final String keyColumnName) {
48  		this.keyColumnName = keyColumnName;
49  	}
50  
51  	public List<NameValuePairImpl> getNameValuePairs() {
52  		return nameValuePairs;
53  	}
54  
55  	/***
56  	 * Adds a name-value pair as it is read from the master configuration.
57  	 * @param nv the name value pair.
58  	 */
59  	public void addNameValuePair(final NameValuePairImpl nv) {
60  		nameValuePairs.add(nv);
61  	}
62  
63  	public String getInitialContextFactory() {
64  		return initialContextFactory;
65  	}
66  
67  	public void setInitialContextFactory(final String initialContextFactory) {
68  		this.initialContextFactory = initialContextFactory;
69  	}
70  
71  	public String getJndiName() {
72  		return jndiName;
73  	}
74  
75  	public void setJndiName(final String jndiName) {
76  		this.jndiName = jndiName;
77  	}
78  
79  	public String getSql() {
80  		return sql;
81  	}
82  
83  	public void setSql(final String sql) {
84  		this.sql = sql;
85  	}
86  
87  	
88  
89  	public String getValueColumnName() {
90  		return valueColumnName;
91  	}
92  
93  	public void setValueColumnName(final String valueColumnName) {
94  		this.valueColumnName = valueColumnName;
95  	}
96  
97  	public synchronized ConfigEntryParser getParser() throws ConfigurationManagerException {
98  		if (parser == null) {
99  			parser = new DbJndiParserImpl(jndiName, initialContextFactory, sql, keyColumnName, valueColumnName, nameValuePairs);
100 		}
101 		return parser;
102 	}
103 
104 	
105 	
106 	/***
107 	 * Since it is not a file-based cofiguration, we need to overwrite the method.
108 	 * @return false
109 	 */
110 	public boolean isGetUrlForFile() {
111 		return false;
112 	}
113 
114 	public String getFileName() {
115 		return "jndi name : " + jndiName + " initial Context Factory " + initialContextFactory + " sql " + sql;		
116 	}
117 }