1 10 package mondrian.spi.impl; 11 12 import java.util.Random ; 13 14 import mondrian.spi.DataSourceChangeListener; 15 import mondrian.olap.MondrianDef; 16 import mondrian.rolap.RolapHierarchy; 17 import mondrian.rolap.agg.Aggregation; 18 19 20 46 47 public class DataSourceChangeListenerImpl4 implements DataSourceChangeListener { 48 private int flushInverseFrequencyHierarchy; 49 private int flushInverseFrequencyAggregation; 50 final Random random = new Random (123456); 51 52 53 public DataSourceChangeListenerImpl4() { 54 this(0,0); 55 } 56 public DataSourceChangeListenerImpl4(int flushInverseFrequencyHierarchy, 57 int flushInverseFrequencyAggregation) { 58 this.flushInverseFrequencyHierarchy = flushInverseFrequencyHierarchy; 59 this.flushInverseFrequencyAggregation = flushInverseFrequencyAggregation; 60 } 61 62 public synchronized boolean isHierarchyChanged(RolapHierarchy hierarchy) { 63 if (flushInverseFrequencyHierarchy != 0) { 64 if (random.nextInt(flushInverseFrequencyHierarchy) == 0) { 65 return true; 66 } 67 else { 68 return false; 69 } 70 } else { 71 return true; 72 } 73 } 74 75 public synchronized boolean isAggregationChanged(Aggregation aggregation) { 76 if (flushInverseFrequencyAggregation != 0) { 77 if (random.nextInt(flushInverseFrequencyAggregation) == 0) { 78 return true; 79 } 80 else { 81 return false; 82 } 83 } else { 84 return true; 85 } 86 } 87 88 public String getTableName(RolapHierarchy hierarchy) { 89 MondrianDef.Relation relation = hierarchy.getRelation(); 90 if (relation instanceof MondrianDef.Table) { 91 MondrianDef.Table tableRelation = (MondrianDef.Table)relation; 92 93 return tableRelation.name; 94 } else { 95 return null; 96 } 97 } 98 } 99 | Popular Tags |