You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by ov...@apache.org on 2002/03/04 09:13:40 UTC

cvs commit: xml-cocoon2/src/scratchpad/schecoon/src/org/apache/cocoon/scheme/sitemap SchemeSitemapFunctions.java

ovidiu      02/03/04 00:13:39

  Modified:    src/scratchpad/schecoon/src/org/apache/cocoon/scheme/sitemap
                        SchemeSitemapFunctions.java
  Log:
  Added support for aggregation. New aggregate() and part() functions.
  
  Revision  Changes    Path
  1.5       +122 -9    xml-cocoon2/src/scratchpad/schecoon/src/org/apache/cocoon/scheme/sitemap/SchemeSitemapFunctions.java
  
  Index: SchemeSitemapFunctions.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/scratchpad/schecoon/src/org/apache/cocoon/scheme/sitemap/SchemeSitemapFunctions.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SchemeSitemapFunctions.java	22 Feb 2002 06:58:58 -0000	1.4
  +++ SchemeSitemapFunctions.java	4 Mar 2002 08:13:39 -0000	1.5
  @@ -57,6 +57,7 @@
   import org.apache.cocoon.components.pipeline.StreamPipeline;
   import org.apache.cocoon.environment.Environment;
   import org.apache.cocoon.environment.Source;
  +import org.apache.cocoon.sitemap.ContentAggregator;
   import org.xml.sax.InputSource;
   import sisc.ContinuationException;
   import sisc.Interpreter;
  @@ -169,7 +170,9 @@
       SERIALIZE = 4,
       PROCESS = 5,
       PARSE = 6,
  -    LOAD_SCHEME = 7;
  +    LOAD_SCHEME = 7,
  +    AGGREGATE = 8,
  +    PART = 9;
   
     /**
      * Creates a new <code>SchemeSitemapFunctions</code> instance. Defines
  @@ -178,6 +181,8 @@
     public SchemeSitemapFunctions()
     {
       define("sitemap:generate", GENERATE);
  +    define("sitemap:aggregate", AGGREGATE);
  +    define("sitemap:part", PART);
       define("sitemap:read", READER);
       define("sitemap:transform", TRANSFORM);
       define("sitemap:serialize", SERIALIZE);
  @@ -215,6 +220,8 @@
           switch (primid) {
           case GENERATE:
             return generate(r.vlr[0], r.vlr[1], r.vlr[2]);
  +        case AGGREGATE:
  +          return aggregate(r.vlr[0], r.vlr[1], r.vlr[2]);
           case READER:
             return read(r.vlr[0], r.vlr[1], r.vlr[2]);
           }
  @@ -228,6 +235,8 @@
             return serialize (r.vlr[0], r.vlr[1], r.vlr[2], r.vlr[3]);
           case PROCESS:
             return process (r.vlr[0], r.vlr[1], r.vlr[2], r.vlr[3]);
  +        case PART:
  +          return part(r.vlr[0], r.vlr[1], r.vlr[2], r.vlr[3]);
           }
         }
       }
  @@ -316,12 +325,6 @@
       StreamPipeline pipeline = sitemap.getStreamPipeline();
       EventPipeline eventPipeline = pipeline.getEventPipeline();
   
  -    // Obtain the 'src' attribute
  -    Value ssrc = assq(sargs, Symbol.get("src"));
  -    if (ssrc.eq(FALSE))
  -      throw new RuntimeException("No 'src' attribute specified for 'generate'!");
  -    String src = string(pair(ssrc).cdr);
  -
       // Obtain the 'type' attribute
       Value stype = assq(sargs, Symbol.get("type"));
       String type;
  @@ -330,16 +333,126 @@
       else
         type = sitemap.getDefaultGeneratorType();
   
  +    // We have a normal generator.
  +
  +    // Obtain the 'src' attribute
  +    Value ssrc = assq(sargs, Symbol.get("src"));
  +    if (ssrc.eq(FALSE))
  +      throw new RuntimeException("No 'src' attribute specified for 'generate'!");
  +    String src = string(pair(ssrc).cdr);
  +
       // Obtain the parameters
       Value sparams = assq(sargs, Symbol.get("params"));
       Parameters params = getParameters(sparams);
   
  -//     System.out.println("generate type " + type + ", src " + src
  -//                        + " params " + params);
  +    //     System.out.println("generate type " + type + ", src " + src
  +    //                        + " params " + params);
       
       eventPipeline.setGenerator(type, src, params);
  +    
  +    return new J2S.JavaObject(pipeline);
  +  }
  +
  +  /**
  +   * Create a new aggregate generator. Adds the aggregate generator to
  +   * the pipeline and returns the pipeline.
  +   *
  +   * @param scm a <code>Value</code> value
  +   * @param senv a <code>Value</code> value
  +   * @param sargs a <code>Value</code> value
  +   * @return a <code>Value</code> value
  +   * @exception Exception if an error occurs
  +   */
  +  public Value aggregate(Value scm, Value senv, Value sargs)
  +    throws Exception
  +  {
  +    SchemeSitemap sitemap = schemeSitemap(scm);
  +    StreamPipeline pipeline = sitemap.getStreamPipeline();
  +    EventPipeline eventPipeline = pipeline.getEventPipeline();
  +
  +    // We have an <aggregate> as the generator
  +    eventPipeline.setGenerator ("!content-aggregator!",
  +                                null, Parameters.EMPTY_PARAMETERS);
  +    // Get the element name of the top level element
  +    String element = "";
  +    Value selement = assq(sargs, Symbol.get("element"));
  +    if (!selement.eq(FALSE))
  +      element = string(pair(selement).cdr);
  +    else
  +      throw new RuntimeException("No 'element' attribute specified for 'aggregate'!");
   
  +    // Get the namespace of the top level element
  +    String ns = "";
  +    Value sns = assq(sargs, Symbol.get("ns"));
  +    if (!sns.eq(FALSE))
  +      ns = string(pair(sns).cdr);
  +
  +    // Get the prefix of the top level element
  +    String prefix = "";
  +    Value sprefix = assq(sargs, Symbol.get("prefix"));
  +    if (!sprefix.eq(FALSE))
  +      prefix = string(pair(sprefix).cdr);
  +
  +    ContentAggregator contentAggregator
  +      = (ContentAggregator)eventPipeline.getGenerator();
  +    contentAggregator.setRootElement(element, ns, prefix);
  +    
       return new J2S.JavaObject(pipeline);
  +  }
  +
  +  /**
  +   * Sets up a new part in an aggregate generator.
  +   *
  +   * @param scm a <code>Value</code> value
  +   * @param senv a <code>Value</code> value
  +   * @param sargs a <code>Value</code> value
  +   * @param spipeline a <code>Value</code> value
  +   * @return a <code>Value</code> value
  +   * @exception Exception if an error occurs
  +   */
  +  public Value part(Value scm, Value senv, Value sargs, Value spipeline)
  +    throws Exception
  +  {
  +    SchemeSitemap sitemap = schemeSitemap(scm);
  +    StreamPipeline pipeline = sitemap.getStreamPipeline();
  +    EventPipeline eventPipeline = pipeline.getEventPipeline();
  +
  +    // Get the element for the top level element
  +    String src = "";
  +    Value ssrc = assq(sargs, Symbol.get("src"));
  +    if (!ssrc.eq(FALSE))
  +      src = string(pair(ssrc).cdr);
  +    else
  +      throw new RuntimeException("No 'src' attribute specified for <part>!");
  +
  +    // Get the element for the top level element
  +    String element = "";
  +    Value selement = assq(sargs, Symbol.get("element"));
  +    if (!selement.eq(FALSE))
  +      element = string(pair(selement).cdr);
  +
  +    // Get the namespace for the top level element
  +    String ns = "";
  +    Value sns = assq(sargs, Symbol.get("ns"));
  +    if (!sns.eq(FALSE))
  +      ns = string(pair(sns).cdr);
  +
  +    // Get the prefix for the top level element
  +    String prefix = "";
  +    Value sprefix = assq(sargs, Symbol.get("prefix"));
  +    if (!sprefix.eq(FALSE))
  +      prefix = string(pair(sprefix).cdr);
  +
  +    // Whether to strip the root element of the document from src
  +    String stripRoot = "";
  +    Value sstripRoot = assq(sargs, Symbol.get("strip-root"));
  +    if (!sstripRoot.eq(FALSE))
  +      stripRoot = string(pair(sstripRoot).cdr);
  +
  +    ContentAggregator contentAggregator
  +      = (ContentAggregator)eventPipeline.getGenerator();
  +    contentAggregator.addPart(src, element, ns, stripRoot, prefix);
  +    return spipeline;
     }
   
     /**
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     webmaster@xml.apache.org
To unsubscribe, e-mail:          cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org