package pt.jkaiui.filelog;
import pt.jkaiui.JKaiUI;
import pt.jkaiui.core.messages.*;
import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static pt.jkaiui.core.KaiConfig.ConfigTag.*;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author yuu@akron
*/
public class MACLog extends Log {
HashSet macset;
public MACLog() {
this.init();
}
protected void init() {
logfile = new File(format(JKaiUI.getConfig().getConfigFile(MACLogFile)));
macset = new HashSet();
super.init();
readlog();
}
public void println(Object mac) {
if (mac instanceof RemoteArenaDevice) {
println((RemoteArenaDevice) mac);
}
}
private void println(RemoteArenaDevice mac) {
if (!datecheck()) {
update();
}
if (!this.contains(mac)) {
this.add(mac);
String pattern = JKaiUI.getConfig().getConfigString(MACLogPattern);
pattern = pattern.replace("%N", mac.getUser().decode());
pattern = pattern.replace("%A", mac.getMac().decode());
logfilepw.println(pattern);
}
}
private boolean contains(RemoteArenaDevice mac) {
return macset.contains(mac.getUser().decode() + ";" + mac.getMac().decode());
}
private void add(RemoteArenaDevice mac) {
macset.add(mac.getUser().decode() + ";" + mac.getMac().decode());
}
private void readlog() {
/* try {
BufferedReader logfilebr = new BufferedReader(new FileReader(logfile));
String line;
while ((line = logfilebr.readLine()) != null) {
//System.out.println(line);
macset.add(line);
}
logfilebr.close();
} catch (Exception e) {
System.out.println("MAClog:"+e);
}
*/
try {
//�t�@�C���������݃p�^�[���̉��
Pattern[] p = {Pattern.compile("%N"), Pattern.compile("%A")};
Matcher m;
TreeMap tm = new TreeMap();
for (int i = 0; i < p.length; i++) {
m = p[i].matcher(JKaiUI.getConfig().getConfigString(MACLogPattern));
if (m.find()) {
tm.put(new Integer(m.start()), new Integer(i));
}
}
//���[�U�[���ƃA�h���X�����Ԗڂ��v�Z
int usernum = -1, macnum = -1;
Integer keytmp = new Integer(-1);
for (int i = 0; i < tm.size(); i++) {
Integer tmp = (Integer) tm.higherEntry(keytmp).getValue();
keytmp = (Integer) tm.higherKey(keytmp);
if (tmp.equals(new Integer(0))) {//tmp.intValue() == 0
usernum = i;
}
if (tmp.equals(new Integer(1))) {//tmp.intValue() == 1
macnum = i;
}
}
String ps = JKaiUI.getConfig().getConfigString(MACLogPattern);
ps = ps.replace("%N", "(.*)");
ps = ps.replace("%A", "(.*)");
Pattern rp = Pattern.compile(ps);
BufferedReader logfilebr = new BufferedReader(new FileReader(logfile));
String line;
while ((line = logfilebr.readLine()) != null) {
m = rp.matcher(line);
if (m.matches()) {
macset.add(m.group(usernum + 1) + ";" + m.group(macnum + 1));
}
}
logfilebr.close();
} catch (Exception e) {
System.out.println("MACLog:" + e);
}
}
}