⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eventpublisherservlet.java

📁 google的gdata api包
💻 JAVA
字号:
/* Copyright (c) 2006 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *     http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package mashups.eventpub;import java.io.IOException;import java.net.MalformedURLException;import java.net.URL;import java.util.LinkedList;import java.util.List;import javax.servlet.RequestDispatcher;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.configuration.Configuration;import org.apache.commons.configuration.PropertiesConfiguration;/** * Servlet to control requests for publishing events from Spreadsheets to * Calendar and Base. * *  */public class EventPublisherServlet extends javax.servlet.http.HttpServlet      implements javax.servlet.Servlet {  public static final long serialVersionUID = 1;  /**   * The session attribute in which to store the AuthSub token.  The   * AuthSub token, after being upgraded from a single-use to a session token,   * is held between the requests using the servlet container's session    * management capability.   */  public static final String SESSION_ATTR_SS_AUTH_TOKEN = "ssAuthSubToken";  /**   * Names of other session attributes   */  public static final String SESSION_ATTR_SS_CELL_FEED = "ssCellFeed";  public static final String SESSION_ATTR_FIELD_MAP = "fieldMap";  public static final String SESSION_ATTR_EVENTS_TO_PUBLISH = "eventsToPublish";  private Configuration config;    public EventPublisherServlet() throws Exception {    super();    config = new PropertiesConfiguration("EventPublisher.properties");  }    private String getCurrentUrl(HttpServletRequest request)       throws MalformedURLException {    URL currentUrl = new URL(request.getScheme(),        request.getServerName(),         request.getServerPort(),        request.getRequestURI() );    return currentUrl.toString();  }  /**   * Save AuthSubToken into session   *    * @param request The request    * @param response The response    */   private void processAcceptAuthSubToken(HttpServletRequest request,         HttpServletResponse response) throws ServletException, IOException {    /*     * Request is caused by a user being redirected back from AuthSub login     */    if (request.getParameter("token") != null ) {      EventPublisher ep = new EventPublisher();      try {        ep.setSsAuthSubToken(request.getParameter("token"), true);        request.getSession().setAttribute(SESSION_ATTR_SS_AUTH_TOKEN,             ep.getSsAuthSubToken());        /*         * Redirect to clear the token from the URL and list available          * spreadsheets.         */        response.sendRedirect("?action=outputSsList");      } catch (EPAuthenticationException e) {        System.err.println("Authentication exception: " + e.getMessage());        }    }  }  /**   * Default action - output intro page    *   * @param request The request    * @param response The response    */  private void processOutputIntroPage(HttpServletRequest request,         HttpServletResponse response) throws ServletException, IOException {    String ssAuthUrl = EventPublisher.getSsAuthSubUrl(        getCurrentUrl(request) + "?action=acceptAuthSubToken" );    request.setAttribute("ssAuthUrl", ssAuthUrl);    RequestDispatcher dispatcher =         getServletContext().getRequestDispatcher(        "/WEB-INF/jsp/outputIntroPage.jsp");    dispatcher.forward(request, response);  }  /**   * Output list of spreadsheets owned by authenticated account    *   * @param request The request    * @param response The response    */  private void processOutputSsList(HttpServletRequest request,         HttpServletResponse response) throws ServletException, IOException {    EventPublisher ep = new EventPublisher();    try {      ep.setSsAuthSubToken(        (String)request.getSession().getAttribute(SESSION_ATTR_SS_AUTH_TOKEN),         false);      request.setAttribute("ssList", ep.getSsList());    } catch (EPAuthenticationException e) {      System.err.println("Authentication exception: " + e.getMessage());    }    RequestDispatcher dispatcher =         getServletContext().getRequestDispatcher(        "/WEB-INF/jsp/outputSsList.jsp");    dispatcher.forward(request, response);  }  /**   * Output list of worksheets in chosen spreadsheet    *   * @param request The request    * @param response The response    */  private void processOutputWsList(HttpServletRequest request,         HttpServletResponse response) throws ServletException, IOException {    EventPublisher ep = new EventPublisher();    try {      ep.setSsAuthSubToken(          (String)request.getSession().getAttribute(          SESSION_ATTR_SS_AUTH_TOKEN), false);      request.setAttribute("token", ep.getSsAuthSubToken());      request.setAttribute("wsList",           ep.getWsList((String)request.getParameter("wsFeed")));    } catch (EPAuthenticationException e) {      System.err.println("Authentication exception: " + e.getMessage());      }    RequestDispatcher dispatcher =         getServletContext().getRequestDispatcher(        "/WEB-INF/jsp/outputWsList.jsp");    dispatcher.forward(request, response);  }  /**   * Output list of columns in chosen worksheet   *   * @param request The request    * @param response The response    */  private void processOutputColumnList(HttpServletRequest request,         HttpServletResponse response) throws ServletException, IOException {    EventPublisher ep = new EventPublisher();    try {      ep.setSsAuthSubToken(          (String)request.getSession().getAttribute(SESSION_ATTR_SS_AUTH_TOKEN),           false);      request.setAttribute("token", ep.getSsAuthSubToken());      request.setAttribute("columnList",           ep.getColumnList((String)request.getParameter("cellFeed")));      request.getSession().setAttribute(SESSION_ATTR_SS_CELL_FEED,           (String)request.getParameter("cellFeed"));    } catch (EPAuthenticationException e) {      System.err.println("Authentication exception: " + e.getMessage());      }    RequestDispatcher dispatcher =         getServletContext().getRequestDispatcher(        "/WEB-INF/jsp/outputColumnList.jsp");    dispatcher.forward(request, response);  }  /**   * Lists events to be published and also sets the custom field map.   *   * @param request The request    * @param response The response    */  private void processListEvents(HttpServletRequest request,        HttpServletResponse response) throws ServletException, IOException {    EventPublisher ep = new EventPublisher();    /*     * Set the EventPublisher's list feed     */    ep.setSsUrl(        ((String)request.getSession().getAttribute(        SESSION_ATTR_SS_CELL_FEED)).replace("cells","list"));        if (request.getParameter("fdTitle") != null) {      SpreadsheetCustomFieldMap fieldMap = new SpreadsheetCustomFieldMap(          (String)request.getParameter("fdTitle"),          (String)request.getParameter("fdDescription"),          (String)request.getParameter("fdStartDate"),          (String)request.getParameter("fdEndDate"),          (String)request.getParameter("fdLocation"),          (String)request.getParameter("fdWebSite"),          (String)request.getParameter("fdCalendarUrl"),          (String)request.getParameter("fdBaseUrl"));      ep.setFieldMap(fieldMap);      request.getSession().setAttribute(SESSION_ATTR_FIELD_MAP, fieldMap);    } else {      ep.setFieldMap(          (SpreadsheetCustomFieldMap)          request.getSession().getAttribute(SESSION_ATTR_FIELD_MAP));    }        try {      ep.setSsAuthSubToken(          (String)request.getSession().getAttribute(SESSION_ATTR_SS_AUTH_TOKEN),          false);      List<Event> listEvents = ep.getEventsFromSpreadsheet();        request.setAttribute("events", listEvents);        request.getSession().setAttribute(SESSION_ATTR_EVENTS_TO_PUBLISH,             listEvents);      javax.servlet.RequestDispatcher dispatcher =           getServletContext().getRequestDispatcher(          "/WEB-INF/jsp/outputEventList.jsp");      dispatcher.forward(request, response);    } catch (EPAuthenticationException e) {      System.err.println("Authentication exception: " + e.getMessage());      }  }  /**   * Publish all events to Calendar and/or Base    *   * @param request The request    * @param response The response    */  @SuppressWarnings("unchecked")  private void processPublishEvents(HttpServletRequest request,        HttpServletResponse response) throws ServletException, IOException {    EventPublisher ep = new EventPublisher();    ep.setFieldMap((SpreadsheetCustomFieldMap)        request.getSession().getAttribute(SESSION_ATTR_FIELD_MAP));    try {      ep.setSsAuthSubToken(          (String)request.getSession().getAttribute(SESSION_ATTR_SS_AUTH_TOKEN),          false);    } catch (EPAuthenticationException e) {      System.err.println("Authentication exception: " + e.getMessage());      }    LinkedList<Event> eventList =         (LinkedList<Event>)request.getSession().getAttribute(        SESSION_ATTR_EVENTS_TO_PUBLISH);    if (request.getParameter("calendar") != null &&        "checked".equals(request.getParameter("calendar"))) {      String calUsername = config.getString("calendar.username");      String calPassword = config.getString("calendar.password");      String calUrl = config.getString("calendar.url");      ep.setCalUsernamePassword(calUsername, calPassword);      ep.setCalUrl(calUrl);      ep.publishEventsToCalendar(eventList);    }    if (request.getParameter("base") != null &&        "checked".equals(request.getParameter("base"))) {      String baseUsername = config.getString("gbase.username");      String basePassword = config.getString("gbase.password");      ep.setBaseUsernamePassword(baseUsername, basePassword);      ep.publishEventsToBase(eventList);    }    javax.servlet.RequestDispatcher dispatcher =         getServletContext().getRequestDispatcher(        "/WEB-INF/jsp/outputPublishingResults.jsp");    dispatcher.forward(request, response);  }  /**    * Process all requests to this servlet   *   * @param request The request    * @param response The response    */  protected void doPost(HttpServletRequest request,       HttpServletResponse response) throws ServletException, IOException {    /*      * Determine action attempted     */    String action = (request.getParameter("action"))==null?        "outputIntroPage":request.getParameter("action");    if ("outputIntroPage".equals(action)) {      processOutputIntroPage(request, response);    } else if ("acceptAuthSubToken".equals(action)) {      processAcceptAuthSubToken(request, response);    } else if ("outputSsList".equals(action)) {      processOutputSsList(request, response);    } else if ("outputWsList".equals(action)) {      processOutputWsList(request, response);    } else if ("outputColumnList".equals(action)) {      processOutputColumnList(request, response);    } else if ("listEvents".equals(action)) {      processListEvents(request, response);    } else if ("publish".equals(action)) {      processPublishEvents(request, response);    }  }     /**    * Process GET requests by calling the doPost method    *   * @param request The request    * @param response The response    */  protected void doGet(HttpServletRequest request, HttpServletResponse response)      throws ServletException, IOException {    doPost(request, response);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -