1 9 package com.vladium.emma; 10 11 import java.util.Properties ; 12 13 import com.vladium.logging.Logger; 14 import com.vladium.util.IProperties; 15 import com.vladium.util.asserts.$assert; 16 17 21 public 22 abstract class Processor 23 { 24 26 27 public synchronized void run () 28 { 29 validateState (); 30 31 final IProperties toolProperties; 33 { 34 final IProperties appProperties = EMMAProperties.getAppProperties (); 35 36 toolProperties = IProperties.Factory.combine (m_propertyOverrides, appProperties); 37 } 38 if ($assert.ENABLED) $assert.ASSERT (toolProperties != null, "toolProperties is null"); 40 final Logger current = Logger.getLogger (); 41 final Logger log = AppLoggers.create (m_appName, toolProperties, current); 42 43 if (log.atTRACE1 ()) 44 { 45 log.trace1 ("run", "complete tool properties:"); 46 toolProperties.list (log.getWriter ()); 47 } 48 49 try 50 { 51 Logger.push (log); 52 m_log = log; 53 54 _run (toolProperties); 55 } 56 finally 57 { 58 if (m_log != null) 59 { 60 Logger.pop (m_log); 61 m_log = null; 62 } 63 } 64 } 65 66 67 public synchronized final void setAppName (final String appName) 68 { 69 m_appName = appName; 70 } 71 72 76 public synchronized final void setPropertyOverrides (final Properties overrides) 77 { 78 m_propertyOverrides = EMMAProperties.wrap (overrides); 79 } 80 81 85 public synchronized final void setPropertyOverrides (final IProperties overrides) 86 { 87 m_propertyOverrides = overrides; 88 } 89 90 92 93 protected Processor () 94 { 95 } 97 98 protected abstract void _run (IProperties toolProperties); 99 100 101 protected void validateState () 102 { 103 105 } 108 109 110 protected String m_appName; protected IProperties m_propertyOverrides; protected Logger m_log; 114 116 118 } | Popular Tags |