org.devgateway.eudevfin.sheetexp.ui.SpreadsheetResource.java Source code

Java tutorial

Introduction

Here is the source code for org.devgateway.eudevfin.sheetexp.ui.SpreadsheetResource.java

Source

/*******************************************************************************
 * Copyright (c) 2014 Development Gateway.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the GNU Public License v3.0
 * which accompanies this distribution, and is available at
 * http://www.gnu.org/licenses/gpl.html
 *******************************************************************************/

package org.devgateway.eudevfin.sheetexp.ui;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.wicket.request.Response;
import org.apache.wicket.request.resource.AbstractResource;
import org.devgateway.eudevfin.financial.CustomFinancialTransaction;
import org.devgateway.eudevfin.financial.service.CustomFinancialTransactionService;
import org.devgateway.eudevfin.sheetexp.dto.EntityWrapperInterface;
import org.devgateway.eudevfin.sheetexp.dto.HeaderEntityWrapper;
import org.devgateway.eudevfin.sheetexp.integration.api.SpreadsheetTransformerService;
import org.devgateway.eudevfin.sheetexp.util.EntityWrapperListHelper;
import org.devgateway.eudevfin.sheetexp.util.MetadataConstants;
import org.joda.time.LocalDateTime;

public class SpreadsheetResource extends AbstractResource {

    /**
     *
     */
    private static final long serialVersionUID = 1204610887693645674L;
    private final SpreadsheetTransformerService transformerService;
    private final CustomFinancialTransactionService txService;
    private final Integer year;

    public SpreadsheetResource(final Integer year, final SpreadsheetTransformerService transformerService,
            final CustomFinancialTransactionService txService) {
        super();
        this.transformerService = transformerService;
        this.txService = txService;
        this.year = year;

    }

    @Override
    public ResourceResponse newResourceResponse(final Attributes attributes) {
        //final PageParameters pageParameters = attributes.getParameters();

        final ResourceResponse resourceResponse = new ResourceResponse();

        resourceResponse.setContentType("application/vnd.ms-excel");
        resourceResponse.setFileName("fss.xls");

        // if (resourceResponse.dataNeedsToBeWritten(attributes)){

        resourceResponse.setWriteCallback(new WriteCallback() {

            @Override
            public void writeData(final Attributes attributes) throws IOException {
                final Response response = attributes.getResponse();

                /* TEST DATA */
                // final List<FinancialTransaction> txList = new ArrayList<FinancialTransaction>();
                // final FinancialTransaction tx1 = new FinancialTransaction();
                // final FinancialTransaction tx2 = new FinancialTransaction();
                //
                // txList.add(tx1);
                // txList.add(tx2);
                //
                // final LocalDateTime now = LocalDateTime.now();
                // final HeaderEntityWrapper<String> header = new HeaderEntityWrapper<String>(MetadataConstants.FSS_REPORT_TYPE, now);
                //
                // final List<EntityWrapperInterface<?>> finalList = new ArrayList<EntityWrapperInterface<?>>();
                // finalList.add(header);
                // new EntityWrapperListHelper<FinancialTransaction>(txList, MetadataConstants.FSS_REPORT_TYPE,
                // now).addToWrappedList(finalList);

                final LocalDateTime now = LocalDateTime.now();
                final HeaderEntityWrapper<String> header = new HeaderEntityWrapper<String>(
                        MetadataConstants.FSS_REPORT_TYPE, now, "en");

                final List<EntityWrapperInterface<?>> finalList = new ArrayList<EntityWrapperInterface<?>>();
                finalList.add(header);

                final List<CustomFinancialTransaction> txList = SpreadsheetResource.this.txService
                        .findByReportingYearAndDraftFalse(SpreadsheetResource.this.year);
                new EntityWrapperListHelper<CustomFinancialTransaction>(txList, MetadataConstants.FSS_REPORT_TYPE,
                        now, "en").addToWrappedList(finalList);

                SpreadsheetResource.this.transformerService.createSpreadsheetOnStream(finalList, finalList.size(),
                        response.getOutputStream(), "Sheet1");

            }

        });
        return resourceResponse;
    }

}