cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonComparatorSearch.java -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonNaturalComparator.java -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonNode.java -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonNodeAgentRelation.java -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonNodeByNameComparator.java -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonRelationship.java -text
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonRelationshipType.java -text
TAXON_ID INTEGER
);
-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODE;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION(
+ ID INTEGER NOT NULL,
+ CREATED TIMESTAMP,
+ UUID VARCHAR(36),
+ UPDATED TIMESTAMP,
+ CREATEDBY_ID INTEGER,
+ UPDATEDBY_ID INTEGER,
+ AGENT_ID INTEGER,
+ TAXONNODE_ID INTEGER,
+ TYPE_ID INTEGER
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_AUD(
+ ID INTEGER NOT NULL,
+ REV INTEGER NOT NULL,
+ REVTYPE TINYINT,
+ CREATED TIMESTAMP,
+ UUID VARCHAR(36),
+ UPDATED TIMESTAMP,
+ CREATEDBY_ID INTEGER,
+ UPDATEDBY_ID INTEGER,
+ AGENT_ID INTEGER,
+ TAXONNODE_ID INTEGER,
+ TYPE_ID INTEGER
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_AUD;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_ANNOTATION(
+ TAXONNODEAGENTRELATION_ID INTEGER NOT NULL,
+ ANNOTATIONS_ID INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_ANNOTATION;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_ANNOTATION_AUD(
+ REV INTEGER NOT NULL,
+ TAXONNODEAGENTRELATION_ID INTEGER NOT NULL,
+ ANNOTATIONS_ID INTEGER NOT NULL,
+ REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_ANNOTATION_AUD;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_MARKER(
+ TAXONNODEAGENTRELATION_ID INTEGER NOT NULL,
+ MARKERS_ID INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_MARKER;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_MARKER_AUD(
+ REV INTEGER NOT NULL,
+ TAXONNODEAGENTRELATION_ID INTEGER NOT NULL,
+ MARKERS_ID INTEGER NOT NULL,
+ REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_MARKER_AUD;
CREATE CACHED TABLE PUBLIC.TAXONNODE_AUD(
ID INTEGER NOT NULL,
REV INTEGER NOT NULL,
TAXON_ID INTEGER
);
-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODE;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION(
+ ID INTEGER NOT NULL,
+ CREATED TIMESTAMP,
+ UUID VARCHAR(36),
+ UPDATED TIMESTAMP,
+ CREATEDBY_ID INTEGER,
+ UPDATEDBY_ID INTEGER,
+ AGENT_ID INTEGER,
+ TAXONNODE_ID INTEGER,
+ TYPE_ID INTEGER
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_AUD(
+ ID INTEGER NOT NULL,
+ REV INTEGER NOT NULL,
+ REVTYPE TINYINT,
+ CREATED TIMESTAMP,
+ UUID VARCHAR(36),
+ UPDATED TIMESTAMP,
+ CREATEDBY_ID INTEGER,
+ UPDATEDBY_ID INTEGER,
+ AGENT_ID INTEGER,
+ TAXONNODE_ID INTEGER,
+ TYPE_ID INTEGER
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_AUD;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_ANNOTATION(
+ TAXONNODEAGENTRELATION_ID INTEGER NOT NULL,
+ ANNOTATIONS_ID INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_ANNOTATION;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_ANNOTATION_AUD(
+ REV INTEGER NOT NULL,
+ TAXONNODEAGENTRELATION_ID INTEGER NOT NULL,
+ ANNOTATIONS_ID INTEGER NOT NULL,
+ REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_ANNOTATION_AUD;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_MARKER(
+ TAXONNODEAGENTRELATION_ID INTEGER NOT NULL,
+ MARKERS_ID INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_MARKER;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_MARKER_AUD(
+ REV INTEGER NOT NULL,
+ TAXONNODEAGENTRELATION_ID INTEGER NOT NULL,
+ MARKERS_ID INTEGER NOT NULL,
+ REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_MARKER_AUD;
CREATE CACHED TABLE PUBLIC.TAXONNODE_AUD(
ID INTEGER NOT NULL,
REV INTEGER NOT NULL,
@XmlSchemaType(name = "IDREF")\r
@OneToMany(mappedBy="taxonNode", fetch=FetchType.LAZY)\r
@Cascade({CascadeType.SAVE_UPDATE, CascadeType.MERGE, CascadeType.DELETE})\r
- private final Set<TaxonNodeAgentRelation> nodeAgents = new HashSet<TaxonNodeAgentRelation>();\r
+ private Set<TaxonNodeAgentRelation> nodeAgents = new HashSet<TaxonNodeAgentRelation>();\r
\r
\r
// private Taxon originalConcept;\r
return hasTaxon() ? getTaxon().getNullSafeRank() : null;\r
}\r
\r
+ /**\r
+ * @param clone\r
+ */\r
+ private void addNodeAgent(TaxonNodeAgentRelation nodeAgentRelation) {\r
+ nodeAgentRelation.setTaxonNode(this);\r
+\r
+ }\r
+\r
//*********************** CLONE ********************************************************/\r
/**\r
* Clones <i>this</i> taxon node. This is a shortcut that enables to create\r
*/\r
@Override\r
public Object clone() {\r
- TaxonNode result;\r
try{\r
- result = (TaxonNode)super.clone();\r
- result.getTaxon().addTaxonNode(result);\r
- result.childNodes = new ArrayList<TaxonNode>();\r
- result.countChildren = 0;\r
+ TaxonNode result = (TaxonNode)super.clone();\r
+ result.getTaxon().addTaxonNode(result);\r
+ result.childNodes = new ArrayList<TaxonNode>();\r
+ result.countChildren = 0;\r
+\r
+ result.nodeAgents = new HashSet<TaxonNodeAgentRelation>();\r
+ for (TaxonNodeAgentRelation rel : this.nodeAgents){\r
+ result.addNodeAgent((TaxonNodeAgentRelation)rel.clone());\r
+ }\r
\r
- return result;\r
+ return result;\r
}catch (CloneNotSupportedException e) {\r
logger.warn("Object does not implement cloneable");\r
e.printStackTrace();\r
--- /dev/null
+// $Id$\r
+/**\r
+* Copyright (C) 2015 EDIT\r
+* European Distributed Institute of Taxonomy\r
+* http://www.e-taxonomy.eu\r
+*\r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.cdm.model.taxon;\r
+\r
+import javax.persistence.Entity;\r
+import javax.persistence.FetchType;\r
+import javax.persistence.ManyToOne;\r
+import javax.xml.bind.annotation.XmlAccessType;\r
+import javax.xml.bind.annotation.XmlAccessorType;\r
+import javax.xml.bind.annotation.XmlElement;\r
+import javax.xml.bind.annotation.XmlIDREF;\r
+import javax.xml.bind.annotation.XmlRootElement;\r
+import javax.xml.bind.annotation.XmlSchemaType;\r
+import javax.xml.bind.annotation.XmlType;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.hibernate.annotations.Cascade;\r
+import org.hibernate.annotations.CascadeType;\r
+import org.hibernate.envers.Audited;\r
+import org.springframework.security.core.GrantedAuthority;\r
+\r
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
+import eu.etaxonomy.cdm.model.common.AnnotatableEntity;\r
+import eu.etaxonomy.cdm.model.common.DefinedTerm;\r
+\r
+/**\r
+ * This class relates a TaxonNode (Taxon within it's given publication context)\r
+ * to an agent (person or team) and defining a type for this relationship.\r
+ * This is to indicate that an agent plays a certain role for this taxon\r
+ * (e.g. author of the according subtree, last scrutiny, ...).\r
+ * It is not meant to define rights and roles which are only handled via the\r
+ * {@link GrantedAuthority granted authorities}.\r
+ * @author a.mueller\r
+ * @date 29.05.2015\r
+ */\r
+@XmlAccessorType(XmlAccessType.FIELD)\r
+@XmlType(name = "TaxonNodeAgentRelation", propOrder = {\r
+ "taxonNode",\r
+ "agent",\r
+ "type",\r
+ })\r
+@XmlRootElement(name = "TaxonNodeAgentRelation")\r
+@Entity\r
+@Audited\r
+public class TaxonNodeAgentRelation extends AnnotatableEntity {\r
+ private static final long serialVersionUID = -1476342569350403356L;\r
+ private static final Logger logger = Logger.getLogger(TaxonNodeAgentRelation.class);\r
+\r
+ @XmlElement(name = "TaxonNode")\r
+ @XmlIDREF\r
+ @XmlSchemaType(name = "IDREF")\r
+ @ManyToOne(fetch = FetchType.LAZY)\r
+// @Cascade({CascadeType.SAVE_UPDATE, CascadeType.MERGE}) //the\r
+ private TaxonNode taxonNode;\r
+\r
+ @XmlElement(name = "Agent")\r
+ @XmlIDREF\r
+ @XmlSchemaType(name = "IDREF")\r
+ @ManyToOne(fetch = FetchType.LAZY)\r
+ @Cascade({CascadeType.SAVE_UPDATE, CascadeType.MERGE})\r
+ private TeamOrPersonBase<?> agent;\r
+\r
+ @XmlElement(name = "Type")\r
+ @XmlIDREF\r
+ @XmlSchemaType(name = "IDREF")\r
+ @ManyToOne(fetch = FetchType.EAGER)\r
+ private DefinedTerm type;\r
+\r
+ private TaxonNodeAgentRelation(){};\r
+\r
+//********************* GETTER / SETTER **********************/\r
+\r
+ public TaxonNode getTaxonNode() {\r
+ return taxonNode;\r
+ }\r
+ public void setTaxonNode(TaxonNode taxonNode) {\r
+ this.taxonNode = taxonNode;\r
+ }\r
+\r
+ public TeamOrPersonBase<?> getAgent() {\r
+ return agent;\r
+ }\r
+ public void setAgent(TeamOrPersonBase<?> agent) {\r
+ this.agent = agent;\r
+ }\r
+\r
+ public DefinedTerm getType() {\r
+ return type;\r
+ }\r
+ public void setType(DefinedTerm type) {\r
+ this.type = type;\r
+ }\r
+\r
+\r
+//************************** clone *******************************************/\r
+\r
+ /**\r
+ * Clones <i>this</i> taxon node agent relation. This is a shortcut that enables to create\r
+ * a new instance that differs only slightly from <i>this</i> relation.\r
+ *\r
+ * @see eu.etaxonomy.cdm.model.media.IdentifiableEntity#clone()\r
+ * @see java.lang.Object#clone()\r
+ */\r
+ @Override\r
+ public Object clone() {\r
+ try{\r
+ TaxonNodeAgentRelation result = (TaxonNodeAgentRelation)super.clone();\r
+\r
+ //no change to taxonNode, agent, type\r
+ return result;\r
+ }catch (CloneNotSupportedException e) {\r
+ logger.warn("Object does not implement cloneable");\r
+ e.printStackTrace();\r
+ return null;\r
+ }\r
+ }\r
+\r
+}\r
<mapping class="eu.etaxonomy.cdm.model.taxon.Taxon"/>\r
<mapping class="eu.etaxonomy.cdm.model.taxon.TaxonBase"/>\r
<mapping class="eu.etaxonomy.cdm.model.taxon.TaxonNode"/>\r
+ <mapping class="eu.etaxonomy.cdm.model.taxon.TaxonNodeAgentRelation"/>\r
<mapping class="eu.etaxonomy.cdm.model.taxon.Classification"/>\r
<mapping class="eu.etaxonomy.cdm.model.taxon.TaxonRelationship"/>\r
<mapping class="eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType"/>\r
TAXON_ID INTEGER
);
-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODE;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION(
+ ID INTEGER NOT NULL,
+ CREATED TIMESTAMP,
+ UUID VARCHAR(36),
+ UPDATED TIMESTAMP,
+ CREATEDBY_ID INTEGER,
+ UPDATEDBY_ID INTEGER,
+ AGENT_ID INTEGER,
+ TAXONNODE_ID INTEGER,
+ TYPE_ID INTEGER
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_AUD(
+ ID INTEGER NOT NULL,
+ REV INTEGER NOT NULL,
+ REVTYPE TINYINT,
+ CREATED TIMESTAMP,
+ UUID VARCHAR(36),
+ UPDATED TIMESTAMP,
+ CREATEDBY_ID INTEGER,
+ UPDATEDBY_ID INTEGER,
+ AGENT_ID INTEGER,
+ TAXONNODE_ID INTEGER,
+ TYPE_ID INTEGER
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_AUD;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_ANNOTATION(
+ TAXONNODEAGENTRELATION_ID INTEGER NOT NULL,
+ ANNOTATIONS_ID INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_ANNOTATION;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_ANNOTATION_AUD(
+ REV INTEGER NOT NULL,
+ TAXONNODEAGENTRELATION_ID INTEGER NOT NULL,
+ ANNOTATIONS_ID INTEGER NOT NULL,
+ REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_ANNOTATION_AUD;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_MARKER(
+ TAXONNODEAGENTRELATION_ID INTEGER NOT NULL,
+ MARKERS_ID INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_MARKER;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_MARKER_AUD(
+ REV INTEGER NOT NULL,
+ TAXONNODEAGENTRELATION_ID INTEGER NOT NULL,
+ MARKERS_ID INTEGER NOT NULL,
+ REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_MARKER_AUD;
CREATE CACHED TABLE PUBLIC.TAXONNODE_AUD(
ID INTEGER NOT NULL,
REV INTEGER NOT NULL,
TAXON_ID INTEGER
);
-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODE;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION(
+ ID INTEGER NOT NULL,
+ CREATED TIMESTAMP,
+ UUID VARCHAR(36),
+ UPDATED TIMESTAMP,
+ CREATEDBY_ID INTEGER,
+ UPDATEDBY_ID INTEGER,
+ AGENT_ID INTEGER,
+ TAXONNODE_ID INTEGER,
+ TYPE_ID INTEGER
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_AUD(
+ ID INTEGER NOT NULL,
+ REV INTEGER NOT NULL,
+ REVTYPE TINYINT,
+ CREATED TIMESTAMP,
+ UUID VARCHAR(36),
+ UPDATED TIMESTAMP,
+ CREATEDBY_ID INTEGER,
+ UPDATEDBY_ID INTEGER,
+ AGENT_ID INTEGER,
+ TAXONNODE_ID INTEGER,
+ TYPE_ID INTEGER
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_AUD;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_ANNOTATION(
+ TAXONNODEAGENTRELATION_ID INTEGER NOT NULL,
+ ANNOTATIONS_ID INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_ANNOTATION;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_ANNOTATION_AUD(
+ REV INTEGER NOT NULL,
+ TAXONNODEAGENTRELATION_ID INTEGER NOT NULL,
+ ANNOTATIONS_ID INTEGER NOT NULL,
+ REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_ANNOTATION_AUD;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_MARKER(
+ TAXONNODEAGENTRELATION_ID INTEGER NOT NULL,
+ MARKERS_ID INTEGER NOT NULL
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_MARKER;
+CREATE CACHED TABLE PUBLIC.TAXONNODEAGENTRELATION_MARKER_AUD(
+ REV INTEGER NOT NULL,
+ TAXONNODEAGENTRELATION_ID INTEGER NOT NULL,
+ MARKERS_ID INTEGER NOT NULL,
+ REVTYPE TINYINT
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TAXONNODEAGENTRELATION_MARKER_AUD;
CREATE CACHED TABLE PUBLIC.TAXONNODE_AUD(
ID INTEGER NOT NULL,
REV INTEGER NOT NULL,