You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2003/06/30 10:56:04 UTC

cvs commit: cocoon-lenya/src/java/org/apache/lenya/cms/publication DocumentBuildException.java DocumentBuilder.java DefaultDocumentBuilder.java

andreas     2003/06/30 01:56:03

  Added:       src/java/org/apache/lenya/cms/publication
                        DocumentBuildException.java DocumentBuilder.java
                        DefaultDocumentBuilder.java
  Log:
  added DocumentBuilder
  
  Revision  Changes    Path
  1.1                  cocoon-lenya/src/java/org/apache/lenya/cms/publication/DocumentBuildException.java
  
  Index: DocumentBuildException.java
  ===================================================================
  /*
   * $Id
   * <License>
   * The Apache Software License
   *
   * Copyright (c) 2002 lenya. All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without modification,
   * are permitted provided that the following conditions are met:
   *
   * 1. Redistributions of source code must retain the above copyright notice, this
   *    list of conditions and the following disclaimer.
   *
   * 2. 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.
   *
   * 3. All advertising materials mentioning features or use of this software must
   *    display the following acknowledgment: "This product includes software developed
   *    by lenya (http://www.lenya.org)"
   *
   * 4. The name "lenya" must not be used to endorse or promote products derived from
   *    this software without prior written permission. For written permission, please
   *    contact contact@lenya.org
   *
   * 5. Products derived from this software may not be called "lenya" nor may "lenya"
   *    appear in their names without prior written permission of lenya.
   *
   * 6. Redistributions of any form whatsoever must retain the following acknowledgment:
   *    "This product includes software developed by lenya (http://www.lenya.org)"
   *
   * THIS SOFTWARE IS PROVIDED BY lenya "AS IS" WITHOUT ANY WARRANTY EXPRESS OR IMPLIED,
   * INCLUDING THE WARRANTY OF NON-INFRINGEMENT AND THE IMPLIED WARRANTIES OF MERCHANTI-
   * BILITY AND FITNESS FOR A PARTICULAR PURPOSE. lenya WILL NOT BE LIABLE FOR ANY DAMAGES
   * SUFFERED BY YOU AS A RESULT OF USING THIS SOFTWARE. IN NO EVENT WILL lenya BE LIABLE
   * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR LOST PROFITS EVEN IF lenya HAS
   * BEEN ADVISED OF THE POSSIBILITY OF THEIR OCCURRENCE. lenya WILL NOT BE LIABLE FOR ANY
   * THIRD PARTY CLAIMS AGAINST YOU.
   *
   * Lenya includes software developed by the Apache Software Foundation, W3C,
   * DOM4J Project, BitfluxEditor and Xopus.
   * </License>
   */
  package org.apache.lenya.cms.publication;
  
  /**
   * @author andreas
   *
   * To change the template for this generated type comment go to
   * Window>Preferences>Java>Code Generation>Code and Comments
   */
  public class DocumentBuildException extends Exception {
  
      /**
       * Constructor.
       */
      public DocumentBuildException() {
          super();
      }
  
      /**
       * Constructor.
       * @param message A message.
       */
      public DocumentBuildException(String message) {
          super(message);
      }
  
      /**
       * Constructor.
       * @param cause The cause of the exception.
       */
      public DocumentBuildException(Throwable cause) {
          super(cause);
      }
  
      /**
       * Constructor.
       * @param message A message.
       * @param cause The cause of the exception.
       */
      public DocumentBuildException(String message, Throwable cause) {
          super(message, cause);
      }
  
  }
  
  
  
  1.1                  cocoon-lenya/src/java/org/apache/lenya/cms/publication/DocumentBuilder.java
  
  Index: DocumentBuilder.java
  ===================================================================
  /*
   * $Id
   * <License>
   * The Apache Software License
   *
   * Copyright (c) 2002 lenya. All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without modification,
   * are permitted provided that the following conditions are met:
   *
   * 1. Redistributions of source code must retain the above copyright notice, this
   *    list of conditions and the following disclaimer.
   *
   * 2. 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.
   *
   * 3. All advertising materials mentioning features or use of this software must
   *    display the following acknowledgment: "This product includes software developed
   *    by lenya (http://www.lenya.org)"
   *
   * 4. The name "lenya" must not be used to endorse or promote products derived from
   *    this software without prior written permission. For written permission, please
   *    contact contact@lenya.org
   *
   * 5. Products derived from this software may not be called "lenya" nor may "lenya"
   *    appear in their names without prior written permission of lenya.
   *
   * 6. Redistributions of any form whatsoever must retain the following acknowledgment:
   *    "This product includes software developed by lenya (http://www.lenya.org)"
   *
   * THIS SOFTWARE IS PROVIDED BY lenya "AS IS" WITHOUT ANY WARRANTY EXPRESS OR IMPLIED,
   * INCLUDING THE WARRANTY OF NON-INFRINGEMENT AND THE IMPLIED WARRANTIES OF MERCHANTI-
   * BILITY AND FITNESS FOR A PARTICULAR PURPOSE. lenya WILL NOT BE LIABLE FOR ANY DAMAGES
   * SUFFERED BY YOU AS A RESULT OF USING THIS SOFTWARE. IN NO EVENT WILL lenya BE LIABLE
   * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR LOST PROFITS EVEN IF lenya HAS
   * BEEN ADVISED OF THE POSSIBILITY OF THEIR OCCURRENCE. lenya WILL NOT BE LIABLE FOR ANY
   * THIRD PARTY CLAIMS AGAINST YOU.
   *
   * Lenya includes software developed by the Apache Software Foundation, W3C,
   * DOM4J Project, BitfluxEditor and Xopus.
   * </License>
   */
  package org.apache.lenya.cms.publication;
  
  /**
   * A document builder builds a document from a URL.
   * 
   * @author andreas
   *
   * To change the template for this generated type comment go to
   * Window>Preferences>Java>Code Generation>Code and Comments
   */
  public interface DocumentBuilder {
  
      /**
       * Builds a document.
       * @param publication The publication the document belongs to.
       * @param url The URL of the form /{publication-id}/{area}/{document-id}{language-suffix}.{extension}.
       * @return A document.
       * @throws DocumentBuildException when something went wrong.
       */
      Document buildDocument(Publication publication, String url) throws DocumentBuildException;
  
  }
  
  
  
  1.1                  cocoon-lenya/src/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java
  
  Index: DefaultDocumentBuilder.java
  ===================================================================
  /*
   * $Id
   * <License>
   * The Apache Software License
   *
   * Copyright (c) 2002 lenya. All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without modification,
   * are permitted provided that the following conditions are met:
   *
   * 1. Redistributions of source code must retain the above copyright notice, this
   *    list of conditions and the following disclaimer.
   *
   * 2. 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.
   *
   * 3. All advertising materials mentioning features or use of this software must
   *    display the following acknowledgment: "This product includes software developed
   *    by lenya (http://www.lenya.org)"
   *
   * 4. The name "lenya" must not be used to endorse or promote products derived from
   *    this software without prior written permission. For written permission, please
   *    contact contact@lenya.org
   *
   * 5. Products derived from this software may not be called "lenya" nor may "lenya"
   *    appear in their names without prior written permission of lenya.
   *
   * 6. Redistributions of any form whatsoever must retain the following acknowledgment:
   *    "This product includes software developed by lenya (http://www.lenya.org)"
   *
   * THIS SOFTWARE IS PROVIDED BY lenya "AS IS" WITHOUT ANY WARRANTY EXPRESS OR IMPLIED,
   * INCLUDING THE WARRANTY OF NON-INFRINGEMENT AND THE IMPLIED WARRANTIES OF MERCHANTI-
   * BILITY AND FITNESS FOR A PARTICULAR PURPOSE. lenya WILL NOT BE LIABLE FOR ANY DAMAGES
   * SUFFERED BY YOU AS A RESULT OF USING THIS SOFTWARE. IN NO EVENT WILL lenya BE LIABLE
   * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR LOST PROFITS EVEN IF lenya HAS
   * BEEN ADVISED OF THE POSSIBILITY OF THEIR OCCURRENCE. lenya WILL NOT BE LIABLE FOR ANY
   * THIRD PARTY CLAIMS AGAINST YOU.
   *
   * Lenya includes software developed by the Apache Software Foundation, W3C,
   * DOM4J Project, BitfluxEditor and Xopus.
   * </License>
   */
  package org.apache.lenya.cms.publication;
  
  /**
   * @author andreas
   *
   * To change the template for this generated type comment go to
   * Window>Preferences>Java>Code Generation>Code and Comments
   */
  public class DefaultDocumentBuilder implements DocumentBuilder {
  
      /**
       * Non-public constructor.
       */
      protected DefaultDocumentBuilder() {
      }
  
      private static DefaultDocumentBuilder instance;
  
      /**
       * Returns the singleton instance.
       * @return A document builder.
       */
      public static DefaultDocumentBuilder getInstance() {
          if (instance == null) {
              instance = new DefaultDocumentBuilder();
          }
          return instance;
      }
  
      /**
       * @see org.apache.lenya.cms.publication.DocumentBuilder#buildDocument(org.apache.lenya.cms.publication.Publication, java.lang.String)
       */
      public Document buildDocument(Publication publication, String url)
          throws DocumentBuildException {
  
          String publicationURI = url.substring(("/" + publication.getId()).length());
  
          String area = publicationURI.split("/")[1];
  
          String documentUrl = publicationURI.substring(("/" + area).length());
  
          String extension = getExtension(documentUrl);
          String fullExtension = "".equals(extension) ? "" : "." + extension;
          documentUrl = documentUrl.substring(0, documentUrl.length() - fullExtension.length());
  
          String language = getLanguage(documentUrl);
          String fullLanguage = "".equals(language) ? "" : "_" + language;
          documentUrl = documentUrl.substring(0, documentUrl.length() - fullLanguage.length());
  
          String documentId = documentUrl;
  
          if (!documentId.startsWith("/")) {
              throw new DocumentBuildException(
                  "Document ID [" + documentId + "] does not start with '/'!");
          }
  
          DefaultDocument document = new DefaultDocument(publication, documentId, area);
          document.setLanguage(language);
          document.setExtension(extension);
          return document;
      }
  
      /**
       * Returns the language of a URL.
       * @param urlWithoutSuffix The URL without the suffix.
       * @return A string.
       */
      protected String getLanguage(String urlWithoutSuffix) {
          int startOfLanguage = urlWithoutSuffix.lastIndexOf('_');
          String suffix = "";
          if (startOfLanguage > -1 && !urlWithoutSuffix.endsWith("_")) {
              suffix = urlWithoutSuffix.substring(startOfLanguage + 1);
          }
          return suffix;
      }
  
      /**
       * Returns the extension of a URL.
       * @param url The URL.
       * @return The extension.
       */
      protected String getExtension(String url) {
          int startOfSuffix = url.lastIndexOf('.');
          String suffix = "";
          if (startOfSuffix > -1 && !url.endsWith(".")) {
              suffix = url.substring(startOfSuffix + 1);
          }
          return suffix;
      }
  
  }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: lenya-cvs-unsubscribe@cocoon.apache.org
For additional commands, e-mail: lenya-cvs-help@cocoon.apache.org