View Javadoc

1   package gov.nasa.pds.vtool.handler;
2   
3   import gov.nasa.pds.tools.handler.ToolsFileHandler;
4   import gov.nasa.pds.tools.handler.ToolsStreamHandler;
5   import gov.nasa.pds.tools.logging.FullLogFormatter;
6   import gov.nasa.pds.tools.logging.MinimalLogFormatter;
7   import gov.nasa.pds.tools.logging.SummaryLogFormatter;
8   import gov.nasa.pds.tools.logging.ToolsLevel;
9   
10  import java.io.File;
11  import java.io.IOException;
12  import java.util.logging.Formatter;
13  import java.util.logging.Handler;
14  import java.util.logging.Level;
15  
16  public class HandlerFactory {
17  	private static HandlerFactory factory = null;
18  	
19  	private HandlerFactory() {}
20  	
21  	public synchronized static HandlerFactory getInstance() {
22  		if(factory == null)
23  			factory = new HandlerFactory();
24  		
25  		return factory;
26  	}
27  	
28  	/***
29  	 * Get an instance of a Handler object for the human-readable report.
30  	 * 
31  	 * @param reportFile Specify a file name or set to 'null' to write to standard out.
32  	 * @param reportStyle Specify the report view. Must be set to 'full', 'min', or 'sum'.
33  	 * @param severity Specify the severity level and above for the reporting. Must be set
34  	 * to 'Info', 'Warning', or 'Error'.
35  	 * 
36  	 * @return A proper Handler object based on the input parameters.
37  	 * 
38  	 * @throws SecurityException
39  	 * @throws IOException
40  	 * @throws UnknownHandlerConfigurationException
41  	 */
42  	public Handler newInstance(File reportFile, String reportStyle, String severity) throws SecurityException, IOException, 
43  	                                                                                   UnknownHandlerConfigurationException {	
44  		Handler handler = null;
45  		Formatter formatter = null;
46  		Level level = null;
47  		
48  		if("FULL".equalsIgnoreCase(reportStyle))
49  			formatter = new FullLogFormatter();
50  		else if("MIN".equalsIgnoreCase(reportStyle))
51  			formatter = new MinimalLogFormatter();
52  		else if("SUM".equalsIgnoreCase(reportStyle))
53  			formatter = new SummaryLogFormatter();
54  		else
55  			throw new UnknownHandlerConfigurationException("Unknown report style: " + reportStyle);
56  		
57  		if("INFO".equalsIgnoreCase(severity))
58  			level = ToolsLevel.INFO;
59  		else if("WARNING".equalsIgnoreCase(severity))
60  			level = ToolsLevel.WARNING;
61  		else if("ERROR".equalsIgnoreCase(severity))
62  			level = ToolsLevel.SEVERE;
63  		else
64  			throw new UnknownHandlerConfigurationException("Unknown severity level: " + severity);
65  		
66  		if(reportFile != null) {
67  			handler = new ToolsFileHandler(reportFile.toString(), level, formatter);
68  		}
69  		else {
70  			handler = new ToolsStreamHandler(System.out, level, formatter);
71  		}
72  		return handler;
73  	}
74  
75  }