blob: a9777948ebf4f752a4a1ed3c1ff99def42f5e08c [file] [log] [blame]
package org.eclipse.osee.ote.master.rest.internal;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.UriBuilderException;
import javax.ws.rs.core.UriInfo;
import org.eclipse.osee.ote.master.OTELookup;
import org.eclipse.osee.ote.master.OTELookupServerEntry;
import org.eclipse.osee.ote.master.rest.model.OTEServer;
@Path("servers")
public class OTEAvailableServersResource {
// Allows to insert contextual objects into the class,
// e.g. ServletContext, Request, Response, UriInfo
@Context
UriInfo uriInfo;
@Context
Request request;
@GET
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public List<OTEServer> getOTEServers() throws MalformedURLException, IllegalArgumentException, UriBuilderException, InterruptedException, ExecutionException {
OTELookup oteLookup = OTERestApplication.getOTELookup();
List<OTELookupServerEntry> availableServers = oteLookup.getAvailableServers();
List<OTEServer> servers = new ArrayList<>();
for (OTELookupServerEntry entry : availableServers) {
servers.add(Util.convert(entry));
}
return servers;
}
@GET
@Produces(MediaType.TEXT_HTML)
public String getAsHtml() {
OTELookup oteLookup = OTERestApplication.getOTELookup();
List<OTELookupServerEntry> availableServers = oteLookup.getAvailableServers();
StringBuilder builder = new StringBuilder();
builder.append("<html><body>");
builder.append("<table border=\"1\">");
builder.append("<tr>\n");
builder.append("<th>");
builder.append("Station");
builder.append("</th>");
builder.append("<th>");
builder.append("Name");
builder.append("</th>");
builder.append("<th>");
builder.append("ConnectedUsers");
builder.append("</th>");
builder.append("<th>");
builder.append("StartTime");
builder.append("</th>");
builder.append("</tr>\n");
for (OTELookupServerEntry entry : availableServers) {
builder.append("<tr>\n");
builder.append("<td>");
builder.append(entry.getStation());
builder.append("</td>");
builder.append("<td>");
builder.append(entry.getName());
builder.append("</td>");
builder.append("<td>");
builder.append(entry.getConnectedUsers());
builder.append("</td>");
builder.append("<td>");
builder.append(entry.getStartTime());
builder.append("</td>");
builder.append("</tr>\n");
}
builder.append("</table>");
builder.append("<br/>");
builder.append("</body></html>");
return builder.toString();
}
@POST
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public void updateServer(OTEServer server) throws Exception {
OTELookup oteLookup = OTERestApplication.getOTELookup();
oteLookup.addServer(Util.convert(server));
}
@DELETE
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public void removeServer(OTEServer server) throws Exception {
OTELookup oteLookup = OTERestApplication.getOTELookup();
oteLookup.removeServer(Util.convert(server));
}
@DELETE
@Path("{uuid}")
public void removeServer(@PathParam("uuid") String uuid) throws Exception {
OTELookup oteLookup = OTERestApplication.getOTELookup();
oteLookup.removeServer(UUID.fromString(uuid));
}
}