Class MCRCompressServlet<T extends AutoCloseable>

java.lang.Object
jakarta.servlet.GenericServlet
jakarta.servlet.http.HttpServlet
org.mycore.frontend.servlets.MCRServlet
org.mycore.services.zipper.MCRCompressServlet<T>
All Implemented Interfaces:
jakarta.servlet.Servlet, jakarta.servlet.ServletConfig, Serializable
Direct Known Subclasses:
MCRTarServlet, MCRZipServlet

public abstract class MCRCompressServlet<T extends AutoCloseable> extends MCRServlet
This servlet delivers the contents of MCROjects to the client in container files (see classes extending this servlet). Read permission is required. There are three modes
  1. if id=mycoreobjectID (delivers the metadata, including all derivates)
  2. if id=derivateID (delivers all files of the derivate)
  3. if id=derivateID/directoryPath (delivers all files in the given directory of the derivate)
"id" maybe specified as HttpServletRequest.getPathInfo() or as MCRServlet.getProperty(HttpServletRequest, String).
Author:
Thomas Scheffler (yagee)
See Also:
  • Field Details

    • KEY_OBJECT_ID

      protected static String KEY_OBJECT_ID
    • KEY_PATH

      protected static String KEY_PATH
  • Constructor Details

    • MCRCompressServlet

      public MCRCompressServlet()
  • Method Details

    • think

      protected void think(MCRServletJob job) throws Exception
      Description copied from class: MCRServlet
      1st phase of doGetPost. This method has a seperate transaction. Per default id does nothing as a fallback to the old behaviour.
      Overrides:
      think in class MCRServlet
      Throws:
      Exception
      See Also:
    • render

      protected void render(MCRServletJob job, Exception ex) throws Exception
      Description copied from class: MCRServlet
      2nd phase of doGetPost This method has a seperate transaction and gets the same MCRServletJob from the first phase (think) and any exception that occurs at the first phase. By default this method calls doGetPost(MCRServletJob) as a fallback to the old behaviour.
      Overrides:
      render in class MCRServlet
      Parameters:
      job - same instance as of think(MCRServlet job)
      ex - any exception thrown by think(MCRServletJob) or transaction commit
      Throws:
      Exception - if render could not handle ex to produce a nice user page
    • getFilename

      protected String getFilename(MCRPath path)
      Constructs a path name in form of {ownerID}+'/'+{path} or {ownerID} if path is root component.
      Parameters:
      path - absolute path
    • sendCompressedDirectory

      protected abstract void sendCompressedDirectory(MCRPath file, BasicFileAttributes attrs, T container) throws IOException
      Throws:
      IOException
    • sendCompressedFile

      protected abstract void sendCompressedFile(MCRPath file, BasicFileAttributes attrs, T container) throws IOException
      Throws:
      IOException
    • sendMetadataCompressed

      protected abstract void sendMetadataCompressed(String fileName, byte[] content, long modified, T container) throws IOException
      Throws:
      IOException
    • getMimeType

      protected abstract String getMimeType()
    • getFileExtension

      protected abstract String getFileExtension()
    • createContainer

      protected abstract T createContainer(jakarta.servlet.ServletOutputStream sout, String comment)
    • disposeContainer

      protected abstract void disposeContainer(T container) throws IOException
      Throws:
      IOException