ObjectAttributes.avt

Переключить прокрутку окна
Загрузить этот исходный код

/*
    Реализация среды исполнения языка программирования
    Объектно-ориентированный продвинутый векторный транслятор

    Copyright © 2021, 2024 Малик Разработчик

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

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

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

package platform.independent.filesystem;

public class ObjectAttributes(Object, Attributes)
{
    private static String getAttributeId(int index) {
        switch(index)
        {
        case  1: return B_DIRECTORY;
        case  2: return B_READ_ONLY;
        case 11: return L_LAST_ACCESS_TIME;
        case 12: return L_LAST_WRITE_TIME;
        default: return null;
        }
    }

    private final Attributes fldSource;

    public (Attributes source) { fldSource = source; }

    public (FileSystem source) { fldSource = source == null ? null : source.newAttributes(); }

    public void setBooleanAttribute(String attributeId, boolean attributeValue) { fldSource.setBooleanAttribute(attributeId, attributeValue); }

    public void setLongAttribute(String attributeId, long attributeValue) { fldSource.setLongAttribute(attributeId, attributeValue); }

    public void setStringAttribute(String attributeId, String attributeValue) { fldSource.setStringAttribute(attributeId, attributeValue); }

    public boolean isSupportedAttributeId(String attributeId) { return fldSource.isSupportedAttributeId(attributeId); }

    public boolean getBooleanAttribute(String attributeId) { return fldSource.getBooleanAttribute(attributeId); }

    public long getLongAttribute(String attributeId) { return fldSource.getLongAttribute(attributeId); }

    public String getStringAttribute(String attributeId) { return fldSource.getStringAttribute(attributeId); }

    public String displayName(String attributeId) { return fldSource.displayName(attributeId); }

    public String[] getSupportedAttributeIds() { return fldSource.getSupportedAttributeIds(); }

    public final boolean directory { index = 1, read = getBooleanAttribute, write = setBooleanAttribute }

    public final boolean readOnly { index = 2, read = getBooleanAttribute, write = setBooleanAttribute }

    public final long lastAccessTime { index = 11, read = getLongAttribute, write = setLongAttribute }

    public final long lastWriteTime { index = 12, read = getLongAttribute, write = setLongAttribute }

    private void setBooleanAttribute(int index, boolean newBooleanAttribute) { setBooleanAttribute(getAttributeId(index), newBooleanAttribute); }

    private void setLongAttribute(int index, long newLongAttribute) { setLongAttribute(getAttributeId(index), newLongAttribute); }

    private boolean getBooleanAttribute(int index) { return getBooleanAttribute(getAttributeId(index)); }

    private long getLongAttribute(int index) { return getLongAttribute(getAttributeId(index)); }
}