package _VisualDVM.GlobalData.Machine;
import Common.Database.Objects.iDBObject;
import Common.Utils.Utils_;
import _VisualDVM.Global;
import _VisualDVM.GlobalData.Compiler.Compiler;
import _VisualDVM.GlobalData.User.User;

import java.util.LinkedHashMap;
public class Machine extends iDBObject {
    public MachineType type = MachineType.Server;
    public String name = "";
    public String address = "";
    public int port = 22;
    public Machine(String name_in, String address_in, int port_in, MachineType type_in) {
        name = name_in;
        address = address_in;
        port = port_in;
        type = type_in;
    }
    public Machine() {
    }
    public String getURL() {
        return type.equals(MachineType.Local) ? name : (address + ":" + port);
    }
    public String getFullDescription() {
        return //this.equals(Constants.repository_machine) ? "Репозиторий визуализатора" :
                "Машина по адресу " + Utils_.Brackets(getURL());
    }
    public LinkedHashMap<Integer, Compiler> getCompilers() {
        return Global.mainModule.getDb().getMapByFKi(this, Compiler.class);
    }
    public LinkedHashMap<Integer, User> getUsers() {
        return Global.mainModule.getDb().getMapByFKi(this, User.class);
    }
    @Override
    public String getDialogName() {
        return super.getDialogName() + ":" + getURL();
    }
/* инициализация компиляторов по умолчанию. добавить в отдельный проход.
    //todo если машина локальная и винда, их не добавлять.
        Visualiser.db.Insert(new Compiler(
                (Machine)Target,
                "gfortran",
    CompilerType.gnu,
            "gfortran",
            "--version",
            "--help"
            ));
        Visualiser.db.Insert(new Compiler(
                (Machine)Target,
                "gcc",
    CompilerType.gnu,
            "gcc",
            "--version",
            "--help"
            ));
        Visualiser.db.Insert(new Compiler(
                (Machine)Target,
                "g++",
    CompilerType.gnu,
            "g++",
            "--version",
            "--help"
            ));
     */
}
