Package org.dspace.sword

Source Code of org.dspace.sword.SWORDService

/* SWORDService.java
*
* Copyright (c) 2007, Aberystwyth University
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
*  - Redistributions of source code must retain the above
*    copyright notice, this list of conditions and the
*    following disclaimer.
*
*  - Redistributions in binary form must reproduce the above copyright
*    notice, this list of conditions and the following disclaimer in
*    the documentation and/or other materials provided with the
*    distribution.
*
*  - Neither the name of the Centre for Advanced Software and
*    Intelligent Systems (CASIS) nor the names of its
*    contributors may be used to endorse or promote products derived
*    from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
* THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/

package org.dspace.sword;

import java.sql.SQLException;
import java.util.Date;
import java.text.SimpleDateFormat;

import org.apache.log4j.Logger;

import org.dspace.core.Context;
import org.dspace.content.BitstreamFormat;

import org.purl.sword.base.Deposit;

/**
* @author Richard Jones
*
* This class represents the actual sword service provided by dspace.  It
* is the central location for the authentcated contexts, the installation
* specific configuration, and the url management.
*
* It is ubiquotous in the sword implementation, and all related
* information and services should be retrived via this api
*
*/
public class SWORDService
{
  /** Log4j logging instance */
  public static Logger log = Logger.getLogger(SWORDService.class);

  /** The SWORD context of the request */
  private SWORDContext swordContext;

  /** The configuration of the sword server instance */
  private SWORDConfiguration swordConfig;

  /** The URL Generator */
  private SWORDUrlManager urlManager;

  /** a holder for the messages coming through from the implementation */
  private StringBuilder verboseDescription = new StringBuilder();

  /** is this a verbose operation */
  private boolean verbose = false;

  /** date formatter */
  private SimpleDateFormat dateFormat;

  /**
   * Construct a new service instance around the given authenticated
   * sword context
   *
   * @param sc
   */
  public SWORDService(SWORDContext sc)
  {
    this.swordContext = sc;
    this.swordConfig = new SWORDConfiguration();
    this.urlManager = new SWORDUrlManager(this.swordConfig, this.swordContext.getContext());
    dateFormat = new SimpleDateFormat("[yyyy-MM-dd HH:mm:ss.S]");
  }

  public SWORDUrlManager getUrlManager()
  {
    return urlManager;
  }

  public void setUrlManager(SWORDUrlManager urlManager)
  {
    this.urlManager = urlManager;
  }

  public SWORDContext getSwordContext()
  {
    return swordContext;
  }

  public void setSwordContext(SWORDContext swordContext)
  {
    this.swordContext = swordContext;
  }

  public SWORDConfiguration getSwordConfig()
  {
    return swordConfig;
  }

  public void setSwordConfig(SWORDConfiguration swordConfig)
  {
    this.swordConfig = swordConfig;
  }

  public Context getContext()
  {
    return this.swordContext.getContext();
  }

  public boolean isVerbose()
  {
    return verbose;
  }

  public void setVerbose(boolean verbose)
  {
    this.verbose = verbose;
  }

  public StringBuilder getVerboseDescription()
  {
    return verboseDescription;
  }

  /**
   * shortcut to registering a message with the verboseDescription
   * member variable.  This checks to see if the request is
   * verbose, meaning we don't have to do it inline and break nice
   * looking code up
   *
   * @param message
   */
  public void message(String message)
  {
    // build the processing message
    String msg = dateFormat.format(new Date()) + " " + message + "; \n\n";

    // if this is a verbose deposit, then log it
    if (this.verbose)
    {
      verboseDescription.append(msg);
    }

    // add to server logs anyway
    log.info(msg);
  }

  /**
   * Construct the most appropriate filename for the incoming deposit
   *
   * @param context
   * @param deposit
   * @param original
   * @return
   * @throws DSpaceSWORDException
   */
  public String getFilename(Context context, Deposit deposit, boolean original)
      throws DSpaceSWORDException
  {
    try
    {
      BitstreamFormat bf = BitstreamFormat.findByMIMEType(context, deposit.getContentType());
      String[] exts = null;
      if (bf != null)
      {
        exts = bf.getExtensions();
      }

      String fn = deposit.getFilename();
      if (fn == null || "".equals(fn))
      {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        fn = "sword-" + sdf.format(new Date());
        if (original)
        {
          fn = fn + ".original";
        }
        if (exts != null)
        {
          fn = fn + "." + exts[0];
        }
      }

      return fn;
    }
    catch (SQLException e)
    {
      throw new DSpaceSWORDException(e);
    }
  }

  /**
   * Get the name of the temp files that should be used
   *
   * @return
   */
  public String getTempFilename()
  {
    return "sword-" + (new Date()).getTime();
  }
}
TOP

Related Classes of org.dspace.sword.SWORDService

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.