View Javadoc

1   package org.naftulin.configmgr.content;
2   
3   import java.util.Collections;
4   import java.util.LinkedList;
5   import java.util.List;
6   
7   import org.naftulin.configmgr.parsers.ConfigEntryParser;
8   import org.naftulin.configmgr.parsers.MasterRecordParser;
9   import org.apache.commons.lang.builder.ToStringBuilder;
10  
11  /***
12   * Parses config.xml file: properties file, log4j xml or log4j properties.
13   * Once a master record is created, parsers are called for each of the entries
14   * to be parsed and stored in config manager. Entry is similar to config manager
15   * entry, yet there is no content (since the entry was not parsed yet).
16   * 
17   * @author Henry Naftulin
18   * @since 1.0
19   */
20  public class MasterRecordImpl extends AbstractRecordImpl {
21  	private static final ConfigEntryParser PARSER = new MasterRecordParser();
22  	private boolean jmx = true;
23  	private final List<AbstractRecordImpl> records = new LinkedList<AbstractRecordImpl>();
24  	
25  	/***
26  	 * Constructs a record without specifying the key or file name.
27  	 */
28  	public MasterRecordImpl() {
29  		super();
30  	}
31  
32  	/***
33  	 * Constructs a record with the key and file name specified.
34  	 * @param key the key associated with the record.
35  	 * @param fileName the file name associated with the record.
36  	 */
37  	public MasterRecordImpl(final String key, final String fileName) {
38  		super(key, fileName);
39  	}
40  
41  	/***
42  	 * Returns Jmx setting for configuration manager. By defaul the jmx
43  	 * setting is true, which means that configuration manager will try to
44  	 * connect to JMX MBean server.
45  	 * @return returns Jmx setting for configuration manager.
46  	 */
47  	public boolean isJmx() { 
48  		return jmx;
49  	}
50  	
51  	/***
52  	 * Sets Jmx setting for configuration manager. When Jmx
53  	 * setting equals true, configuration manager will try to
54  	 * connect to JMX MBean server.
55  	 * @param jmx jmx setting
56  	 */
57  	public void setJmx(boolean jmx) {
58  		this.jmx = jmx;
59  	}
60  	
61  	/***
62  	 * Adds a record to the list of records to be processed. Mirrors the
63  	 * master file which consists of configuration records. 
64  	 * @param record the record to be processed, read from the master configuration file
65  	 */
66  	public void addRecord(final AbstractRecordImpl record) {
67  		records.add(record);
68  	}
69  	
70  	/***
71  	 * Returns the unmodifiable list of {@link AbstractRecordImpl records} from the cofiguration file.
72  	 * @return a list of {@link AbstractRecordImpl records} from the cofiguration file.
73  	 */
74  	public List<AbstractRecordImpl> getRecords() {
75  		return Collections.unmodifiableList(records);
76  	}
77  	
78  	/***
79  	 * Returns master record parser. The master record is
80  	 * processed by configuration manager with a special parser; and is
81  	 * not re-parsed when transofrmed to configuration manager entry. 
82  	 * @return Returns master record parser.
83  	 */
84  	public ConfigEntryParser getParser() {
85  		return PARSER;
86  	}
87  
88  	/***
89  	 * Returns the string representation of the master record.
90  	 * @return the string representation of the master record.
91  	 */
92  	public String toString() {
93  		return new ToStringBuilder(this)
94  				.append("key", this.getKey())
95  				.append("jmx", this.isJmx())
96  				.append("parser", this.getParser())
97  				.append("fileName",this.getFileName())
98  				.append("records", this.records).toString();
99  	}
100 
101 }