Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
23 changes: 23 additions & 0 deletions .project
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>codeu-starter-project</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>
31 changes: 31 additions & 0 deletions src/main/java/com/google/codeu/data/Datastore.java
Original file line number Diff line number Diff line change
Expand Up @@ -136,4 +136,35 @@ public User getUser(String email) {

return user;
}

public List<UserMarker> getMarkers() {
List<UserMarker> markers = new ArrayList<>();

Query query = new Query("UserMarker");
PreparedQuery results = datastore.prepare(query);

for (Entity entity : results.asIterable()) {
try {
double lat = (double) entity.getProperty("lat");
double lng = (double) entity.getProperty("lng");
String content = (String) entity.getProperty("content");

UserMarker marker = new UserMarker(lat, lng, content);
markers.add(marker);
} catch (Exception e) {
System.err.println("Error reading marker.");
System.err.println(entity.toString());
e.printStackTrace();
}
}
return markers;
}

public void storeMarker(UserMarker marker) {
Entity markerEntity = new Entity("UserMarker");
markerEntity.setProperty("lat", marker.getLat());
markerEntity.setProperty("lng", marker.getLng());
markerEntity.setProperty("content", marker.getContent());
datastore.put(markerEntity);
}
}
26 changes: 26 additions & 0 deletions src/main/java/com/google/codeu/data/UserMarker.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.google.codeu.data;

public class UserMarker {

private double lat;
private double lng;
private String content;

public UserMarker(double lat, double lng, String content) {
this.lat = lat;
this.lng = lng;
this.content = content;
}

public double getLat() {
return lat;
}

public double getLng() {
return lng;
}

public String getContent() {
return content;
}
}
42 changes: 42 additions & 0 deletions src/main/java/com/google/codeu/servlets/HomeServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.google.codeu.servlets;

import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;
import java.io.IOException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/home.html")
public class HomeServlet extends HttpServlet {

@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

UserService userService = UserServiceFactory.getUserService();

response.setContentType("text/html;");
response.getOutputStream().println("<!DOCTYPE html>");
response.getOutputStream().println("<html>");
response.getOutputStream().println("<head>");
response.getOutputStream().println("<title>Servlet HTML Example</title>");
response.getOutputStream().println("</head>");
response.getOutputStream().println("<body>");

if (userService.isUserLoggedIn()) {
String username = userService.getCurrentUser().getEmail();
response
.getOutputStream()
.println("<a href=\"/user-page.html?user=" + username + "\">Your Page</a>");
response.getOutputStream().println("<a href=\"/logout\">Logout</a>");
} else {
response.getOutputStream().println("<a href=\"/login\">Login</a>");
}

response.getOutputStream().println("<h1>Servlet HTML Example</h1>");
response.getOutputStream().println("<p>This HTML came from a servlet!</p>");
response.getOutputStream().println("</body>");
response.getOutputStream().println("</html>");
}
}
53 changes: 53 additions & 0 deletions src/main/java/com/google/codeu/servlets/UfoDataServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.google.codeu.servlets;

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import java.io.IOException;
import java.util.Scanner;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/** Returns UFO data as a JSON array, e.g. [{"lat": 38.4404675, "lng": -122.7144313}] */
@WebServlet("/ufo-data")
public class UfoDataServlet extends HttpServlet {

JsonArray ufoSightingArray;

@Override
public void init() {
ufoSightingArray = new JsonArray();
Gson gson = new Gson();
Scanner scanner = new Scanner(getServletContext().getResourceAsStream("/WEB-INF/ufo-data.csv"));
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] cells = line.split(",");

String state = cells[0];
double lat = Double.parseDouble(cells[1]);
double lng = Double.parseDouble(cells[2]);

ufoSightingArray.add(gson.toJsonTree(new UfoSighting(state, lat, lng)));
}
scanner.close();
}

@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("application/json");
response.getOutputStream().println(ufoSightingArray.toString());
}

private static class UfoSighting {
String state;
double lat;
double lng;

private UfoSighting(String state, double lat, double lng) {
this.state = state;
this.lat = lat;
this.lng = lng;
}
}
}
47 changes: 47 additions & 0 deletions src/main/java/com/google/codeu/servlets/UserMarkerServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.google.codeu.servlets;

import com.google.codeu.data.Datastore;
import com.google.codeu.data.UserMarker;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.List;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jsoup.Jsoup;
import org.jsoup.safety.Whitelist;

/** Handles fetching and saving {@link UserMarker} instances. */
@WebServlet("/user-markers")
public class UserMarkerServlet extends HttpServlet {

private Datastore datastore;

@Override
public void init() {
datastore = new Datastore();
}

@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("application/json");

List<UserMarker> markers = datastore.getMarkers();
Gson gson = new Gson();
String json = gson.toJson(markers);

response.getOutputStream().println(json);
}

@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) {

double lat = Double.parseDouble(request.getParameter("lat"));
double lng = Double.parseDouble(request.getParameter("lng"));
String content = Jsoup.clean(request.getParameter("content"), Whitelist.none());

UserMarker marker = new UserMarker(lat, lng, content);
datastore.storeMarker(marker);
}
}
36 changes: 36 additions & 0 deletions src/main/java/com/google/codeu/servlets/index.jsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<%@ page import="com.google.appengine.api.users.UserService" %>
<%@ page import="com.google.appengine.api.users.UserServiceFactory" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CodeU Starter Project</title>
<link rel="stylesheet" href="/css/main.css">
</head>
<body>
<nav>
<ul id="navigation">
<li><a href="/">Home</a></li>

<%
UserService userService = UserServiceFactory.getUserService();
if (userService.isUserLoggedIn()) {
String username = userService.getCurrentUser().getEmail();
%>
<li><a href="/user-page.html?user=<%= username %>">Your Page</a></li>
<li><a href="/logout">Logout</a></li>
<% } else { %>
<li><a href="/login">Login</a></li>
<% } %>

</ul>
</nav>
<h1>CodeU Starter Project</h1>
<p>This is the CodeU starter project. Click the links above to login and visit your page.
You can post messages on your page, and you can visit other user pages if you have
their URL.</p>
<p>This is your code now! Feel free to make changes, and don't be afraid to get creative!
You could start by modifying this page to tell the world more about your team.</p>
</body>
</html>
Loading