org.remus.marketplace.controller.admin.MarketAdminController.java Source code

Java tutorial

Introduction

Here is the source code for org.remus.marketplace.controller.admin.MarketAdminController.java

Source

/*******************************************************************************
 * Copyright (c) 2010 Tom Seidel, Remus Software
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 *
 * Contributors:
 *     Tom Seidel - initial API and implementation
 *******************************************************************************/
package org.remus.marketplace.controller.admin;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.remus.marketplace.dao.AdvancedCriteria;
import org.remus.marketplace.dao.gen.CategoryDao;
import org.remus.marketplace.dao.gen.MarketDao;
import org.remus.marketplace.dao.gen.NodeDao;
import org.remus.marketplace.dao.gen.PlatformDao;
import org.remus.marketplace.entities.Category;
import org.remus.marketplace.entities.Market;
import org.remus.marketplace.entities.Node;
import org.remus.marketplace.entities.Platform;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

/**
 * @author Tom Seidel <tom.seidel@remus-software.org>
 */
public class MarketAdminController implements Controller {

    MarketDao marketDao;

    public void setMarketDao(MarketDao marketDao) {
        this.marketDao = marketDao;
    }

    private NodeDao nodeDao;

    public void setNodeDao(NodeDao nodeDao) {
        this.nodeDao = nodeDao;
    }

    private CategoryDao categoryDao;

    public void setCategoryDao(CategoryDao categoryDao) {
        this.categoryDao = categoryDao;
    }

    private PlatformDao platformDao;

    public void setPlatformDao(PlatformDao platformDao) {
        this.platformDao = platformDao;
    }

    private String serverPrefix;

    public void setServerPrefix(String serverPrefix) {
        this.serverPrefix = serverPrefix;
    }

    /*
     * (non-Javadoc)
     * 
     * @see
     * org.springframework.web.servlet.mvc.Controller#handleRequest(javax.servlet
     * .http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
     */
    @Override
    public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {

        List<Market> find = marketDao.find(AdvancedCriteria.EMPTY_READONLY_INSTANCE);

        List<Object> query = nodeDao.query(new AdvancedCriteria()
                .setProjection(Projections.projectionList().add(Projections.groupProperty(Node.ID), "cat_node")
                        .add(Projections.alias(Projections.rowCount(), "catCount")))
                .addSubCriteria(new AdvancedCriteria().setAssosication(Node.CATEGORIES)));

        List<Node> orphans = new ArrayList<Node>();
        List<Integer> nonOrphan = new ArrayList<Integer>();
        for (Object object : query) {
            nonOrphan.add((Integer) ((Object[]) object)[0]);
        }
        if (nonOrphan.size() == 0) {
            orphans = nodeDao.find(AdvancedCriteria.EMPTY_READONLY_INSTANCE);
        } else {
            orphans = nodeDao.find(
                    new AdvancedCriteria().addRestriction(Restrictions.not(Restrictions.in(Node.ID, nonOrphan))));
        }
        List<Category> categories = categoryDao.find(AdvancedCriteria.EMPTY_READONLY_INSTANCE);

        List<Platform> platforms = platformDao.find(AdvancedCriteria.EMPTY_READONLY_INSTANCE);

        List<Node> nodes = nodeDao.find(AdvancedCriteria.EMPTY_READONLY_INSTANCE);

        Map<String, Object> response = new HashMap<String, Object>();
        response.put("markets", find);
        response.put("orphans", orphans);
        response.put("platforms", platforms);
        response.put("categories", categories);
        response.put("solutions", nodes);

        return new ModelAndView("admin/markets", response);

    }

}