/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.vdb.manifest;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import org.teiid.core.designer.util.StringUtilities;
import org.teiid.designer.comments.CommentSets;
import org.teiid.designer.core.translators.TranslatorOverrideProperty;
import org.teiid.designer.vdb.TranslatorOverride;
/**
*
*/
@XmlAccessorType(XmlAccessType.NONE)
@XmlType(name = "")
public class TranslatorElement implements Serializable {
private static final long serialVersionUID = 1L;
private CommentSets comments;
@XmlAttribute(name = "name", required = true)
private String name;
@XmlAttribute(name = "type", required = true)
private String type;
@XmlAttribute(name = "description", required = false)
private String description;
@XmlElement(name = "property", required = true, type = PropertyElement.class)
private List<PropertyElement> properties = new ArrayList<PropertyElement>();
/**
* Used by JAXB when loading a VDB
*/
TranslatorElement() {
// nothing to do
}
TranslatorElement( TranslatorOverride translatorOverride ) {
this.name = translatorOverride.getName();
this.type = translatorOverride.getType();
this.description = translatorOverride.getDescription();
// process properties
for (TranslatorOverrideProperty prop : translatorOverride.getOverrideProperties()) {
if (!StringUtilities.isEmpty(prop.getOverriddenValue())) {
this.properties.add(new PropertyElement(prop.getDefinition().getId(), prop.getOverriddenValue()));
}
}
// Append any comments to the property elements
for (PropertyElement propElement : getProperties()) {
CommentSets propertyComments = translatorOverride.getPropertyComments(propElement.getName());
propElement.getComments().add(propertyComments);
}
getComments().add(translatorOverride.getComments());
}
/**
* @return the translator override description (can be <code>null</code> or empty)
*/
public String getDescription() {
return this.description;
}
/**
* @return the translator override identifier (never <code>null</code> or empty)
*/
public String getName() {
return this.name;
}
/**
* @return the list of overridden translator properties (never <code>null</code>)
*/
public List<PropertyElement> getProperties() {
return this.properties;
}
/**
* @return the translator type being overridden (never <code>null</code> or empty)
*/
public String getType() {
return this.type;
}
/**
* @param visitor
*/
public void accept(Visitor visitor) {
visitor.visit(this);
}
/**
* @return comments for this element
*/
public CommentSets getComments() {
if (this.comments == null)
this.comments = new CommentSets();
return this.comments;
}
}