
org.biojavax.SimpleNamespace Maven / Gradle / Ivy
/*
* BioJava development code
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. If you do not have a copy,
* see:
*
* http://www.gnu.org/copyleft/lesser.html
*
* Copyright for this code is held jointly by the individual
* authors. These should be listed in @author doc comments.
*
* For more information on the BioJava project and its aims,
* or to join the biojava-l mailing list, visit the home page
* at:
*
* http://www.biojava.org/
*
*/
package org.biojavax;
import java.net.URI;
import java.net.URISyntaxException;
import org.biojava.utils.AbstractChangeable;
import org.biojava.utils.ChangeEvent;
import org.biojava.utils.ChangeSupport;
import org.biojava.utils.ChangeVetoException;
/**
* A basic Namespace implemenation.
* @author Richard Holland
* @author Mark Schreiber
* @since 1.5
*/
public class SimpleNamespace extends AbstractChangeable implements Namespace {
private String name;
private String acronym;
private String authority;
private String description;
private URI URI;
/**
* Creates a new instance of SimpleNamespace with the given name,
* which cannot be null.
* @param name the name of the namespace.
*/
public SimpleNamespace(String name) {
if (name==null) throw new IllegalArgumentException("Name cannot be null");
this.name = name;
this.acronym = null;
this.authority = null;
this.description = null;
this.URI = null;
}
// Hibernate requirement - not for public use.
protected SimpleNamespace() {}
/**
* {@inheritDoc}
*/
public void setAcronym(String acronym) throws ChangeVetoException {
if(!this.hasListeners(Namespace.ACRONYM)) {
this.acronym = acronym;
} else {
ChangeEvent ce = new ChangeEvent(
this,
Namespace.ACRONYM,
acronym,
this.acronym
);
ChangeSupport cs = this.getChangeSupport(Namespace.ACRONYM);
synchronized(cs) {
cs.firePreChangeEvent(ce);
this.acronym = acronym;
cs.firePostChangeEvent(ce);
}
}
}
/**
* {@inheritDoc}
*/
public void setAuthority(String authority) throws ChangeVetoException {
if(!this.hasListeners(Namespace.AUTHORITY)) {
this.authority = authority; } else {
ChangeEvent ce = new ChangeEvent(
this,
Namespace.AUTHORITY,
authority,
this.authority
);
ChangeSupport cs = this.getChangeSupport(Namespace.AUTHORITY);
synchronized(cs) {
cs.firePreChangeEvent(ce);
this.authority = authority;
cs.firePostChangeEvent(ce);
}
}
}
/**
* {@inheritDoc}
*/
public void setDescription(String description) throws ChangeVetoException {
if(!this.hasListeners(Namespace.DESCRIPTION)) {
this.description = description;
} else {
ChangeEvent ce = new ChangeEvent(
this,
Namespace.DESCRIPTION,
description,
this.description
);
ChangeSupport cs = this.getChangeSupport(Namespace.DESCRIPTION);
synchronized(cs) {
cs.firePreChangeEvent(ce);
this.description = description;
cs.firePostChangeEvent(ce);
}
}
}
// Hibernate requirement - not for public use.
// Converts a String object representing a URI into an actual URI object.
void setURIString(String URI) throws ChangeVetoException, URISyntaxException {
if (URI!=null) this.setURI(new URI(URI));
else this.URI=null;
}
// Hibernate requirement - not for public use.
// Converts a URI object into a String representation of that URI
String getURIString() {
if (this.URI==null) return null;
else return this.URI.toASCIIString();
}
/**
* {@inheritDoc}
*/
public void setURI(URI URI) throws ChangeVetoException {
if(!this.hasListeners(Namespace.URI)) {
this.URI = URI;
} else {
ChangeEvent ce = new ChangeEvent(
this,
Namespace.URI,
URI,
this.URI
);
ChangeSupport cs = this.getChangeSupport(Namespace.URI);
synchronized(cs) {
cs.firePreChangeEvent(ce);
this.URI = URI;
cs.firePostChangeEvent(ce);
}
}
}
// Hibernate requirement - not for public use.
void setName(String name) { this.name = name; }
/**
* {@inheritDoc}
*/
public String getAcronym() { return this.acronym; }
/**
* {@inheritDoc}
*/
public String getAuthority() { return this.authority; }
/**
* {@inheritDoc}
*/
public String getDescription() { return this.description; }
/**
* {@inheritDoc}
*/
public String getName() { return this.name; }
/**
* {@inheritDoc}
*/
public URI getURI() { return this.URI; }
/**
* {@inheritDoc}
* Namespaces are compared only by name.
*/
public int compareTo(Object o) {
if (o==this) return 0;
// Hibernate comparison - we haven't been populated yet
if (this.name==null) return -1;
// Normal comparison
Namespace them = (Namespace)o;
return this.name.compareTo(them.getName());
}
/**
* {@inheritDoc}
* Namespaces are equal only by name.
*/
public boolean equals(Object obj) {
if(this == obj) return true;
if (obj==null || !(obj instanceof Namespace)) return false;
// Hibernate comparison - we haven't been populated yet
if (this.name==null) return false;
// Normal comparison
Namespace them = (Namespace)obj;
return this.name.equals(them.getName());
}
/**
* {@inheritDoc}
*/
public int hashCode() {
int hash = 17;
// Hibernate comparison - we haven't been populated yet
if (this.name==null) return hash;
// Normal comparison
return 31*hash + this.name.hashCode();
}
/**
* {@inheritDoc}
* Form: "name"
*/
public String toString() {
return this.getName();
}
// Hibernate requirement - not for public use.
private Integer id;
/**
* Gets the Hibernate ID. Should be used with caution.
* @return the Hibernate ID, if using Hibernate.
*/
public Integer getId() { return this.id; }
/**
* Sets the Hibernate ID. Should be used with caution.
* @param id the Hibernate ID, if using Hibernate.
*/
public void setId(Integer id) { this.id = id;}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy