package com.tibco.as.spacebar.ui.model; import java.util.Arrays; import java.util.Collections; 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.XmlTransient; import javax.xml.bind.annotation.XmlType; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "metaspace") public class Metaspace extends AbstractElement { public static final String PROPERTY_NAME = "name"; public static final String PROPERTY_METASPACE = "metaspace"; public static final String PROPERTY_MEMBER = "member"; public static final String PROPERTY_DISCOVERY = "discovery"; public static final String PROPERTY_LISTEN = "listen"; public static final String PROPERTY_REMOTE = "remote"; public static final String PROPERTY_AUTOCONNECT = "autoconnect"; public static final String PROPERTY_TIMEOUT = "timeout"; public static final String PROPERTY_SECURITY_TOKEN_FILE = "securityTokenFile"; @XmlTransient private Metaspaces metaspaces; @XmlAttribute(name = "displayName") private String name; @XmlAttribute(name = "name") private String metaspaceName; @XmlAttribute(name = "member") private String memberName; @XmlAttribute(name = "discovery") private String discovery; @XmlAttribute(name = "listen") private String listen; @XmlAttribute(name = "connectTimeout") private long timeout = 30000; @XmlAttribute(name = "securityTokenFile") private String securityTokenFile; @XmlTransient private String identityPassword; @XmlAttribute(name = "remote") private boolean remote; @XmlAttribute(name = "autoConnect") private boolean autoconnect; @XmlTransient private MetaspaceMembers members; @XmlTransient private Spaces spaces; @XmlTransient private Connection connection; public Metaspace() { members = new MetaspaceMembers(); members.setMetaspace(this); spaces = new Spaces(); spaces.setMetaspace(this); } public MetaspaceMembers getMembers() { return members; } public void setMembers(MetaspaceMembers members) { this.members = members; } public Spaces getSpaces() { return spaces; } public void setSpaces(Spaces spaces) { this.spaces = spaces; } @Override public Metaspace clone() { Metaspace metaspace = new Metaspace(); copyTo(metaspace); return metaspace; } public void setMetaspaces(Metaspaces metaspaces) { this.metaspaces = metaspaces; } @Override public Metaspaces getParent() { return metaspaces; } @Override public void copyTo(IElement element) { Metaspace metaspace = (Metaspace) element; metaspace.setMetaspaces(metaspaces); metaspace.setName(name); metaspace.setAutoconnect(autoconnect); metaspace.setDiscovery(discovery); metaspace.setListen(listen); metaspace.setMemberName(memberName); MetaspaceMembers members = this.members.clone(); members.setMetaspace(metaspace); metaspace.setMembers(members); metaspace.setMetaspaceName(metaspaceName); Spaces spaces = this.spaces.clone(); spaces.setMetaspace(metaspace); metaspace.setSpaces(spaces); metaspace.setRemote(remote); metaspace.setTimeout(timeout); metaspace.setSecurityTokenFile(securityTokenFile); metaspace.setIdentityPassword(identityPassword); } public String getSecurityTokenFile() { return securityTokenFile; } public void setSecurityTokenFile(String securityTokenFile) { firePropertyChange("securityTokenFile", this.securityTokenFile, this.securityTokenFile = securityTokenFile); } public String getIdentityPassword() { return identityPassword; } public void setIdentityPassword(String identityPassword) { this.identityPassword = identityPassword; } public long getTimeout() { return timeout; } public void setTimeout(long timeout) { firePropertyChange("timeout", this.timeout, this.timeout = timeout); } public void setMetaspaceName(String metaspaceName) { firePropertyChange("metaspaceName", this.metaspaceName, this.metaspaceName = metaspaceName); } public String getMemberName() { return memberName; } public void setMemberName(String memberName) { firePropertyChange("memberName", this.memberName, this.memberName = memberName); } public boolean isAutoconnect() { return autoconnect; } public void setAutoconnect(boolean autoconnect) { firePropertyChange("autoconnect", this.autoconnect, this.autoconnect = autoconnect); } public String getListen() { return listen; } public void setListen(String listen) { firePropertyChange("listen", this.listen, this.listen = listen); } public String getDiscovery() { return discovery; } public void setDiscovery(String discovery) { firePropertyChange("discovery", this.discovery, this.discovery = discovery); } public boolean isRemote() { return remote; } public void setRemote(boolean remote) { firePropertyChange("remote", this.remote, this.remote = remote); } public Connection getConnection() { return connection; } public boolean isConnected() { return connection != null; } public String getMetaspaceName() { return metaspaceName; } @Override public List<IElement> getChildren() { if (isConnected()) { return Arrays.asList((IElement) members, spaces); } return Collections.emptyList(); } @Override public String getName() { return name; } public void setName(String name) { fireNameChange(this.name, this.name = name); } public void setConnection(Connection connection) { List<IElement> oldValue = getChildren(); this.connection = connection; if (connection == null) { members.getChildren().clear(); spaces.getChildren().clear(); } fireChildrenChange(oldValue, getChildren()); } }