package com.kdcloud.ext.rehab.doctor; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.restlet.data.MediaType; import org.restlet.ext.xml.DomRepresentation; import org.restlet.representation.Representation; import org.restlet.resource.Post; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import com.googlecode.objectify.Key; import com.googlecode.objectify.Objectify; import com.googlecode.objectify.ObjectifyService; import com.kdcloud.ext.rehab.db.DualModeSession; import com.kdcloud.ext.rehab.db.CompleteExercise; import com.kdcloud.ext.rehab.db.RehabUser; import com.kdcloud.ext.rehab.db.UserScheduling; import com.kdcloud.ext.rehab.user.XMLUtils; import com.kdcloud.server.entity.User; import com.kdcloud.server.rest.resource.KDServerResource; public class AddUserSchedulingRestlet extends RehabDoctorServerResource { public static final String URI = "/rehabdoctor/adduserscheduling"; @Post("xml") public Representation acceptItem(Representation entity) { DomRepresentation result = null; Document d = null; try { DomRepresentation input = new DomRepresentation(entity); Document doc = input.getDocument(); try { ObjectifyService.register(CompleteExercise.class); } catch (Exception e) { } Objectify ofy = ObjectifyService.begin(); // handle document input Element rootEl = doc.getDocumentElement(); String u = XMLUtils.getTextValue(rootEl, "username"); DateFormat formatter; // formatter = new SimpleDateFormat("dow mon dd hh:mm:ss zzz yyyy"); // 29 Nov 2012 16:13:18 GMT formatter = new SimpleDateFormat("d MMM yyyy HH:mm:ss z"); List<UserScheduling> schedulingList = new LinkedList<UserScheduling>(); NodeList taskList = rootEl.getElementsByTagName("task"); if (taskList != null && taskList.getLength() > 0) { for (int i = 0; i < taskList.getLength(); i++) { Element el = (Element) taskList.item(i); String str_start_date = el.getAttribute("startdate"); String str_end_date = el.getAttribute("enddate"); Date startDate = (Date) formatter.parse(str_start_date); Date endDate = (Date) formatter.parse(str_end_date); int exercise_number = Integer.parseInt(el.getAttribute("exercise_number")); String exercise_name = el.getAttribute("exercise_name"); Key<RehabUser> us = new Key<RehabUser>(RehabUser.class, u); CompleteExercise exercise = ofy.query(CompleteExercise.class) .filter("number", exercise_number).filter("rehabuser", us) .filter("name", exercise_name).get(); Key<CompleteExercise> ex = new Key<CompleteExercise>(CompleteExercise.class, exercise.getId()); UserScheduling s = new UserScheduling(); s.setStartDate(startDate); s.setEndDate(endDate); s.setUser(us); s.setExercise(ex); schedulingList.add(s); } try { ObjectifyService.register(UserScheduling.class); } catch (Exception e) { } ofy = ObjectifyService.begin(); for(UserScheduling s: schedulingList){ ofy.put(s); } } // output result = new DomRepresentation(MediaType.TEXT_XML); d = result.getDocument(); Map<String, String> map = new HashMap<String, String>(); map.put("user_scheduling_saved", "OK"); d = XMLUtils.createXMLResult("adduserschedulingOutput", map, d); } catch (Exception e) { result = XMLUtils.createXMLError("add user scheduling error", "" + e.getMessage()); } return result; } }