// Copyright (c) 2015 D1SM.net

package com.pm.bean;

import java.io.Serializable;
import java.sql.Timestamp;

import com.alibaba.fastjson.JSONObject;
import com.pm.Constant;



public class MapRule implements Serializable{
	
	private static final long serialVersionUID = -7368564104699452865L;

	public static int protocal_TCP=1;

	public static int protocal_HTTP=2;
	
	public static int protocal_UDP=3;
	
	public static int type_single_port=1;
	
	public static int type_web=3;
	
	public static String type_string_single_port="单端口";
				
	public static String type_string_web="网站映射";
	
	public static String type_string_all_port="全端口";
		
	String dstAddress;
	
	int dstPort;
	
	int protocal=protocal_TCP;
	
	String userId;
	
	int mapId;
	
	int port;
	
	int type;
		
	MapServerBean mapserverbean;
	
	int mapserverId;
	
	String domainName;
	
	String name;
	
	String domainNamePrefix;
	
	String wanAddress="";
	
	String wanAddress_get="";
	
	String lanAddress="";
	
	String typeString;
	
	String customAddress;
	
	public JSONObject getJSONObject(){
		JSONObject ho=new JSONObject();
		ho.put(Constant.Key_DstAddress, dstAddress);
		ho.put(Constant.Key_DstPort, dstPort);
		ho.put(Constant.Key_Port, port);
		ho.put(Constant.Key_MapId, mapId);
		ho.put(Constant.Key_UserId, userId);
		ho.put(Constant.Key_Type, type);
		ho.put(Constant.Key_MapServerId, mapserverId);
		ho.put(Constant.Key_DomainName, domainName);
		ho.put(Constant.Key_Name, name);
		ho.put(Constant.Key_DomainNamePrefix, domainNamePrefix);
		if(mapserverbean!=null){
			JSONObject hm=mapserverbean.getJSONObject();
			ho.put(Constant.Key_MapServer, hm);
		}
		return ho;
	}
	
	public void init(JSONObject ho){
		dstAddress=ho.getString(Constant.Key_DstAddress);
		dstPort=ho.getIntValue(Constant.Key_DstPort);
		port=ho.getIntValue(Constant.Key_Port);
		mapId=ho.getIntValue(Constant.Key_MapId);
		userId=ho.getString(Constant.Key_UserId);
		type=ho.getIntValue(Constant.Key_Type);
		mapserverId=ho.getIntValue(Constant.Key_MapServerId);
		domainName=ho.getString(Constant.Key_DomainName);
		name=ho.getString(Constant.Key_Name);
		domainNamePrefix=ho.getString(Constant.Key_DomainNamePrefix);
		if(mapserverbean==null){
			mapserverbean=new MapServerBean();
			mapserverbean.init(ho.getJSONObject(Constant.Key_MapServer));
		}
		if(type==MapRule.type_single_port){
			typeString=MapRule.type_string_single_port;
			wanAddress=mapserverbean.
					getDomainName()+":"+getPort();
			lanAddress=getDstAddress()+":"+getDstPort();
		}else if(type==MapRule.type_web){
			typeString=MapRule.type_string_web;
			wanAddress=getWanWebAddress(this);
			if(mapserverbean.getWebPort()!=80){
				wanAddress+=(":"+mapserverbean.getWebPort());
			}
			lanAddress=getDstAddress();
			if(getDstPort()!=80){
				lanAddress+=(":"+getDstPort());
			}
		}
		
		if(domainName!=null&&!domainName.trim().equals("")){
			if(type==MapRule.type_single_port){
				customAddress=domainName+":"+getPort();
			}else if(type==MapRule.type_web){
				customAddress=domainName;
				if(mapserverbean.getWebPort()!=80){
					customAddress+=(":"+mapserverbean.getWebPort());
				}
			}
		}
	}
	
	public static String getWanWebAddress(MapRule rule){
		MapServerBean mp=rule.getMapserver();
		String wanAddress=rule.getDomainNamePrefix()+"."+mp.getDomainName();
		
		return wanAddress;
	}
	
	public String getDstAddress() {
		return dstAddress;
	}

	public void setDstAddress(String dstAddress) {
		this.dstAddress = dstAddress;
	}

	public int getDstPort() {
		return dstPort;
	}

	public void setDstPort(int dstPort) {
		this.dstPort = dstPort;
	}

	public int getProtocal() {
		return protocal;
	}

	public void setProtocal(int protocal) {
		this.protocal = protocal;
	}

	public String getUserId() {
		return userId;
	}

	public void setUserId(String userId) {
		this.userId = userId;
	}

	public int getMapId() {
		return mapId;
	}

	public void setMapId(int mapId) {
		this.mapId = mapId;
	}

	public int getPort() {
		return port;
	}

	public void setPort(int port) {
		this.port = port;
	}
	public int getType() {
		return type;
	}

	public void setType(int type) {
		this.type = type;
	}

	public MapServerBean getMapserver() {
		return mapserverbean;
	}

	public void setMapserver(MapServerBean mapserver) {
		this.mapserverbean = mapserver;
	}

	public int getMapserverId() {
		return mapserverId;
	}

	public void setMapserverId(int mapserverId) {
		this.mapserverId = mapserverId;
	}

	public String getDomainName() {
		return domainName;
	}

	public void setDomainName(String domainName) {
		this.domainName = domainName;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getDomainNamePrefix() {
		return domainNamePrefix;
	}

	public void setDomainNamePrefix(String domainNamePrefix) {
		this.domainNamePrefix = domainNamePrefix;
	}

	public String getWanAddress() {
		return wanAddress;
	}

	public void setWanAddress(String wanAddress) {
		this.wanAddress = wanAddress;
	}

	public String getLanAddress() {
		return lanAddress;
	}

	public void setLanAddress(String lanAddress) {
		this.lanAddress = lanAddress;
	}

	public String getTypeString() {
		return typeString;
	}

	public void setTypeString(String typeString) {
		this.typeString = typeString;
	}

	public String getWanAddress_get() {
		return wanAddress_get;
	}

	public void setWanAddress_get(String wanAddress_get) {
		this.wanAddress_get = wanAddress_get;
	}

	public String getCustomAddress() {
		return customAddress;
	}

	public void setCustomAddress(String customAddress) {
		this.customAddress = customAddress;
	}

}