1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
| package lih.rtdb.simrtdb.generator;
import lih.rtdb.simrtdb.data.*;
import java.util.*;
/**
* It is the class that permit to create arrival time using Poisson process
* @author <a href="mailto:Majed.Abdouli@univ-lehavre.fr">Majed Abdouli</a>
*/
public class Generator{
private Random generator;
private GlobalClock refGlobalClock;
/**
* Default Constructor
*/
public Generator (GlobalClock refGlobalClock, Random generator){
this.generator = generator;
this.refGlobalClock = refGlobalClock;
}
/**
* Generate a new DataBase
* @param numberOfData the number of data item to generate in the database
* @param data this value permit to specify if non real time data must be generated
* @param realtimedata this value permit to specify if real time data must be generated
*/
public DataBase generateDataBase (int numberOfData,
boolean data, boolean realtimedata){
DataBase db = new DataBase (numberOfData, generator);
for (int i=0; i<numberOfData; i++) {
if (data && realtimedata)
if ((int)(Math.round(generator.nextDouble()))==0)
db.add (Data.generateOne(i));
else
db.add (RealTimeData.generateOne(i,1,generator));
}
return db;
}
/**
* Generate a new DataBase
* @param numberOfData the number of data item to generate in the database
* @param maxNumSite the number of site to consider
* @param data this value permit to specify if non real time data must be generated
* @param realtimedata this value permit to specify if real time data must be generated
*/
public DataBase generateDataBase (int numberOfData, int maxNumSite,
boolean data, boolean realtimedata){
DataBase db = new DataBase (numberOfData, generator);
for (int i=0; i<numberOfData; i++) {
if (data && realtimedata)
if ((int)(Math.round(generator.nextDouble()))==0)
db.add (Data.generateOne(i,maxNumSite,generator));
else
db.add (RealTimeData.generateOne(i,maxNumSite,generator));
}
return db;
}
/**
* Generate a new DataBase with Real Time Data
* @param numberOfData the number of data item to generate in the database
*/
public DataBase generateRealTimeDataBase (int numberOfData){
return generateDataBase(numberOfData, false, true);
}
/**
* Generate a new Queue of Transaction using the static method Transaction.generateOne()
*/
public TransactionQueue generateRealTimeTransaction (int lambda, int phenomenon){
ArrivalTime aa = new ArrivalTime (lambda,phenomenon,generator);
int numberOfTransactions = aa.getNumberOfArrivalTime();
TransactionQueue aQueue = new TransactionQueue (numberOfTransactions);
for (int i=0; i<numberOfTransactions; i++){
Transaction tr = Transaction.generateOne(i, refGlobalClock, generator);
tr.setArrivalDate (aa.getArrivalTime(i));
aQueue.pushTransaction (tr);
}
return aQueue;
}
} |
Partager