|
From: McDonald, B. <Bru...@ba...> - 2003-09-24 18:57:58
|
Also take a look at the documentation pipeline stage:
modules/core/config/pipeline/documentation/documentation.properties
It uses two different scripts which are loaded from the modules/core/config/scripts directory.
These two scripts do:
1. attrdefault.js: Check for required attributes on the document and if they are not provided, provide a default.
2. servicexml.js: Call the config info on object based on a service name and call the toXml method
regards,
Bruce.
-----Original Message-----
From: David Glick [mailto:dg...@co...]
Sent: Wednesday, September 24, 2003 2:24 PM
To: Qin Ding
Cc: Babeldoc Developer List
Subject: [Babeldoc-devel] Re: [Babeldoc-user] Questions. Please Help
Hi Qin,
There aren't any examples in the documentation (yet!) about using the
scripting stage, but it's actually very easy to do. Here's an example that I
posted yesterday on the list:
######
# List all attributes on this document
######
get-attributes.stageType=Scripting
get-attributes.nextStage=console-writer
get-attributes.language=javascript
get-attributes.script=\
var keyset = document.getAttributes().keySet();\
var keyiter = keyset.iterator();\
var bufr = new java.lang.StringBuffer();\
bufr.append("<attributes>\\n");\
while(keyiter.hasNext()) {\
var key = keyiter.next();\
var cls = document.get(key);\
bufr.append(key + "=" + cls + "\\n");\
}\
bufr.append("</attributes>\\n");\
document.setBytes(bufr.toString().getBytes());\
document.setMimeType("text/xml");
The "get-attributes.script'" attribute defines a script that is embedded in
the properties file. An alternative would be to use
"get-attributes.scriptFile" in order to point to an external file containing
the script program.
Beyond the basic Babeldoc configuration no other additional configuration is
required to use script files. However, if you reference external classes,
those classes will need to be included in the classpath.
The document is stored in a PipelineDocument object. You can get at the
contents via the toString() method. In order to use your validation
routines, you have a couple of options:
1. Feed the document into the pipeline and convert the document String
(document.toString()) into a Java stream that can be fed to your validation
routine via the TestManager.validate(String docName, java.io.InputStream)
method call. The docName can be retrieved from the document attribute
"file_name": document.get("file_name");
2. Use the TestManager.validate(java.io.File file) method call via:
java.io.File file = new java.io.File(document.get("file_name"));\
TestManager.validate(file);
I'm not sure if you understand how to set up the typical directory structure
and configuration files in order to create a pipeline. If not, let me know
and I'll throw together a template for you to use.
Hope this helps,
David
On Wednesday 24 September 2003 8:26 am, you wrote:
> David: Thank you for your advise. I'll then try the scripting stage. I
> tried to find some document on this particular stage. I did not see
> anything. Do you have any? How do I set this up? I assume there must be a
> someConfig.properties file to define this stage. Where to put this file
> and Would you please walk me through this? After the scanner picks up the
> file and delivers to the scriptStage, what kind of document it actually
> delivers? It is a java.io.File or a java.io.InputStream? Anyway, my
> validation routine has the following signatures:
>
> TestManager.validate(java.io.File file);
> TestManager.validate(String docName, java.io.InputStream);
>
> Regarding e-mailing the report, your mentioned the following:
> a) Call your validation routines via a Scripting stage.
> b) Place the original document into an attribute
> c) Replace the current document with the report to be e-mailed.
> d) Use the SmtpWriter stage to e-mail your report
> e) Move the original document from the attribute in which it is stored back
>
> into the current document
> f) Continue processing
>
> Are all these a to f steps can be achieved by setting up in the
> config.properties? Or we still have to extend the ScriptingStage to
> achieve that goal? How should I start and where do I deploy it?
>
> Qin
>
> ---------------------------------------------------------------------------
>-------------
>
> This is a PRIVATE message. If you are not the intended recipient, please
> delete without copying and kindly advise us by e-mail of the mistake in
> delivery. NOTE: Regardless of content, this e-mail shall not operate to
> bind CSC to any order or other contract unless pursuant to explicit written
> agreement or government initiative expressly permitting the use of e-mail
> for such purpose.
> ---------------------------------------------------------------------------
>-------------
>
>
>
>
>
> David Glick
> <dglick To: Qin
> Ding/ASD/CSC@CSC, @cox.net>
> bab...@li... cc:
> 09/23/03 02:30 Subject: Re: [Babeldoc-user]
> Questions. Please Help PM
>
>
>
>
>
>
> Hi Qin,
>
> 1) You should set the environment variable BABELDOC_USER to point at your
> project directory.
>
> 2) While you can certainly subclass the PipelineStage to perform your
> validation, an easier approach may be to use the Scripting stage and just
> call your validation routines inline. Creating a new stage type requires a
>
> bit more familiarity with the Babeldoc environment.
>
> 3) Regarding e-mailing your report, you might do something like the
> following:
>
> a) Call your validation routines via a Scripting stage.
> b) Place the original document into an attribute
> c) Replace the current document with the report to be e-mailed.
> d) Use the SmtpWriter stage to e-mail your report
> e) Move the original document from the attribute in which it is stored back
>
> into the current document
> f) Continue processing
>
> It sounds like you've got a pretty good handle on everything else.
>
>
> Hope this helps,
>
> David
>
> On Tuesday 23 September 2003 11:57 am, Qin Ding wrote:
> > I am trying to use this tool. From what I read, this is an excellent
>
> tool
>
> > for me. I read the user guide and white paper and usage documents and
> > developer guide twice and I am still not sure of how to put this project
> > together.
> >
> > My babeldoc home (BABELDOC_HOME env variable)
> > c:\babeldoc
> > It has lib and bin directory which has all the scripts and jar files from
> > your build/lib and build/bin. In c:\babeldoc\lib, it also has my own jar
> > (longlegs-validation.jar) and apache common-validator.jar
> >
> > My project home
> > c:\myproject\longlegs\
> > In your documents, at one place, it states that I need to set up USER_DIR
> > env variable pointing to this project directory; and at another place in
> > the document, it asks to include this directory in the classpath. Which
>
> way
>
> > should I go?
> >
> > Under the longlegs folder, I have
> > config folder
> > config/scanner sub-folder. In here, I have config.properties for the
> > scanner like this:
> >
> > daddy-longlegs.type=directory
> > daddy-longlegs.period=10000
> > daddy-longlegs.inDirectory=/daddy/longlegs/in
> > daddy-longlegs.doneDirectory=/daddy/longlegs/done
> > daddy-longlegs.pipeline=longlegs
> >
> > pipeline folder. In here, I have config.properties like this:
> >
> > longlegs.type=simple
> > longlegs.configFile=pipeline/simple/longlegs
> >
> > pipeline/simple folder. In here, I have longlegs.properties, and
> > flat2xml-convert.xml like this:
> >
> > entryStage=validate
> > validate.stageType=DataValidation
> > validate.nextStage=convert
> >
> > convert.stageType=FlatToXml
> > convert.nextStage=transform
> > convert.flatToXmlFile=/longlegs/pipeline/simple/flat2xml-convert.xml
> >
> > transform.stageType=XslTransform
> > transform.nextStage=null
> >
> > flat2xml-convert.xml is omitted here. It is the copy of yours.
> >
> > journal
> > journal/simple
> >
> > Also
> > I have created two directories
> > C:\daddy\longlegs\in
> > C:\daddy\longlegs\done
> >
> > I want to drop a flat file (delimited by comma, or tab, or vertical bar)
>
> in
>
> > c:\daddy\longlegs\in folder. The scanner should pass the file to my
> > pipeline stage "DataValidation". I need to write this pipeline stage.
>
> As
>
> > I understand, all I need to do is to subclass the PipelineStage. In that
> > class, I should implement process method to call my validation logics,
> > which I have jar-ed and deployed in c:\babeldoc\lib directory along with
> > apache common-validator.
> >
> > Now, where should I deploy my pipelineStage DataValidation class? In my
> > longlegs/pipeline directory or some new directory I should add to the
> > longlegs/pipeline directory?
> >
> > A validation report (html) is dynamically generated during the validation
> > stage. This report, Not original flat file, needs to be mailed out. How
>
> do
>
> > I add the report from my DataValidate stage to the mail pipelineStage?
> > Also, I believe I can use the FileWriter pipelineStage to write the html
> > report out. So, the key is to introduce the report to the mail and
> > filewriter stage, not the original flat file. How do I do that?
> >
> > If I can successfully put all these together quickly, I'd like to present
> > this tool to my manager for considering to use in our next project. Your
> > help is greatly appreciated. Thanks.
> >
> > Qin
>
> ---------------------------------------------------------------------------
>
> >-------------
> >
> > This is a PRIVATE message. If you are not the intended recipient, please
> > delete without copying and kindly advise us by e-mail of the mistake in
> > delivery. NOTE: Regardless of content, this e-mail shall not operate to
> > bind CSC to any order or other contract unless pursuant to explicit
>
> written
>
> > agreement or government initiative expressly permitting the use of e-mail
> > for such purpose.
>
> ---------------------------------------------------------------------------
>
> >-------------
> >
> >
> >
> >
> >
> >
> > -------------------------------------------------------
> > This sf.net email is sponsored by:ThinkGeek
> > Welcome to geek heaven.
> > http://thinkgeek.com/sf
> > _______________________________________________
> > Babeldoc-user mailing list
> > Bab...@li...
> > https://lists.sourceforge.net/lists/listinfo/babeldoc-user
--
David Glick
Transmit Consulting, Inc
619-475-4052
dg...@tr...
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Babeldoc-devel mailing list
Bab...@li...
https://lists.sourceforge.net/lists/listinfo/babeldoc-devel
|