package org.fluxtream.core.api; import com.google.gson.Gson; import org.fluxtream.core.Configuration; import org.fluxtream.core.aspects.FlxLogger; import org.fluxtream.core.auth.AuthHelper; import org.fluxtream.core.domain.Guest; import org.fluxtream.core.mvc.models.CalendarModel; import org.fluxtream.core.services.GuestService; import org.fluxtream.core.services.MetadataService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import java.io.IOException; /** * * @author Candide Kemmler (candide@fluxtream.com) */ @Path("/v1/calendar/nav") @Component("RESTCalendarController") @Scope("request") public class CalendarController { FlxLogger logger = FlxLogger.getLogger(CalendarController.class); @Autowired GuestService guestService; @Autowired MetadataService metadataService; Gson gson = new Gson(); @Autowired Configuration env; @GET @Path(value = "/model") @Produces({ MediaType.APPLICATION_JSON } ) public String getModel(@QueryParam("state") String state) throws IOException { long guestId; Guest guest = AuthHelper.getGuest(); guestId = guest.getId(); StringBuilder sb = new StringBuilder("module=API component=calendarController action=getModel") .append(" guestId=").append(guestId); logger.info(sb.toString()); CalendarModel calendarModel = CalendarModel.fromState(guestId, metadataService, state); return calendarModel.toJSONString(env); } }