sernet.verinice.service.DummyReportDepositService.java Source code

Java tutorial

Introduction

Here is the source code for sernet.verinice.service.DummyReportDepositService.java

Source

/*******************************************************************************
 * Copyright (c) 2014 Sebastian Hagedorn <sh@sernet.de>.
 * This program is free software: you can redistribute it and/or 
 * modify it under the terms of the GNU General Public License 
 * as published by the Free Software Foundation, either version 3 
 * of the License, or (at your option) any later version.
 *     This program is distributed in the hope that it will be useful,    
 * but WITHOUT ANY WARRANTY; without even the implied warranty 
 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
 * See the GNU General Public License for more details.
 *     You should have received a copy of the GNU General Public 
 * License along with this program. 
 * If not, see <http://www.gnu.org/licenses/>.
 * 
 * Contributors:
 *     Sebastian Hagedorn <sh@sernet.de> - initial API and implementation
 ******************************************************************************/
package sernet.verinice.service;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOCase;
import org.apache.commons.io.filefilter.IOFileFilter;
import org.apache.commons.io.filefilter.SuffixFileFilter;
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.Path;

import sernet.gs.server.Activator;
import sernet.gs.service.AbstractReportTemplateService;
import sernet.verinice.interfaces.IReportDepositService;
import sernet.verinice.interfaces.ReportTemplateServiceException;
import sernet.verinice.model.report.ReportTemplate;
import sernet.verinice.model.report.ReportTemplateMetaData;

public class DummyReportDepositService extends AbstractReportTemplateService implements IReportDepositService {

    private static final Logger LOG = Logger.getLogger(DummyReportDepositService.class);

    @Override
    public void add(ReportTemplateMetaData metadata, byte[] file, String locale) {
    }

    @Override
    public void remove(ReportTemplateMetaData metadata, String locale) {
    }

    @Override
    public Set<ReportTemplateMetaData> getServerReportTemplates(String locale)
            throws ReportTemplateServiceException {
        return getReportTemplates(getServerRptDesigns(), locale);
    }

    @Override
    public String getDepositLocation() {
        return getReportDepositPath();
    }

    @Override
    public void update(ReportTemplateMetaData metadata, String locale) {
    }

    @Override
    public ReportTemplate getReportTemplate(ReportTemplateMetaData metadata, String locale)
            throws ReportTemplateServiceException {
        try {

            String filePath = getReportDepositPath() + File.separatorChar + metadata.getFilename();
            byte[] rptdesign = FileUtils.readFileToByteArray(new File(filePath));
            Map<String, byte[]> propertiesFile = getPropertiesFiles(metadata.getFilename());
            return new ReportTemplate(metadata, rptdesign, propertiesFile);

        } catch (IOException ex) {
            handleException("error while fetching reports in standalone mode", ex);
        }

        return null;
    }

    @SuppressWarnings("unchecked")
    private String[] getServerRptDesigns() {
        List<String> list = new ArrayList<String>(0);
        // // DirFilter = null means no subdirectories
        IOFileFilter filter = new SuffixFileFilter("rptdesign", IOCase.INSENSITIVE);
        Iterator<File> iter = FileUtils.iterateFiles(new File(getReportDepositPath()), filter, null);
        while (iter.hasNext()) {
            list.add(iter.next().getAbsolutePath());
        }
        return list.toArray(new String[list.size()]);
    }

    public String getReportDepositPath() {
        try {
            URL url = FileLocator.find(Activator.getDefault().getBundle(),
                    new Path("/WebContent/WEB-INF/reportDeposit/"), null);
            URL fileUrl = FileLocator.toFileURL(url);
            return FileUtils.toFile(fileUrl).getAbsolutePath();
        } catch (IOException ex) {
            LOG.error("jar file with reports not found", ex);
        }

        return null;
    }

    @Override
    public boolean isHandeledByReportDeposit() {
        return true;
    }

    @Override
    public String getTemplateDirectory() {
        return getReportDepositPath();
    }

}