This document discusses project management concepts for a project using Google App Engine, including tasks, dependencies, risks, and responsibilities. It also provides examples of storing and querying data on Google App Engine using the Datastore API and JSP pages. Code snippets are given for creating entities, properties, queries, and retrieving results to display images and videos associated with a user.
13. Servlet
DatastoreServicedatastore = DatastoreServiceFactory.getDatastoreService();
Entity person = new Entity("Person", "test");
person.setUnindexedProperty("name", "TestUser"); //Unindexed properties for these properties that you will
not filter on
Entity weddingPhoto = new Entity("Photo", person.getKey()); // We link this Entity to another (Foreign key)
weddingPhoto.setProperty("imageUrl", "http://scm-l3.technorati.com/11/02/05/25749/marriage.jpg");
weddingPhoto.setProperty("date", new Date());
Entity weddingVideo = new Entity("Video", person.getKey()); // We link this Entity to another (Foreign key)
weddingVideo.setProperty("videoUrl", "http://www.criticallayouts.com/images/rsgallery/original/just-
married-cans-ag1.gif");
weddingVideo. setUnindexedProperty("date", new Date());
datastore.put(person);
datastore.put(weddingPhoto);
datastore.put(weddingVideo);
req.setAttribute("Key", person.getKey()); //Sending an object to a jsp file
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/store.jsp");
dispatcher.forward(req,resp);
14. JSP
DatastoreServicedatastore = DatastoreServiceFactory.getDatastoreService();
Key key = (Key)request.getAttribute("Key"); //We get an object not only an String
if (key != null){
Query userMediaQuery = new Query();
userMediaQuery.setAncestor(key);
// Ancestor queries return ancestors by default. This filter excludes the ancestor from query results.
userMediaQuery.addFilter(Entity.KEY_RESERVED_PROPERTY, Query.FilterOperator.GREATER_THAN, key);
// Returns both weddingPhoto and weddingVideo even though they are different entity kinds.
List<Entity> results = datastore.prepare(userMediaQuery).asList( FetchOptions.Builder.withDefaults());
for (inti=0;i<results.size();i++){
if (results.get(i).getKind().compareTo("Video")==0){%>
This is a photo:<br/><imgsrc="<%=results.get(i).getProperty("videoUrl")%>"></img><br/>
<% }else if (results.get(i).getKind().compareTo("Photo")==0){%>
This is a video:<br/><imgsrc="<%=results.get(i).getProperty("imageUrl")%>"></img><br/>
<% }%>
Define tasks, create dependencies, define risks and divide responsabilities
The colleagues can be a risk… for instance, if someone has a job or is looking for a job… maybe it’s a risk…Time is always a risk and estimations…Others courses can influence the time spent on this course…
Always a task need to have a responsible, the goal is that someone has to keep an eye what is going on… The goal is not to find a guilty, the role is to have always someone who knows why???