package com.ochafik.lang.compiler;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLConnection;
import javax.tools.FileObject;
import com.ochafik.io.ReadText;
public class URLFileObject implements FileObject {
URL url;
public URLFileObject(URL url) {
this.url = url;
}
public String getPath() {
return url.getFile();
}
@Override
public boolean delete() {
return false;
}
@Override
public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
return ReadText.readText(url);
}
@Override
public long getLastModified() {
try {
URLConnection con = url.openConnection();
long lastModified = con.getLastModified();
con.getInputStream().close();
return lastModified;
} catch (Exception ex) {
ex.printStackTrace();
return -1;
}
}
@Override
public String getName() {
return new File(url.getFile()).getName();
}
@Override
public InputStream openInputStream() throws IOException {
return url.openStream();
}
@Override
public OutputStream openOutputStream() throws IOException {
return null;
}
@Override
public Reader openReader(boolean arg0) throws IOException {
return new InputStreamReader(openInputStream());
}
@Override
public Writer openWriter() throws IOException {
return null;
}
@Override
public URI toUri() {
try {
return url.toURI();
} catch (URISyntaxException e) {
e.printStackTrace();
return null;
}
}
}