View Javadoc

1   package de.jaret.examples.timebars.millis.model;
2   
3   import java.util.ArrayList;
4   import java.util.List;
5   
6   import de.jaret.util.date.IntervalImpl;
7   import de.jaret.util.date.JaretDate;
8   import de.jaret.util.ui.timebars.model.DefaultRowHeader;
9   import de.jaret.util.ui.timebars.model.DefaultTimeBarModel;
10  import de.jaret.util.ui.timebars.model.DefaultTimeBarNode;
11  import de.jaret.util.ui.timebars.model.DefaultTimeBarRowModel;
12  import de.jaret.util.ui.timebars.model.PPSInterval;
13  import de.jaret.util.ui.timebars.model.TimeBarModel;
14  
15  public class ModelCreator {
16      static final long ROWLENGTH = 60 * 1000;
17      static final long GAP = 10 * 1000;
18      static final int BURSTCOUNT = 4;
19      static final long LENGTH = 10;
20      static final int ROWCOUNT = 3;
21      
22      List<JaretDate> _burstBegindates = new ArrayList<JaretDate>();
23  
24      public TimeBarModel createModel() {
25          DefaultTimeBarModel model = new DefaultTimeBarModel();
26  
27          JaretDate start = new JaretDate(0);
28  
29          for (int r = 0; r < ROWCOUNT; r++) {
30              DefaultRowHeader header = new DefaultRowHeader("r" + r);
31              DefaultTimeBarRowModel tbr = new DefaultTimeBarRowModel(header);
32  
33              JaretDate d = new JaretDate(0);
34  
35              while (d.diffMilliSeconds(start) < ROWLENGTH) {
36                  // remember burst begins
37                  if (r == 0) {
38                      _burstBegindates.add(d.copy());
39                  }
40                  for (int i = 0; i < BURSTCOUNT; i++) {
41                      IntervalImpl interval = new IntervalImpl();
42                      JaretDate begin = d.copy().advanceMillis((long) ((double) LENGTH / 2 * Math.random()));
43                      interval.setBegin(begin);
44                      interval.setEnd(begin.copy().advanceMillis(1 + (long) ((double) LENGTH * Math.random())));
45                      tbr.addInterval(interval);
46                  }
47  
48                  // next burst
49                  d.advanceMillis(GAP);
50              }
51              model.addRow(tbr);
52          }
53  
54          System.out.println("model created min " + model.getMinDate() + " max " + model.getMaxDate() + " = total ms "
55                  + (model.getMaxDate().getDate().getTime() - model.getMinDate().getDate().getTime()));
56          System.out.println("diff ms " + model.getMaxDate().diffMilliSeconds(model.getMinDate()));
57          return model;
58      }
59  
60      public void createPPSIntervals(double pixelPerSecond, DefaultTimeBarNode scaleRow) {
61          for (int i = 0; i < _burstBegindates.size() - 2; i++) {
62              PPSInterval pps = new PPSInterval(pixelPerSecond / 200.0);
63              pps.setBegin(_burstBegindates.get(i).copy().advanceMillis(LENGTH * 3));
64              pps.setEnd(_burstBegindates.get(i + 1).copy().advanceMillis(-LENGTH * 3));
65              // create one break
66              if (i==1) {
67                  pps.setBreak(true);
68              }
69              System.out.println("pps interval " + pps.getBegin() + " -- " + pps.getEnd());
70              scaleRow.addInterval(pps);
71          }
72      }
73  
74      
75  }