/*
    Реализация спецификаций CLDC версии 1.1 (JSR-139), MIDP версии 2.1 (JSR-118)
    и других спецификаций для функционирования компактных приложений на языке
    Java (мидлетов) в среде программного обеспечения Малик Эмулятор.

    Copyright © 2016–2017, 2019–2022 Малик Разработчик

    Это свободная программа: вы можете перераспространять ее и/или изменять
    ее на условиях Меньшей Стандартной общественной лицензии GNU в том виде,
    в каком она была опубликована Фондом свободного программного обеспечения;
    либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.

    Эта программа распространяется в надежде, что она будет полезной,
    но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
    или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
    общественной лицензии GNU.

    Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
    вместе с этой программой. Если это не так, см.
    <https://www.gnu.org/licenses/>.
*/

package malik.emulator.microedition.system.console;

import malik.emulator.microedition.*;
import malik.emulator.microedition.system.*;
import malik.emulator.util.*;

public class MIDletConsoleCommand extends ConsoleCommand
{
    public MIDletConsoleCommand() {
        super(
            "мидлет",
            "Использование:\n мидлет\nВыводит на консоль имя класса мидлета и название текущего выполняющегося приложения."
        );
    }

    protected void execute(String[] arguments, Console console) {
        DeviceManager manager;
        DeviceSettings proxy = (manager = DeviceManager.getInstance()).getSettings();
        StringBuilder text = (new StringBuilder()).append("Название приложения: ").append(proxy.getMIDletProperty("MIDlet-Name")).append('\n');
        if(manager instanceof SystemManager)
        {
            String name = ((SystemManager) manager).getApplicationDisplay().getApplication().getClass().getName();
            for(int i = 1; ; i++)
            {
                String[] value;
                if((value = proxy.getMIDletAttributes("MIDlet-".concat(Integer.toString(i)))) == null) break;
                if(value.length >= 3 && name.equals(value[SystemManager.MIDLET_CLASS]))
                {
                    text.append("Название мидлета: ").append(value[SystemManager.MIDLET_NAME]).append('\n');
                    text.append("Класс мидлета: ").append(name).append('\n');
                    break;
                }
            }
        }
        console.print(text.toString());
    }
}
