/*
Реализация среды исполнения языка программирования
Объектно-ориентированный продвинутый векторный транслятор
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)); }
}