Package org.dspace.ctask.general

Source Code of org.dspace.ctask.general.ProfileFormats

/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.ctask.general;

import java.io.IOException;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

import org.dspace.content.Bitstream;
import org.dspace.content.BitstreamFormat;
import org.dspace.content.Bundle;
import org.dspace.content.DSpaceObject;
import org.dspace.content.Item;
import org.dspace.core.Context;
import org.dspace.curate.AbstractCurationTask;
import org.dspace.curate.Curator;
import org.dspace.curate.Distributive;

/**
* ProfileFormats is a task that creates a distribution table of Bitstream
* formats for it's passed object. Primarily a curation task demonstrator.
*
* @author richardrodgers
*/
@Distributive
public class ProfileFormats extends AbstractCurationTask
{
    // map of formats to occurrences
    private Map<String, Integer> fmtTable = new HashMap<String, Integer>();

    /**
     * Perform the curation task upon passed DSO
     *
     * @param dso the DSpace object
     * @throws IOException
     */
    @Override
    public int perform(DSpaceObject dso) throws IOException
    {
        fmtTable.clear();
        distribute(dso);
        formatResults();
        return Curator.CURATE_SUCCESS;
    }
   
    @Override
    protected void performItem(Item item) throws SQLException, IOException
    {
        for (Bundle bundle : item.getBundles())
        {
            for (Bitstream bs : bundle.getBitstreams())
            {
                String fmt = bs.getFormat().getShortDescription();
                Integer count = fmtTable.get(fmt);
                if (count == null)
                {
                    count = 1;
                }
                else
                {
                    count += 1;
                }
                fmtTable.put(fmt, count);
            }          
        }
    }
   
    private void formatResults() throws IOException
    {
        try
        {
            Context c = new Context();
            StringBuilder sb = new StringBuilder();
            for (String fmt : fmtTable.keySet())
            {
                BitstreamFormat bsf = BitstreamFormat.findByShortDescription(c, fmt);
                sb.append(String.format("%6d", fmtTable.get(fmt))).append(" (").
                append(bsf.getSupportLevelText().charAt(0)).append(") ").
                append(bsf.getDescription()).append("\n");
            }
            report(sb.toString());
            setResult(sb.toString());
            c.complete();
        }
        catch (SQLException sqlE)
        {
            throw new IOException(sqlE.getMessage(), sqlE);
        }
    }
}
TOP

Related Classes of org.dspace.ctask.general.ProfileFormats

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.