/* * This source is part of the * _____ ___ ____ * __ / / _ \/ _ | / __/___ _______ _ * / // / , _/ __ |/ _/_/ _ \/ __/ _ `/ * \___/_/|_/_/ |_/_/ (_)___/_/ \_, / * /___/ * repository. * * Copyright (C) 2013-2015 Carmen Alvarez (c@rmen.ca) * Copyright (C) 2013 Benoit 'BoD' Lubek (BoD@JRAF.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package ca.rmen.android.networkmonitor.provider; import android.content.Context; import android.net.Uri; import android.provider.BaseColumns; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import ca.rmen.android.networkmonitor.R; public class NetMonColumns implements BaseColumns { public static final String TABLE_NAME = "networkmonitor"; public static final Uri CONTENT_URI = Uri.parse(NetMonProvider.CONTENT_URI_BASE + "/" + TABLE_NAME); static final String _ID = BaseColumns._ID; public static final String TIMESTAMP = "timestamp"; public static final String NETWORK_TYPE = "network_type"; public static final String MOBILE_DATA_NETWORK_TYPE = "mobile_data_network_type"; // google_connection_test now corresponds to a basic socket connection test. // The column name has been kept for backwards compatibility. public static final String SOCKET_CONNECTION_TEST = "google_connection_test"; public static final String HTTP_CONNECTION_TEST = "http_connection_test"; public static final String SIM_STATE = "sim_state"; public static final String SERVICE_STATE = "service_state"; public static final String DETAILED_STATE = "detailed_state"; public static final String IS_CONNECTED = "is_connected"; public static final String IS_ROAMING = "is_roaming"; public static final String IS_AVAILABLE = "is_available"; public static final String IS_FAILOVER = "is_failover"; public static final String DATA_ACTIVITY = "data_activity"; public static final String DATA_STATE = "data_state"; public static final String REASON = "reason"; public static final String EXTRA_INFO = "extra_info"; public static final String WIFI_SSID = "wifi_ssid"; public static final String WIFI_BSSID = "wifi_bssid"; public static final String WIFI_FREQUENCY = "wifi_frequency"; public static final String WIFI_CHANNEL = "wifi_channel"; public static final String WIFI_SIGNAL_STRENGTH = "wifi_signal_strength"; public static final String WIFI_RSSI = "wifi_rssi"; public static final String SIM_OPERATOR = "sim_operator"; public static final String SIM_MCC = "sim_mcc"; public static final String SIM_MNC = "sim_mnc"; public static final String NETWORK_OPERATOR = "network_operator"; public static final String NETWORK_MCC = "network_mcc"; public static final String NETWORK_MNC = "network_mnc"; public static final String IS_NETWORK_METERED = "is_network_metered"; public static final String DEVICE_LATITUDE = "device_latitude"; public static final String DEVICE_LONGITUDE = "device_longitude"; public static final String DEVICE_POSITION_ACCURACY = "device_position_accuracy"; public static final String DEVICE_SPEED = "device_speed"; public static final String CELL_SIGNAL_STRENGTH = "cell_signal_strength"; public static final String CELL_SIGNAL_STRENGTH_DBM = "cell_signal_strength_dbm"; public static final String CELL_ASU_LEVEL = "cell_asu_level"; public static final String GSM_BER = "gsm_ber"; public static final String LTE_RSRQ = "lte_rsrq"; //public static final String EVDO_ECIO = "evdo_ecio"; public static final String CDMA_CELL_BASE_STATION_ID = "cdma_cell_base_station_id"; public static final String CDMA_CELL_LATITUDE = "cdma_cell_latitude"; public static final String CDMA_CELL_LONGITUDE = "cdma_cell_longitude"; public static final String CDMA_CELL_NETWORK_ID = "cdma_cell_network_id"; public static final String CDMA_CELL_SYSTEM_ID = "cdma_cell_system_id"; public static final String GSM_FULL_CELL_ID = "gsm_full_cell_id"; public static final String GSM_RNC = "gsm_rnc"; public static final String GSM_SHORT_CELL_ID = "gsm_short_cell_id"; public static final String GSM_CELL_LAC = "gsm_cell_lac"; public static final String GSM_CELL_PSC = "gsm_cell_psc"; public static final String NETWORK_INTERFACE = "network_interface"; public static final String IPV4_ADDRESS = "ipv4_address"; public static final String IPV6_ADDRESS = "ipv6_address"; public static final String MOST_CONSUMING_APP_NAME = "most_consuming_app_name"; public static final String MOST_CONSUMING_APP_BYTES = "most_consuming_app_bytes"; public static final String BATTERY_LEVEL = "battery_level"; public static final String DOWNLOAD_SPEED = "download_speed"; public static final String UPLOAD_SPEED = "upload_speed"; /** * @return the list of column names in the main table. This returns the technical names of the columns, as they appear in the DB. */ public static String[] getColumnNames(Context context) { String [] allColumnNames = context.getResources().getStringArray(R.array.db_columns); List<String> newerApiColumnNames = getNewerApiColumns(context); List<String> result = new ArrayList<>(); for (String columnName : allColumnNames) { if (!newerApiColumnNames.contains(columnName)) { result.add(columnName); } } return result.toArray(new String[0]); } /** * @return The localized display names of all the columns in the DB. */ public static String[] getColumnLabels(Context context) { String[] columnNames = getColumnNames(context); String[] columnLabels = new String[columnNames.length]; for (int i = 0; i < columnNames.length; i++) { columnLabels[i] = getColumnLabel(context, columnNames[i]); } return columnLabels; } /** * @return the localized display names of all the given DB column names. */ public static CharSequence[] getColumnLabels(Context context, CharSequence[] columnNames) { CharSequence[] result = new String[columnNames.length]; for (int i=0; i < columnNames.length; i++) { result[i] = getColumnLabel(context, columnNames[i].toString()); } return result; } /** * @return the list of columns which should be visible in the log view by default * (until the user explicitly changes the list of visible columns). */ public static String[] getDefaultVisibleColumnNames(Context context) { String[] columnNames = context.getResources().getStringArray(R.array.db_columns); String[] hiddenColumnNames = context.getResources().getStringArray(R.array.db_columns_hide); List<String> hiddenColumnNamesList = Arrays.asList(hiddenColumnNames); List<String> newerApiColumnNames = getNewerApiColumns(context); String[] result = new String[columnNames.length - hiddenColumnNames.length]; int i = 0; for (String columnName : columnNames) { if (!hiddenColumnNamesList.contains(columnName) && !newerApiColumnNames.contains(columnName)) { result[i++] = columnName; } } return result; } /** * @return the localized display name for a particular DB column name. */ public static String getColumnLabel(Context context, String columnName) { int columnLabelId = context.getResources().getIdentifier(columnName, "string", R.class.getPackage().getName()); return context.getString(columnLabelId); } /** * @return the DB column name which has this label */ public static String getColumnName(Context context, String columnLabel) { String[] columnNames = getColumnNames(context); for (String columnName : columnNames) { if (columnLabel.equals(getColumnLabel(context, columnName))) return columnName; } return null; } public static String[] getFilterableColumns(Context context) { String[] filterableColumns = context.getResources().getStringArray(R.array.filterable_columns); List<String> newerApiColumns = getNewerApiColumns(context); List<String> result = new ArrayList<>(); for (String column : filterableColumns) { if (!newerApiColumns.contains(column)) { result.add(column); } } return result.toArray(new String[0]); } public static boolean isColumnFilterable(Context context, String columnName) { String[] filterableColumns = getFilterableColumns(context); for (String filterableColumn : filterableColumns) if (columnName.equals(filterableColumn)) return true; return false; } private static List<String> getNewerApiColumns(Context context) { return Arrays.asList(context.getResources().getStringArray(R.array.newer_api_db_columns)); } static final String DEFAULT_ORDER = _ID; }