/*******************************************************************************
* Copyright (c) 2008 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.smooks.graphical.editors.model.freemarker;
import java.util.Iterator;
import java.util.List;
import org.jboss.tools.smooks.configuration.editors.xml.AbstractXMLObject;
import org.jboss.tools.smooks.configuration.editors.xml.TagPropertyObject;
import org.jboss.tools.smooks.templating.model.ModelBuilder;
import org.jboss.tools.smooks.templating.template.Mapping;
import org.jboss.tools.smooks.templating.template.TemplateBuilder;
import org.w3c.dom.Attr;
import org.w3c.dom.Node;
/**
* @author Dart
*
*/
public class FreemarkerAttrModel extends TagPropertyObject implements IFreemarkerTemplateModel {
/*
* (non-Javadoc)
*
* @seeorg.jboss.tools.smooks.graphical.editors.model.freemarker.
* IFreemarkerTemplateModel#isManyOccurs()
*/
public boolean isManyOccurs() {
return false;
}
/*
* (non-Javadoc)
*
* @seeorg.jboss.tools.smooks.graphical.editors.model.freemarker.
* IFreemarkerTemplateModel#isRequired()
*/
public boolean isRequired() {
Attr element = this.getReferenceAttibute();
if (element != null) {
return ModelBuilder.isRequired(element);
}
return false;
}
public boolean isHidden(TemplateBuilder builder) {
AbstractXMLObject parent = this.getParent();
if (parent instanceof FreemarkerTemplateXMLModel) {
if (((FreemarkerTemplateXMLModel) parent).isHidden(builder)) {
return true;
}
}
List<Mapping> mappings = builder.getMappings();
for (Iterator<?> iterator = mappings.iterator(); iterator.hasNext();) {
Mapping mapping = (Mapping) iterator.next();
List<Node> hiddenNodes = mapping.getHideNodes();
if (hiddenNodes != null) {
for (Iterator<?> iterator2 = hiddenNodes.iterator(); iterator2.hasNext();) {
Node node = (Node) iterator2.next();
if (node == this.getReferenceElement()) {
return true;
}
}
}
}
return false;
}
public Node getModelNode() {
return getReferenceAttibute();
}
}