Java tutorial
/* * This file is part of gwap, an open platform for games with a purpose * * Copyright (C) 2013 * Project play4science * Lehr- und Forschungseinheit fr Programmier- und Modellierungssprachen * Ludwig-Maximilians-Universitt Mnchen * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package gwap.rest; import gwap.model.action.VirtualTagging; import gwap.model.action.VirtualTaggingType; import gwap.model.resource.ArtResource; import java.util.List; import javax.ejb.TransactionAttribute; import javax.ejb.TransactionAttributeType; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Transactional; import org.json.simple.JSONArray; import org.json.simple.JSONObject; /** * For pictures that are added by users on their own. * * @author maders, wieser, kneissl */ @Name("restNewPicture") @Path("/") public class NewPicture extends UserPicture { private static final long serialVersionUID = 1L; @POST @Path("/newpicture") @Consumes(MediaType.APPLICATION_JSON) @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) @Transactional public Response createNewpicture(String string) { JSONObject payload = parse(string); ArtResource artResource = createPicture(payload); artResource.setOrigin(ArtResource.ORIGIN_APP_USER); VirtualTagging virtualTagging = new VirtualTagging(); virtualTagging.setResource(artResource); entityManager.persist(virtualTagging); VirtualTaggingType virtualTaggingType = entityManager.find(VirtualTaggingType.class, Long.parseLong(payload.get("topic").toString())); virtualTagging.getVirtualTaggingTypes().add(virtualTaggingType); entityManager.flush(); log.info("Created picture: #0", artResource.getId()); return Response.status(Response.Status.CREATED).build(); } @PUT @Consumes(MediaType.APPLICATION_JSON) @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) @Transactional @Path("/newpicture/{id:[0-9][0-9]*}") public Response rateNewPicture(@PathParam("id") String idString, String payloadString) { persistPicturerating(idString, payloadString); return Response.ok().build(); } @GET @Path("/newpicture") @Produces(MediaType.APPLICATION_JSON) public Response getRandomNewPictures(@QueryParam("count") String count, @QueryParam("userid") String deviceId) { List<ArtResource> artResources = getRandomPictures(count, deviceId, ArtResource.ORIGIN_APP_USER); JSONArray jsonArray = new JSONArray(); for (ArtResource artResource : artResources) { JSONObject jsonObject = new JSONObject(); jsonObject.put("id", artResource.getId()); // jsonObject.put("latitude", artResource.getShownLocation().getGeoRepresentation().get(0).getGeoPoint().getLatitude()); // jsonObject.put("longitude", artResource.getShownLocation().getGeoRepresentation().get(0).getGeoPoint().getLongitude()); jsonObject.put("name", artResource.getShownLocation().getName()); jsonObject.put("likes", 0); jsonObject.put("dislikes", 0); jsonObject.put("imageData", "/9j/4AAQSkZJRgABAQEBLAEsAAD/+0AAAAAABABLAAAAAEAAgEsAAAAAQACOEJJTQQmAAAAAAAOAAAAAAAAAAAAAD+AAAA4QklNBA0AAAAAAAQAAAAeOEJJTQQZAAAAAAAEAAAAHjhCSU0D8wAAAAAACQAAAAAAAAAAAQA4QklNBAoAAAAAAAEAADhCSU0nEAAAAAAACgABAAAAAAAAAAI4QklNA/UAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklNA/gAAAAAAHAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAA0UAAAAGAAAAAAAAAAAAAAXcAAAI2QAAAAgASQBNAEcAXwAwADEAMAA5AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAjZAAAF3AAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIAAAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAAF3AAAAABSZ2h0bG9uZwAACNkAAAAGc2xpY2VzVmxMcwAAAAFPYmpjAAAAAQAAAAAABXNsaWNlAAAAEgAAAAdzbGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcAAAAAAAAABm9yaWdpbmVudW0AAAAMRVNsaWNlT3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlwZWVudW0AAAAKRVNsaWNlVHlwZQAAAABJbWcgAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAABdwAAAAAU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XN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIgeG1sbnM6eGFwPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOnhhcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB0aWZmOk9yaWVudGF0aW9uPSIxIiB0aWZmOllDYkNyUG9zaXRpb25pbmc9IjIiIHRpZmY6WFJlc29sdXRpb249IjMwMDAwMDAvMTAwMDAiIHRpZmY6WVJlc29sdXRpb249IjMwMDAwMDAvMTAwMDAiIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiIHRpZmY6TWFrZT0iQ2Fub24iIHRpZmY6TW9kZWw9IkNhbm9uIEVPUyA0MDBEIERJR0lUQUwiIHRpZmY6TmF0aXZlRGlnZXN0PSIyNTYsMjU3LDI1OCwyNTksMjYyLDI3NCwyNzcsMjg0LDUzMCw1MzEsMjgyLDI4MywyOTYsMzAxLDMxOCwzMTksNTI5LDUzMiwzMDYsMjcwLDI3MSwyNzIsMzA1LDMxNSwzMzQzMjtDNkNGMjVFQjExNDk2NTY5QzI3QjcxRTNDQzU3MzM4MSIgeGFwOk1vZGlmeURhdGU9IjIwMDktMDctMTVUMTM6NDM6MDgrMDI6MDAiIHhhcDpDcmVhdGVEYXRlPSIyMDA5LTA3LTE1VDEzOjQzOjA4KzAyOjAwIiB4YXA6TWV0YWRhdGFEYXRlPSIyMDA5LTA3LTE1VDEzOjQzOjA4KzAyOjAwIiB4YXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzMgV2luZG93cyIgZXhpZjpFeGlmVmVyc2lvbj0iMDIyMSIgZXhpZjpGbGFzaHBpeFZlcnNpb249IjAxMDAiIGV4aWY6Q29sb3JTcGFjZT0iMSIgZXhpZjpQaXhlbFhEaW1lbnNpb249IjIyNjUiIGV4aWY6UGl4ZWxZRGltZW5zaW9uPSIxNTAwIiBleGlmOkRhdGVUaW1lT3JpZ2luYWw9IjIwMDktMDctMTNUMDk6NTg6NTArMDI6MDAiIGV4aWY6RGF0ZVRpbWVEaWdpdGl6ZWQ9IjIwMDktMDctMTNUMDk6NTg6NTArMDI6MDAiIGV4aWY6RXhwb3N1cmVUaW1lPSIxLzE2MCIgZXhpZjpGTnVtYmVyPSIyMi8xIiBleGlmOkV4cG9zdXJlUHJvZ3JhbT0iMSIgZXhpZjpTaHV0dGVyU3BlZWRWYWx1ZT0iNDc5ODUwLzY1NTM2IiBleGlmOkFwZXJ0dXJlVmFsdWU9IjU4NDUwNy82NTUzNiIgZXhpZjpFeHBvc3VyZUJpYXNWYWx1ZT0iMC8zIiBleGlmOk1ldGVyaW5nTW9kZT0iNSIgZXhpZjpGb2NhbExlbmd0aD0iNDIvMSIgZXhpZjpGb2NhbFBsYW5lWFJlc29sdXRpb249IjM4ODgwMDAvODc3IiBleGlmOkZvY2FsUGxhbmVZUmVzb2x1dGlvbj0iMjU5MjAwMC81ODIiIGV4aWY6Rm9jYWxQbGFuZVJlc29sdXRpb25Vbml0PSIyIiBleGlmOkN1c3RvbVJlbmRlcmVkPSIwIiBleGlmOkV4cG9zdXJlTW9kZT0iMSIgZXhpZjpXaGl0ZUJhbGFuY2U9IjAiIGV4aWY6U2NlbmVDYXB0dXJlVHlwZT0iMCIgZXhpZjpOYXRpdmVEaWdlc3Q9IjM2ODY0LDQwOTYwLDQwOTYxLDM3MTIxLDM3MTIyLDQwOTYyLDQwOTYzLDM3NTEwLDQwOTY0LDM2ODY3LDM2ODY4LDMzNDM0LDMzNDM3LDM0ODUwLDM0ODUyLDM0ODU1LDM0ODU2LDM3Mzc3LDM3Mzc4LDM3Mzc5LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2LDM3Mzk2LDQxNDgzLDQxNDg0LDQxNDg2LDQxNDg3LDQxNDg4LDQxNDkyLDQxNDkzLDQxNDk1LDQxNzI4LDQxNzI5LDQxNzMwLDQxOTg1LDQxOTg2LDQxOTg3LDQxOTg4LDQxOTg5LDQxOTkwLDQxOTkxLDQxOTkyLDQxOTkzLDQxOTk0LDQxOTk1LDQxOTk2LDQyMDE2LDAsMiw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwyMCwyMiwyMywyNCwyNSwyNiwyNywyOCwzMDswRTA0N0U4NDAxNDM0REEwRjJGNzI2QzgzN0IwQkM5RiIgZGM6Zm9ybWF0PSJpbWFnZS9qcGVnIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIHBob3Rvc2hvcDpIaXN0b3J5PSIiIHhhcE1NOkluc3RhbmNlSUQ9InV1aWQ6N0NDMTI0OTAzNDcxREUxMUI3MzE4RkMwQ0VEQkFDQjYiIHhhcE1NOkRvY3VtZW50SUQ9InV1aWQ6N0JDMTI0OTAzNDcxREUxMUI3MzE4RkMwQ0VEQkFDQjYiPiA8ZXhpZjpJU09TcGVlZFJhdGluZ3M+IDxyZGY6U2VxPiA8cmRmOmxpPjEwMDwvcmRmOmxpPiA8L3JkZjpTZXE+IDwvZXhpZjpJU09TcGVlZFJhdGluZ3M+IDxleGlmOkZsYXNoIGV4aWY6RmlyZWQ9IkZhbHNlIiBleGlmOlJldHVybj0iMCIgZXhpZjpNb2RlPSIyIiBleGlmOkZ1bmN0aW9uPSJGYWxzZSIgZXhpZjpSZWRFeWVNb2RlPSJGYWxzZSIvPiA8eGFwTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZ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"); jsonArray.add(jsonObject); } return Response.ok(jsonArray.toString(), MediaType.APPLICATION_JSON).build(); } }