package ru.kkey.core;
/**
* @author anstarovoyt
*/
public class FileItem implements Comparable<FileItem>
{
private String name;
private boolean isDirectory;
public FileItem(String name, boolean isDirectory)
{
this.name = name.endsWith("/") && isDirectory ? name.substring(0, name.length() - 1) : name;
this.isDirectory = isDirectory;
}
public String getName()
{
return name;
}
public boolean isDirectory()
{
return isDirectory;
}
@Override
public String toString()
{
String prefix = isDirectory ? " /" : " ";
return prefix + name;
}
@Override
public int compareTo(FileItem o)
{
if (isDirectory() ^ o.isDirectory())
{
return isDirectory() ? -1 : 1;
}
return name.compareTo(o.getName());
}
public String getFileExtension()
{
return name.lastIndexOf('.') >= 0 ? name.substring(name.lastIndexOf('.') + 1).toLowerCase() : "";
}
@Override
public boolean equals(Object o)
{
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
FileItem fileItem = (FileItem) o;
if (isDirectory != fileItem.isDirectory) return false;
return name.equals(fileItem.name);
}
@Override
public int hashCode()
{
int result = name.hashCode();
result = 31 * result + (isDirectory ? 1 : 0);
return result;
}
}