org.openmeetings.servlet.outputhandler.Export.java Source code

Java tutorial

Introduction

Here is the source code for org.openmeetings.servlet.outputhandler.Export.java

Source

/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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 org.openmeetings.servlet.outputhandler;

import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

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

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.openmeetings.app.OpenmeetingsVariables;
import org.openmeetings.app.data.basic.AuthLevelmanagement;
import org.openmeetings.app.data.basic.Sessionmanagement;
import org.openmeetings.app.data.user.Organisationmanagement;
import org.openmeetings.app.data.user.Usermanagement;
import org.openmeetings.app.data.user.dao.UsersDaoImpl;
import org.openmeetings.app.persistence.beans.domain.Organisation;
import org.openmeetings.app.persistence.beans.domain.Organisation_Users;
import org.openmeetings.app.persistence.beans.user.Users;
import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;
import org.openmeetings.utils.math.CalendarPatterns;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

/**
 * 
 * @author sebastianwagner
 * 
 */
public class Export extends HttpServlet {
    private static final long serialVersionUID = 8527093674786692472L;
    private static final Logger log = Red5LoggerFactory.getLogger(Export.class,
            OpenmeetingsVariables.webAppRootKey);

    public Sessionmanagement getSessionManagement() {
        try {
            if (ScopeApplicationAdapter.initComplete) {
                ApplicationContext context = WebApplicationContextUtils
                        .getWebApplicationContext(getServletContext());
                return (Sessionmanagement) context.getBean("sessionManagement");
            }
        } catch (Exception err) {
            log.error("[getSessionManagement]", err);
        }
        return null;
    }

    public Usermanagement getUserManagement() {
        try {
            if (ScopeApplicationAdapter.initComplete) {
                ApplicationContext context = WebApplicationContextUtils
                        .getWebApplicationContext(getServletContext());
                return (Usermanagement) context.getBean("userManagement");
            }
        } catch (Exception err) {
            log.error("[getUserManagement]", err);
        }
        return null;
    }

    public Organisationmanagement getOrganisationmanagement() {
        try {
            if (ScopeApplicationAdapter.initComplete) {
                ApplicationContext context = WebApplicationContextUtils
                        .getWebApplicationContext(getServletContext());
                return (Organisationmanagement) context.getBean("organisationmanagement");
            }
        } catch (Exception err) {
            log.error("[getOrganisationmanagement]", err);
        }
        return null;
    }

    public UsersDaoImpl getUsersDao() {
        try {
            if (ScopeApplicationAdapter.initComplete) {
                ApplicationContext context = WebApplicationContextUtils
                        .getWebApplicationContext(getServletContext());
                return (UsersDaoImpl) context.getBean("usersDao");
            }
        } catch (Exception err) {
            log.error("[getUsersDao]", err);
        }
        return null;
    }

    public AuthLevelmanagement getAuthLevelManagement() {
        try {
            if (ScopeApplicationAdapter.initComplete) {
                ApplicationContext context = WebApplicationContextUtils
                        .getWebApplicationContext(getServletContext());
                return (AuthLevelmanagement) context.getBean("authLevelManagement");
            }
        } catch (Exception err) {
            log.error("[getAuthLevelManagement]", err);
        }
        return null;
    }

    /*
     * (non-Javadoc)
     * 
     * @see
     * javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest
     * , javax.servlet.http.HttpServletResponse)
     */
    @Override
    protected void service(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
            throws ServletException, IOException {

        try {

            if (getUserManagement() == null || getSessionManagement() == null || getUsersDao() == null) {
                return;
            }

            String sid = httpServletRequest.getParameter("sid");
            if (sid == null) {
                sid = "default";
            }
            System.out.println("sid: " + sid);

            Long users_id = getSessionManagement().checkSession(sid);
            Long user_level = getUserManagement().getUserLevelByID(users_id);

            System.out.println("users_id: " + users_id);
            System.out.println("user_level: " + user_level);

            // if (user_level!=null && user_level > 0) {
            if (getAuthLevelManagement().checkUserLevel(user_level)) {

                String moduleName = httpServletRequest.getParameter("moduleName");
                if (moduleName == null) {
                    moduleName = "moduleName";
                }
                System.out.println("moduleName: " + moduleName);

                if (moduleName.equals("users") || moduleName.equals("userorganisations")) {
                    String organisation = httpServletRequest.getParameter("organisation");
                    if (organisation == null) {
                        organisation = "0";
                    }
                    Long organisation_id = Long.valueOf(organisation).longValue();
                    System.out.println("organisation_id: " + organisation_id);

                    List<Users> uList = null;
                    String downloadName = "users";
                    if (moduleName.equals("userorganisations")) {
                        Organisation orga = getOrganisationmanagement().getOrganisationById(organisation_id);
                        downloadName += "_" + orga.getName();
                        uList = getOrganisationmanagement().getUsersByOrganisationId(organisation_id);
                    } else {
                        uList = getUsersDao().getAllUsers();
                    }

                    if (uList != null) {
                        Document doc = this.createDocument(uList);

                        httpServletResponse.reset();
                        httpServletResponse.resetBuffer();
                        OutputStream out = httpServletResponse.getOutputStream();
                        httpServletResponse.setContentType("APPLICATION/OCTET-STREAM");
                        httpServletResponse.setHeader("Content-Disposition",
                                "attachment; filename=\"" + downloadName + ".xml\"");
                        // httpServletResponse.setHeader("Content-Length", ""+
                        // rf.length());

                        this.serializetoXML(out, "UTF-8", doc);

                        out.flush();
                        out.close();
                    }

                }
            } else {
                System.out.println("ERROR LangExport: not authorized FileDownload " + (new Date()));
            }
        } catch (Exception er) {
            log.error("ERROR ", er);
            System.out.println("Error exporting: " + er);
            er.printStackTrace();
        }
    }

    public Document createDocument(List<Users> uList) throws Exception {
        Document document = DocumentHelper.createDocument();
        document.setXMLEncoding("UTF-8");
        document.addComment("###############################################\n"
                + "This File is auto-generated by the Backup Tool \n"
                + "you should use the BackupPanel to modify or change this file \n"
                + "see http://incubator.apache.org/openmeetings/Upgrade.html for Details \n"
                + "###############################################");

        Element root = document.addElement("root");

        Element users = root.addElement("users");

        for (Iterator<Users> it = uList.iterator(); it.hasNext();) {
            Users u = it.next();

            Element user = users.addElement("user");

            user.addElement("age").setText(CalendarPatterns.getDateByMiliSeconds(u.getAge()));
            user.addElement("availible").setText(u.getAvailible().toString());
            user.addElement("deleted").setText(u.getDeleted());
            user.addElement("firstname").setText(u.getFirstname());
            user.addElement("lastname").setText(u.getLastname());
            user.addElement("login").setText(u.getLogin());
            user.addElement("pass").setText(u.getPassword());

            String pictureuri = u.getPictureuri();
            if (pictureuri != null)
                user.addElement("pictureuri").setText(pictureuri);
            else
                user.addElement("pictureuri").setText("");

            if (u.getLanguage_id() != null)
                user.addElement("language_id").setText(u.getLanguage_id().toString());
            else
                user.addElement("language_id").setText("");

            user.addElement("status").setText(u.getStatus().toString());
            user.addElement("regdate").setText(CalendarPatterns.getDateWithTimeByMiliSeconds(u.getRegdate()));
            user.addElement("title_id").setText(u.getTitle_id().toString());
            user.addElement("level_id").setText(u.getLevel_id().toString());

            user.addElement("additionalname").setText(u.getAdresses().getAdditionalname());
            user.addElement("comment").setText(u.getAdresses().getComment());
            // A User can not have a deleted Adress, you cannot delete the
            // Adress of an User
            // String deleted = u.getAdresses().getDeleted()
            // Phone Number not done yet
            user.addElement("fax").setText(u.getAdresses().getFax());
            user.addElement("state_id").setText(u.getAdresses().getStates().getState_id().toString());
            user.addElement("street").setText(u.getAdresses().getStreet());
            user.addElement("town").setText(u.getAdresses().getTown());
            user.addElement("zip").setText(u.getAdresses().getZip());

            // Email and Phone
            user.addElement("mail").setText(u.getAdresses().getEmail());
            user.addElement("phone").setText(u.getAdresses().getPhone());

            Element user_organisations = user.addElement("organisations");
            // List<String> organisations = new LinkedList();
            for (Iterator<Organisation_Users> iterObj = u.getOrganisation_users().iterator(); iterObj.hasNext();) {
                Organisation_Users orgUsers = iterObj.next();
                user_organisations.addElement("organisation_id")
                        .addText(orgUsers.getOrganisation().getOrganisation_id().toString());
            }

            // Not need at the moment
            // Element user_groups = user.addElement("groups");

        }

        return document;
    }

    public void serializetoXML(OutputStream out, String aEncodingScheme, Document doc) throws Exception {
        OutputFormat outformat = OutputFormat.createPrettyPrint();
        outformat.setEncoding(aEncodingScheme);
        XMLWriter writer = new XMLWriter(out, outformat);
        writer.write(doc);
        writer.flush();
    }

}