package com.jackson.common.control;
import com.jackson.utils.StringUtil;
import org.apache.ibatis.io.Resources;
import java.io.*;
import java.util.*;
/**
* Created by Jackson on 2017/2/7.
* 1、分类遍历获取user-agent
*/
public class UserAgentControl {
private static UserAgentControl instance;
private UserAgentControl() {}
/**
* 控制资源文件存放位置的
*/
private static final String FILE_PATH = "config/";
public static UserAgentControl getInstance() {
if (instance == null) {
synchronized (UserAgentControl.class) {
if (instance == null) {
instance = new UserAgentControl();
}
}
}
return instance;
}
private int currentPosition;
/**
* @return 传入的类型的user-agent
*/
public String next(UserAgentType ... userAgentTypes){
String s = userAgentTypes[currentPosition].next();
if(s==null){
if(userAgentTypes.length-1<=currentPosition){//到最后了
currentPosition=0;
s = userAgentTypes[currentPosition].next();
}else {
s = userAgentTypes[++currentPosition].next();
}
}
return s;
}
public enum UserAgentType{
PC("pc_user_agent"),ANDROID_1_0("android1.0_user_agent"),ANDROID_2_0("android2.0_user_agent"),
ANDROID_3_0("android3.0_user_agent"),ANDROID_4_0("android4.0_user_agent"),IPHONE("iphone_user_agent"),
MAC_OS("macos_user_agent"),OLD_PHONE("oldphone_user_agent"), WAP("wap_user_agent"),
SYMBIANOS9("symbianos9"),CLDC("cldc_user_agent");
String fileName;
ArrayList<String> userAgentList;
int position;
UserAgentType(String fileName){
this.fileName = fileName;
}
public ArrayList<String> getUserAgentList() {
return userAgentList;
}
String next(){
loadRes();
if(getUserAgentList().size()-1<position){
position=0;
return null;
}
return getUserAgentList().get(position++);
}
private void loadRes(){
if(userAgentList!=null)return;
userAgentList = new ArrayList<>();
BufferedReader br = loadReader(FILE_PATH+fileName);
String s = null;
try {
while ((s = br.readLine()) != null) {
if(!StringUtil.isEmpty(s)){
getUserAgentList().add(s.trim());
}
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private BufferedReader loadReader(String res) {
//得到配置文件的流
InputStream is = null;
try {
is = Resources.getResourceAsStream(res);
} catch (IOException e) {
e.printStackTrace();
}
return new BufferedReader(new InputStreamReader(is));
}
}
}