package dell_targets; import databases.DBConnector; import targets.LocationBaseStation; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ConcurrentHashMap; public class Dell_BaseStation { static List baseStations; private static ConcurrentHashMap baseStationMap; // ÒÔ»ùÕ¾IDΪ¼üµÄÓ³Éä public static List getBaseStations() throws SQLException { baseStations = new ArrayList<>(); baseStationMap = new ConcurrentHashMap<>(); // ÐÞ¸´£º³õʼ»¯Ó³Éä ResultSet rs = DBConnector.queryTableData("location_base_station"); while (rs.next()) { LocationBaseStation baseStation = new LocationBaseStation(); baseStation.setId((int) rs.getLong("id")); baseStation.setCode(rs.getString("base_station_id")); baseStation.setStatus(rs.getString("statuss")); baseStation.setXCoordinate(rs.getString("x_coordinate")); baseStation.setYCoordinate(rs.getString("y_coordinate")); baseStation.setZCoordinate(rs.getString("z_coordinate")); baseStation.setLongitude(rs.getString("longitude")); baseStation.setLatitude(rs.getString("latitude")); baseStation.setElevation(rs.getString("elevation")); baseStation.setHorizontalAngle(rs.getString("horizontal_angle")); baseStation.setPitchAngle(rs.getString("pitch_angle")); baseStation.setFloor(rs.getString("located_layer")); baseStation.setGroup(rs.getString("located_group")); baseStation.setRange(rs.getString("range")); baseStation.setSyncStatus(rs.getString("sync_status")); baseStation.setSyncType(rs.getString("sync_type")); baseStation.setSyncBaseStation(rs.getString("sync_base_station")); baseStation.setIpAddress(rs.getString("ip_address")); baseStation.setPort(rs.getString("ports")); baseStation.setFirmwareVersion(rs.getString("firmware_version")); baseStation.setJudgmentDistance(rs.getString("judgment_distance")); baseStation.setBattery(rs.getString("battery")); baseStation.setCalibrationDistance(rs.getString("calibration_distance")); baseStation.setSignalSendTime(rs.getString("signal_transmission_time")); baseStation.setCommunicationGroup(rs.getString("communication_group")); baseStation.setIconAddress(rs.getString("icon_url")); baseStation.setOnlineTime(rs.getString("online_time")); baseStation.setOfflineTime(rs.getString("offline_time")); baseStation.setOfflineDuration(rs.getString("offline_duration")); baseStation.setAlgorithmDimension(rs.getString("algorithm_dimension")); baseStation.setBottomHeight(rs.getString("located_bottom_height")); baseStation.setTopHeight(rs.getString("located_top_height")); baseStation.setIsBarometricStation(rs.getString("barometric_base_station")); baseStation.setSwitchDistance(rs.getString("handover_distance")); baseStation.setMaxDistance(rs.getString("maximum_distance")); baseStation.setOutputAllRanging(rs.getString("output_all_base_station_ranging")); baseStation.setCompany(rs.getString("company")); baseStation.setCrossLayerHeight(rs.getString("cross_layer_height")); baseStation.setCrossLayerGroup(rs.getString("cross_layer_group")); baseStation.setRequiredDistance(rs.getString("must_pass_distance")); baseStation.setAdjacent1(rs.getString("adjacent1")); baseStation.setAdjacent2(rs.getString("adjacent2")); baseStation.setAdjacent3(rs.getString("adjacent3")); baseStation.setAdjacent4(rs.getString("adjacent4")); baseStation.setAdjacent5(rs.getString("adjacent5")); baseStation.setAdjacent6(rs.getString("adjacent6")); baseStation.setAdjacent7(rs.getString("adjacent7")); baseStation.setAdjacent8(rs.getString("adjacent8")); baseStation.setAdjacent9(rs.getString("adjacent9")); baseStation.setAdjacent10(rs.getString("adjacent10")); baseStation.setReserved1(rs.getString("reserved1")); baseStation.setReserved2(rs.getString("reserved2")); baseStation.setReserved3(rs.getString("reserved3")); baseStation.setReserved4(rs.getString("reserved4")); baseStation.setReserved5(rs.getString("reserved5")); baseStation.setReserved6(rs.getString("reserved6")); baseStation.setReserved7(rs.getString("reserved7")); baseStation.setReserved8(rs.getString("reserved8")); baseStation.setReserved9(rs.getString("reserved9")); baseStation.setReserved10(rs.getString("reserved10")); baseStation.setReserved11(rs.getString("reserved11")); baseStation.setReserved12(rs.getString("reserved12")); baseStation.setReserved13(rs.getString("reserved13")); baseStation.setReserved14(rs.getString("reserved14")); baseStation.setReserved15(rs.getString("reserved15")); baseStation.setReserved16(rs.getString("reserved16")); baseStations.add(baseStation); baseStationMap.put(baseStation.getCode(), baseStation); // ÒÔ»ùÕ¾IDΪ¼ü´æÈëÓ³Éä } return baseStations; } /** * ¸ù¾Ý»ùÕ¾ID¸ßЧÐÞ¸ÄÊôÐÔÖµ * @param baseStationId »ùÕ¾ID£¨base_station_id£© * @param propertyName ÊôÐÔÃû£¨ÐèÓësetter·½·¨Æ¥Å䣩 * @param value ÐÂÊôÐÔÖµ */ public static void updateBaseStationProperty(String baseStationId, String propertyName, String value) { LocationBaseStation station = baseStationMap.get(baseStationId); if (station == null) return; // »ùÕ¾²»´æÔÚÔòºöÂÔ // ¸ù¾ÝÊôÐÔÃûµ÷ÓöÔÓ¦setter£¨¸ßЧƥÅä¸ßƵÊôÐÔ£© switch (propertyName) { case "status": station.setStatus(value); break; // ¸üÐÂ״̬ case "battery": station.setBattery(value); break; // ¸üеçÁ¿ case "ipAddress": station.setIpAddress(value); break; // ¸üÐÂIPµØÖ· case "onlineTime": station.setOnlineTime(value); break; // ¸üÐÂÉÏÏßʱ¼ä case "offlineTime": station.setOfflineTime(value); break; // ¸üÐÂÀëÏßʱ¼ä case "offlineDuration": station.setOfflineDuration(value); break; // ¸üÐÂÀëÏßʱ³¤ case "syncStatus": station.setSyncStatus(value); break; //ͬ²½×´Ì¬ case "barometerReading": station.setBarometerReading(value); break; //ͬ²½×´Ì¬ // Ìí¼ÓÆäËû¸ßƵÊôÐÔ... default: throw new IllegalArgumentException("²»Ö§³ÖÊôÐÔ: " + propertyName); } } /** * ¸ù¾Ý»ùÕ¾ID»ñÈ¡»ùÕ¾¶ÔÏ󣨸ßЧ·ÃÎÊ£© * @param baseStationId »ùÕ¾ID * @return »ùÕ¾¶ÔÏ󣨲»´æÔÚÔò·µ»Ønull£© */ public static LocationBaseStation getBaseStationById(String baseStationId) { return baseStationMap.get(baseStationId); // O(1)¸´ÔÓ¶ÈÖ±½Ó»ñÈ¡ } }