blob: 12a6b95f7f61f3155b0c513b4f035e02e7d19a93 [file] [log] [blame]
/*******************************************************************************
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*******************************************************************************/
package org.apache.ofbiz.widget.model;
import java.util.Collection;
import org.apache.ofbiz.base.util.Assert;
import org.apache.ofbiz.base.util.collections.FlexibleMapAccessor;
import org.apache.ofbiz.base.util.string.FlexibleStringExpander;
import org.apache.ofbiz.widget.model.CommonWidgetModels.AutoEntityParameters;
import org.apache.ofbiz.widget.model.CommonWidgetModels.AutoServiceParameters;
import org.apache.ofbiz.widget.model.CommonWidgetModels.Image;
import org.apache.ofbiz.widget.model.CommonWidgetModels.Link;
import org.apache.ofbiz.widget.model.CommonWidgetModels.Parameter;
/**
* Abstract XML widget visitor.
*
*/
public abstract class XmlAbstractWidgetVisitor {
protected final Appendable writer;
public XmlAbstractWidgetVisitor(Appendable writer) {
Assert.notNull("writer", writer);
this.writer = writer;
}
protected void visitAttribute(String attributeName, Boolean attributeValue) throws Exception {
if (attributeValue != null) {
writer.append(" ").append(attributeName).append("=\"");
writer.append(attributeValue.toString());
writer.append("\"");
}
}
protected void visitAttribute(String attributeName, FlexibleMapAccessor<?> attributeValue) throws Exception {
if (attributeValue != null && !attributeValue.isEmpty()) {
writer.append(" ").append(attributeName).append("=\"");
writer.append(attributeValue.getOriginalName());
writer.append("\"");
}
}
protected void visitAttribute(String attributeName, FlexibleStringExpander attributeValue) throws Exception {
if (attributeValue != null && !attributeValue.isEmpty()) {
writer.append(" ").append(attributeName).append("=\"");
writer.append(attributeValue.getOriginal());
writer.append("\"");
}
}
protected void visitAttribute(String attributeName, Integer attributeValue) throws Exception {
if (attributeValue != null) {
writer.append(" ").append(attributeName).append("=\"");
writer.append(attributeValue.toString());
writer.append("\"");
}
}
protected void visitAttribute(String attributeName, String attributeValue) throws Exception {
if (attributeValue != null && !attributeValue.isEmpty()) {
writer.append(" ").append(attributeName).append("=\"");
writer.append(attributeValue);
writer.append("\"");
}
}
protected void visitAutoEntityParameters(AutoEntityParameters autoEntityParameters) throws Exception {
}
protected void visitAutoServiceParameters(AutoServiceParameters autoServiceParameters) throws Exception {
}
protected void visitImage(Image image) throws Exception {
if (image != null) {
writer.append("<image");
visitAttribute("name", image.getName());
visitAttribute("alt", image.getAlt());
visitAttribute("border", image.getBorderExdr());
visitAttribute("height", image.getHeightExdr());
visitAttribute("id", image.getIdExdr());
visitAttribute("src", image.getSrcExdr());
visitAttribute("style", image.getStyleExdr());
visitAttribute("title", image.getTitleExdr());
visitAttribute("url-mode", image.getUrlMode());
visitAttribute("width", image.getWidthExdr());
writer.append("/>");
}
}
protected void visitLink(Link link) throws Exception {
if (link != null) {
writer.append("<link");
visitLinkAttributes(link);
if (link.getImage() != null || link.getAutoEntityParameters() != null || link.getAutoServiceParameters() != null) {
writer.append(">");
visitImage(link.getImage());
visitAutoEntityParameters(link.getAutoEntityParameters());
visitAutoServiceParameters(link.getAutoServiceParameters());
writer.append("</link>");
} else {
writer.append("/>");
}
}
}
protected void visitLinkAttributes(Link link) throws Exception {
if (link != null) {
visitAttribute("name", link.getName());
visitAttribute("encode", link.getEncode());
visitAttribute("full-path", link.getFullPath());
visitAttribute("id", link.getIdExdr());
visitAttribute("height", link.getHeight());
visitAttribute("link-type", link.getLinkType());
visitAttribute("prefix", link.getPrefixExdr());
visitAttribute("secure", link.getSecure());
visitAttribute("style", link.getStyleExdr());
visitAttribute("target", link.getTargetExdr());
visitAttribute("target-window", link.getTargetWindowExdr());
visitAttribute("text", link.getTextExdr());
visitAttribute("size", link.getSize());
visitAttribute("url-mode", link.getUrlMode());
visitAttribute("width", link.getWidth());
}
}
protected void visitModelWidget(ModelWidget widget) throws Exception {
if (widget.getName() != null && !widget.getName().isEmpty()) {
writer.append(" name=\"");
writer.append(widget.getName());
writer.append("\"");
}
}
protected void visitParameters(Collection<Parameter> parameters) throws Exception {
if (parameters != null) {
for (Parameter parameter : parameters) {
writer.append("<parameter");
visitAttribute("param-name", parameter.getName());
visitAttribute("from-field", parameter.getFromField());
visitAttribute("value", parameter.getValue());
writer.append("/>");
}
}
}
}