Changeset 898

Show
Ignore:
Timestamp:
10/10/06 08:49:20 (2 years ago)
Author:
alban
Message:

[Bug 16] added configurable parameters to the SQL request

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/source/org/kolaka/freecast/config/DefaultConfigurationLoader.java

    r893 r898  
    4848 */ 
    4949public class DefaultConfigurationLoader implements ConfigurationLoader { 
     50   
     51  static { 
     52    AbstractConfiguration.setDefaultListDelimiter('#'); 
     53  } 
    5054 
    5155        private final String defaultsName; 
  • trunk/source/org/kolaka/freecast/tracker/NetworkIdentifier.java

    r891 r898  
    5151 
    5252  public String toString() { 
    53     return Long.toHexString(value).toUpperCase(); 
     53    return Long.toHexString(value).toLowerCase(); 
    5454  } 
    5555   
  • trunk/source/org/kolaka/freecast/tracker/http/HttpTracker.java

    r893 r898  
    3232import org.kolaka.freecast.tracker.Main; 
    3333import org.kolaka.freecast.tracker.TrackerService; 
    34 import org.kolaka.freecast.tracker.statistics.TrackerStatisticsConsumer; 
    3534import org.kolaka.freecast.tracker.statistics.TrackerStatisticsConsumerManager; 
    3635import org.kolaka.freecast.tracker.statistics.TrackerStatisticsSetProvider; 
     
    7069 
    7170  private boolean multiTracker; 
     71 
     72  private boolean statsServlet; 
    7273 
    7374  public void setMultiTracker(boolean multiTracker) { 
     
    112113                } 
    113114 
    114     try { 
    115       ServletHolder servletHolder = context.addServlet("Statistics", "/stats.xml", IceStatsServlet.class.getName()); 
    116       servletHolder.getServletContext().setAttribute(IceStatsServlet.STATSPROVIDER_ATTRIBUTE, tracker); 
    117     } catch (Exception e) { 
    118       throw new ControlException("Can't install the statistics servlet", e); 
     115    if (statsServlet) { 
     116      try { 
     117        ServletHolder servletHolder = context.addServlet("Statistics", "/stats.xml", IceStatsServlet.class.getName()); 
     118        servletHolder.getServletContext().setAttribute(IceStatsServlet.STATSPROVIDER_ATTRIBUTE, tracker); 
     119      } catch (Exception e) { 
     120        throw new ControlException("Can't install the statistics servlet", e); 
     121      } 
    119122    } 
    120123 
     
    146149        } 
    147150 
     151  public void enableStatsServlet(boolean statsServlet) { 
     152    this.statsServlet = statsServlet; 
     153  } 
     154 
    148155} 
  • trunk/source/org/kolaka/freecast/tracker/http/HttpTrackerConfigurator.java

    r893 r898  
    7474                        tracker.setConnectionAssistantServer(server); 
    7575                } 
     76     
     77    HierarchicalConfiguration statisticsConfiguration = (HierarchicalConfiguration) configuration.subset("statistics"); 
    7678 
    77     List consumerConfigurations = configuration.configurationsAt("statistics.consumer"); 
     79    tracker.enableStatsServlet(statisticsConfiguration.getBoolean("xml", true)); 
     80    tracker.getConsumerManager().setDelay(statisticsConfiguration.getInt("update", 60)); 
     81 
     82                TrackerStatisticsConsumerLoader consumerLoader = new TrackerStatisticsConsumerLoader(); 
     83    List consumerConfigurations = statisticsConfiguration.configurationsAt("consumer"); 
    7884    for (Iterator it = consumerConfigurations.iterator(); it.hasNext();) { 
    7985      Configuration consumerConfiguration = (Configuration) it.next(); 
    80       TrackerStatisticsConsumer consumer = new TrackerStatisticsConsumerLoader().load(consumerConfiguration); 
     86      TrackerStatisticsConsumer consumer = consumerLoader.load(consumerConfiguration); 
    8187      LogFactory.getLog(getClass()).debug("add consumer : " + consumer); 
    8288      tracker.getConsumerManager().add(consumer); 
  • trunk/source/org/kolaka/freecast/tracker/statistics/JDBCTrackerStatisticsConsumer.java

    r891 r898  
    3333import org.apache.commons.logging.LogFactory; 
    3434 
    35 public class JDBCTrackerStatisticsConsumer implements TrackerStatisticsConsumer
     35public class JDBCTrackerStatisticsConsumer implements TrackerStatisticsConsumer, JDBCTrackerStatisticsConsumerConstants
    3636 
    3737  public static final String DEFAULT_REQUEST = "insert into statistics (timestamp,networkid,node_connections,rootnode_connections,listeners,rootnode) values (?,?,?,?,?,?);"; 
     38 
     39 
     40  public static final String[] DEFAULT_PARAMETERS = new String[] { 
     41      PARAMETER_TIMESTAMP, PARAMETER_NETWORKID, PARAMETER_NODECONNECTIONS,  
     42      PARAMETER_ROOTNODECONNECTIONS, PARAMETER_LISTENERS, PARAMETER_ROOTNODE 
     43  };  
     44   
    3845  private String user, password, url, driver; 
    3946   
     
    8087  } 
    8188   
     89  private String[] parameters = DEFAULT_PARAMETERS; 
     90 
     91  public void setParameters(String[] parameters) { 
     92    this.parameters = parameters; 
     93  } 
     94   
     95  private JDBCParametersSetter parametersSetter; 
     96   
    8297  private Connection connection; 
    83  
     98   
     99  public void setConnection(Connection connection) { 
     100    this.connection = connection; 
     101  } 
     102   
    84103  public void process(Date date, TrackerStatistics statistics) { 
     104    if (parametersSetter == null) { 
     105      parametersSetter = new JDBCParametersSetter(parameters); 
     106    } 
     107     
    85108    LogFactory.getLog(getClass()).debug("update database with " + statistics); 
    86109    try { 
    87110      Connection connection = getConnection(); 
    88111      PreparedStatement statement = connection.prepareStatement(request); 
    89       statement.setTimestamp(1, new java.sql.Timestamp(date.getTime())); 
    90       statement.setString(2, statistics.getNetworkId() != null ? statistics.getNetworkId().toString() : null); 
    91       statement.setInt(3, statistics.getNodeConnections()); 
    92       statement.setInt(4, statistics.getRootNodeConnections()); 
    93       statement.setInt(5, statistics.getListenerConnected()); 
    94       statement.setBoolean(6, statistics.isRootNodePresents()); 
     112      parametersSetter.setParameters(statement, date, statistics); 
    95113      statement.execute(); 
    96114    } catch (SQLException e) { 
     
    115133  } 
    116134 
    117  
    118135} 
  • trunk/source/org/kolaka/freecast/tracker/statistics/TrackerStatisticsConsumerLoader.java

    r891 r898  
    2626import java.io.File; 
    2727 
     28import org.apache.commons.configuration.AbstractConfiguration; 
    2829import org.apache.commons.configuration.Configuration; 
    2930import org.apache.commons.configuration.ConfigurationException; 
     31import org.apache.commons.lang.StringUtils; 
    3032 
    3133public class TrackerStatisticsConsumerLoader { 
     
    4547      consumer.setPassword(configuration.getString("password")); 
    4648      consumer.setDriver(configuration.getString("driver")); 
     49       
    4750      consumer.setRequest(configuration.getString("request", JDBCTrackerStatisticsConsumer.DEFAULT_REQUEST)); 
     51       
     52      String parameters = configuration.getString("parameters"); 
     53      if (parameters != null) { 
     54        consumer.setParameters(StringUtils.split(parameters,',')); 
     55      } 
    4856      return consumer; 
    4957    } else if (consumerClass.equals("exec")) { 
  • trunk/source/org/kolaka/freecast/tracker/statistics/test/FileTrackerStatisticsConsumerTest.java

    r896 r898  
    3939public class FileTrackerStatisticsConsumerTest extends TestCase { 
    4040 
     41  private File file; 
     42  private FileTrackerStatisticsConsumer consumer; 
     43 
     44  protected void setUp() throws Exception { 
     45    super.setUp(); 
     46    file = File.createTempFile(getClass().getName(), "test"); 
     47 
     48    consumer = new FileTrackerStatisticsConsumer(); 
     49    consumer.setFile(file); 
     50} 
     51   
     52  protected void tearDown() throws Exception { 
     53    super.tearDown(); 
     54    file.delete(); 
     55  } 
     56   
    4157  public void testProcess() throws IOException { 
    42     File file = File.createTempFile(getClass().getName(), "test"); 
    43     FileTrackerStatisticsConsumer consumer = new FileTrackerStatisticsConsumer(); 
    44     consumer.setFile(file); 
    45      
    4658    DefaultTrackerStatistics stats = new DefaultTrackerStatistics(1, 2, true, 3); 
    4759    stats.setNetworkId(NetworkIdentifier.getInstance("0"));