package com.hxzkoa.udp; import java.util.Iterator; import java.util.List; import java.util.Vector; import com.hxzkoa.json.tb_forward_data; /** 数据转发对象的集合 */ @SuppressWarnings("rawtypes") public class ForwardDatas { static Vector tb_forward_datas = new Vector<>(); static { // 查表 //Iterator iterator = DatabaseManagement.get_alldate_indatabase("tb_forward_data").iterator(); Iterator iterator = null; while (iterator.hasNext()) {// 迭代器存在元素 List info = (List) iterator.next();// 将迭代器里面的元素给到info集合 tb_forward_data forward_data = new tb_forward_data(); forward_data.setId(Integer.parseInt((String) info.get(0))); forward_data.setType((String) info.get(1)); forward_data.setIp((String) info.get(2)); forward_data.setPort((String) info.get(3)); forward_data.setDatatype((String) info.get(4)); tb_forward_datas.add(forward_data); } } public static Vector get_tb_forward_datas() { return tb_forward_datas; } public static boolean get_gas_zhuanfa() { boolean gas_zhuan_fa = false;// 数据转发气体不存在 if (tb_forward_datas.size() != 0) {// 数据转发集合不为空 for (int i = 0; i < tb_forward_datas.size(); i++) { tb_forward_data forward_data = tb_forward_datas.get(i); String type = forward_data.getType(); String datatype = forward_data.getDatatype(); if (type.equals("TCP") && datatype.equals("气体数据")) { gas_zhuan_fa = true; } } } return gas_zhuan_fa; } /** 判断某个端口,地址,协议类是否存在转发全部数据 */ public static boolean get_all(String type, String ip, String port) { boolean ishave = false; // 如果存在了转发全部数据的选择项目 if (forward_data_is_have(type, ip, port, "全部数据")) { ishave = true; } return ishave; } /** 向集合中添加一个对象 */ public static void add_tb_forward_data(String type, String ip, String port, String datatype) { tb_forward_data new_forward_data = new tb_forward_data(); new_forward_data.setIp(ip); new_forward_data.setPort(port); new_forward_data.setType(type); new_forward_data.setDatatype(datatype); tb_forward_datas.add(new_forward_data); } /** 通过ID找到某个对象 */ public static tb_forward_data get_forward_data(String id) { int id0 = Integer.parseInt(id); tb_forward_data mou_forward_data = null; if (tb_forward_datas.size() != 0) { Iterator it = tb_forward_datas.iterator(); while (it.hasNext()) { tb_forward_data forward_data1 = it.next(); int id1 = forward_data1.getId(); if (id1 == id0) { mou_forward_data = forward_data1; break; } } } return mou_forward_data; } /** 删除某个对象 */ public static void delete_forward_data(String id) { tb_forward_data mou_forward_data = get_forward_data(id); if (mou_forward_data != null) { tb_forward_datas.removeElement(mou_forward_data); } } /** 删除全部对象 */ public static void delete_all_forward_data() { if (tb_forward_datas.size() != 0) { tb_forward_datas.removeAllElements(); } } /** 查询某个对象是否已经存在 */ public static boolean forward_data_is_have(String type, String ip, String port, String datatyp) { boolean forward_data_is_have = false; if (tb_forward_datas.size() != 0) { Iterator it = tb_forward_datas.iterator(); while (it.hasNext()) { tb_forward_data forward_data = it.next(); String type1 = forward_data.getType(); String ip1 = forward_data.getIp(); String port1 = forward_data.getPort(); String datatype1 = forward_data.getDatatype(); if (type1.equals(type) && ip1.equals(ip) && port1.equals(port) && datatype1.equals(datatyp)) { forward_data_is_have = true; break; } } } return forward_data_is_have; } public static void xiugai(String id, String type, String ip, String port, String datatype) { if (get_forward_data(id) != null) { get_forward_data(id).setType(type); get_forward_data(id).setPort(port); get_forward_data(id).setIp(ip); get_forward_data(id).setDatatype(datatype); } } /** * 获取某种转发对象的所有集合 * * @param type转发类型如UDP * @param datype需要转发的数据 */ public static Vector get_mou_tb_forword(String type, String datatype) { Vector mou_data = new Vector<>(); if (tb_forward_datas.size() != 0) { Iterator it = tb_forward_datas.iterator(); while (it.hasNext()) { tb_forward_data forward_data = it.next(); String type1 = forward_data.getType(); String datatype1 = forward_data.getDatatype(); if (type1.equals(type) && datatype1.equals(datatype)) { mou_data.add(forward_data); } } } return mou_data; } /** 获取某种类型的需要转发的数据对象集合 */ public static Vector get_mou_tb_forword(String type) { Vector mou_data = new Vector<>(); if (tb_forward_datas.size() != 0) { Iterator it = tb_forward_datas.iterator(); while (it.hasNext()) { tb_forward_data forward_data = it.next(); String type1 = forward_data.getType(); if (type1.equals(type)) { mou_data.add(forward_data); } } } return mou_data; } /** 如果存在需要TCP转发的地址和端口并且需要转发的是位置数据 */ public static boolean have_tcp(String datatype) { boolean have = false; if (get_mou_tb_forword("TCP", datatype).size() != 0) { have = true; } return have; } /** 如果存在需要UDP转发的地址和端口并且需要转发的是位置数据 */ public static boolean have_udp(String datatype) { boolean have = false; if (get_mou_tb_forword("UDP", datatype).size() != 0) { have = true; } return have; } /** TCP数据转发是否存在 */ }