package org.qrone.r7.format;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
import org.qrone.r7.resolver.URIResolver;
import org.qrone.util.QrONEUtils;
import org.qrone.util.Stream;
import org.qrone.util.XDeck;
public abstract class XFormat<T> extends XDeck<T>{
public XFormat(URIResolver resolver) {
super(resolver);
}
@Override
protected T compile(URI uri, InputStream in, String encoding)
throws Exception {
return decode(new String(Stream.read(in)));
}
public T parse(String data){
return decode(data);
}
public T load(String uri) throws IOException, URISyntaxException{
byte[] data = Stream.read(resolver.getInputStream(new URI(uri)));
return decode(new String(data));
}
public abstract T decode(String data);
public abstract String encode(T data);
}