package fi.iki.murgo.irssinotifier;
import android.content.Context;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
public class MessageGenerator extends TimerTask {
private static Random random = new Random();
private Context context;
public MessageGenerator(Context context) {
this.context = context;
}
public static void Flood(Context context) {
new Timer().schedule(new MessageGenerator(context), 5000);
}
private static String getRandomString(int min, int max) {
char[] chars = "ABCDEFHGIJKLMNOPQRSTUVWXYZÅÄÖabcdefghijklmnopqrstuvwxyzåäöABCDEFHGIJKLMNOPQRSTUVWXYZÅÄÖabcdefghijklmnopqrstuvwxyzåäö;:_1234567890+!\"#¤%&/()=?¨'´`^*?-.,<>|\\[]€£$§½µ".toCharArray();
StringBuilder sb = new StringBuilder();
int amount = max <= min ? max : min + random.nextInt(1 + (max - min));
for (int i = 0; i < amount; i++) {
sb.append(chars[random.nextInt(chars.length)]);
}
return sb.toString();
}
private static long nextLong(long n) {
long bits, val;
do {
bits = (random.nextLong() << 1) >>> 1;
val = bits % n;
} while (bits-val+(n-1) < 0L);
return val;
}
@Override
public void run() {
fillDb(222, 2);
sendNotifications(2, 2);
this.context = null;
}
private void fillDb(int channelCount, int messagesPerChannel) {
DataAccess dao = new DataAccess(context);
for (int i = 0; i < channelCount; i++) {
String channel = getRandomString(5, 10);
for (int j = 0; j < messagesPerChannel; j++) {
System.out.println("DB: Faking message " + j + " of " + messagesPerChannel + " for channel " + i + " of " + channelCount);
IrcMessage msg = new IrcMessage();
msg.setChannel(channel);
msg.setMessage(getRandomString(2, 30));
msg.setNick(getRandomString(4, 10));
msg.setServerTimestamp(System.currentTimeMillis() - nextLong(1000L * 60 * 60 * 24 * 30));
msg.setExternalId(getRandomString(6, 6));
dao.handleMessage(msg);
}
}
}
private void sendNotifications(int channelCount, int messagesPerChannel) {
IrcNotificationManager manager = IrcNotificationManager.getInstance();
for (int i = 0; i < channelCount; i++) {
String channel = getRandomString(5, 10);
for (int j = 0; j < messagesPerChannel; j++) {
System.out.println("Notification: Faking message " + j + " of " + messagesPerChannel + " for channel " + i + " of " + channelCount);
IrcMessage message = new IrcMessage();
message.setChannel(channel);
message.setMessage(getRandomString(2, 30));
message.setNick(getRandomString(4, 10));
message.setServerTimestamp(System.currentTimeMillis() - nextLong(1000L * 60 * 60 * 24 * 30));
message.setExternalId(getRandomString(6, 6));
manager.handle(context, message);
}
}
}
}