Package com.multysite.controller

Source Code of com.multysite.controller.TestServlet

package com.multysite.controller;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.channels.Channels;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.appengine.api.blobstore.BlobKey;
import com.google.appengine.api.blobstore.BlobstoreService;
import com.google.appengine.api.blobstore.BlobstoreServiceFactory;
import com.google.appengine.api.files.AppEngineFile;
import com.google.appengine.api.files.FileReadChannel;
import com.google.appengine.api.files.FileService;
import com.google.appengine.api.files.FileServiceFactory;
import com.multysite.entity.admin.ApplicationConfig;
import com.multysite.entity.admin.ApplicationTemplate;
import com.multysite.model.admin.ApplicationTemplateModel;
import com.multysite.quercus.CompileScriptEngine;

@SuppressWarnings("serial")
public class TestServlet extends HttpServlet {

  private static final Logger log = Logger.getLogger(TestServlet.class
      .getName());

  public void doGet(HttpServletRequest req, HttpServletResponse resp)
      throws IOException {
    ApplicationTemplate template = (ApplicationTemplate) req
        .getAttribute("template");
    try {
      ByteArrayOutputStream baos = new ByteArrayOutputStream();

      ZipOutputStream zos = new ZipOutputStream(baos);
      zos.putNextEntry(new ZipEntry("home.php"));
      zos.write(template.getHome().getBytes());

      zos.putNextEntry(new ZipEntry("category.php"));
      zos.write(template.getCategory().getBytes());

      zos.putNextEntry(new ZipEntry("tag.php"));
      zos.write(template.getTag().getBytes());

      zos.putNextEntry(new ZipEntry("search.php"));
      zos.write(template.getSearch().getBytes());

      zos.putNextEntry(new ZipEntry("style.css"));
      zos.write(template.getCss().getBytes());

      zos.putNextEntry(new ZipEntry("javascript.js"));
      zos.write(template.getJs().getBytes());

      zos.closeEntry();
      zos.flush();

      baos.flush();
      zos.close();
      baos.close();

      byte[] zip = baos.toByteArray();

      ServletOutputStream sos = resp.getOutputStream();
      resp.setContentType("application/zip");
      resp.setHeader("Content-Disposition",
          "attachment; filename=\"template_" + template.getId()
              + ".ZIP\"");

      sos.write(zip);
      sos.flush();
    } catch (Exception e) {
      e.printStackTrace(System.err);
      resp.getWriter().println("Error");
    }
  }

  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    try {
      ApplicationTemplate template = (ApplicationTemplate) req
          .getAttribute("template");
      ApplicationConfig config = (ApplicationConfig) req
          .getAttribute("config");
      log.warning("--------do post from test servlet---------");
      BlobstoreService blobService = BlobstoreServiceFactory
          .getBlobstoreService();
      byte b[] = null;
      try {

        Map<String, List<BlobKey>> blobs = blobService.getUploads(req);
        List<BlobKey> blobKeys = blobs.get("template");
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        if (blobKeys != null && blobKeys.size() > 0) {
          for (BlobKey blobKey : blobKeys) {
            b = blobService.fetchData(blobKey, 0, 20);
            if (b.length > 0) {
              FileService fileService = FileServiceFactory
                  .getFileService();
              AppEngineFile file = fileService
                  .getBlobFile(blobKey);
              FileReadChannel readChannel = fileService
                  .openReadChannel(file, false);
              InputStream is = Channels
                  .newInputStream(readChannel);
              int nRead;
              byte[] buffer = new byte[10240];
              while ((nRead = is.read(buffer, 0, buffer.length)) != -1) {
                bos.write(buffer, 0, nRead);
              }
              bos.flush();
            }
          }
          ByteArrayInputStream bais = new ByteArrayInputStream(
              bos.toByteArray());
          ZipInputStream zis = new ZipInputStream(bais);
          ZipEntry entry;
          InputStreamReader isr = new InputStreamReader(zis);

          while ((entry = zis.getNextEntry()) != null) {
            log.warning("-----------------size " + entry.getSize());

            char[] buffer = new char[10240];
            StringBuilder strTemp = new StringBuilder();
            int length;
            while ((length = isr.read(buffer, 0, buffer.length)) != -1) {
              strTemp.append(buffer, 0, length);
            }

            if (entry.toString().contains("home.php")) {
              template.setHome(strTemp.toString());
              log.warning("--------home ok---------");
            } else if (entry.toString().contains("category.php")) {
              template.setCategory(strTemp.toString());
              log.warning("--------category ok---------");
            } else if (entry.toString().contains("tag.php")) {
              template.setTag(strTemp.toString());
              log.warning("--------tag ok---------");
            } else if (entry.toString().contains("search.php")) {
              template.setSearch(strTemp.toString());
              log.warning("--------search ok---------");
            } else if (entry.toString().contains("style.css")) {
              template.setCss(strTemp.toString());
              log.warning("--------css ok---------");
            } else if (entry.toString().contains("javascript.js")) {
              template.setJs(strTemp.toString());
              log.warning("--------js ok---------");
            } else {
              log.warning("--------not ok---------"
                  + entry.toString());
            }
            // read the contents into the buffer

          }
          ApplicationTemplateModel.insert(config.getApplicationId(),
              template);
          CompileScriptEngine.removeCache();
          resp.getWriter().println("Ok babe !");

        }
      } catch (Exception e) {
        e.printStackTrace(System.err);
        resp.getWriter().println("Error when upload template !");
      }

    } catch (Exception e) {
      e.printStackTrace(System.err);
      resp.getWriter().println("Error when upload template !");
    }
  }
}
TOP

Related Classes of com.multysite.controller.TestServlet

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.