01: /*******************************************************************************
02: * Licensed to the Apache Software Foundation (ASF) under one
03: * or more contributor license agreements. See the NOTICE file
04: * distributed with this work for additional information
05: * regarding copyright ownership. The ASF licenses this file
06: * to you under the Apache License, Version 2.0 (the
07: * "License"); you may not use this file except in compliance
08: * with the License. You may obtain a copy of the License at
09: *
10: * http://www.apache.org/licenses/LICENSE-2.0
11: *
12: * Unless required by applicable law or agreed to in writing,
13: * software distributed under the License is distributed on an
14: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15: * KIND, either express or implied. See the License for the
16: * specific language governing permissions and limitations
17: * under the License.
18: *******************************************************************************/package org.ofbiz.minilang.operation;
19:
20: import java.util.*;
21: import org.w3c.dom.*;
22:
23: /**
24: * Copies a field in the in-map to the out-map
25: */
26: public class Copy extends SimpleMapOperation {
27:
28: boolean replace = true;
29: boolean setIfNull = true;
30: String toField;
31:
32: public Copy(Element element, SimpleMapProcess simpleMapProcess) {
33: super (element, simpleMapProcess);
34: toField = element.getAttribute("to-field");
35: if (this .toField == null || this .toField.length() == 0) {
36: this .toField = this .fieldName;
37: }
38:
39: // if anything but false it will be true
40: replace = !"false".equals(element.getAttribute("replace"));
41: // if anything but false it will be true
42: setIfNull = !"false"
43: .equals(element.getAttribute("set-if-null"));
44: }
45:
46: public void exec(Map inMap, Map results, List messages,
47: Locale locale, ClassLoader loader) {
48: Object fieldValue = inMap.get(fieldName);
49:
50: if (fieldValue == null && !setIfNull)
51: return;
52:
53: if (fieldValue instanceof java.lang.String) {
54: if (((String) fieldValue).length() == 0) {
55: if (setIfNull
56: && (replace || !results.containsKey(toField))) {
57: results.put(toField, null);
58: }
59: return;
60: }
61: }
62:
63: if (replace) {
64: results.put(toField, fieldValue);
65: // if (Debug.infoOn()) Debug.logInfo("[SimpleMapProcessor.Copy.exec] Copied \"" + fieldValue + "\" to field \"" + toField + "\"", module);
66: } else {
67: if (results.containsKey(toField)) {// do nothing
68: } else {
69: results.put(toField, fieldValue);
70: // if (Debug.infoOn()) Debug.logInfo("[SimpleMapProcessor.Copy.exec] Copied \"" + fieldValue + "\" to field \"" + toField + "\"", module);
71: }
72: }
73: }
74: }
|