KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > datatypes > processors > ChecksumProcessorFactory


1 /*
2
3 This software is OSI Certified Open Source Software.
4 OSI Certified is a certification mark of the Open Source Initiative.
5
6 The license (Mozilla version 1.0) can be read at the MMBase site.
7 See http://www.MMBase.org/license
8 */

9 package org.mmbase.datatypes.processors;
10
11 import org.mmbase.bridge.*;
12 import org.mmbase.util.transformers.*;
13 import org.mmbase.util.functions.*;
14 import java.io.StringWriter JavaDoc;
15
16 /**
17  * See {@link org.mmbase.util.transformers.ChecksumFactory}. This produces CommitProcessors meant
18  * for fields that are a checksum of another field. Parameters for that are the parameters of the
19  * Checksum 'processor', and the field for which this field is a checksum.
20  *
21  * @author Michiel Meeuwissen
22  * @version $Id: ChecksumProcessorFactory.java,v 1.5 2006/04/25 23:53:41 michiel Exp $
23  * @since MMBase-1.8
24  */

25
26 public class ChecksumProcessorFactory implements ParameterizedCommitProcessorFactory, java.io.Serializable JavaDoc {
27
28     private static final long serialVersionUID = 1L;
29
30     protected static final Parameter[] PARAMS = new Parameter[] {
31         new Parameter.Wrapper(ChecksumFactory.PARAMS),
32         new Parameter("field", String JavaDoc.class, true)
33     };
34
35     private static final ParameterizedTransformerFactory factory = new ChecksumFactory();
36
37     /**
38      * Creates a parameterized processor.
39      */

40     public CommitProcessor createProcessor(Parameters parameters) {
41         final ByteToCharTransformer transformer = (ByteToCharTransformer) factory.createTransformer(parameters);
42         final String JavaDoc sourceField = (String JavaDoc) parameters.get("field");
43         return new CommitProcessor() {
44                 private static final long serialVersionUID = 1L;
45
46                 public void commit(Node node, Field field) {
47                     if (node.isNull(sourceField)) {
48                         // set checksum null too.
49
node.setValue(field.getName(), null);
50                         return;
51                     }
52                     StringWriter JavaDoc writer = new StringWriter JavaDoc();
53                     transformer.transform(node.getInputStreamValue(sourceField), writer);
54                     node.setStringValue(field.getName(), writer.toString());
55                 }
56                 public String JavaDoc toString() {
57                     return transformer.toString() + " on " + sourceField;
58                 }
59             };
60     }
61
62     /**
63      * Create empty <code>Parameters</code> object for use with {@link #createProcessor}.
64      */

65     public Parameters createParameters() {
66         return new Parameters(PARAMS);
67     }
68
69 }
70
Popular Tags