package com.wyp.materialqqlite;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class LoginAccountList {
int m_nLastLoginUser; // 最后登录用户索引
List<LoginAccountInfo> m_arrLoginAccount; // 登录账号列表
public LoginAccountList() {
m_nLastLoginUser = 0;
m_arrLoginAccount = new ArrayList<LoginAccountInfo>();
}
public void reset() {
m_nLastLoginUser = 0;
m_arrLoginAccount.clear();
}
// 加载登录帐号列表文件
public boolean loadFile(String strFileName) {
if (Utils.isEmptyStr(strFileName))
return false;
File file = new File(strFileName);
if (!file.exists())
return false;
int nFileLen = (int)file.length();
if (nFileLen <= 0)
return false;
reset();
try {
byte[] bytData = new byte[nFileLen];
FileInputStream in = new FileInputStream(file);
in.read(bytData);
in.close();
decrypt(bytData);
ByteArrayInputStream is = new ByteArrayInputStream(bytData);
InputStreamReader reader = new InputStreamReader(is);
BufferedReader bufReader = new BufferedReader(reader);
String strLine = bufReader.readLine();
if (null == strLine)
return false;
m_nLastLoginUser = Integer.parseInt(strLine);
while ((strLine = bufReader.readLine()) != null) {
String[] text = strLine.split(",");
if (text.length != 5)
continue;
LoginAccountInfo account = new LoginAccountInfo();
account.m_strUser = text[0];
account.m_strPwd = text[1];
account.m_nStatus = Integer.parseInt(text[2]);
account.m_bRememberPwd = (Integer.parseInt(text[3]) != 0) ? true : false;
account.m_bAutoLogin = (Integer.parseInt(text[4]) != 0) ? true : false;
m_arrLoginAccount.add(account);
}
if (m_nLastLoginUser < 0 || m_nLastLoginUser >= m_arrLoginAccount.size())
m_nLastLoginUser = 0;
bufReader.close();
return true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
// 保存登录帐号列表文件
public boolean saveFile(String strFileName) {
if (Utils.isEmptyStr(strFileName))
return false;
int nCount = m_arrLoginAccount.size();
if (nCount <= 0)
return false;
String strPath = strFileName.substring(0, strFileName.lastIndexOf("/"));
File dir = new File(strPath);
if (!dir.exists())
dir.mkdirs();
String strText = String.valueOf(m_nLastLoginUser) + "\n";
for (int i = 0; i < nCount; i++) {
LoginAccountInfo account = m_arrLoginAccount.get(i);
if (null == account)
continue;
strText += account.toString();
}
byte[] bytData = strText.getBytes();
encrypt(bytData);
try {
FileOutputStream os = new FileOutputStream(strFileName);
os.write(bytData);
os.close();
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
// 添加帐号
public int add(String strUser, String strPwd,
int nStatus, boolean bRememberPwd, boolean bAutoLogin) {
if (Utils.isEmptyStr(strUser))
return -1;
int nPos = find(strUser);
if (nPos != -1) {
LoginAccountInfo account = getAccountInfo(nPos);
account.m_strPwd = strPwd;
account.m_nStatus = nStatus;
account.m_bRememberPwd = bRememberPwd;
account.m_bAutoLogin = bAutoLogin;
return nPos;
} else {
LoginAccountInfo account = new LoginAccountInfo();
account.m_strUser = strUser;
account.m_strPwd = strPwd;
account.m_nStatus = nStatus;
account.m_bRememberPwd = bRememberPwd;
account.m_bAutoLogin = bAutoLogin;
m_arrLoginAccount.add(account);
return m_arrLoginAccount.size()-1;
}
}
// 删除帐号
public boolean del(int nIndex) {
if (nIndex < 0 || nIndex >= m_arrLoginAccount.size())
return false;
m_arrLoginAccount.remove(nIndex);
return true;
}
// 修改帐号
public boolean modify(int nIndex, String strUser, String strPwd,
int nStatus, boolean bRememberPwd, boolean bAutoLogin) {
if (nIndex < 0 || nIndex >= m_arrLoginAccount.size() || Utils.isEmptyStr(strUser))
return false;
LoginAccountInfo account = m_arrLoginAccount.get(nIndex);
if (null == account)
return false;
account.m_strUser = strUser;
account.m_strPwd = strPwd;
account.m_nStatus = nStatus;
account.m_bRememberPwd = bRememberPwd;
account.m_bAutoLogin = bAutoLogin;
return true;
}
// 清除所有帐号
public void clear() {
m_arrLoginAccount.clear();
}
// 获取帐号总数
public int getCount() {
return m_arrLoginAccount.size();
}
// 获取帐号信息
public LoginAccountInfo getAccountInfo(int nIndex) {
if (nIndex < 0 || nIndex >= m_arrLoginAccount.size())
return null;
return m_arrLoginAccount.get(nIndex);
}
// 查找帐号
public int find(String strUser) {
if (Utils.isEmptyStr(strUser))
return -1;
for (int i = 0; i < m_arrLoginAccount.size(); i++) {
LoginAccountInfo account = m_arrLoginAccount.get(i);
if (account != null && account.m_strUser.equals(strUser))
return i;
}
return -1;
}
public int getLastLoginUser() {
return m_nLastLoginUser;
}
public LoginAccountInfo getLastLoginAccountInfo() {
return getAccountInfo(m_nLastLoginUser);
}
public void setLastLoginUser(int nPos) {
m_nLastLoginUser = nPos;
}
public void setLastLoginUser(String strUser) {
if (Utils.isEmptyStr(strUser))
return;
for (int i = 0; i < m_arrLoginAccount.size(); i++) {
LoginAccountInfo account = m_arrLoginAccount.get(i);
if (account != null && account.m_strUser.equals(strUser)) {
m_nLastLoginUser = i;
return;
}
}
}
// 加密
private void encrypt(byte[] bytData) {
for (int i = 0; i < bytData.length; i++) {
bytData[i] = (byte)(bytData[i] ^ 0x88);
}
}
// 解密
private void decrypt(byte[] bytData) {
for (int i = 0; i < bytData.length; i++) {
bytData[i] = (byte)(bytData[i] ^ 0x88);
}
}
}