package com.grigowashere.aismap.data.entity;

import androidx.annotation.NonNull;
import androidx.room.Entity;
import androidx.room.PrimaryKey;

/**
 * Room-сущность для хранения AIS цели
 * Теперь содержит ВСЕ поля из AISVessel модели
 */
@Entity(tableName = "ais_vessels")
public class AISVesselEntity {
	@PrimaryKey
	@NonNull
	public String mmsi;

	// Основная информация о судне
	public String vesselName;
	public String callSign;
	public int imo;                    // IMO номер
	public String vesselType;          // тип судна

	// Позиция и движение
	public double latitude;
	public double longitude;
	public double course;              // курс в градусах (0-360)
	public double speed;               // скорость в узлах
	public double heading;             // направление движения в градусах
	public double rateOfTurn;          // скорость поворота в градусах/минуту

	// Размеры судна
	public double length;              // длина судна в метрах
	public double width;               // ширина судна в метрах
	public double draft;               // осадка в метрах

	// Навигационная информация
	public String destination;         // пункт назначения
	public long etaEpochMs;            // предполагаемое время прибытия (epoch ms)
	public String navigationalStatus;  // навигационный статус
	public boolean positionAccuracy;   // точность позиции

	// Техническая информация
	public int signalStrength;        // сила AIS сигнала
	public String vesselClass;        // класс судна (Class A, Class B, Extended Class B)
	public String vendorId;           // идентификатор производителя оборудования
	public String lastSafetyMessage;  // последнее сообщение безопасности

	// Состояние и время
	public long lastUpdateEpochMs;    // время последнего обновления (epoch ms)
	public boolean isActive;          // активно ли судно
	public boolean selected;          // выделено ли судно на карте

	public AISVesselEntity(@NonNull String mmsi) {
		this.mmsi = mmsi;
		this.isActive = true;
		this.selected = false;
		this.lastUpdateEpochMs = System.currentTimeMillis();
	}
}


