/**
  * Process the authorization callback from an OAuth 1 identi.ca provider.
  *
  * @throws Exception
  */
 @RequestMapping(value = "/social/back/plurk", method = RequestMethod.GET, params = "oauth_token")
 public String oauth1Callback(
     @RequestParam("oauth_token") String token,
     @RequestParam(value = "oauth_verifier", required = false) String verifier,
     HttpServletRequest httpRequest,
     WebRequest request,
     final UserAccount account)
     throws Exception {
   OAuth1Token accessToken;
   try {
     Assert.notNull(httpRequest);
     accessToken = auth1RequestProvider.getAccessToken(verifier, request);
     log.debug("OAUTH 1 ACCESS TOKEN:{ " + accessToken.toString());
     this.checkOAuth1SocialAccount(SocialProvider.PLURK, accessToken);
   } catch (EnMeOAuthSecurityException e1) {
     RequestSessionMap.setErrorMessage(getMessage("errorOauth", httpRequest, null));
     e1.printStackTrace();
   } catch (EnMeExistPreviousConnectionException e1) {
     RequestSessionMap.setErrorMessage(getMessage("social.repeated.account", httpRequest, null));
     e1.printStackTrace();
   } catch (Exception e) {
     RequestSessionMap.setErrorMessage(getMessage("errorOauth", httpRequest, null));
     e.printStackTrace();
   }
   return this.redirect
       + "#provider="
       + SocialProvider.PLURK.toString().toLowerCase()
       + "&refresh=true&successful=true";
 }
 /* (non-Javadoc)
  * @see org.springframework.security.web.authentication.AuthenticationFailureHandler#onAuthenticationFailure(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, org.springframework.security.core.AuthenticationException)
  */
 @Override
 public void onAuthenticationFailure(
     HttpServletRequest request, HttpServletResponse response, AuthenticationException exception)
     throws IOException, ServletException {
   RequestSessionMap.getCurrent(request).put("signinError", true);
   response.sendRedirect(response.encodeRedirectURL(request.getContextPath() + "/user/signin"));
 }
 /*
  * (non-Javadoc)
  *
  * @see org.encuestame.core.service.SetupOperations#removeTables()
  */
 @Override
 public Boolean removeTables() {
      try {
          this.install.dropAll();
          return true;
      } catch (Exception e) {
          e.printStackTrace();
          log.fatal(e);
          RequestSessionMap.setErrorMessage(e.getMessage());
          return false;
      }
 }
 /**
  * @param error
  * @param httpRequest
  * @param request
  * @return
  * @throws Exception
  */
 @RequestMapping(
     value = "/social/back/plurk",
     method = RequestMethod.GET,
     params = "oauth_problem")
 public String oauth1Callback(
     @RequestParam("oauth_problem") String error,
     HttpServletRequest httpRequest,
     WebRequest request)
     throws Exception {
   log.fatal("OAuth Error:{" + error);
   RequestSessionMap.setErrorMessage(getMessage("errorOauth", httpRequest, null));
   return "redirect:/settings/social";
 }
 /**
  * @throws EnmeFailOperation
  * @throws IOException
  *
  */
 @Override
 public String installDatabase() {
     log.debug("installDatabase.....");
     try {
         this.install.initializeDatabase(TypeDatabase
                 .getTypeDatabaseByString(this.getTypeDatabase()));
     } catch (Exception e) {
         log.fatal(e);
         RequestSessionMap.setErrorMessage(e.getMessage());
         e.printStackTrace();
         return "fail";
     }
     return "ok"; //TODO: replace by enum in the future.
 }
 /**
  * @param scope
  * @param request
  * @param httpRequest
  * @return
  */
 @RequestMapping(value = "/connect/plurk", method = RequestMethod.POST)
 public String connectIdenticaSocialAccount(
     @RequestParam(required = false) String scope,
     WebRequest request,
     HttpServletRequest httpRequest) {
   try {
     return auth1RequestProvider.buildOAuth1AuthorizeUrl(scope, request, httpRequest);
   } catch (EnMeOAuthSecurityException e) {
     log.error(e);
     log.fatal("OAuth Exception:{" + e.getMessage());
     RequestSessionMap.setErrorMessage(getMessage("social.bad.credentials", httpRequest, null));
     return "redirect:/settings/social";
   }
 }
 /*
  * (non-Javadoc)
  * @see org.encuestame.core.service.SetupOperations#demoInstall()
  */
 @Override
 public void demoInstall() {
     try {
         this.csvParser.executeCSVDemoInstall(EnMePlaceHolderConfigurer
                 .getIntegerProperty("demo.votes.by.tppoll"),
                 EnMePlaceHolderConfigurer
                 .getIntegerProperty("demo.votes.by.poll"),
                 EnMePlaceHolderConfigurer
                 .getIntegerProperty("demo.votes.by.survey"));
     } catch (Exception e) {
         e.printStackTrace();
         log.fatal(e);
         RequestSessionMap.setErrorMessage(e.getMessage());
     }
 }