package com.xenoage.zong.webserver.model.requests;
import static com.xenoage.utils.CheckUtils.checkNotEmpty;
import static com.xenoage.utils.CheckUtils.checkNotNull;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import java.util.UUID;
import javax.servlet.http.HttpServletResponse;
import com.xenoage.utils.annotations.MaybeNull;
import com.xenoage.utils.annotations.NonEmpty;
import com.xenoage.utils.annotations.NonNull;
import com.xenoage.zong.webserver.Webserver;
import com.xenoage.zong.webserver.actions.OpenAction;
import com.xenoage.zong.webserver.model.Scaling;
/**
* Request to open a document.
*
* Example:
* <pre>{"action":"open", "url":"http://www.zong-music.com/demo/BeetAnGeSample.xml",
* "requestedID":"4110334f-785d-4a3d-9414-efb96387df88",
* "scalings":[
* {"dpi":72},
* {"dpi":144},
* {"widthpx":700}]}</pre>
*
* The requested ID is optional and should only be used for demonstration purposes.
* If none is given, a random ID is generated. If one is given for an new URL
* but it already exists, an error is thrown.
*
* @author Andreas Wenger
*/
public class OpenRequest
extends Request {
@NonNull public final String url;
@MaybeNull public final UUID requestedID;
@NonEmpty public final List<Scaling> scalings;
public OpenRequest(String url, UUID requestedID, List<Scaling> scalings) {
this.url = url;
this.requestedID = requestedID;
this.scalings = scalings;
}
@Override public void check() {
checkNotNull(url);
checkNotEmpty(scalings);
}
@Override public void respond(Webserver server, HttpServletResponse response)
throws SQLException, IOException {
new OpenAction().perform(this, server, response);
}
}