package com.googlecode.totallylazy.io;
import com.googlecode.totallylazy.Eq;
import com.googlecode.totallylazy.annotations.multimethod;
import com.googlecode.totallylazy.functions.Function0;
import com.googlecode.totallylazy.functions.Lazy;
import java.io.InputStream;
import java.util.Date;
public class AbstractSource extends Eq implements Source {
private final String name;
private final Lazy<Date> modified;
private final Lazy<InputStream> input;
private final boolean isDirectory;
protected AbstractSource(String name, Function0<Date> modified, Function0<InputStream> input, boolean isDirectory) {
this.name = name;
this.modified = Lazy.lazy(modified);
this.input = Lazy.lazy(input);
this.isDirectory = isDirectory;
}
@multimethod
public boolean equals(AbstractSource source) {
return name.equals(source.name) && isDirectory == source.isDirectory;
}
@Override
public int hashCode() {
return name.hashCode() * Boolean.valueOf(isDirectory).hashCode() * 31;
}
@Override
public String toString() {
return name;
}
@Override
public String name() {
return name;
}
@Override
public Date modified() {
return modified.value();
}
@Override
public InputStream input() {
return input.value();
}
@Override
public boolean isDirectory() {
return isDirectory;
}
}