package com.revolsys.record.io.format.esri.gdb.xml.model;
import java.util.ArrayList;
import java.util.List;
import javax.xml.namespace.QName;
public class DataElement implements Cloneable {
private String catalogPath;
private List<DataElement> children;
private Boolean childrenExpanded;
private Boolean fullPropsRetrieved;
private String metadata;
private Boolean metadataRetrieved;
private String name;
@Override
public DataElement clone() {
try {
final DataElement clone = (DataElement)super.clone();
if (this.children != null) {
clone.children = new ArrayList<>();
for (final DataElement child : this.children) {
clone.children.add(child.clone());
}
}
return clone;
} catch (final CloneNotSupportedException e) {
throw new RuntimeException(e);
}
}
public String getCatalogPath() {
return this.catalogPath;
}
public List<DataElement> getChildren() {
return this.children;
}
public Boolean getChildrenExpanded() {
return this.childrenExpanded;
}
public Boolean getFullPropsRetrieved() {
return this.fullPropsRetrieved;
}
public String getMetadata() {
return this.metadata;
}
public Boolean getMetadataRetrieved() {
return this.metadataRetrieved;
}
public String getName() {
return this.name;
}
public String getParentCatalogPath() {
final String path = getCatalogPath();
if (path == null) {
return null;
} else {
final int index = path.lastIndexOf('\\');
if (index == -1 || index == 0) {
return "\\";
} else {
return path.substring(0, index);
}
}
}
public QName getTypeName() {
final int slashIndex = this.catalogPath.lastIndexOf('\\');
if (slashIndex == -1) {
return new QName(this.catalogPath);
} else if (slashIndex == 0) {
return new QName(this.catalogPath.substring(1));
} else {
final String namespaceUri = this.catalogPath.substring(1, slashIndex);
final String localPart = this.catalogPath.substring(slashIndex + 1);
return new QName(namespaceUri, localPart);
}
}
public void setCatalogPath(final String catalogPath) {
this.catalogPath = catalogPath;
}
public void setChildren(final List<DataElement> children) {
this.children = children;
}
public void setChildrenExpanded(final Boolean childrenExpanded) {
this.childrenExpanded = childrenExpanded;
}
public void setFullPropsRetrieved(final Boolean fullPropsRetrieved) {
this.fullPropsRetrieved = fullPropsRetrieved;
}
public void setMetadata(final String metadata) {
this.metadata = metadata;
}
public void setMetadataRetrieved(final Boolean metadataRetrieved) {
this.metadataRetrieved = metadataRetrieved;
}
public void setName(final String name) {
this.name = name;
}
public void setTypeName(final QName catalogPath) {
final String namespaceUri = catalogPath.getNamespaceURI();
this.name = catalogPath.getLocalPart();
if (namespaceUri.length() == 0) {
this.catalogPath = "\\" + this.name;
} else {
this.catalogPath = "\\" + namespaceUri + "\\" + this.name;
}
}
@Override
public String toString() {
return this.name;
}
}